Verzögerung um 10sekunden?

Gast #160581
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
Gast #160582
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)?
Gast #160584
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
Gast #160585
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!
Gast #160586
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren