Forum: Mikrocontroller und Digitale Elektronik Verzögerung um 10sekunden?


von Freak5 (Gast)


Lesenswert?

Wie kann man einen AVR eigentlich am einfachsten um 10sek verzögern?
Muss man das dann so machen? Wenn ja, warum rechnet mein Amd mit
2.07Ghz an der Simulation 30sek? Habe ich da einige Druchläufe zu viel
oder liegt das nur am Simulator, der den Aufwand so in die Höhe
schließen lässt?
Verzoegerung:
push r16
push r17
push r18

ldi r16,15
Schlr16:

  ldi r17,255
  Schlr17:

    ldi r18,255
    Schlr18:

      nop

    dec r18
    BRNE Schlr18

  dec r17
  BRNE Schlr17

dec r16
BRNE Schlr16

pop r18
pop r17
pop r16
ret

von Martin S. (Gast)


Lesenswert?

Das war doch schon vor 20 Jahren "bäh", Verzögerungen mit
NOP-Schleifen durchzuführen.

Das sich das so lange hält .... Hat es sich bisher noch nicht
rumgesprochen, daß es sinnvollere Methoden gibt (die dann auch nicht
vom Compiler weg-optimiert werden)?

von Freak5 (Gast)


Lesenswert?

Was ist denn sinnvoller?
Ich bin im Moment doch ein Einsteiger!

von Sven (Gast)


Lesenswert?

Naja, zum Beispiel einen Timer mit 1sec laufen lassen und über den einen
Zähler von 10 auf 0 zählen. Dann kann man nebenbei noch andere Sachen
mit dem AVR erledigen (SETI rechnen zum Beispiel).

Wenn der AVR aber gar nix weiter zu tun hat, kann man freilich auch
NOPs nehmen. Aber dann kann man auch einen Kondensator und einen 555
nehmen und sich den AVR sparen.

Dass die Simulation so lange dauert ist richtig, mit 30sec für 10sec
Echtzeit bist Du noch gut dran. Schließlich werden die Befehle eben nur
simuliert und der PC macht noch viel mehr nebenher.

@Martin

Compiler optimieren NOPs weg? Die sind ja doof...

Sven

von Freak5 (Gast)


Lesenswert?

Naja das ist hauptsächlich eine Einschaltverzögerung. Ich bastelte
nämlich an meinem Shiftregister, welches schon seint 4Wochen nicht
funzt.

JEmand hat mir einen tipp gegeben-> löte doch einmal Widerstände an die
Eingänge.

Das hat dazu geführt, dass es auch noch nicht lief, als ein Kondensator
an der Leitung hing.

Das Problem war anscheinend dass der AVR die Daten schon gesendet hatte
bevor der andere Chip strom hatte.

Die Verzögerung sollte jetzt so laufen, dass der ganze AVR zwischen
allen Schritten eine Sekunde braucht und hätte das nach der
einschaltverzögerung nicht funktioniert hätte ich mir eine LED-Leiste
gebaut um dann die Zustände sehen zu können.

Naja jetzt geht es ja...

"Wenn der AVR aber gar nix weiter zu tun hat"
Ja für so eine Aufgabe könnte man sich schon einen anderen Chip holen.
Aber er hat ja später was zu tun, der AVR!

von Martin S. (Gast)


Lesenswert?

@Sven

Schick mir mal die SETI-Implementation für AVR und sonstige Chips.

Ich glaub mein Tacho im Fahrrad, und mein Außenthermomenter-Prozessor
könnte ich da auch noch einspannen, um ein paar außerirdische
einzufangen g

von Freak5 (Gast)


Lesenswert?

JO die sparen deinem PC dann am Tag 3min Rechenarbeit g

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.