Problème d'interruption sur un pic16F877

Fidchell456 Messages postés 9 Statut Membre -  
Fidchell456 Messages postés 9 Statut Membre -
Bonjour,

je vais exposer mon problème je travaille sur un projet qui me permet de compter via des interruptions et on envoie des consignes a partir du PC via la RS232 le programme est simple a chaque fois que mon timer fait un overflow l'interruption incrémente une variable etc. mais mon problème n'est pas la c'est que lorsque j'alimente ma carte, pour la faire fonctionner je dois procéder a plusieurs RESET sur la pin MCLR.

Y a t-il une instruction particulière pour activer au démarrage les interruptions (surtout pour la RS232)

voici mon code d'interruption et des instructions présente dans ma boucle principale permettant l'initialisation :

void interrupt()
{
if ((Usart_Data_Ready()) && (PIR1.RCIF==1))
{
CONSIGNES = Usart_Read();
PIR1.RCIF = 0;
}

if (PIR1.TMR2IF)
{
compteur_ms++ ;
PIR1.TMR2IF = 0;
}
}

et dans ma boucle main j'ai ajouté :

INTCON = 0xC0; // interruptions USART
PIE1.RCIE = 1;
PIR1.RCIF = 0;

T2CON = 0x4C; // Configurations du Timer2
PR2 = 247;
TMR2 = 0; // Initialisation du registre Timer2

puis dernières lignes qui concerne les lancements du timer2 :

PIE1.TMR2IE = 1; // interruptions TIMER2 activées

// une partie de code qui va faire des comparaisons

PIE1.TMR2IE = 0; // interruptions TIMER2 désactivées

merci d'avance pour vos futures réponses :D

2 réponses

becool123 Messages postés 74 Statut Membre 26
 
BONJOUR,

bon tout d'abord je ne sais pas si vous nous avez donner votre code complet,
si ce le cas je ne vois l'initialisation de RS232:des trucs de genre:

#INT_RDA : réception de donnée sur l'RS232

#use rs232 (baud = 9600, xmit = PIN_C6, rcv = PIN_C7)

pour des fonctions ou instruction pour RS232 il y'a:

getc() putc() getch() gets() puts() printf() kbhit() set_uart_speed() getchar() putchar()
Syntaxe : set_uart_speed(Vitesse) ; // Vitesse : 100 - 115200

vous pouvez trouver plus des détails dans le help de votre logiciel.

good luck pour votre projet :)
0
Fidchell456 Messages postés 9 Statut Membre
 
dans ce que j'ai posté il n'y a pas tout le code mais mon problème viens vraiment que lors du démarrage une fois que j'ai effectué une fois un RESET tout mon programme marche a merveille et bien sur le but de mon projet c'est qu'on a juste a l'alimenter pour qu'il fonctionne sans avoir a effectuer de RESETs ^^ donc en ce qui concerne les envois et les réceptions RS232 et le fait qu'il compte bien marche parfaitement après les fameux RESETs

je ne sais pas si j'ai réussi a bien m'exprimer pour vous parler de mon problème si il y a des questions pour que je vous explique plus en détails n'hésitez pas a me les poser. :d
0