Gast
#75118
Hi, ich wollte mal ein sinnvollen Beitrag reinstellen, nicht von mir sondern von Atmel, aber was solls. Vielleicht gibt es noch mehr Leute, die gerne in C programmieren und sich mit den AVR-funktionen nicht auskennen, wie ich, und etwas "rumspielen" wollen. Was macht das Programm? init() dürfte klar sein, das kann man auch aus der ioXXXX.h rauslesen. -man gibt den prescaler an main() ist auch noch verständlich: -init(): initialisiert den timer0 (TCCR0) und definiert DDRB als Ausgang (DDRB = 0xFF) -while(1): auch verständlich, eine Endlosschleife -PORTB++: von PortB0-Bx, also alle Ports der Reihe nach dann gehts bei mir aber schon los! delay(): wenn ich delay weglasse, dann leuten alle LEDs kann mir jemand erklären, was ############################# void delay(void){ while (!(TIFR&0x02)); TIFR = 0x02; // Clearing overflow flag }* ############################# macht? ...Verzögerung solange bis TIFR&0x02 erreicht ist... so verstehe ich das... dann habe ich in ->mikrocontroller.net->artikel->C für AVR nachgelesen: TIFR: Timer/Counter Interrupt Flag Register 0x02 -> 1.Bit = 1 entspricht TOVR: Timer/Counter Interrupt Flag Register "Das Flag wird automatisch gelöscht, wenn der zugehörige Interrupt-Vektor aufgerufen wird. Es kann jedoch auch gelöscht werden, indem eine logische 1 (!) in das entsprechende Bit geschrieben wird." Also die Verzögerung solange bis ??? hier setzt es aus bei mir... Kann mir jemand TIFR=&0x02 erklären, was da passiert. Danke