www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik zeit abwarten ATMEGA168


Autor: Dave_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Kann mir jemand verraten, wie ich bei 16 Mhz eine Wartezeit von z.b 3
secunden in einem ATMEGA168 Controller einprogramieren bzw berechnen
kann?


David

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In welcher Programmiersprache?

Da gibt es mehrere Möglichkeiten
* Die einfachste ist sicherlich den Prozessor in verschachtelte
  Schleifen zu schicken, die insgesammt 3 Sekunden verbrauchen.
  Ist meist nicht sehr genau und keine gute Idee, wenn der µC
  in der Wartezeit auch noch andere Dinge zu tun hat.

* Die bessere Lösung ist es, einen Timer dafür zu benutzen.
  Den Timer kann man zb so einstellen, dass er alle MilliSekunden
  ein Ereignis auslöst (einen Interrupt aufruft). In diesem
  Interrupt wird dann mitgezählt. Da er alle Millisekunden
  aufgerufen wird, ist daher nach 1000 Aufrufen 1 Sekunde vergangen
  und nach 3000 Aufrufen sind 3 Sekunden vergangen. Beim 3000-sten
  Aufruf wird eine globale Variable auf einen bestimmten Wert
  gesetzt.
  Ausserhalb des Interrupts gibt es dann eine Schleife, die
  nur darauf wartet, dass die globale Variable den vereinbarten
  Wert annimmt.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>
  Ausserhalb des Interrupts gibt es dann eine Schleife, die
  nur darauf wartet, dass die globale Variable den vereinbarten
  Wert annimmt.
<

Und wenn man dies als "abweisende Schleife" programmiert, dann wird
halt nicht gewartet, sondern "abgewiesen" (also etwas anderes
gemacht), bis die Bedingung erfüllt ist. Und damit kann diese Abfrage
in der Mainloop erfolgen...

;-)

...

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst dazu auch den Watchdog-Interrupt benutzen!

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.