Gast
#4282846
Hallo, ich sitze gerade vor nem seltsamen Problem mit einem Tiny24A. Den übrigen Code habe ich schon entfernt und mich an das Problem herangetastet. Vielleicht hat ja jemand von Euch eine Erklärung. Im Prinzip soll eine LED einfach nur blinken. Da zwischendurch noch was anderes gemacht wird, habe ich die Abfrage auf >500 gemacht, was aber die LED unregelmäßig blinken lässt. Schreibe ich == 500, funktioniert das Blinken bestens. Kann es sein, daß das Carry Bit in der Abfrage (einzigster Unterschied im Assembler) durch einen folgenden Interrupt irgendwie gelöscht wird? Hier noch der Codeausschnitt: #include <avr/io.h> #include <avr/interrupt.h> volatile unsigned int counter; int main(void) { DDRD |= (1<<PD5); PORTD &= ~(1<<PD5); TCCR0 = (1<<WGM01) | (1<<CS02); OCR0 = 239; TIMSK |= (1<<OCIE0); sei(); while(1) { if (counter > 500) { counter = 0x0000; PORTD ^= (1<<PD5); } } } ISR(TIMER0_COMP_vect) { counter = counter + 10; } Danke schon mal für alle Hinweise - irgendwie seh ich's einfach nicht...