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
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
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.