Bonjour à tous,
je travaille depuis peu avec le compilateur CCS pour programmmer des pic 18f4520 et je rencontre une petite difficulté.
Pour bien démarrer avec ce compilateur, j'ai décidé de faire clignoter des LED sur les ports RB0 et RB1 du pic quand celui-ci recoit "Y" sur RX, en interruption. Ce caractère est envoyé (via RS 232) depuis un PC.
Je receptionne le caractère sans problème, mais après il ne veut pas allé dans le "main" une fois reçu. J'ai regardé un peu partout sur les forums mais ayant quelques lacunes en anglais j'ai pas beaucoup progressé. Quelqun pourrait m'expliquer ce qu'il ne va pas svp?
le code :
Code:#include <Etalonnage Auto.h> #use rs232(baud=9600, parity=N, xmit=PIN_C6, rcv=PIN_C7, stream=PORT1, bits=8, errors) #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT char reception[1]='\0'; int i=0; #INT_RDA void RDA_isr() { puts("ack"); gets(reception); } void main(void) { enable_interrupts(GLOBAL); enable_interrupts(INT_RDA); set_tris_b(0x00); while(1) { if (reception[0]=='Y') while(i<4) // fonction permettant de faire clignoter les leds de RB0 et RB1 (4 fois) { // elle est active quand reception[0] = Y output_high(PIN_B0); output_high(PIN_B1); delay_ms(500); output_low(PIN_B0); output_low(PIN_B1); delay_ms(500); i++; } } }
J'utilise PCW de CCS pour écrire les codes et Mplab (configuré pour le compilateur CCS) pour les transferer sur le Pic.
(à noter que la fenetre "watch" de Mplab m'indique bien que reception[0] = 'Y' mais i toujours à 0)
Je compte garder le "gets()" afin d'envoyer des chaînes "d'ordre" pour plus tard.
Merci bien par avance.
-----