Ahoj panove. V jine diskuzi jsem polozil dotaz jak naprogranmovat timer aby měl přesnost cca 1ms a dal se pouzit pro stopky.
děkuji
timer
Moderátori: psichac, Moderátori
- sonikmartin
- Pokročilý člen
- Príspevky: 554
- Dátum registrácie: 05 Nov 2010, 00:00
- Bydlisko: Litomyšl
- Vek: 36
- Kontaktovať používateľa:
- sonikmartin
- Pokročilý člen
- Príspevky: 554
- Dátum registrácie: 05 Nov 2010, 00:00
- Bydlisko: Litomyšl
- Vek: 36
- Kontaktovať používateľa:
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: timer
Vezmime takú ATmega8. Na rozumné počítanie času sa dá ako časová základňa využiť TIMER1 v móde CTC (Clear Timer on Compare). Sú možné dva módy 4 a 12. Tie sa volia pomocou WGM1[3:0]. Tak napríklad 4 mód pre 16Mhz kryštál. Compare hodnutu nastavíš na 16000. To znamená, že ťa časovač preruší každú milisekundu. Odtiaľ si už vieš odrátať čo je treba (stotiny, desatiny, sekundy ....).
Takže čo treba nastaviť:
1. OCR1A na 16000. Sú to dva registre ale kompilátor to určite hravo zvládne.
2. TCCR1B treba nastaviť na hodnotu (1 << WGM12) | (1 << CS10). Napísal som to Cckovo, na Bascom si to nejako prerob sám, je to číslo 9. To urobí CTC mód 4 a predelič nastaví na 1 - teda počítanie priamo hodín z oscilátora.
3. TIMSK = (1 << OCIE1A) toto povolí prerušenie od Compare Match.
4. A samozrejme si treba napísať krátku prerušovaciu rutinku na počítanie tisícin, stotín .... a všetko ostatné napr zobrazovanie riešiť v hlavnom programe. Ako sa to robí v Bascom zase neviem. A ani sa mi to nechce študovať. Čo som na to hodil oko tak je to pomerne jednoduché.
Takže čo treba nastaviť:
1. OCR1A na 16000. Sú to dva registre ale kompilátor to určite hravo zvládne.
2. TCCR1B treba nastaviť na hodnotu (1 << WGM12) | (1 << CS10). Napísal som to Cckovo, na Bascom si to nejako prerob sám, je to číslo 9. To urobí CTC mód 4 a predelič nastaví na 1 - teda počítanie priamo hodín z oscilátora.
3. TIMSK = (1 << OCIE1A) toto povolí prerušenie od Compare Match.
4. A samozrejme si treba napísať krátku prerušovaciu rutinku na počítanie tisícin, stotín .... a všetko ostatné napr zobrazovanie riešiť v hlavnom programe. Ako sa to robí v Bascom zase neviem. A ani sa mi to nechce študovať. Čo som na to hodil oko tak je to pomerne jednoduché.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.