Strana 1 z 1

timer

Napísané: 09 Aug 2013, 18:40
od používateľa sonikmartin
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

Re: timer

Napísané: 09 Aug 2013, 18:49
od používateľa petersno
v bascome ti nepomozem, v Ccku mozem spachat nejaky priklad, ak chces

Re: timer

Napísané: 09 Aug 2013, 20:39
od používateľa smotek7
Ma tu jeden priklad, mera to rychlost vystrelu, mozno ti to pomoze.

Re: timer

Napísané: 16 Aug 2013, 12:43
od používateľa sonikmartin
Tak tohle vypada zajimave, ale jeste kdyby mi nekdo poradil s timerem s COMPARE funkci.

dekuji

Re: timer

Napísané: 16 Aug 2013, 14:56
od používateľa Dali2
Skus troska viac priblizit, co mas v umysle a hlavne aka rodina procesorov, inak funguju timery pre AVR a inak pre 8051.

Re: timer

Napísané: 17 Aug 2013, 14:07
od používateľa peterple
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é.