TOV0 AT90CAN128

Gast #1297841
Hallo Zusammen
ich fänge mit dem Mikrocontroller AT90CAN90128 an. ich habe mit dem 
Timer0, besonder mit dem TOV0-Flag. ich will jedesmal diesen TOV0-Flag 
in Interrupt löschen, aber es geht nicht und ich weisse nicht warum. ich 
habe 2 Falls.

1)Wenn ich die Funktionen sei() und cli() benutze , wird TOV0-Flag 
gesetzt aber das Interrupt wird nicht angerufen.

2) Wenn ich die Funktion sei() benutze, wird TOV0-Flag nie gesetzt aber 
das interrupt wird angerufen

Mein Ziel ist jedesmal TOV0-Flag in Interrupt loeschen können.

Ich brauche Ihr Hilfe
Gast
Hallo
ich weisse , dass es möglich TOVO-Flag software zu lösen und ich will 
auch software loeschen. ich glaube das Problem kommt von sei() oder 
cli(). ich weiss nicht wie diese Funktion funktionniert
gast schrieb:

> ich weisse , dass es möglich TOVO-Flag software zu lösen und ich will
> auch software loeschen.

Nein. Du kannst das Flag im Overflow-Interrupt nicht per Software 
löschen, weil es zu diesem Zeitpunkt bereits durch die Hardware gelöscht 
wurde.

Erklär doch mal, warum du das Flag unbedingt im Interrupt per Software 
löschen willst. Es gibt keine Notwendigkeit dafür, und ich kann mir auch 
sonst keinen Grund vorstellen, warum man das tun wollte (außer 
vielleicht am Ende eines sehr langen Interrupts).

PS: Natürlich ist das Löschen im Interrupt nicht grundsätzlich nicht 
möglich. Wenn das Flag erneut gesetzt wurde, kannst du es natürlich auch 
im Interrupt wieder per Software zurücksetzen.
Gast
Hallo
nehmen wir, wir wollen 2 Timer benutzen und für jeder Timer eine 
bestimmte Funktion ausführen.
das heißt fur timer0 wenn TOV0-Flag gesetzt funktion a anrufen
          für Timer1 wenn TOV1-Flag gesetzt funktion b anrufen und die 
beide in Interrupt
Gast
wenn der overflow timer0 gesetzt ist, wird in interrupt funktion A 
angerufen
wenn der overflow timer1 gesetzt ist, wird in interrupt funktion B 
angerufen
Dieser Interrupt ist die Funktion A.

1
ISR (TIMER0_OVF_vect)
2
{
3
   // Code A
4
}
5

6
ISR (TIMER1_OVF_vect)
7
{
8
   // Code B
9
}

Oder wenn du unbedingt Funktionen aufrufen willst:
1
ISR (TIMER0_OVF_vect)
2
{
3
   FunktionA();
4
}
5

6
ISR (TIMER1_OVF_vect)
7
{
8
   FunktionB();
9
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.