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.
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
Hallo! ich hab da noch eine Frage, und zwar wie programmiert man eine verzögerung von einer Stunde.
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
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.
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
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"
Der Online-Delay-Loop-Generator (http://www.mikrocontroller.net/delayloop.html>) funktioniert jetzt, ist aber bei Delays 50ms SEHR langsam... MfG Andreas
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).
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.
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
@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 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
hab mir simulavr grad mal angeschaut. is recht nett. ich werd aber trotzdem weitermachen... :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.