Witam,
Jest to mój pierwszy post na tym forum, więc proszę o wyrozumiałość i ewentualne przeniesienie postu do innego działu.
Nie wiem czy prawidłowo wyliczyłem wartość... Chcę, aby dioda LED migała co 2s, przy częstotliwości 16 MHz. Znalazłem na stronie
http://maxembedded.com/2011/06/avr-timers-timer1/ wzór:
Timer Count = Required Delay / Clock Time Period - 1
Częstotliwość = 16 MHz, 16-bitowy timer (MAX = 65535). Maksymalny delay (65535), a zatem mamy 65535/16000000Hz = 4.09ms
Po użyciu preskalera = 8, mamy dalej 65535/2000000Hz = 0,032767 = 32,767ms
Z faktu, iż interesuje mnie czas 2s, mamy dalej 2/0,032767 = 61,037 =
61Poniżej kod (ze strony wspomnianej wyżej):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Moje pytanie tyczy się tego, czy dobrze zrozumiałem autora
http://maxembedded.com/2011/06/avr-timers-timer1/ w kwestii obliczenia wymaganych wartości ?
Z góry dziękuje za odpowiedzi i przepraszam, ale to 1 post na tym forum
Zatem polubownie proszę zmienić listing zgodnie z zasadami i zaleceniami na forum topic7402.html
---- SunRiverJuż zmieniłemEDITED:Nawiązując do przykładu z Blue Booka, strona 43.
Timer1, 1 sekunda, F_CPU=8MHz
Według wzoru:
Timer Count = Required Delay / Clock Time Period - 1i
TimePeriod = 1 / FrequencyF = 8000000/256(prescaler) = 31250 Hz
T= 1/31250Hz=0,000032s=0,032ms
TimerCount = 1000ms/0,032ms -1 = 31250 - 1 =
31249Wpisujemy do TCNT1 wartość
31249, czy tak jak pisze Mirek 65536-31249=
34287