Go Down

Topic: bug IDE MEGA 2560 (Read 89 times) previous topic - next topic

pvisage

je souhaite signaler un probleme d'utilisation de certaines instructions (while, goto) sur MEGA 2560 r3, j'utilise la version 1.8.9 sous windows.
il semble que l'adresse de retour de boucle soit mal calculée, notamment dans des boucles courtes (vraisemblablement branchement relatif) et aboutit une adresse avant l'entrée de boucle.
Le programme est OK sur DUE mais pas sur MEGA (2 cartes testées).
Pour palier  ce probleme j'utilise une instruction inutile a mon programme de type noInterrupts ou Interrupts placée juste avant le while, cette instruction doit vraisenblablement ne prendre qu'une address programme et ainsi cela fonctionne!


kamill

#1
Sep 02, 2019, 10:24 am Last Edit: Sep 02, 2019, 11:04 am by kamill
Bonjour,

Ca parait un peu gros. Peux tu mettre un programme qui pose problème?

Tu es sur que ce que tu prends pour un problème n'est pas une optimisation?
Par exemple
Code: [Select]
  Serial.println("Début");
  volatile unsigned long i=100000ul;
  while (i--);
  Serial.println("Fin");

Met environ 170ms pour s'exécuter

Par contre si on enlève le 'volatile' la boucle while() est supprimée par l'optimiseur et le temps d'exécution est inférieur à 1ms.

Go Up