PIC 16F88 Pas de respet du code !

PIC 16F88 Pas de respet du code ! - Nano-ordinateur, microcontrôleurs, FPGA - Electronique, domotique, DIY

Marsh Posté le 31-01-2021 à 09:29:57    

Gros problème : j’utilise un 16F88 avec horloge interne et son CNA. Après avoir placé le PIC programmé (MCLR +5V, VDD +5V, fusibles OFF, oscillateur INTRC ou MCLR et BODEN=ON) sur plaque d’essai, lorsque je le mets sous tension, Le PIC ne respecte pas le programme défini et exécute absolument TOUT de A à Z (qu’il y ai une entrée connectée ou pas au port A2). Quand arrivé à la fin de celui-ci, il revient (boucle infinie) au début et c’est seulement qu’il respecte le programme demandé c-à-d  qu’il attend la 1° donnée pour la traiter (IDEM avec un nouveau PIC).
Qui pourrait m’aider concrètement pour résoudre ce problème à savoir attendre la donnée dès le début de la mise sous tension ?  Le voltage d’entrée à RA2 :0.4V-4.7V
Ci-dessous le logiciel
 
//ESSAI-F88.C   et   essai-F88.mcppi
//microcontroleur : PIC 16F88
//langage : MikroC 6.6
 
#define sortie  RB4_bit      //pin 10     allumage pompe
bit led at RA0_bit;        //pin 17     led de visualisation du fonctionnement
//#define capteur  RA2_bit    VOIR + PAS
 
float volthaut;   //résultat de voltage
float radchaut;   //mesure tension sur RA2  pin 1    CAPTEUR HAUT
char sec;         //temps pour allumage led de fonctionnement PIC
char pompe=0,i;
 
void main()
{
 TRISA=0b00000100;   //entrée RA2  si met 0 pompe (RB4) tjs allumée en continu !!
 TRISB=0b00000000;
 PORTA=0b00000100;      //0 ou 1 pas de respect de la 1° passe !!
 PORTB=0b00000000;
 //utilisation du timer interne si besoin de compter quelque chose
 OPTION_REG=0b11000100;
 // bit 5=0   timer0 utilise horloge interne
 // bit 4=0   timer0 s'incrémente en front montant
 // bit 3=0   prediviseur au timer
 // bit 2->0  prediviseur timer /32= 100
 INTCON=0;  //pas d'interruption
 OSCCON=0b01100010;    //4 MHz horloge interne
 //bit 6-4 : 110=4 MHz
 //bit 3 : 0 horloge système primaire
 //bit 2 : 0
 //bit 1-0 : 10 oscillateur interne RC
 ADCON1=0b10000000;
 //bit 7 (ADFM) =1   résultat conversion à droite
 //bit 6 (ADCS2) = 0  horloge interne divisée par 2  inactivée  -> influence
 //                   le bit 7 de ADCON0
 //bit 5-4 = 0    VRef + = Vcc   et   VRef - = masse
 ANSEL=0b00111110; //choix canaux en analogique =1  (CNA sur A0->A4 et B6-B7)
 CMCON=0b00000111;  //désactivation des comparateurs
 
 sortie=0; sec=0;    //capteur=0;    initialisation
 ADC_Init();
 ADCON0.ADCS1=1;   //bit 7-6 oscillateur horloge RC interne
 ADCON0.ADCS0=1;
 ADCON0.ADON=0;    //convertisseur à l'arret
 
 while(1)
 {
  //do     NE FONCTIONNE PAS !!!
  //{ pompe=capteur; }  while(capteur==0);  pompe=0;
  ADCON0.ADON=1;      //convertisseur activé
  radchaut=ADC_Read(2);     //RA2    pin 1
  Delay_us(30);      //temps de conversion
  volthaut=(radchaut*5.0)/1023.0;  //mesure voltage HAUT
  ADCON0.ADON=0;      //convertisseur arret
  //if(pompe==0) volthaut=0;  //Idem dessous
  //if(pompe==1)  //NE SERT A RIEN au lancement du prog même sans voltage sur
  //{         //RA2 (pas de connexion) la sortie allume la pompe !!!!!
   if(volthaut>=3.5)
   { sortie=1; pompe=1;     //allume pompe
    for(i=1;i<=10;i++)
    {  Delay_ms(1000);  }
     sortie=0;
   }
    else   { sortie=0;  Delay_ms(100);  }
  //}
  //pompe=1;
 } //fin while
}

Reply

Marsh Posté le 31-01-2021 à 09:29:57   

Reply

Marsh Posté le 31-01-2021 à 13:48:21    

Merci de mettre le code correctement formaté entre balises. Et faire un effort au niveau rédaction aussi, là ça ne donne pas du tout envie de t'aider.

Reply

Marsh Posté le 31-01-2021 à 14:28:23    

Tout d'abord qu'est ce pour toi une balise et montre moi un exemple concret.
Ensuite le programme est parfaitement lisible car toute les lignes de commandes sont parfaitement mise en retrait.

Reply

Marsh Posté le 31-01-2021 à 16:50:56    

C'est toi qui veut de l'aide, pas moi...
 
Les balises pour le code c'est avec le petit bouton https://forum-images.hardware.fr/icones/message/c.gif.

Reply

Marsh Posté le 31-01-2021 à 17:21:05    

ou trouver ce petit bouton ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed