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
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
