CTC-Interrupt Atmega8 funktioniert nicht

Gast #2730264
Kann mir mal jemand unter die Arme greifen? Ich wollte mal auf dem
Experimentierbrett den CTC-Modus von Timer 1 des Atmega8 ausprobieren,
aber meine LED blinkt nicht und ich sehe nicht warum. Den Ausgang OC1B
kann ich nicht nehmen -ich wollte deswegen die LED an einem anderen Pin
jede Sekunde toggeln lassen, so daß 0,5 Hz aus Portc.5 kommen.

Der Quelltext ist Teil eines größeren Programmes, ich habe nur diese
Sache separat testen wollen.

Habe ich alle Register, die damit zu tun haben erwischt oder was habe 
ich
übersehen?

$regfile = "M8def.dat"
$crystal = 16000000
Dim Timer1_interrupt_zähler As Word

Led Alias Portc.5 : Config Led = Output : Led = 1

        '### Timer1 - Zeittakt 1ms 
#####################################################
Tccr1b = &B00001011 
'CTC-Modus,Prescaler=64  (WGM12 und 13 CTC Modus, CS10-12 Teilerfaktor)
        Ocr1b = 250 
'Vergleichswert bei dem Interrupt ausgelöst wird
        Timsk.ocie1b = 1 
'Output_Compare_Match_Interrupt_erlauben

Enable Interrupts
Enable Timer1
On Oc1b Isr_timer1
'Bei Gleichstand Interrupt auslösen


        '####################################################################### 
########
        Do
          Nop
        Loop
      End

Isr_timer1:
           Incr Timer1_interrupt_zähler
                    'Die Interrupts zählen
           If Timer1_interrupt_zähler = 1000 Then
                    'nach Tausend Interrupts LED umschalten d.h. 1Hz
                 Timer1_interrupt_zähler = 0
                 Toggle Led
           End If
        Return


MfG Paul
Gast #2730268
Hi

>Habe ich alle Register, die damit zu tun haben erwischt oder was habe
>ich übersehen?

Du hast das Register für den Topwert, ICR1 vergessen.

MfG Spess
#2730273
> 'Vergleichswert bei dem Interrupt ausgelöst wird
>        Timsk.ocie1b = 1
> 'Output_Compare_Match_Interrupt_erlauben
>
> Enable Interrupts
> Enable Timer1
> On Oc1b Isr_timer1

Hä? Was versuchst du da?

Du benutzt Modus 4
> Tccr1b = &B00001011
(deinen Kommentar darunter kannst du dir in die Haare schmieren. WGM13 
wird nicht gesetzt, also ist das Modus 4).

Das ist: CTC mit einem Top Wert in OCR1A

Und bei einer 0 in OCR1A hast du dann halt dauernd einen Compare Match 
mit Timer Reset.

Wenn du dir besagte Tabelle im Datanblatt ansiehst, fällt eines auf: Es 
gibt keinen einzigen Spezialmodus, bei dem das OCR1B Register eine 
spezielle Rolle spielen würde! Immer nur OCR1A bzw. ICR1 bzw. fixe 
Werte.
Gast #2730459
Karl Heinz schrob:
>Du benutzt Modus 4
> Tccr1b = &B00001011
>(deinen Kommentar darunter kannst du dir in die Haare schmieren. WGM13
>wird nicht gesetzt, also ist das Modus 4).

Ja, den Kommentar habe ich mir jetzt in die Haare geschmiert. Sieht im
Spiegel etwas komisch aus...

>Das ist: CTC mit einem Top Wert in OCR1A

Nachdem ich nun statt OCR1B OCR1A mit 250 "beschickt" habe, funktioniert
es auch richtig. Ich habe das nicht gesehen, daß ich B statt A drin 
hatte.
Das kommt davon, wenn man mit der Brechstange ein Programm fertig 
bringen
will....

Ich danke Euch für die Hilfe und die Ratschläge.

MfG Paul

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.