iwi napisał(a):
Witajcie.
Tak się zastanawiam jak policzyć rzeczywistą częstotliwość Prescalera, bo mi wychodzi inaczej niż z oscyloskopu.
tzn.
Mam częstotliwość zegara 8MHz.
Timer0 8 bit = 256
Czyli bez prescalera (Prescaler=1) częstotliwość na PWMie będę miał 31250 (8000000/256) a mi na oscyloskopie pokazuje około 15kHz.
Natomiast dając prescaler 8 powinno być 31250/8 a mam około 250Hz, dając prescaler 64 mam około 50Hz.
W datashecie Atmegi8 znalazłem taki wzór
f = fclk/(PRESCALERx(1+TOP))
tylko co to jest Top
Niby TOP to TCNT1 - ale ile to jest?
Coś kolega przekombinował na maxa że aż strach

masz tu poniżej kod dla np ATmega32 (zresztą w Bluebooku też masz to opisane dokładnie)
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
odpal go i sprawdź sobie na oscylu częstotliwość na PB3 .... nie ma możliwości żebyś widział inną wartość niż ok
31,250 kHz

... oczywiście może być ciut więcej , ciut mniej jeśli użyjesz wewn. oscylatora RC - ale to chyba zrozumiałe
a obliczanie częstotliwości PWM .... no pokazuję w książce SUPER PROSTE podejście a ty kombinujesz i sobie sam utrudniasz życie na własne życzenie. Skąd się wzięło to powyższe 31,250 kHz ?
Cytuj:
F_CPU / PRESCALER / timer_resolution
czyli panie kochanieńki
Cytuj:
8 000 000 / 1 / 256 = 31250 Hz
i nie inaczej - no proste jak drut
chcesz dać preskaler kolejny np = 8, proszę bardzo
Cytuj:
8 000 000 / 8 / 256 = 3906 Hz
czyli na oscylu zobaczysz na PB3 częstotliwość ok 3,9 kHz
---------------------------
jeśli widzisz na oscylu co innego to :
1. albo coś źle odczytujesz z oscyla
2. albo z oscylem coś nie tak
3. albo coś źle w kodzie robisz
_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]