Forum: Mikrocontroller und Digitale Elektronik Zeitverzögerung


von Martin (Gast)


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.

von Niki Hammler (Gast)


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

von Jonas Diemer (Gast)


Lesenswert?

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

von Martin (Gast)


Lesenswert?

Danke,werd ich gleich mal probieren.

von Martin (Gast)


Lesenswert?

Hallo!

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

von Jonas Diemer (Gast)


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

von Martin (Gast)


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.

von Andreas S. (andreas) (Admin) Benutzerseite


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

von Jonas Diemer (Gast)


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"

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

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

MfG
Andreas

von Jonas Diemer (Gast)


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).

von Andreas S. (andreas) (Admin) Benutzerseite


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.

von Christian (Gast)


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

von Axel(ojojo) (Gast)


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 :-)
...
...

von Jonas Diemer (Gast)


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

von Jonas Diemer (Gast)


Lesenswert?

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

von Andreas S. (andreas) (Admin) Benutzerseite


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.