mikrocontroller.net

Forum: Projekte & Code Zeitschleife für ca 1s Pause in Asm


Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

da ich neu auf dem gebiet des MC bin, habe ich mal eine Frage, ob mir
jemand einmal Assembler code fuer 1s pause posten kann.Es handelt sich
um einen ATMEGA8 mit einem 16Mhz Oszillator.

Danke im vorraus !

Mark

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt im Prinzip zwei Möglichkeiten. Entweder machst du es mit einem
Timer, dann kannst du während der Wartezeit noch was anderes tun oder
den Mikrocontroller zur Stromersparnis in den Schlafmodus schalten,
oder du baust einfach eine Warteschleife.
Wie genau muß das mit der Sekunde denn sein?

Autor: D. W. (dave) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bzw. soll das ne Uhr werden? Oder welchen Zweck verfolgst du ;)

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine led die blinken soll, habe aber schon was passendes und
funtionierendes vorerst gefunden.

Autor: Martin #### (martin-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss nur ein mal im Programm aufgerufen werden
init_16timer:
  ldi r16,(1<<CS12)|(0<<CS11)|(0<<CS10);;CLK/256 Timer-Vorteiler
  out TCCR1B,r16 
  ret

Und das jedes mal wenn gewartet werden soll:
[c]wait:
  ldi r16,0x00 ;Timerlöschen
  out TCNT1H,r16
  out TCNT1L,r16
  ldi r16, (1<<TOV1);TOV1-Flag löschen
  out TIFR,r16
wait_loop:
  in r16, TIFR
  sbrs r16,TOV1
  rjmp  wait_loop
  ret[c]

Mit einem 16MHz-Quarz wartet die routine ca 1.05s

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Codesammlung ist nicht dazu da, Fragen zu stellen, sondern, wie ja
der Name sagt, Code zu posten.

Deshalb kannst Du hier auch Code dazu finden:

http://www.mikrocontroller.net/forum/read-4-57760.html#new


Peter

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo der Code ist ja jetzt auch gepostet *lol

Autor: pebisoft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau mal mit googel , da gibt es ein programm "avrdelay".
da kannst die zeit eingeben, die mhz und bekommst dann als asm-source
die warteschleife heraus.
mfg pebisof

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.