Gast
#939047
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