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
Tiny10Nutzer schrieb: > Im Datenblatt des Tiny13A kann ich aber weder das zuständige Register > noch das CTC-Flag (Clear-Timer-Compare) finden. 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. mfg.
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...
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
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...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.