www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TOV0 AT90CAN128


Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Mein Ziel ist jedesmal TOV0-Flag in Interrupt loeschen können.

Und warum?
Das Flag wird beim Ausführen des Interrupts von der Hardware automatisch 
gelöscht.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann ist der Overflow-Interrupt von Timer 0 die Funktion A, und der 
Overflow-Interrupt von Timer 1 ist die Funktion B. Ich verstehe also 
immer noch nicht, was genau das Problem ist.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn der overflow timer0 gesetzt ist, wird in interrupt funktion A 
angerufen
wenn der overflow timer1 gesetzt ist, wird in interrupt funktion B 
angerufen

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In welchem Interrupt überhaupt?

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include <avr/io.h>
#include <avr/signal.h>
#include <inttypes.h>
#include <avr/interrupt.h>



ISR (TIMER0_OVF_vect)
{

}

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieser Interrupt ist die Funktion A.

ISR (TIMER0_OVF_vect)
{
   // Code A
}

ISR (TIMER1_OVF_vect)
{
   // Code B
}

Oder wenn du unbedingt Funktionen aufrufen willst:
ISR (TIMER0_OVF_vect)
{
   FunktionA();
}

ISR (TIMER1_OVF_vect)
{
   FunktionB();
}

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
das wüsste ich nicht. ich bin neue bei AVR. danke für Ihr Hilfe es hat 
mein Problem gelöst.
Schoner Sonntag

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.