Chce sobie ³adnie uruchomiæ licznik T2 na ATmega8, pojawi³ siê dla mnie niezrozumia³y problem, otó¿ po dodaniu linijki ASSR |= (1<<AS2); program mi nie dzia³a prawid³owo czyli nie mruga diod± (bez tej linijki wszystko dzia³a ok dioda mruga). ASSR |= (1<<AS2) ustawia T2 w tryb asynchronicznej pracy jest mi to potrzebne bo chce wprowadziæ pó¼niej uC w stan u¶pienia.
INTERRUPT (SIG_OVERFLOW2) { diode(1); // ta funkcja mruga diod± TCNT2=0; }
int main(void) { sleep(500); // odczekuje aby wszystko siê ustabilizowa³o
TIMSK &=~((1<<TOIE2)|(1<<OCIE2)); ASSR |= (1<<AS2); // bez tej linijki wszystko dzia³a jednak linijka ta musi byæ aby licznik dzia³a³ asynchronicznie TCNT2 = 0x00; TCCR2 = 0x07; while(ASSR&0x07); //Wait until TC2 is updated TIMSK |= (1<<TOIE2); sei();
while(1); return(0); }