Bonjour,
Voila, je suis sur un pic 18F97J60, sur son UART est connecté un recepteur GPS qui lui envoye des trames.
J'arrive à récupérer la premiere trame comme il faut, mais par la suite, pour mettre a jour quand je le veux, je galere..
J'avais commencé par :
Mais cette fonction la ne fonctionne pas, la trame suivante ne contient qu'un seul caractere, tandis que si je fais ca :Code:void reinitUART(void) // fonction de prise en compte de la volonté d'updater { char c; //Une variable qui contiendra le caractere éventuellement recu PIE1bits.RCIE = 0; //On met a 0 l'interruption du RS232 if(PIR1bits.RCIF==1) //Si le flag de réception de trame est levé { c = RCREG; //On récupère le caractere recu PIR1bits.RCIF = 0; //On baisse le flag de réception } for(index = 0; index < 100; index++) { uartMsg[index]='\0'; //Je vide le tableau de caracteres } index =0; //Je remet les indices a leurs valeurs de départ indexMax=100; PIE1bits.RCIE = 1; //On met a 1 l'interruption du RS232 }
La trame suivante est bien la bonne.. mais il faut payer le prix d'un reset total du pic..Code:void reinitUART(void) // fonction de prise en compte de la volonté d'updater { Reset(); }
J'oublie certainement de remettre a 0 quelque chose.. Je suis preneur de toutes les idées! Merci![]()
-----