Zdravim vsechny.
Zkousim momentalne blikani LED s frekvenci 1Hz.
Pouzivam AtMega8 a mod CTC s hardwarovym rizenim pinu pro blikani LED. Prostudoval jsem tutorial zde avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=50106 a upravil jsem kod v kapitole 6 pure hardware CTC takto
#define F_CPU 1000000UL
#include <avr/io.h>
int main (void)
{
DDRB |= (1 << 1); // Set LED as output
TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode
TCCR1A |= (1 << COM1A0); // Enable timer 1 Compare Output channel A in toggle mode
OCR1A = 15624; // Set CTC compare value to 1Hz at 1MHz AVR clock, with a prescaler of 64
TCCR1B |= ((1 << CS10) | (1 << CS11)); // Start timer at Fcpu/64
for (;;)
{
}
}
Pouzivam interni oscilator 1Mhz a zjistil jsem ze LED blika nejak divne.
Zda se mi ze blika s frekvenci 0.5Hz, (plna perioda zapnuti/vypnuto probehne za 2 sekundy) a ze blika rychleji nez tech 0.5 Hz. Kontoluji to podle hodinek a uz po 2 taktech je to docela rozhozene.
Zatim jsem jeste nemel odvahu zbastlit nahravani frekvence pres zvukovku, takze presnou periodu nejsem schopen odhadnout, ale jde videt, ze to uplne nefunguje.
V budoucnosti si chci hrat s IR ovladanim, pri cemz se mi zda ze presnost generovani pulzu je docela velka a s timhle se to asi nezvladne…
Diky za rady.
administrator: přejmenováno z "Problemy s blikanim LED ve frekvenci 1Hz"
Nestudoval jsem zdroje ani další nastavení timeru (předpokládám, že je správné když to bliká).
Proč to bliká pomaleji?
Patrně proto, že máš nastavenu negaci pinu při compare match. Když totiž vydělíš 1MHz/64, vyjde 15625. Dáš-li tuto hodnotu (o 1 zmenšenou) do TOP registru, bude negace probíhat každou vteřinu => perioda je 2s. Nastav do TOP hodnotu poloviční.
RC oscilátor má toleranci 10%, takže jesli to jde o trochu šejdrem, je to vpořádku.
Nojo to je fakt, ted jsem se koukl na ten priklad a ono to opravdu je toogle bit, takze prepnuti, takze sice prepina LED s frekvenci 1Hz ale vlastni blikani led tim padem probiha s frekvenci 0.5 Hz.
Pokud tedy toto budu chtit pouzit generovani 36kHz nosne frekvence pro IR ovladani, budu muset pouzit externi oscilator, nebo tento vyhovi?
Pouziju TSOP31236. Dekuji.
Na to asi kvalifikovaně neodpovím. Budou to jen mé odhady.
Záleží na několika věcech. Jesli to bude kusovka provozovaná při stálé teplotě, je možné nakalibrovat RC pod 2% a to by mělo bejt vpohodě. Jesli toho bude víc, tak kalibrace každýho čipu je vopruz a při provozu za různých teplot taky nic moc. Je potřeba se podívat na teplotní stabilitu oscilátoru.
Další věc je filtr přijímače, ale tím snad 10% odchylka nosné projde. Ovšem pak narazíš na dekódování paketu. Ten budeš mít nejspíš delší jak 8 bit (pro uart se uvádí, že je relativně spolehlivý do 2% odchylky) a tam jsi s RC skončil.