Problème d'interruption sur un pic16F877

Fermé
Fidchell456 Messages postés 3 Date d'inscription mardi 15 juin 2010 Statut Membre Dernière intervention 16 juin 2010 - 15 juin 2010 à 13:05
Fidchell456 Messages postés 3 Date d'inscription mardi 15 juin 2010 Statut Membre Dernière intervention 16 juin 2010 - 16 juin 2010 à 12:43
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 59 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 10 janvier 2011 26
15 juin 2010 à 13:29
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 3 Date d'inscription mardi 15 juin 2010 Statut Membre Dernière intervention 16 juin 2010
16 juin 2010 à 12:43
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