mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeitverzögerung


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin Anfänger bei der Mikrocontroller programmierung und möchte 
wissen wie man eine genaue zeitverzögerung zb. von einer einer Sekunde 
hinbekommt .(in Assembler)

Danke im voraus.

Autor: Niki Hammler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Nummer1-Empfehlung, schafft fast alle Zeitbereiche. AVRDelayLoop
ist ein Programm (Windows) wo du einfach deine Taktfrequenz und die Zeit 
eingibst (oder auch Zyklen) und es erzeugt Assembler Code den du in 
deinem programm einfügen kannst.

Ich weiss zwar nicht auswendig wo du es herbekommst aber du kannst es 
über meinen Server runterladen, wenn er eingeschalten ist (probier es 
halt mal), sonst such in google

http://nobaq.dyndns.org/secret/avr/


Niki

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
diemer.it-pc.de, dort is die linux version und ein link zur win version.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,werd ich gleich mal probieren.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

ich hab da noch eine Frage, und zwar wie programmiert man eine 
verzögerung von einer Stunde.

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibs in den delayloop generator ein.

bei 4mhz kommt z.B. folgendes raus (bei der linux version):

;<===   Warteschleife   ===>
; 4000000 Zyklen
; 3 Register verwendet
;------------------------
;warte 3999996 Zyklen

  ldi R16,0xfc
WL0:  ldi R17,0xe6
WL1:  ldi R18,0x16
WL2:  dec R18
  brne WL2
  dec R17
  brne WL1
  dec R16
  brne WL0

;warte 4 Zyklen
  nop
  nop
  nop
  nop

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hab die Windows version,kann aber nur max 500s 
eingeben(=8,33Minuten),auserdem wird der Code ziemlich umfangreich,gibts 
keine
einfachere Methode.Ich versuch mal eine verzögerung von 5 Minuten
und ruf die dann in einer schleife 12 Mal auf, müsste funktrionieren.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin,

du könntest auch einen Timer verwenden. Vielleicht hilft dir diese 
Application note von Atmel: 
http://www.atmel.com/atmel/acrobat/doc1268.pdf

MfG
Andreas

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ohh, hab grad gesehen, dass meine linux version auch abkackt (er rechnet 
SEHR lange), wenn man ihm 5min eingibt. vielleicht mach ich da mal was.

allerdings sind warteschleifen auch nicht der beste weg, um eine lange 
zeit zu überbrücken. dafür sind timer wirklich besser weil:

1) nicht so kompliziert, weil du ja nicht zig schleifen mit zig 
registern brauchst.
2) der avr kann in der wartezeit
...a)andere dinge tun
...b)schlafen und energie sparen


wie du den timer verwendest steht im datasheet und auch im forum 
"Codesammlung"

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Online-Delay-Loop-Generator 
(http://www.mikrocontroller.net/delayloop.html>;) funktioniert jetzt, ist 
aber bei Delays  50ms SEHR langsam...

MfG
Andreas

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
basiert der auf meiner linux -version? dass die so lahm ist, liegt 
daran, dass sie alle registerkombinationen durchgeht (rekursiver 
aufbau), um so die beste (also kürzeste) fassung zu finden.

vielleicht kann ich ja noch etwas speed rauskitzeln... ich sag bescheid, 
wenn ich mal wieder was dran mache - momentan schreibe ich an einem 
AVRStudio ersatz für linux (und windows).

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich habe dein Programm 1:1 in JavaScript übertragen. Das mit der 
Rekursion ist da natürlich ganz schlecht, weil JS im Vergleich zum 
kompilierten Programm viel langsamer ist.

Schreibst du "nur" eine IDE, oder einen kompletten Simulator? Falls 
letzteres, schau dir mal simulavr 
(http://savannah.gnu.org/projects/simulavr/) an.

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

falls du irgendwann soweit bist und eine lauffähige IDE auf die Beine 
gestellt hast, mit der man einigermaßen gescheit avr-gcc programmieren 
kann, wäre ich auch an frühreren (Entwickler-)Versionen interessiert.

Mit welchem Toolkit(gtk,qt,...) schreibst du das denn? (nur rein 
interessehalber, hab keine Ahnung von GUI's).

Danke & ciao,

      Christian

Autor: Axel(ojojo) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Andreas

Du hast nur maximal 2 Schleifen implementiert, oder ?

Wenn ich 100ms will, dann rechnet er ....

Womit schreibt Ihr momentan so eure Programme?
im AVR Assembler vermisse ich syntax highlightning
und beim Studio muss ich immer erst gross ein Projekt öffnen, bevor ich 
was assembeln kann.

jo
Axel



... immer noch (100% Auslastung auf meiner P4 1.6GHz Maschine)
... schon seit min. 5 Minuten :-)
...
...

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
von dem simulator wusste ich noch gar nix! :-)

ich wollte eigentlich nen kompletten simulator schreiben.. das interface 
in gtk+.


hab bis jetzt 8!!! :-) instruktionen implementiert und etwas interface. 
ich mach das aber nicht, damit's unbedingt fertig wird (was natürlich 
schön wäre), sonder um zu lernen+ spass zu haben

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab mir simulavr grad mal angeschaut. is recht nett. ich werd aber 
trotzdem weitermachen... :-)

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal eine Idee für etwas, was ich in jedem Simulator vermisse: man müsste 
Module für Peripheriegeräte einbinden können. So dass man z.B. ein Modul 
für ein LCD hat das an bestimmte Pins des Controllers "angeschlossen" 
werden kann und das dann die Funktion simuliert. Oder Taster die auch 
das Prellen simulieren... oder I2C-EEPROMs... oder AD-Wandler... die 
Liste ist endlos. Du musst das ja nicht alles selber schreiben,  aber 
eine Schnittstelle die sowas ermöglicht wäre echt a Hammer :-)

MfG
Andreas

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.