CTC-Flag im Tiny13A

Gast #3586891
Lesenswert?

Ich kämüfe mich grade übel durch alle Timerfunktionen in meinem Tiny13A. 
Ich möchte alle 30 CPU-Zyklen einen Interruppt auslösen. Wie ich in 
anderen AVRs gesehen habe gibt es ein CTC-Flag, dass den Timer (TCNT0) 
bei Compare-Match mit dem Vergleichsregister (OCR0A) automatisch auf 
Null (oder was auch immer) setzen soll.

Im Datenblatt des Tiny13A kann ich aber weder das zuständige Register 
noch das CTC-Flag (Clear-Timer-Compare) finden.

Was bedeutet das?

Das habe ich bisher eingegeben:
 ldi     tmp, 1 << CS00     ; CS00 setzen: für Timerzähler kein 
Vorteiler
 out     TCCR0B, tmp
 ldi     tmp, 0x1D          ; wenn timerzähler 30-1 erreich interruppt 
auslösen
 out     OCR0A, tmp
 ldi     tmp, 1 << OCIE0A     ; OCIE0A: Interrupt bei Timer Vergleich 0A
 out     TIMSK0, tmp
; ldi     tmp, 1 << OCF0A   ; Ist auf 1 wenn Compare-Match 0A zutrifft
; out     TIFR0, tmp
 sei              ; Interrupt erlauben
Gast #3586977
Lesenswert?

Folgendes habe ich noch rausgefunden:

Es sollte das Symbol CTC0 im Register TCCR0A sein. Der Compiler sagt 
aber CTC0 kennt er nicht (CTC und CTC1 auch nicht) bzw. ist nicht in der 
include.inc definiert.

Der erste Interrupt wird nach den Eingaben (siehe oben) in Zyklus 55, 
der Zweite bei Zyklus 311, der Dritte bei Zyklus 567, usw. ausgelösst...

Also der erste Interrupt wird vorzeitig ausglösst. Alle Interruppts 
dannach folgen alle 256 Zyklen. Das Timerregister (TCNT0) wird also 
nicht automatisch zurückgesetzt.

Mist...
Gast #3586995
Lesenswert?

Hi

>Es sollte das Symbol CTC0 im Register TCCR0A sein. Der Compiler sagt
>aber CTC0 kennt er nicht (CTC und CTC1 auch nicht) bzw. ist nicht in der
>include.inc definiert.

Ein CTC-Bit gab es bei alten AVRs. Bei den Aktuellen AVRs wird alles 
über die WGM-Bits geregelt.

>Also der erste Interrupt wird vorzeitig ausglösst. Alle Interruppts
>dannach folgen alle 256 Zyklen. Das Timerregister (TCNT0) wird also
>nicht automatisch zurückgesetzt.

>Mist...

Bei welchem Programm?

MfG spess
Gast #3587006
Lesenswert?

Thomas Eckmann schrieb:
> Guck in die Tabelle "Waveform Generation Mode Bit Description" in der
> Beschreibung des TCCR0A-Registers. Der Timer wird mit den WGM-Bits
> eingestellt. Ein CTC-Bit hat der nicht.

Danke für die schnelle Hilfe.

Lable WGM01 im Register TCCR0A hats gebracht. CTC wird ausgelösst.

Danke dafür...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren