Krystalový oscilátor u procesorů AVR
Moderátor: Moderátoři
Krystalový oscilátor u procesorů AVR
Zkouším si něco s procesorem AT tiny 2313 a zkouším u něj nastavit přesnou frekvenci. To se vlastně hezky podařilo, ale přesto mám dotaz
Oscilátor je zapojený podle DS, krystal mezi nožičky XTAL1 a XTAL2, z každé z nich na zem malý kondenzátor. Když se jeden nebo druhý nahradí trimrem, dá se kmitočet krásně doladit.
No a teďka ty dotazy:
- Kam zapojit trimr? Je lépe jej zapojit na vstup nebo na výstup vnitřního invertoru? Funguje na obou nožičkách, ale možná je jedna z nich vhodnější. A pokud tomu tak je, proč?
- Kmitočet se dá trochu doladit i změnou napětí procesoru. Je správnější jej doladit trimrem a nebo napětím? Měření mi ukazuje, že pokud se napětí nemění, je kmitočet stabilní. Na čítači připojeném na oscilátor již několik hodin svítí 4000,000 kHz.
Oscilátor je zapojený podle DS, krystal mezi nožičky XTAL1 a XTAL2, z každé z nich na zem malý kondenzátor. Když se jeden nebo druhý nahradí trimrem, dá se kmitočet krásně doladit.
No a teďka ty dotazy:
- Kam zapojit trimr? Je lépe jej zapojit na vstup nebo na výstup vnitřního invertoru? Funguje na obou nožičkách, ale možná je jedna z nich vhodnější. A pokud tomu tak je, proč?
- Kmitočet se dá trochu doladit i změnou napětí procesoru. Je správnější jej doladit trimrem a nebo napětím? Měření mi ukazuje, že pokud se napětí nemění, je kmitočet stabilní. Na čítači připojeném na oscilátor již několik hodin svítí 4000,000 kHz.
- Přílohy
-
- oscilator.gif
- (13.08 KiB) Staženo 43 x
Jsem na cestě k šípku.
- serviceman
- Příspěvky: 4005
- Registrován: 09 črc 2013, 02:00
Já bych dal trimr na vstup (XTAL1). Mrkni tu:
http://avrprogrammers.com/howto/crystal-accuracy
Žijeme ve světě, kde nic není ideální. Navíc kondenzátory a trimry mají svůj ppm/C. Takže to bude trochu chodit s teplotou...
Jinak na internetu najdeš trik, jak z libovolného krystalu dostat konstantní tik např. 1Hz.
http://avrprogrammers.com/howto/crystal-accuracy
Žijeme ve světě, kde nic není ideální. Navíc kondenzátory a trimry mají svůj ppm/C. Takže to bude trochu chodit s teplotou...
Jinak na internetu najdeš trik, jak z libovolného krystalu dostat konstantní tik např. 1Hz.
Toto všechno vím a počítám s tím. A také proto se ptám, kam je lepší dát trimr. Jistě, nebude to dokonalé, ale pokud je ze dvou možností jedna lepší, chci ji využít. Ale já nevím, která z možností zapojení trimru je lepší a proto se ptám.frpr666 píše:Já bych dal trimr na vstup (XTAL1). Mrkni tu:
http://avrprogrammers.com/howto/crystal-accuracy
Žijeme ve světě, kde nic není ideální. Navíc kondenzátory a trimry mají svůj ppm/C. Takže to bude trochu chodit s teplotou...
Ten trik by mne zajímal, já to řeším asi primitivně pomocí čítače/časovače a přerušení v procesorufrpr666 píše:Jinak na internetu najdeš trik, jak z libovolného krystalu dostat konstantní tik např. 1Hz.
Jsem na cestě k šípku.
Nebude rozumnejsi tam dat za par kacek RTC a nemusis se babrat s vypocty casu, datumu apod.? Treba maxim dela RTC s teplotne kompenzovanym oscilatorem s odchylkou +-2ppm coz je nahony vzdalene krystalum. Navic se da do obvodu jednoduse nahrat korekce.
Pokud cas chces opravdu zpracovavat v AVR, dej tam oscilator, za rozumnou cenu se daji koupit se stabilitou kolem +-0,5ppm
Jak psal AB1, na nejake doserizovani krystalem se vykasli, tady jde opravdu jen o to ulitavani s teplotou/dlouhodobou stabilitu. Doladeni si udelej softwarove.
Pokud cas chces opravdu zpracovavat v AVR, dej tam oscilator, za rozumnou cenu se daji koupit se stabilitou kolem +-0,5ppm
Jak psal AB1, na nejake doserizovani krystalem se vykasli, tady jde opravdu jen o to ulitavani s teplotou/dlouhodobou stabilitu. Doladeni si udelej softwarove.
Jeden člověk říká, že SW korekce je nadraka a je lepší trimr, druhý (zde) říká, že HW je nadraka a je lepší korekce v SW. To si pak má člověk vybrat
Můžu poprosit o tip na typ RTC obvodu s tolerancí ±2ppm? A případně kde splašit oscilátor s přesností ±0,5ppm za rozumnou cenu? Do těch hodin je to asi zbytečné, ale hodil by se jinam. Já nacházím jen velmi drahé a nebo ty běžné, ale ty mají rozhodně horší přesnost.
Můžu poprosit o tip na typ RTC obvodu s tolerancí ±2ppm? A případně kde splašit oscilátor s přesností ±0,5ppm za rozumnou cenu? Do těch hodin je to asi zbytečné, ale hodil by se jinam. Já nacházím jen velmi drahé a nebo ty běžné, ale ty mají rozhodně horší přesnost.
Jsem na cestě k šípku.
Do hodin jednoznačně RTC, např. http://www.santy.cz/moduly-c22/mini-rtc-pro-3231-i157/Neniu píše:Můžu poprosit o tip na typ RTC obvodu s tolerancí ±2ppm? A případně kde splašit oscilátor s přesností ±0,5ppm za rozumnou cenu? Do těch hodin je to asi zbytečné, ale hodil by se jinam. Já nacházím jen velmi drahé a nebo ty běžné, ale ty mají rozhodně horší přesnost.
Na ebayi ten stejný za 35kč.
Modul má výstup signálu 1Hz, ten když připojíš na interupt vstup a podle něj budeš přičítat vteřiny, tak se na ladění krystalu můžeš vykašlat. Na převod vteřin(od roku tuším 1980) na datum a čas lze pak použít knihovnu time.h
Díky za tip, vypadá to docela zajímavě. Jen tedy přesnost toho teplotního čidla je úžasná
Každopádně si myslím, že pokud stavím hodiny s MCU tak tam dávat ještě RTC je plýtvání strojovým výkonem. Něco jiného je, když ten procesor řídí hromadu dalších věcí a potřebuji i hodiny, tam RTC obvod patří, ale pokud procesor má řídit jen hodiny, je to to prostě mrhání.
A uznávám, že se může najít někdo, kdo bude tvrdit, že používat na hodiny procesor je mrhání, protože na to stačí několik obvodů klasické logiky. Což je také pravda, ale procesor je jedno pouzdro.
Takže RTC by bylo Teďka ještě prosím ten kompenzovaný oscilátor s přesností 0,5 ppm za rozumnou cenu
Každopádně si myslím, že pokud stavím hodiny s MCU tak tam dávat ještě RTC je plýtvání strojovým výkonem. Něco jiného je, když ten procesor řídí hromadu dalších věcí a potřebuji i hodiny, tam RTC obvod patří, ale pokud procesor má řídit jen hodiny, je to to prostě mrhání.
A uznávám, že se může najít někdo, kdo bude tvrdit, že používat na hodiny procesor je mrhání, protože na to stačí několik obvodů klasické logiky. Což je také pravda, ale procesor je jedno pouzdro.
Takže RTC by bylo Teďka ještě prosím ten kompenzovaný oscilátor s přesností 0,5 ppm za rozumnou cenu
Jsem na cestě k šípku.
-
- Příspěvky: 2551
- Registrován: 13 zář 2005, 02:00
RTC má tu výhodu, že poskytuje kompletní čas i po připojení napájení. Protože to stejně nějak musíš vyřešit - buď jednou nastavíš externí RTC s baterií nebo musíš zálohovat uP a ten musí stále běžet, abys po připojení napájení měl aktuální čas.
Dalším řešením je použít GPS modul - teď to řeším pro přesné stopky. Buď poskytuje přímo výstup času v digitální podobě (to by bylo pro hodiny) nebo má výstup 1pps (1 puls za sekundu). On to nemusí být jen 1pps, ale 1-1000 pps podle typu. Pokud najdeš typ, který má 1pps opravdu z družice (všechny totiž mají 1pps, ale některé si to generují jen SW), tak získáš za pár korun "absolutně" přesný zdroj impulsu 1s. A pak Ti může být jedno, na jaké frekvenci běží procesor, 1pps přivedeš na vstup přerušení a už jen čítáš a "probubláváš" přechody sekund na minuty apod.
Když bys chtěl např. jako já přesné stopky 1/100s, tak je možné použít oscilátor, jehož frekvenci lze měnit (OCXO apod.) napětím 0-5V v rozmězí např. +/- 2ppm. No a není nic jednoduššího, než použít nějaký procesor, který sejme náběžnou hranu 1pps signálu z družice a začne čítat frekvenci OCXO. Když napočítá do další náběžné hrany třeba 9 999 990 impulzů, tak trochu přidá napětí pro OCXO. Tím lze získat "absolutně" přesnou frekvenci i mimo 1pps.
Něco o tom je např. tady: http://ok1uga.nagano.cz/gps_normal.htm
Petr
Dalším řešením je použít GPS modul - teď to řeším pro přesné stopky. Buď poskytuje přímo výstup času v digitální podobě (to by bylo pro hodiny) nebo má výstup 1pps (1 puls za sekundu). On to nemusí být jen 1pps, ale 1-1000 pps podle typu. Pokud najdeš typ, který má 1pps opravdu z družice (všechny totiž mají 1pps, ale některé si to generují jen SW), tak získáš za pár korun "absolutně" přesný zdroj impulsu 1s. A pak Ti může být jedno, na jaké frekvenci běží procesor, 1pps přivedeš na vstup přerušení a už jen čítáš a "probubláváš" přechody sekund na minuty apod.
Když bys chtěl např. jako já přesné stopky 1/100s, tak je možné použít oscilátor, jehož frekvenci lze měnit (OCXO apod.) napětím 0-5V v rozmězí např. +/- 2ppm. No a není nic jednoduššího, než použít nějaký procesor, který sejme náběžnou hranu 1pps signálu z družice a začne čítat frekvenci OCXO. Když napočítá do další náběžné hrany třeba 9 999 990 impulzů, tak trochu přidá napětí pro OCXO. Tím lze získat "absolutně" přesnou frekvenci i mimo 1pps.
Něco o tom je např. tady: http://ok1uga.nagano.cz/gps_normal.htm
Petr