pour pouvoir passer un fichier wav de 106Ko, j'ai modifier la taille de mes compteur/pointeurs
de Word 16 bits -> Long 32 bits
or je constate que le formatage de sortie sur un long unsigned int
n'est pas OK avec MPLABX , alors que c'est correct avec MikroC
Le pire est que la valleur obtenue de la taille fichier ( File_Size) divisée par 128 (taille de bloc) , me donne quand meme un bon resultat
Nb de bloc 874 x 128 => 106112 =correct !
Le probleme ne serait qu la representation du nombre ,mais pas le nombre lui meme ..
voici les 2 versions
mikroC OK
Code : Tout sélectionner
// ********************* TEST ZONE **********************************************
unsigned long int File_Size;
p1=&Buffer1[0]+40;
*(p1)=0x26; *(p1+1)=0xB5;*(p1+2)=0x01;*(p1+3)=0; // Exemple de datas lues depuis le fichier wav
memcpy(CRam1,p1,4);
// Imprime_Asc_Hex( CRam1,4);
p2=&File_Size;
*(p2+3)=*(p1+3);
*(p2+2)=*(p1+2);
*(p2+1)=*(p1+1);
*(p2+0)=*(p1);
// sprintf(CRam1," Taille Data = %6u bytes \r\n",File_Size);
// Print(CRam1);
MaxBlocs=File_Size>>7; // 15-09-2022
// sprintf(CRam1," Max Blocs de 128 bytes =%5d \r\n",MaxBlocs);
// Print(CRam1);
TEST avec debugger MikroC
Name Value Address
p1 0x00 72 0x00CE
[value] 38 0x0072
p2 0x00 3B 0x00D0
[value] '&' 0x003B
File_Size 111910 0x003B
MaxBlocs 874 0x00D4
CRam1 {...} 0x0512
[0] 0x26 0x0512
[1] 0xB5 0x0513
[2] 0x01 0x0514
[3] 0x00 0x0515
[4] 0x00 0x0516
File_Size 111910 <-- OK ( fichier wav de 10 sec)
la version MPLABX
Code : Tout sélectionner
teste avec MPLABX XC8
uint32_t File_Size;
DB 26, b5, 01, 00, <-- 4 bytes => longueur de fichier affichée en hexa
Taille Data = 46374 bytes <-------- resultat sur format Word 0xB526 => 46374
Max Blocs de 128 bytes = 874
p1=&Buffer1[0]+40;
*(p1)=0x26; *(p1+1)=0xB5;*(p1+2)=0x01;*(p1+3)=0;
memcpy(CRam1,p1,4);
Imprime_Asc_Hex( CRam1,4);
p2=&File_Size;
*(p2+3)=*(p1+3);
*(p2+2)=*(p1+2);
*(p2+1)=*(p1+1);
*(p2+0)=*(p1);
sprintf(CRam1," Taille Data = %u bytes \r\n",File_Size);
Print(CRam1);
MaxBlocs=File_Size>>7; // 15-09-2022
sprintf(CRam1," Max Blocs de 128 bytes =%5d \r\n",MaxBlocs);
Print(CRam1);
Une idée du pourquoi cette différence de comportement ?
Cependant la lecture fichier déconne au dela de 63360 ??


ta réponse etait pile poil adequate ...
à remarquer