Weiss nicht was los ist, dieser code kopiert PC5 nach PC4 in einem Atmega48. Laeuft volle Geschwindigkeit bei 18432000 Xtal. Bei Optimize O0 und O1 geht es, bei den anderen nicht, Warum? // For ATmega48 // Copy PC5 to PC4 #include <avr/io.h> int main (void) { DDRC |= (1<<DDC4); // PC4 is output DDRC &= ~(1<<DDC5); // PC5 is input for (;;) { if (PINC & (1<<PC5)) PORTC |= (1<<PC4); else PORTC &= ~(1<<PC4); } } // Works in Optimize -O0 and -O1 // DOES NOT WORK in -O2 -O3 and -Os (output High) Benutze Studio 4.12 Ich weiss es gibt andere Methoden zum kopieren eines I/O bits, aber es geht mir hier um allein das Verstaendniss. Ach ja, frueher hatte ich beim compilieren immer einen kleinen Bericht am ende wo stand wieviel Memory aufgebraucht wird. Jetzt habe ich es nicht mehr, auch keine Ahnung. (Guter Anfang fuer die Woche!) Edward
Edward Cardew wrote:
> Benutze Studio 4.12
Und welche Version vom Compiler?
Probier mal statt dem for(;;) ein while(1) zu schreiben.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.