www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Warteschleifen Berechnung


Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich bin am Verarbeiten des Warteschleifen Prinzips.

Sind denn die Taktzyklen in diesem Beispiel (vom Internet)wirklich
richtig berechnet ?

Laut Datenblatt AT90S8515 braucht der Befehl "rcall" schon 3 Zyklen,
und der "ret" Befehl 4 Clock-Zyklen.

---------------------------------------------------------------------

Wait50us:            ;Systemtakt = 10Mhz sollen sich tges=50us ergeben

        ldi tim1,165 ; Zähler
Wait51:
        dec tim1
        brne Wait51
        ret

; 10 MHz Taktfrequenz = 0,1us/Takt
;
; 4  Takte für UP-Abarbeitung (Aufruf und Rücksprung)
; 1  Takt  für ldi tim1,X X=Zähler um 50us zuerhalten
; =5 Takte *0.1 = 0.5us =ta = sonstige Zeit für UP
;
; Schleife
;       dec tim1        1 Takt
;       brne wait51     2 Takte
;                     = 3 Takte = 3*0.1=0.3us = ts = Zeit für Schleife

;
; X= (tges-ta)/ts=(50us-0.5us)/0.3us=165 (Zeitzähler)
----------------------------------------------------------------------

Vielen Dank für die Infos

Toni

Autor: Fiffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Toni,

schau mal unter:
http://www.home.unix-ag.org/tjabo/avr/AVRdelayloop.html


Gruß

Fiffi

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Toni,

genau genommen sind da zwei Fehler drin:

1. rcall, ldi und ret entsprechen 8 Zyklen und nicht 5
2. Beim letzten Durchlauf der Schleife benötigt sie nur 2 Taktzyklen

Um exakt die 50us zu treffen, mußt Du tim1 also auf 164 setzen und
zwischen BRNE und RET noch ein NOP einfügen (164*0,3 + 0,8).

Gruß, Frank

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.