www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega warten lassen


Autor: Mr. Smith (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie kann ich meinen ATmega zum Beispiel 3 Sekunden warten lassen bis er
die nächste Aktion ausführt ?

MFG
Mr. Smith

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dazu müsste man erst mal wissen wie du überhaupt programmierst!!!

In "C" oder in "ASM"..... Welche Software??

Am besten macht man es natürlich mit einem Timer!!!! Wenn du in "C"
programmierst gibt es auch meist eine "delay"-Funktion!

Marcel

Autor: RedDragon2kx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tschuldigung hab ich vergessen. Da ich gerade erst anfange arbeite ich
nach dem Tutorial auf dieser Seite mit Assembler will aber später auf C
umsteigen weil ich C++ kann und Assembler nich

MFG
Mr.Smith

Autor: Mr. Smith (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann doch nicht sein das das hier niemand weiss ? Oder ist die Frage
so banal das darauf niemand antworten will ?

MFG
Mr. Smith

Autor: Crush (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich mache es bis jetzt immer mit Zählschleifen (bin auch noch
Anfänger). Um diese Zählschleifen zu erstellen nutze ich das Programm
"AVR delay loop". Dort kann man einfach die gewünschte Zeitdauer
einstellen und das Programm generiert den entsprechenden Quelltext, der
per Copy&Paste in den eigenen Quelltext eingefügt werden kann. Nachteil
hierbei ist natürlich, dass der Controller unnötig viel arbeitet.
Besser wäre es dann sicherlich mit nem Timer, da weiss ich aber auch
noch nicht, wie es geht.

Gruß
   Crush

Autor: Philipp Burch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Dass der Controller so mehr zu arbeiten hat, kann man so nicht sagen.
Wenn du nämlich einen Timer verwendest, dann musst du den Controller in
der Zwischenzeit auch irgendwie beschäftigen, was normalerweise einfach
in einer (leeren) Schleife gemacht wird. Ob er darin nun noch zählt
oder nicht kommt dann eigentlich ja auch nicht mehr drauf an.

Eine Möglichkeit wäre z.B. sowas:

;Eine Weile nix tun
Delay:
  ldi Del1, 0x05
  _Loop1:
  ldi Del, 0x1F
  _Loop2:
  dec Del
  brne _Loop2
  dec Del1
  brne _Loop1
ret


Del1 und Del sind ganz normale Register (.def Del1 = r16 zum Beispiel).
Hier kannst du Del1 und Del einfach mit festen Werten laden, damit du
eine bestimmte Wartezeit bekommst. Die Wartezeit sollte in etwa
(Del1  Del  2) / (Frequenz in Hz)
betragen.

Ich hoffe, das hat dir geholfen.

Autor: Mr. Smith (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für diese guten Antworten

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.