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
}