mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer beim AVR


Autor: Jeff Albertson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

zunächst muss ich sagen, dass ich ein Anfänger in Sachen AVR
Programmieren bin.

Ich habe folgende Frage:

In meiner main()-Funktion warte ich mit einer unendlichen for-Schleife
auf das Eintreten eines bestimmten Ereignisses. Wenn das Ereignis
eingetreten ist, gebe ich die Verarbeitung an eine Funktion ab, die
dann eine bestimmte Zeit warten muss, den Pin (wo das nächste Mal etwas
passieren soll) erneut abfragen, wieder warten und wieder abfragen usw.

Wie mach ich das am besten? Ich brauch ein Konstrukt, das solange
wartet, bis der Timer abgelaufen ist, dann muss wieder abgefragt werden
und wieder gewartet werden usw.

Ich schreib hier mal (etwas wenig, zugegebendermaßen) Code rein, um
euch zu zeigen, wie ich's in etwa mein:

Ausschnitt aus der main()-Funktion:

for ( ; ; )
  {

    for ( ; ; )
    {
      current = (PINB & 0b00000010);
    if (current != 0)
    {
      cli();
      zuständige_funktion();
      break;
                }


void abzuarbeitende_funktion(void)
{
Hier soll gewartet werden, bis der Timer abgelaufen ist, Pin abgefragt
werden und wieder gewartet werden

}


Ich hoffe, dass ich den Sachverhalt nicht zu verwirrend beschrieben
habe.
Für eure Hilfe schon mal herzlichen Dank!
Viele Grüße!

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
while(!(TIFR & (1 << TOVn))); //Warten bis Timer Overflow
TIFR |= 1 << TOVn; //Timer Overflow Flag loeschen

wobei TOVn das Overflow Flag von Timer n ist. Es wird so lange nix
getan, bis der Timer überläuft.

Ansonsten mal die Literatur durchgehen. Da steht ne Menge dazu drin!

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.