Parcourir ce sujet :
1 Utilisateur(s) anonymes
Boucle "for" pour un tableau qui plante tout |
||
---|---|---|
Accro
![]() ![]() Inscrit:
28/09/2005 14:02 De Catalunya (66)
Messages:
581
![]() |
Bonjour,
Quand je comprend pas pourquoi ça plante, et que ma carte se réinitialise, je vous demande l'aide car j'ai les cheveux qui poussent à l'intérieur de mon crâne ... ![]() Pour mon bus 1 wire, j'arrive à écrire sans problème. Mais c'est en lecture qu'il y a un truc qui m'échappe. Voici 3 fonctions : La première lit 1 bit sur le bus, et c'est ok.
char OWReadBit(void)
La 2ème lit un octet grâce à la 1ère fonction. C'est ok.
char OWReadByte(void)
Et voici là 3ème, et c'est celle qui me rend fou, et qui est censée me lire 8 octets d'un seul coup, donc grâce à la 2ème fonction
void OWReadPackets(void)
Je peux faire un breakpoint sur le for, mais pas sur le asm(nop); Donc c'est bien que mon tableau déconne ???!!! Qué passa !!!!???
Posté le : 04/03/2016 16:52
|
|
Les octets s'envolent, les écrits restent !
|
||
![]() |
Re: Boucle "for" pour un tableau qui plante tout |
||
---|---|---|
Pilier de la communauté
![]() ![]() Inscrit:
23/10/2005 11:40 De Aix les Bains (73)
Messages:
1943
![]() |
la fonction 2 retourne un char
le char tu le range dans un tableau de unsigned char Pas sur que ça ait un rapport mais c'est pas bon déjà .
Posté le : 04/03/2016 17:04
|
|
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
|
||
![]() |
Re: Boucle "for" pour un tableau qui plante tout |
||
---|---|---|
Accro
![]() ![]() Inscrit:
28/09/2005 14:02 De Catalunya (66)
Messages:
581
![]() |
Ok j'uniformise.
D'ailleurs ça fait quoi un char seul ? il est signé ou pas ??
Posté le : 04/03/2016 17:06
|
|
Les octets s'envolent, les écrits restent !
|
||
![]() |
Re: Boucle "for" pour un tableau qui plante tout |
||
---|---|---|
Accro
![]() ![]() Inscrit:
28/09/2005 14:02 De Catalunya (66)
Messages:
581
![]() |
et en plus il reste un int tout en haut
![]()
Posté le : 04/03/2016 17:09
|
|
Les octets s'envolent, les écrits restent !
|
||
![]() |
Re: Boucle "for" pour un tableau qui plante tout |
||
---|---|---|
Accro
![]() ![]() Inscrit:
28/09/2005 14:02 De Catalunya (66)
Messages:
581
![]() |
Je remet tout :
Ça ne règle pas mon probleme ...
//---------------------------------------------------------------------------
Posté le : 04/03/2016 17:17
Edité par dinastar sur 04/03/2016 17:53:57
|
|
Les octets s'envolent, les écrits restent !
|
||
![]() |
Re: Boucle "for" pour un tableau qui plante tout |
||
---|---|---|
Accro
![]() ![]() Inscrit:
28/09/2005 14:02 De Catalunya (66)
Messages:
581
![]() |
Chien de garde je l'ai désactivé.
Heuuu dans quel cas il y a dépassement de variable ? Variable mal dimmensionnée ?
Posté le : 04/03/2016 18:34
|
|
Les octets s'envolent, les écrits restent !
|
||
![]() |
Re: Boucle "for" pour un tableau qui plante tout |
||
---|---|---|
Pilier de la communauté
![]() ![]() Inscrit:
23/10/2005 11:40 De Aix les Bains (73)
Messages:
1943
![]() |
perso je sèche en l’état
ça te raconte quelque chose quand ça plante ? c'est quoi les symptômes ?
Posté le : 04/03/2016 20:12
|
|
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
|
||
![]() |
Re: Boucle "for" pour un tableau qui plante tout |
||
---|---|---|
Accro
![]() ![]() Inscrit:
28/09/2005 14:02 De Catalunya (66)
Messages:
581
![]() |
Quand ça plante ça dit que dalle.
Comme je disais, dans cette fonction, j'arrive à arriver à un break sur la ligne du for. Dès que je rentre dans la boucle, ça foire, et impossible d'arriver au asm(nop).
void OWReadPackets(void)
Alors peut-être autre chose : Voici le début de mon main :
void main(void) {
Que veut dire cette erreur ? la fonction sert donc à lire un octet complet, et est utilisé dans ma boucle for ... C1420 Result of function-call is ignored Là ché pas où chercher ...
Posté le : 04/03/2016 21:14
|
|
Les octets s'envolent, les écrits restent !
|
||
![]() |
Re: Boucle "for" pour un tableau qui plante tout |
||
---|---|---|
Accro
![]() ![]() Inscrit:
28/09/2005 14:02 De Catalunya (66)
Messages:
581
![]() |
J'ai l'impression qu'il y a un truc qui va pas dans OWReadByte() ...
Posté le : 04/03/2016 21:20
|
|
Les octets s'envolent, les écrits restent !
|
||
![]() |
Re: Boucle "for" pour un tableau qui plante tout |
||
---|---|---|
Pilier de la communauté
![]() ![]() Inscrit:
13/10/2005 10:06 De haute-savoie (74)
Messages:
1164
![]() |
Salut
Alors C1420 Result of function call is ignored est un warning et pas une erreur. Cela dit simplement que la variable de retour de ta fonction n'est pas utilisée par la suite. Attention il peut du coup décider d'optimiser. Si tu ne veux pas que le compilateur s'autorise à faire des optimisations sauvages tu peux déclarer des variables avec le mot clé volatile
volatile unsigned char u8toto = 0;
Ensuite quand tu dis que ça plante, ça fait quoi ?? Est-ce que tu peux faire du pas à pas dans la boucle for ? Si non où est-ce que cela bloque ? (quel index de la boucle ?) Pour illustrer si besoin était l'importance des conventions et d'écrire du code directement propre c'est que dans tes quelques lignes tu t'es confronté toi même à des erreurs de type... le 'int result' qui est renvoyé dans un char c'est un dépassement de mémoire assuré. Je te recommande d'écrire un préfixe de taille de variable sur tes variables pour rapidement détecter ces erreurs. en l'occurence si ta variable result déclarée en int s'était appelée u16result, tu aurait rapidement vu que cela rentrait pas dans un u8. Pour ton problème de fond. J'ai un doute sur ton page_data qui est déclaré en variable globale et qui n'est pas utilisé par la suite. C'est typique de là où le compilateur selon son paramétrage va optimiser en se disant que ça ne sert à rien de manipuler une variable qui n'est pas lue ensuite ! Donc déclare ta variable ainsi :
volatile unsigned char page_data[8];
et dis nous si ça améliore... Et je te recommande vivement d'introduire un fichier tdef pour les types afin d'éviter de te balader avec des unsigned int char short long, long long, double, etc.... Ce sont des erreurs assurée à très court terme.
Posté le : 04/03/2016 21:48
|
|
![]() |
Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.