Timer działa i generuje przerwanie co około 4 sekundy świetnie, ale jest jeden problem zanim wejdzie w pierwsze przerwanie przez około minutę przerwań nie generuje.
Podmieniłem atmegę na inną, działa identycznie...
Dopisałem parę linijek na początku pracy ze zmianą portuB i opuźnieniem delay_ms i dopisane linijki się zrealizowały, ostatni stan się "zamroził" i po około minucie, zaczęły działać przerwania co 4 sek
Poniżej kod:
Podmieniłem atmegę na inną, działa identycznie...
Dopisałem parę linijek na początku pracy ze zmianą portuB i opuźnieniem delay_ms i dopisane linijki się zrealizowały, ostatni stan się "zamroził" i po około minucie, zaczęły działać przerwania co 4 sek
Poniżej kod:
Cytat:
#define F_CPU 1000000L
#include<avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <inttypes.h>
#include <util/delay.h>
// Program główny
int main(void)
{
DDRB = 0xFF;
PORTB = 0x34;
TCNT1L = 0x00; // załadowanie do licznika wartości początkowych
TCNT1H = 0xF0;
TCCR1B = 0x05;
TIMSK|=(1<<TOIE1);// odblokowanie przerwania od licznika
sei();// globalne odblokowanie przerwań
while(1);
}
SIGNAL (SIG_OVERFLOW1)
{
if(PORTB == 34)
{PORTB = 11+11*16;}
else
{PORTB = 34;}
TCNT1L = 0x00; // załadowanie do licznika wartości początkowych
TCNT1H = 0xF0;
}