logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

kalibracja częstotliwości generatora RC ATTINY2313

Zbino 20 Lis 2011 23:55 1778 3
  • #1 10163747
    Zbino
    Poziom 10  
    Mam problem z wewnętrznym generatorem RC w ATTINY2313.
    Fabrycznie układy ustawione są na 8MHz z podziałem częstotliwości przez 8. Zasilanie 5V.
    Wyłączam więc podział przez 8 (bit CKDIV8) i wszystko jest OK ale
    poszczególne egzemplarze Attiny 2313 mają bardzo duży rozrzut częstotliwości
    wewnętrznego zegara RC.
    Z tego co można wyczytać na stronie Atmela w fabryce układy ustawiane są z
    dokładnością do 3%. W praktyce kupiłem 7 układów Attiny 2313 i każdy z nich
    ma inną częstotliwość wewnętrznego zegara. Zrobiłem w programie wpisanym do
    procka podział zegara przez 210 i otrzymuję na nodze częstotliwośc 38kHz.
    W praktyce poszczególne egzemplarze dają na nodze częstotliwości od 28kHz do
    46kHz więc rozrzut częstotliwości poszczególnych egzeplarzy wynosi
    kilkadziesiąt %.
    Sprawdziłem w prockach bajt kalibracji i w każdym egzemplarzu jest zapisany
    inna wartość tego bajtu.

    egzemplarz częstotliwośc uzyskiwana bajt kalibracji
    --- 1 ----------- 46kHz ------------ 0x52
    --- 2 ----------- 41kHz ----------- 0x59
    --- 3 ----------- 38kHz ----------- 0x5D
    --- 4 ----------- 36kHz ----------- 0x61
    --- 5 ----------- 35kHz ----------- 0x64
    --- 6 ----------- 30kHz ----------- 0x6D
    --- 7 ----------- 28kHz ----------- 0x70

    Widać, że częstotliwość zegara ma związek z wartością bajtu kalibracji
    wpisanego fabrycznie do układu. Skąd się bierze taki rozrzut, czy to jest
    normalne. Jak to unormować?
    Wyczytałem, że po restarcie bajt kalibracji jest przepisywany do rejestru
    OSCCAL w układzie. Próbuję więc w programie wpisywać do tego rejestru
    wartość 0x5D ale nie zmienia to częstotliwości w żadnym egzemplarzu. Układy
    programuję przez AVR-studio. Można tam odczytać wartość bajtu kalibracyjnego
    ale nie można jej zapisać pod zmieniaoną wartością.
    Nie mam już pomyslu co robić. Może ktoś już się mordował z tym tematem?

    Zbyszek
  • #2 10163770
    Fredy
    Poziom 27  
    To jest normalne, częśtotliwość ta zmienna jest a co gorsza mocno zależy od temperatury.Można ją skorygować wpisując wartoś w rej OSCAL.
  • #3 10163795
    piotrva
    VIP Zasłużony dla elektroda
    Poczytaj w dokumentacji. Piszą tam dokładnie jak się zmienia częstotliwość w zależności od osccal. A zmieniasz ją zapisując w programie odpowiednią wartość do tego rejestru w funkcji main
  • #4 10163813
    Zbino
    Poziom 10  
    Doszedłem już gdzie był błąd. Mój program wpisywał do rejestru osccal wartość 00 więc korekty zegara wpisane fabrycznie nie były brane pod uwagę. Swoją drogą widać jakie rozbieżne mają poszczególne generatory RC. Dobrze, że robią tą korektę fabrycznie. Mam nadzieję że po zmianie kodu programu będzie już dobrze.
REKLAMA