Je viens vous demander un peu d'aide concernant cette erreur de compil :
d:/programmes/arduino-1.0.2/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr6/crtm2560.o: In function `__vector_default':
(.vectors+0x1c): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_7' defined in .text.__vector_7 section in core.a(WInterrupts.c.o)
Il y a à peine 20 minutes j'étais tout content d'avoir réussi à faire marcher mon programme quand tout à coup j'ai eu ce message quand j'ai réordonné mon code pour qu'il soit à peu près lisible après mes multiples tests ^^ Et puis juste à bouger les lignes de place (les prototypes de fonctions principalement) j'ai eu cette erreur. Google n'a pas été capable de me dire ce que j'ai fait de mal... Et le moteur de recherche d'Arduino non plus.
Quelqu'un saurait me dire sur quel bouton j'aurais pas du appuyer ? XD
Ne sachant pas quoi vous donner comme code au vue de l'erreur j'ai tout mis dans un ptit rar en pièce jointe.
La crius All In One Pro, elle utilise un ATMEGA 2560
J'utilise Arduino pour windows 1.0.2 sur windows 7 64bits à jour.
Dans ton lien je vois que pour lui c'était dû à trop de variable globale, j'ai souvent vu ça sur google. Je n'ai qu'un tableau de 5 cases... Si jamais c'est ça le problème je vois mal comment terminer mon projet... Ce qui est étonnant c'est que ça soit depuis que j'ai déplacé mes prototypes...
La dernière version est la 1.0.3, essaye on ne sait jamais tu as peu être un bug isolé.
Sinon donne un coup de ccleaner pour virer les fichiers temporaires de ton ordi, ferme l'ide, re-ouvre ton projet et tente de recompiler le tout.
Ce n'est pas un tableau de 5 éléments qui va empêcher une table d'interruptions de passer en RAM
J'ai donc passé Ccleaner et installé le 1.0.4
et toujours cette belle erreur :
d:/programmes/arduino-1.0.4/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr6/crtm2560.o: In function `__vector_default':
(.vectors+0x1c): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_7' defined in .text.__vector_7 section in core.a(WInterrupts.c.o)
Essaye d'utiliser la librairie Wire pour mettre de côté tout bug "externe" à ton code.
Si ça marche toujours pas fait un zip (pas un rar svp) de ton nouveau code que je test avec un compilateur plus récent (on sait jamais).
À la fin oui normalement (pas tout à fait si tu as vu mon mp)
D'après la description de lib c'est une amélioration de la lib de base en terme de performance et de logique.
Mais pour moi c'est surtout la simplicité d'utilisation en une ligne avec un simple read je récupère 6 registres différent de mon gyroscope avec ou sans bit de stop. alors qu'avec la lib de base... c'est toute une épopée et c'est moins clair à la relecture du code, ça prend énormément plus de place... bref j'aime moins la lib de base, mais je vais être obligé de l'utiliser vu les problèmes causés par l'autre
Reynosa:
À la fin oui normalement (pas tout à fait si tu as vu mon mp)
Actuellement j'ai une trentaine d'onglets et 3 googledoc d'ouvert, ton Mp est quelque pars dans ce bordel
Reynosa:
D'après la description de lib c'est une amélioration de la lib de base en terme de performance et de logique.
Mais pour moi c'est surtout la simplicité d'utilisation en une ligne avec un simple read je récupère 6 registres différent de mon gyroscope avec ou sans bit de stop. alors qu'avec la lib de base... c'est toute une épopée et c'est moins clair à la relecture du code, ça prend énormément plus de place... bref j'aime moins la lib de base, mais je vais être obligé de l'utiliser vu les problèmes causés par l'autre
Je vois mal quelles optimisations (de manière vraiment significative j'entends) pourrait être faites vu que l'I2C est géré par le hardware.
A par virer toutes la partie qui gère les fonctions avancé (print(), println(), readBytesUntil(), ...) ya pas grand chose à faire.
La lib Wire de base est pas super compliqué :
Wire.requestFrom() pour demander les données
boucle sur Wire.available() pour attendre les données
Wire.read() ou Wire.readBytes(buf, len) pour lire les données
Oui mais entre deux il y a tous les write qui servent à choisir le registre ensuite les requestFrom les boucles et les read pour 6 registres.. je passe d'une ligne à 30. m'enfin ça encore je m'en fous ce n'est qu'un problème de présentation, tant que ça marche je prend moi ^^ mais actuellement ça déconne dans le vent pour rien et ça commence à me les geler... mon code marchait auparavant
Actuellement j'ai une trentaine d'onglets et 3 googledoc d'ouvert, ton Mp est quelque pars dans ce bordel
Ma Moman m'a toujours dit de faire une chose après l'autre : XD