Forum: Mikrocontroller und Digitale Elektronik OSX-AVR-Template macht Probleme!


von Andi (Gast)


Lesenswert?

Hi @all,

ich habe OSX-AVR installiert und die mitgelieferten Templates in XCode 
importiert. Anschließend habe ich eine kleine Software zum Testen 
geschrieben. Diese beinhaltet u.A. eine WHILE-Schleife, um eine 
zeitliche Verzögerung hinzubekommen:
1
i = 0;
2
while (i < 64000) i++;

Wenn ich das Ganze nun über BUILD erstelle und das Hexfile in den Chip 
schiebe, wird diese Zeitangabe offensichtlich übersprungen. Ich habe das 
Hexfile dann ins AVR Studio importiert und mir das mal angesehen - die 
Schleife fehlt im Code! Die Aktion NACH der Schleife wird direkt im 
nächsten Schritt nach der Aktion VOR der Schleife ausgeführt! Was ist da 
denn los?!

Ich habe dann mal den C-Code ins AVR Studio importiert und dort 
erstellt. Effekt: Die Schleife wird mitkompiliert und somit auch 
ausgeführt.

Warum wird die Schleife in XCode ignoriert und im AVR Studio umgesetzt?


Viele Grüße und danke für jede Art von Antwort!
Andi

von Sven P. (Gast)


Lesenswert?

Das nennt man OPTIMIERUNG, OP-TI-MIER-UNG.

Der Compiler merkt, dass diese Schleife effektiv Nutzlos ist und lässt 
sie halt aus.

Schreib bei der Vereinbarung von i mal "volatile int i;" oder pack ein
> asm volatile ("nop");
in die Schleife rein.

von Andi (Gast)


Lesenswert?

Herrlich, ich habs mir fast gedacht. Der Optimierungsgrad im MAKEFILE 
ist so eingestellt, dass das Programm die kleinstmögliche Größe 
bekommt... Ich probier da mal n bisschen rum, man kann das reduzieren 
bis auf "keine Optimierung".

Vielen vielen Dank für den Tipp!
Andi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.