www.mikrocontroller.net

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


Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)?

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist denn sinnvoller?
Ich bin im Moment doch ein Einsteiger!

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Martin S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
JO die sparen deinem PC dann am Tag 3min Rechenarbeit g

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.