Le programme revient à son point principal de manière inattendue chez Pic C dans MPlab

Je programme un moteur pas à pas avec PIC16F84 dans MPlab IDE. Mon programme renvoie son sharepoint départ après que j’appelle sa méthode de délai. Pour être plus spécifique, voici quelques extraits de code.

méthode principale pour conduire le programme

int main(int argc, char** argv) { TRISB = 0; // PORT B as output port PORTB = 0x0F; stepForward(25); activateRelay(); waitForSeconds(3000); deActivateRelay(); stepBackward(50); //Since step forward method steps for 100, this will return to initial state stepForward(25); return (EXIT_SUCCESS); } 

Méthode pas à pas

 void stepForward(unsigned int stepCount){ while(0 < stepCount) { PORTB = 0b00000001; waitForSeconds(500); PORTB = 0b00000010; waitForSeconds(500); PORTB = 0b00000100; waitForSeconds(500); PORTB = 0b00001000; waitForSeconds(500); stepCount--; } } 

Et la méthode pour retarder le système

 void waitForSeconds(unsigned int miliSeconds){ //DelayUs(miliSeconds); for(;miliSeconds > 0; miliSeconds--) for(unsigned short x = 333; x > 0 ; x--){ } } 

Après la seconde méthode waitFor appelée depuis la méthode stepForward , le programme retourne dans TRISB = 0; partie de la méthode main .

Je suis nouveau dans la programmation d’images, alors ma faute serait très facile. Je cherche de l’aide. Merci.

Si le compteur de programme revient à 0 de manière inattendue, le PIC est réinitialisé. Il existe de nombreuses causes de réinitialisation, en fonction du PIC. Un point commun est le délai d’attente du chien de garde, et vous ne semblez pas donner un coup de pied au chien de garde, alors l’avez-vous désactivé dans les bits de configuration? Le bit de registre d’état 4 vous dira si un délai d’attente de surveillance s’est produit.