Dir ist klar, was der Unterschied ist zwischen
und
???
Dein momentanes Programm ist äquivalent hierzu:
Code:
#include <avr/io.h>
void main(void)
{
PORTB = (1<< PB4);
DDRB = (1<< DDB4);
OCR0 = 0xff;
TCCR0 = (1 << WGM00) | (1 << WGM01) | (1<< COM01) | (1<< CS00) | (1<< CS01) | (1<< CS01);
OCR0 = OCR0 + 1;
if (OCR0 = 0xff)
OCR0 = 0x00;
} // Ende main, landet in exit() (Endlosschleife)
Das wiederum ist nicht anderes als
Code:
#include <avr/io.h>
void main(void)
{
PORTB = (1<< PB4);
DDRB = (1<< DDB4);
OCR0 = 0xff;
TCCR0 = (1 << WGM00) | (1 << WGM01) | (1<< COM01) | (1<< CS00) | (1<< CS01) | (1<< CS01);
OCR0 = OCR0 + 1;
OCR0 = 0xff;
OCR0 = 0x00;
} // Ende main, landet in exit() (Endlosschleife)
Dein OCR0 ist also immer 0. Mach die den Unterschied klar zwischen = und == und ein überflüssiger ; hat schon so manche Schleife ausgeknockt. Beides und noch mehr steht in Fallstricke bei der C-Programmierung
Lesezeichen