logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[atmega8][bascom] O co chodzi tak na prawdę z tymi timerami?

komanche 28 Paź 2008 21:38 2672 5
REKLAMA
  • #1 5677772
    komanche
    Poziom 13  
    Witam!

    Mam pytania: jak w praktyce zastosowac timery?

    Jak one działają? W którą stronę zliczają? Jak zczytac ich stan? Do ilu mogą zliczać?

    chciałbym, aby ktoś wytłumaczył mi to na przykładzie Atmegi8 i języka Bascom.

    Wiem już że:
    -Timery zliczają impulsy które same generują wg. prescalera
    -Prescaler to taki dzielnik, który bierze jakąś część taktowania procesora do generowania impulsów timera i na podstawie jego wartosci widac co ile timer zlicza.
    -timer moze byc ilustambitowy (cokolwiek to znaczy)

    Interesuje mnie tylko wykorzystanie timera jako czasomierza.

    chciałbym wiedzieć:

    Jak skonfigurowac timer aby zliczał x razy na sekundę
    Jak rozpocząc zliczanie
    Jak zakonczyc zliczanie
    Jak dobrac się do wyniku
    Ile ten wynik moze wynosic maksymalnie?

    Podałby mi ktoś dobrze opisane polecenia i jakiś przykład z zapisem wartości timera do zmiennej? (zastosowanie to zliczanie odcinka czasu między przerwaniami)
  • REKLAMA
  • Pomocny post
    #2 5677859
    ZbeeGin
    Poziom 39  
    Poi pierwsze. Do BASCOM-a jest pomoc - także po polsku, której to zresztą jestem autorem. Wersję on-line (beta) znajdziesz na mojej stronie WWW.

    Cytat:
    Jak one działają?

    Zliczają impusy. Albo z prescalera, albo z zewnątrz. Patrz nota katalogowa.

    Cytat:
    W którą stronę zliczają?

    Zwykle liczą w górę. W trybach PWM liczą też w obie strony. Patrz nota katalogowa.

    Cytat:
    Jak zczytac ich stan?

    Poprzez udostępnione rejestry TCNT0, TCNT1H, TCNT1L, TCNT2. Patrz nota katalogowa.

    Cytat:
    Do ilu mogą zliczać?

    Do 256 lub 65536 w zależności jaki to licznik 8-bit czy 16-bit. Patrz nota katalogowa.

    Cytat:
    Jak skonfigurowac timer aby zliczał x razy na sekundę

    W nocie katalogowej jest podany wzór jak to przeliczyć. Dodatkowo są programy np. AVR Timer Calc, gdzie wszystko się liczy samo po podaniu paru danych.

    Cytat:
    Jak rozpocząc zliczanie

    Wystarczy w poleceniu CONFIG TIMER0/1/2 dodać albo parametr PRESCALE - wtedy liczy z preskalera, lub EDGE dodając sygnał na wejście licznika - wtedy liczy z zewnątrz. Po zatrzymaniu, poleceniem START TIMER0/1/2 wznawiasz zliczanie. Patrz pomoc BASCOM-a.

    Cytat:
    Jak zakonczyc zliczanie

    Poprzez wydanie polecenia STOP TIMER0/1/2. Patrz pomoc BASCOM-a.

    Cytat:
    Jak dobrac się do wyniku

    Poprzez zmienne TIMER0, TIMER1, TIMER2, COUNTER0, COUNTER1, COUNTER2. Patrz pomoc BASCOM-a.

    Cytat:
    Ile ten wynik moze wynosic maksymalnie?

    Albo 255 albo 65535 w zależności od licznika. Patrz pomoc BASCOM-a.

    Cytat:
    Podałby mi ktoś dobrze opisane polecenia i jakiś przykład z zapisem wartości timera do zmiennej? (zastosowanie to zliczanie odcinka czasu między przerwaniami)

    Patrz pomoc BASCOM-a w poleceniach CONFIG TIMER0/1/2, START, STOP, COUNTER, TIMER w podkategorii "Przykład".
  • REKLAMA
  • #3 5680673
    komanche
    Poziom 13  
    ok. już kumam.

    ale mam problem. nie wiem jak ustawic licznik 16bit.

    chcę mierzyc czas miedzy przerwaniami ale timer dochodzi do 255 i sie zeruje i zaczyna od nowa.
  • REKLAMA
  • REKLAMA
  • Pomocny post
    #5 5681170
    Samuraj
    Poziom 35  
    Należało by jeszcze dodać iż nie wszystkie Timery są np 16 bitowe np. ATmega8535 ma 2 8 bitowe i jeden 16 bitowy.
    O tym ile i jakie Timery wyczytasz z noty katalogowej danego mikrokontrolera.
  • #6 5681259
    komanche
    Poziom 13  
    dzieki!
    pozdrawiam, temat wyczerpany!
REKLAMA