Witam, zacząłem zabawę z przerwaniami i jakoś ni mogę sobie poradzić, poniżej mój skromny kod programu który miał za zadanie do 1 sek zapalać diodę podłączoną do PORTB 0, ale coś nie "bangla", czy może mi ktoś wskazać co robię źle?
#include <avr/io.h> // dostęp do rejestrów
#include <avr/interrupt.h> // funkcje sei(), cli()
#include <avr/signal.h> // definicje SIGNAL, INTERRUPT
void delay(unsigned int mstime) { /* prosta funkcja czasu, */
long int i, j;
for(j=0; j<mstime; j++)
for(i=0; i<=1000; i++);
}
SIGNAL(SIG_OVERFLOW0){
PORTB ^= _BV(0);
}
void Timer0Init()
{
TCNT0=49911; //wartość początkowa timera
TCCR0|=(1<<CS01)|(1<<CS00); //preskaler CK/64
TIMSK |= (1 << TOIE0); // zezwolenie na przerw. od przepełnienia
}
int main(void)
{
DDRB |= _BV(0)|_BV(1); /*ustawiamy 0 1 wejscie Portu B.*/
PORTB &= ~_BV(0); /*ustawiamy stan niski na koncowce 0 Portu B.*/
Timer0Init();
sei();
while(1)
{
}
return 0;
}
