-
        

Ergebnis 1 bis 2 von 2

Thema: 16Bit Timer/Counter 1 bei ATmega8 | Hilfe zu den Registern

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    17.05.2004
    Ort
    Darmstadt
    Beiträge
    72

    16Bit Timer/Counter 1 bei ATmega8 | Hilfe zu den Registern

    Anzeige

    Hallo,
    bin gerade dabei ein Programm für den 16Bit Timer/Counter zu schreiben.
    Dabei sollen externe Pulse gezählt und bei erreichen eines vorgegebenen Wertes, eine Routine abgearbeitet werden.

    Ich brauch nur Hilfe bei den Registern, ich verliere die Übersicht. [-o<

    TCCR1A: Da brauch ich nichts einstellen??
    TCCR1B: (1<<CS12) | (1<<CS11) --> Externe "Clock Source" an Pin T1 (fallende Flanke)
    Wo liegt der Unterschied zwischen ICP1 (Input Capture Pin 1) und Pin T1?

    OCR1AH, OCR1AL: Muss ich in das Register den Vergleichswert schreiben?
    TIMSK: (1<<OCIE1A) --> Output Compare A Match Interrupt Enable

    Stimmt das so oder hab ich mich bei den Registern vertan?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Hi auch,

    Wenn ichs recht überblicke, dann:
    TCCR1A = 0, und in
    TCCR1B: ClockSelect auf b110 und CTC1 (aka WGM12) = 1 (Clear Timer on CompareMatch), so daß sich Timer1 beim Erreichen von MAX auf 0 zurücksetzt.
    TIMSK |= (1<<OCIE1A) ist ok, den Compare-Wert schreibst du wie angedacht nach OCR1AL:OCR1AH
    Und nicht vergesses, global Interrupts zu aktivieren.
    TCNT1L = 0
    TCNT1H = 0
    damit du bei 0 anfängst zu zählen.
    Input Capture dient dazu, Zeiten zu messen. Bei einem Ereignis am ICP -- das kann auch der AnalogComparator sein -- wird der momentane Stand von Timer1 gemerkt. Damit lässt sich zB sehr einfach ein Kapazitätsmessgerät aufbauen.

    Gruß, Johann

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •