programmation C du 12f629 - Page 14
Répondre à la discussion
Page 14 sur 14 PremièrePremière 14
Affichage des résultats 391 à 412 sur 412

programmation C du 12f629



  1. #391
    marc2009

    Re : programmation C du 12f629


    ------

    Bonsoir mictour

    Regarde la doc 12F en 9.1 et 9.2 et tu comprendras pourquoi je m'interroge.
    ok, je vais regarder.

    Veux-tu dire que MPLAB + CC5X ne tournent pas sous LINUX ? ?
    Pas essayé, mais je vais aller sous windows demain

    Qu'entends-tu par "elle est dans le HEADER" ? (à mon tour de ne pas comprendre !)
    Je parle du fichier 12F675.h de cc5x

    Il me semble que l'on peut faire plus simple.
    Le problème est que tu ne puisses ni compiler ni simuler,
    sinon il y à longtemps que tu aurais terminé ce programme.
    ah bon ?

    si sous windows, j'ai mplab et cc5x

    -----

  2. #392
    mictour

    Re : programmation C du 12f629

    Bonjour marc2009,

    ... Je parle du fichier 12F675.h de cc5x
    ...Oui, bien sûr, mais je ne vois pas comment l'instruction :
    #pragma config |= 0x31E1
    peut si trouver et ... fonctionner !

    Bonne journée, mictour.

  3. #393
    marc2009

    Re : programmation C du 12f629

    ben je vois pas, tu mets le config là ... je vois pas où est le problème

  4. #394
    marc2009

    Re : programmation C du 12f629

    Voilà ce que donne la compilation :
    Clean: Deleting intermediary and output files.
    Clean: Done.
    Executing: "C:\Program Files\bknd\CC5X\CC5X.EXE" pps.c -CC -fINHX8M -p12F675 -I"C:\Program Files\bknd\CC5X" -a -L -Q -V -FM
    CC5X Version 3.3A, Copyright (c) B Knudsen Data, Norway 1992-2007
    --> FREE edition, 8-16 bit int, 24 bit float, 1k code, reduced optim.
    pps.c:
    Chip = 12F675
    RAM: 00h : -------- -------- -------- --------
    RAM: 20h : ==.....* ******** ******** ********
    RAM: 40h : ******** ******** ******** ********
    RAM usage: 7 bytes (2 local), 57 bytes free
    File 'pps.fcs'
    Optimizing - removed 2 instructions (-1 %)
    File 'pps.var'
    File 'pps.asm'
    File 'pps.lst'
    File 'pps.cod'
    File 'pps.occ'
    File 'pps.hex'
    Total of 138 code words (13 %)
    * Estimated CODE SIZE of full optimization: 133 code words (-3 %)
    RESTRICTIONS on commercial usage applies as described in file readme.txt
    Loaded D:\travail_PPE\divers\pied_par asol_project\pps.COD.
    BUILD SUCCEEDED: Wed May 13 12:45:29 2009

  5. #395
    mictour

    Re : programmation C du 12f629

    ...ben je vois pas, tu mets le config là ...

    Non, en aucun cas ! ( Depuis le temps que je te l'indique ... ) Certes, ces fichiers peuvent éventuellement être modifier, mais seulement en pleine connaissance de cause. Sinon ... plantage garanti !!

    je vois pas où est le problème ?

    C'est bien ça le problème...
    Tu n'auras aucune 'config' , si même le compilateur accepte la plaisanterie !!
    ( lui modifier ses fichiers ".h" ). mictour.

  6. #396
    marc2009

    Re : programmation C du 12f629

    ben dans le .h, y a deja #pragma config_def 0x1222 donc bon voilà ... j'ai remis ca, et j'ai décommenté le pragma config ... le résultat est le même ...

  7. #397
    mictour

    Re : programmation C du 12f629

    ... Nos messages se sont croisés !

    Voilà ce que donne la compilation :

    D'accord regarde dans le fichier '.lst', tu devrais y voir quelque chose comme ça :

    Code:
    ADDR CODE  LINE SOURCE
    
               0001 
               0002 ; CC5X Version 3.2G, Copyright (c) B Knudsen Data
               0003 ; C compiler for the PICmicro family
               0004 ; ************  12. Mar 2006   9:07  *************
               0005 
               0006 	processor  16F877A
               0007 	radix  DEC
               0008 
    2007 3F32  0009 	__config 0x3F32
               0010 
         0000  0011 INDF        EQU   0x00
         0001  0012 TMR0        EQU   0x01
         0003  0013 STATUS      EQU   0x03
         0004  0014 FSR         EQU   0x04
    etc, etc...
    mictour.

  8. #398
    marc2009

    Re : programmation C du 12f629

    ben dans le .h, y a deja #pragma config_def 0x1222 donc bon voilà ... j'ai remis ca, et j'ai décommenté le pragma config ... le résultat est le même ...

  9. #399
    mictour

    Re : programmation C du 12f629

    Avec ... #pragma
    Code:
      ADDR CODE  LINE SOURCE
    
               0001 
               0002 ; CC5X Version 3.2G, Copyright (c) B Knudsen Data
               0003 ; C compiler for the PICmicro family
               0004 ; ************   4. May 2009   8:28  *************
               0005 
               0006 	processor  12F675
               0007 	radix  DEC
               0008
    2007 31E1  0009 	__config 0x31E1
               0010 
         0003  0011 STATUS      EQU   0x03
    ... et sans :
    Code:
     
         ADDR CODE  LINE SOURCE
    
               0001 
               0002 ; CC5X Version 3.2G, Copyright (c) B Knudsen Data
               0003 ; C compiler for the PICmicro family
               0004 ; ************  13. May 2009  14:20  *************
               0005 
               0006 	processor  12F675
               0007 	radix  DEC
               0008 
         0003  0009 STATUS      EQU   0x03
    la ligne :
    Code:
     2007 31E1  0009  _config 0x31E1
    n'est plus là !

  10. #400
    marc2009

    Re : programmation C du 12f629

    ok je te crois ^^

    sinon, revenons a mon programme ^^

  11. #401
    mictour

    Re : programmation C du 12f629

    ... ok je te crois ^^
    sinon, revenons a mon programme ^^


    Mais, ça fait partie du programme !
    Bonne prog, mictour.

  12. #402
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par mictour Voir le message
    ... ok je te crois ^^
    sinon, revenons a mon programme ^^


    Mais, ça fait partie du programme !
    Bonne prog, mictour.
    oui, mais c'était une parenthèse ca

    Sinon, a part les registres, c'est bon ?

  13. #403
    mictour

    Re : programmation C du 12f629

    Bonjour marc2009,

    Ce matin, je te propose un petit exercice (de logique) !

    Code:
      
          Entre :
     	if (CAN<531) 
             ....
             
             else
             ....
             
          et :
             
            if (CAN<531)
            ....
            
            if (CAN>531)
            ....
    Vois-tu une petite différence dans le résultat ?

    Bonne journée, mictour.

  14. #404
    marc2009

    Re : programmation C du 12f629

    ben c'est la même chose nan ?

  15. #405
    mictour

    Re : programmation C du 12f629

    Bonjour marc2009,

    ben c'est la même chose nan ?

    Non, il y a une différence qui peut avoir des conséquences sur le fonctionnement du programme ... tu ne vois vraiment pas ?
    A+ , mictour.

  16. #406
    marc2009

    Re : programmation C du 12f629

    dans le 2eme cas, si CAN==531, il saura pas quoi faire .... ( mais j'ai pas utilisé ce 2eme cas ) c'est ca ?

    ++

  17. #407
    mictour

    Re : programmation C du 12f629

    Bonsoir marc2009,

    dans le 2eme cas, si CAN==531, il saura pas quoi faire .... ( mais j'ai pas utilisé ce 2eme cas ) c'est ca ?

    O U I ! Imagine que can = 532, on passe dans le 2eme cas. Le moteur démarre avec une batterie un peu faible et fait baisser la tension à 531
    ( ça c'est pas de chance...)
    Alors le moteur est parti pour 20 minutes !! Re-cata. (Lol)

    Bon, soit tu choisis " else " ou " if (CAN >= 531) " , comme te préfères.
    Le tout étant de ne pas laisser un 'trou' dans les tests. Bonne soirée, mictour.

  18. #408
    marc2009

    Re : programmation C du 12f629

    donc je mets if (CAN>=531) ? ( au niveau du 2eme if )

    ++

  19. #409
    marc2009

    Re : programmation C du 12f629

    voilà le prog

    Code:
    #pragma chip PIC12F675 // déclaration du pic
    
    #pragma config |= 0x31E1
    
    #define sortie GPIO
    #define led GPIO2
    #define moteur GPIO1
    
    uns8 irq;
    
    uns16 sec;
    
    uns16 CAN;
    
    
    
    #include "int16CXX.h" // fichier interruptions
    
    //------------------interruption-----------------------
    
    
    
    #pragma origin 4
    
    
    
    interrupt timer1( void)
    
    {
    
    	int_save_registers    // W, STATUS (and PCLATH if required)
    
    
    
           //char sv_FSR = FSR;  // save FSR if required
    
    
    
           // handle the interrupt (insert application code here)
    
    		if (TMR1IF) {++irq;TMR1H=6;TMR1IF=0;}
    
    
    
           //FSR = sv_FSR;       // restore FSR if saved
    
    
    
           int_restore_registers // W, STATUS (and PCLATH if required)
    
    
    
           /* IMPORTANT : GIE should normally NOT be set or cleared in
    
              the interrupt routine. GIE is AUTOMATICALLY cleared on
    
              interrupt entry by the CPU and set to 1 on exit (by
    
              RETFIE). Setting GIE to 1 inside the interrupt service
    
              routine will cause nested interrupts if an interrupt is
    
              pending. Too deep nesting may crash the program ! */
    
       }
    
    void main(void)
    
    
    
    {
    	sortie = 0b.0000.0100;
    
    	TRISIO = 0b.0011.1001;
    
    	OPTION = 0b.1100.0000;
    
    	T1CON =  0b.0000.0001;
    
    	CMCON =  0b.0000.0111;
    
    	INTCON = 0b.1100.0000;
    
    	PIE1 =   0b.0000.0001;
    
    	ANSEL =  0b.0100.0001;
    
    	ADCON0 = 0b.1000.0001;
    	TMR1H=6;
    
    	TMR1L=0;
    	CAN=600;
    
    for (;;) {
    	if (irq==8) 
    		{
    
    			++sec;
    			irq=0;
    			GO=1;	// lance la conversion
    			while(GO); // attente que GO passe à 0
    			CAN.high8 = ADRESH;
    			CAN.low8 =  ADRESL;
    
    			if (CAN<531)
    
     			{   
    				
    			led=!led;
       			if (sec==1200) {sec=1199;}
       			if (sec>1200) {moteur=0;sec=0;}
    
    
     			}
    		}
    
     	if (CAN>=531)
    
     			{
    
    			led=1;
    
      			if (sec==1200) {moteur=1;}
    
      			if(sec>1200)   // pour être sur de stopper.
    
       				{
    
        			moteur=0;
    
        			sec=0;
    
       				}	// fin if ... else
    
     		}	// fin if ...
    
    
    
    } // fin for 
    
    }
    Je viens de vérifier les registres.

    ++

  20. #410
    mictour

    Re : programmation C du 12f629

    Bonjour marc2009,

    Selon mes habitudes, j'ai un peu modifier la présentation de ton programme,
    ajouté (et aussi supprimé) quelques commentaires
    et bien sur quelques questions. (surtout de logique)
    Mais bon, ça avance bien.

    Code:
     
      #pragma chip PIC12F675    // déclaration du pic
     #pragma config |= 0x31E1  // configuration
     #define sortie GPIO
     #define led GPIO2
     #define moteur GPIO1
    
     uns8 irq;
     uns16 sec;
     uns16 CAN;
    
     #include "int16CXX.h"     // fichier interruptions
    
    //------------------interruption-----------------------
    
     #pragma origin 4
    
     interrupt timer1( void)
       {
    	int_save_registers
    
            if (TMR1IF)              // un peu plus lisible...
             {
               ++irq;
               TMR1H=6;
               TMR1IF=0;
             }
    
           int_restore_registers
       }                             // fin interrupt
    
     void main(void)                  
      {
    	sortie = 0b.0000.0100;    // led = 1 (.. et si tu commentais tout tes registres
                                      // ne serait-ce que pour éviter les erreurs ?)
    	TRISIO = 0b.0011.1001;    //  Je verrai si je peux simuler ...
    
    	OPTION = 0b.1100.0000;
    
    	T1CON =  0b.0000.0001;
    
    	CMCON =  0b.0000.0111;
    
    	INTCON = 0b.1100.0000;
    
    	PIE1 =   0b.0000.0001;
    
    	ANSEL =  0b.0100.0001;
    
    	ADCON0 = 0b.1000.0001;
    	TMR1H=6;
    	TMR1L=0;
    	CAN=600;
            // irq = 0;
            // sec = 0;
    
     for (;;)                         // aussi : while (1)
         {
    	   if (irq==8)            // 1s
    		{
    
    			++sec;
    			irq=0;
    
    			GO=1;	             // lance la conversion
    			while(GO);           // attente que GO passe à 0
    			CAN.high8 = ADRESH;  // résultat dans CAN
    			CAN.low8 =  ADRESL;  // ...
    
    			    //  fin de if(irq == 8);    ici ??
    
    			if (CAN<531)         // batterie faible ?
     			{
    			led=!led;            // clignotte 1s / 1s
       			if (sec==1200)       //  on vire ...
                                {
                                  sec=1199;      // ...
                                }
       			if (sec>1200)        // ... ou pas ??
                                {
                                  moteur=0;      // ne serait-ce pas ...
                                  sec=0;         // ... suffisant ? ?
                                }
     			}                    // fin de if (CAN < 531)
    
    		}            // fin de if(irq == 8); ... ou  laissée ici ??
    
     	   if (CAN>=531)                      // batterie OK ?
     		{
    		      led=1;
      		      if (sec==1200)
                            {
      		           moteur=1;
                            }
      		      if(sec>1200)            // pour être sur de stopper.
       			{
        		 	  moteur=0;
        		 	  sec=0;              // au fait, combien de secondes en tout ?
       			}               
     		} 	        // fin if (CAN >= 531)
    
                             //  fin de if(irq == 8);  ... ou encore ici ??
    
         }           // fin for
    
     }        //  fin de main
    Bon dimanche, mictour.

  21. #411
    marc2009

    Re : programmation C du 12f629

    // led = 1 (.. et si tu commentais tout tes registres
    // ne serait-ce que pour éviter les erreurs ?)
    // Je verrai si je peux simuler ...
    c'est pas juste ? J'ai configurer sortie pour mettre GPIO2 en 1 ( la led )

    // irq = 0;
    // sec = 0;
    je dois mettre ça ?

    Par contre, pour la suite je n'ai rien compris ( trop de commentaires ^^ ) : déjà le if (irq==8) est pas juste ? fermer l'instruction à un endroit est important ? Il est possible de la fermer après la conversion non ? Comme ca après j'aurai 2 parties, l'une avec if (CAN<531) et l'autre avec if (CAN>=531) non ?

    Quand tu me dis "vire ... ou pas", "ne serait-ce pas ... suffisant" ... t'entends quoi par là ?

    Merci

    ps : j'ai encore jusqu'à demain pour le terminer

  22. #412
    marc2009

    Re : programmation C du 12f629

    revoilà le prog

    Code:
    #pragma chip PIC12F675 // déclaration du pic
    #pragma config |= 0x31E1
    #define sortie GPIO
    #define led GPIO2
    #define moteur GPIO1
    
    uns8 irq;
    uns16 sec;
    uns16 CAN;
    
    #include "int16CXX.h" // fichier interruptions
    
    //------------------interruption-----------------------
    
    #pragma origin 4
    
    interrupt timer1( void)
    
    {
    
    	int_save_registers    // W, STATUS (and PCLATH if required)
    
           //char sv_FSR = FSR;  // save FSR if required
    
    	if (TMR1IF)             
             {
               ++irq;
               TMR1H=6;
               TMR1IF=0;
             }
    
           //FSR = sv_FSR;       // restore FSR if saved
    
           int_restore_registers // W, STATUS (and PCLATH if required)
    
       }
    
    void main(void)
    
    {
    	sortie = 0b.0000.0100;
    	TRISIO = 0b.0011.1001;
    	OPTION = 0b.1100.0000;
    	T1CON =  0b.0000.0001;
    	CMCON =  0b.0000.0111;
    	INTCON = 0b.1100.0000;
    	PIE1 =   0b.0000.0001;
    	ANSEL =  0b.0100.0001;
    	ADCON0 = 0b.1000.0001;
    	TMR1H=6;
    	TMR1L=0;
    	CAN=600;
    
    for (;;) {
    	if (irq==8) 
    		{
    
    			++sec;
    			irq=0;
    			GO=1;	// lance la conversion
    			while(GO); // attente que GO passe à 0
    			CAN.high8 = ADRESH;
    			CAN.low8 =  ADRESL;
    
    		}
    
    	if (CAN<531)	// batterie faible ?
    
     			{   
    				
    			led=!led;	// clignotement 1s / 1s
       			if (sec==1200) {sec=1199;}
       			if (sec>1200) {moteur=0;sec=0;}
    
     			}
    
     	else		// batterie OK ?
    
     		{
    
    			led=1;
      			if (sec==1200) {moteur=1;}
      			if(sec>1200)   // pour être sur de stopper.
    
       				{
    
        			moteur=0;
        			sec=0;
    
       				}	// fin if ... else
    
     		}	// fin else ...
    
    
    } // fin for 
    
    } // fin main

Page 14 sur 14 PremièrePremière 14

Discussions similaires

  1. Probleme de programmation (PIC 12F629 )la seconde fois
    Par invite3a1051d7 dans le forum Électronique
    Réponses: 7
    Dernier message: 26/03/2009, 17h06
  2. lire un pic 12f629
    Par invite6ce15d51 dans le forum Électronique
    Réponses: 1
    Dernier message: 06/06/2008, 11h48
  3. Micro- programmes PIC 12f629
    Par invite12ff0607 dans le forum Électronique
    Réponses: 7
    Dernier message: 11/02/2008, 01h46
  4. Quel programateur pour le pic 12f629
    Par jojo86 dans le forum Électronique
    Réponses: 4
    Dernier message: 21/08/2006, 23h04
  5. Programmation 3D
    Par invite769675d7 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 01/11/2005, 07h07
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...