Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Probleme de pointeur ou ? (Résolu)
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir,
Je ne vois pas pourquoi ça bugue ici !
txt=&TEXTE[0];
une affectation de pointeur , ne devrait pas modifier le contenu de l'element pointé ..
à part un effet de bord non désiré par d'autres portions de code ....
mais si je supprime cette affectation la
la 2em partie s'execute OK
je sais, j'ai vu qu'il manque les unites secondes ..
avec bavard=1
remplissage d'une trame d'affichage 12 max7219 avec differents éléements
le code correspondant à 1ere partie
resultat via YAT terminal
......
=========== 2em partie=======================
code 2em partie
malgré ce test prealable
où il n'y a rien d'anormal ...
le pack du projet mplabx
Je ne vois pas pourquoi ça bugue ici !
txt=&TEXTE[0];
une affectation de pointeur , ne devrait pas modifier le contenu de l'element pointé ..
à part un effet de bord non désiré par d'autres portions de code ....
mais si je supprime cette affectation la
la 2em partie s'execute OK
je sais, j'ai vu qu'il manque les unites secondes ..
2) kL= 29
19H08M1 Sam 27 Mai 25.13°C
Long Trame = 29
avec bavard=1
remplissage d'une trame d'affichage 12 max7219 avec differents éléements
le code correspondant à 1ere partie
Code : Tout sélectionner
CPrint(" Test Update()\r\n");
txt=&TEXTE[0];
Repetition_Affichage_Texte=0;
UpDate_Trame();
kL=strlen(txt);
p2=txt;
Print(p2); CRLF1();
sprintf(CRam1," Long Trame = %5d \r\n",kL);
Print(CRam1);CRLF1();
remplis_buffer_with_string(p2);
CPrint(" remplis buffer with string TEXTE \r\n");
Print(txt);
resultat via YAT terminal
Test Update()
18H33M3
18H33M3 Sam
18H33M3 Sam 27 Mai
18H33M3 Sam 27 Mai 24.82°C <-- print via pointeur txt ..OK
18H33M3 Sam 27 Mai 24.82°C <--- print via pointeur P2=txt ...OK
Long Trame = 29 <-- OK !
remplis buffer with string TEXTE
18H33M3 Sam 27 Mai 24.82°C
Bit Bang Soft SPI RC2=Clk ,RC1=Dout RC0=CS -> Max7219:
Init Matrices MAX7219
Clear Matrices MAX7219
....
TEXTE to display : 18H33M3 Sam 27 Mai 24.82°C
......
=========== 2em partie=======================
code 2em partie
Code : Tout sélectionner
Test update() :
1) kL= 29 <--- OK
18H33M3 <-- BAD!!
2) kL= 9 <--- ???
18H33M3
Long Trame = 9
Code : Tout sélectionner
CPrint(" Test update() : \r\n");
sprintf(CRam1,"\r\n 1) kL=%5d \r\n",kL);
Print(CRam1);
txt=&TEXTE[0]; <--- perturbation ICI !
UpDate_Trame();
Print(txt); CRLF1();
kL=strlen(txt);
sprintf(CRam1,"\r\n 2) kL=%5d \r\n",kL);
Print(CRam1);
malgré ce test prealable
Code : Tout sélectionner
//--- test zone -------------
for (i=0;i<sizeof(TEXTE);i++) TEXTE[i]=0;
txt=&TEXTE[0];
*(txt)='A';
*(txt+1)='B';
*(txt+2)='C';
Print(txt);CRLF1();
p2=txt;
Print(p2);CRLF1();
txt=&TEXTE[0];
Print(txt);CRLF1();
Print(p2);CRLF1();
//---------------------------------
où il n'y a rien d'anormal ...
Compile le May 27 2023 a 19:00:56 UTC
avec version XC8 : 2360 et PACK PIC18F-K_DFP 1.6.125
ABC
ABC
ABC
ABC
le pack du projet mplabx
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par paulfjujo le dim. 28 mai 2023 12:14, modifié 1 fois.
Probleme de pointeur ou ?
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour,
j'ai appliqué ma devise .. et trouvé le bug
Avant la premeiere partie
j'ai utilisé la fonction RTC
pour recuperer Time..
mais entre la 1ere partie et la 2em partie ,j'ai utilisé cette fonction
Print_Date_Complete();
or dans cette fonction time resultat était sur 9 cars 12H23M15S +zero
et non plus 8 cars 12:23:15 +zero
j'avais donc un zero terminateur de trop qui s'inserait apres le Update()
et donc écourtait le string txt ! ... un zero = terminateur de string
(déja qu' au départ, un string n'est pas tres long!) non c'est pas obscène !
le terminal est vraiment utile dans ces cas là !
j'ai appliqué ma devise .. et trouvé le bug
Avant la premeiere partie
j'ai utilisé la fonction RTC
Code : Tout sélectionner
cx=Lecture_Affichage_Registre_DS3231(j,1); // parametre 1=avec affichage
pour recuperer Time..
mais entre la 1ere partie et la 2em partie ,j'ai utilisé cette fonction
Print_Date_Complete();
or dans cette fonction time resultat était sur 9 cars 12H23M15S +zero
et non plus 8 cars 12:23:15 +zero
j'avais donc un zero terminateur de trop qui s'inserait apres le Update()
et donc écourtait le string txt ! ... un zero = terminateur de string
(déja qu' au départ, un string n'est pas tres long!) non c'est pas obscène !
Code : Tout sélectionner
void Print_Date_Complete(void)
{
DS3231_Read_All_Registers();
time[0]=0;
BCD_To_Ascii(jour,date); date[2]='/';
BCD_To_Ascii(mois,date+3); date[5]='/';
BCD_To_Ascii(Annee,date+6); date[8]=0;
CPrint(JourSemaine[jS]);PrintChar(' ');
BCD_To_Ascii(jour,CRam1);Print (CRam1);PrintChar(' ');
Month=Bcd2Dec(mois);
CPrint(Douze_Mois[Month]);PrintChar(' ');
BCD_To_Ascii(Annee,CRam1);Print (CRam1);PrintChar(' ');
BCD_To_Ascii(heure,time) ; time[2]=':';
BCD_To_Ascii(minute,time+3 ); time[5]=':';
BCD_To_Ascii(second,time+6);
// was time[8]='S';time[9]=0; <---- BUG Here!
time[8]=0;
Print(time);
CRLF1();
}
le terminal est vraiment utile dans ces cas là !
Probleme de pointeur ou ? (Résolu)
Probleme de pointeur ou ? (Résolu)
Salut,
Merci beaucoup pour ce partage, ça m'a vraiment aidé
Merci
Merci beaucoup pour ce partage, ça m'a vraiment aidé
Merci
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 115 invités