Ahoj všem, mám vývojový kit 4.3 s ATMega644, nikdy jsem nepracovala v čítači a časovači,může mi někdo vysvětlit princip. Pročetla jsem si datasheet, ale moc moudrá z toho nejsem.
Když chci například spoždění 1s, tak aby mi blikala LED dioda. Nevím co přesně si představit pod definicemi TCCR1A…TIMSK1. A jak vše nastavit, abych docílila požadovaného spoždění.
Chápu to správně, že když použiji časovač tak během času 1s se může vykonávat program ve smyčce while(1), naopak když použiji delay_ms(1000) tak program vykonává pouze smyčku spoždění 1s a nic jiného.
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
# define F_CPU 2000000UL
uint16_t decimal;
void tim1Start(void)
{
TCCR1A ???
TCCR1B ???
TCCR1B ???
ICR1 = ???
TIMSK1 ??? |= 1<<TOIE1; //povoleni preteceni
}
ISR(TIMER1_OVF_vect)
{
//
PORTB ^= 1<<PB1; // blikani na PB1 s periodou ???ms
}
int main(void)
{
//
DDRB |= 1<<PB1;
tim1Start();
sei(); //povoleni preruseni
// main loop
while(1)
{
// hlavni program
}
}
administrator: přejmenováno z "ATMega644 časovač/čítač, přerušení"