Re: Přerušení časovačem na AtMega
Pavel Hudeček
edizon na seznam.cz
Úterý Říjen 10 20:26:16 CEST 2023
Přerušení se samo zakáže vstupem do jeho obsluhy a samo povolí jejím
ukončením, takže cli a sei vyhodit.
Dále by to chtělo vědět, která ATmega, případně i zda/jak má nastavené s
CLK související fuse bity.
PH
Dne 10.10.2023 v 19:52 Martin Záruba napsal(a):
>
> Nastavil jsem
>
> TCCR1A = 0;// Vynulování registru TCCR1A
> TCCR1B = 0;// Vynulování registru TCCR1B
> // Nastavení režimu Fast PWM (TOP = ICR1)
> TCCR1A |= (1<< WGM11);
> TCCR1B |= (1<< WGM13)| (1<< WGM12);
> // Nastavení hodinového děliče na 64 (frekvence časovače = frekvence
> CPU / 64)
> TCCR1B |= (1<< CS11)| (1<< CS10);
> // Nastavení intervalu pro generování přerušení (100 us) - pro
> frekvenci CPU 16 MHz
> // ICR1 = (F_CPU / (časový interval * hodinový dělič)) - 1
> ICR1 = 24;// 100 us při frekvenci CPU 16 MHz a hodinovém děliči 64
> // Povolení přerušení od časovače Timer/Counter1
> TIMSK1 |= (1<< TOIE1);
> a rutina přerušení je zatím zcela triviální
> ISR(TIMER1_OVF_vect){
> cli();// Vypnutí globálních přerušení
> PORTA=0;
> PORTA=0xFF;
> sei();// Zapnutí globálních přerušení
> }
> Na všech bitech portu A jsou krásné obdélnikové pulzy. Ale perioda
> vyvolání pulzů je sice cca 100uS ale chaoticky kolísá. Co dělám blbě?
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20231010/c997ed44/attachment.htm>
Další informace o konferenci Hw-list