Bonjours à tous.
j'ai réalisé un programme de récupération de données d'un fichier .hex qui est envoyer par liaison RS232 qui sert à mettre à jour mon microcontroleur.
Le soucie c'est que je ne recoi pas toutes les lignes du fichier.
voici le fichier que j'envoi par RS232 :
:100000000C9472000C948B000C948B000C948B005D
:100010000C948B000C948B000C948B000C948B0034
:100020000C948B000C948B000C948B000C948B0024
:100030000C948B000C948B000C948B000C948B0014
:100040000C948B000C948B000C948B000C948B0004
:100050000C948B000C948B000C948B000C948B00F4
:100060000C948B000C948B000C948B000C948B00E4
:100070000C948B000C948B000C948B000C948B00D4
:100080000C948B000C948B000C948B000C948B00C4
:100090000C948B000C948B000C948B000C948B00B4
:1000A0000C948B000C948B000C948B000C948B00A4
:1000B0000C948B000C948B000C948B000C948B0094
:1000C0000C948B000C948B000C948B000C948B0084
:1000D0000C948B000C948B000C948B000C948B0074
:1000E0000C948B0011241FBECFEFD1E2DEBFCDBF39
:1000F00000E00CBF12E0A0E0B2E0EEE0F2E000E0D1
et voici mon code :
ISR( USART1_RX_vect ) //IHM
{
char tmp = 0;
index_ligne = 0;
tmp = UDR1; /* je met tout se qui arrive par RS232 dans la variable tmp*/
if(tmp == 0x0A) /* si j'arrive au caractère de saut de ligne */
{
index_ligne++;
index_caractere=0;
}
else if(tmp != 0x0D) /* temps que la ligne n'est pas fini */
{
bufferISR[index_ligne][index_caractere] = tmp; /* je met dans mon buffer a 2 dimention les données recu */
index_caractere++;
}
}
Le soucie c'est que dans la boucle if(tmp != 0x0D) quand je met un putchar de tmp j'ai bien les données voulu, mais cela ce guate quand je met toute c'est données dans mon bufferISR...
voici la déclaration de mon bufferISR :
#define CAR 45
#define NBR_LIGNES 16
volatile int index_ligne;
volatile int index_caractere;
char bufferISR[NBR_LIGNES][CAR];
Mais je n'arrive pas à trouver mon erreur.
Auriez vous des idées?
Je vous remercie de l'attention que vous porterez à mon problème.