Skocz do zawartości

[C] Atmega 16 problem z Timerem i IF-ami


Pomocna odpowiedź

Napisano

Proszę o pomoc.

Napisałem program:

SIGNAL(SIG_OVERFLOW2){ 
//TCNT2 = 0; 
temp = ((temp+1)%32); 
} 

void test(void){ 
sei(); 
sbi(TCCR2,CS20); 
while(1){ 
if(temp == 0x0000){ 
cbi(port_led,led2); 
} 
if(temp == 0x0010){ 
sbi(port_led,led2); 
} 
} 
} 
///////////////////////////////////////////////////////
int main(void){ 
setup(); 
test(); 
//sei(); 
setup2(); 
while(1); 
}

I problem jest z nim taki że nie wykonują się instrukcje w if-ach. Sprawdzałem to na symulacji w AVR studio. Przerwanie od tajmera działa, na podglądzie pamięci ram widać że zmienna temp (globalna unsigned int) zwiększa swoją wartość od zera do 31, ale nawet jak ośiągnie wartości 0 i 16 to instrukcje zapalania i gaszenia diody się nie wykonują. Nie rozumiem tego.

Żeby nie było wątpliwości, to dioda działa i jak napiszę wprost zapalenie diody a nie w ifie to się zapali, a powyżej jest tylko fragment programu i podane funkcje mają całą potrzebną "otoczke" 🙂

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...