PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu Pausen



rathma
13.01.2006, 14:02
Hi,
ich will mit einen Atmel AT90S2313 ein Clocksignal mit einer gewissen Pulslänge schicken die X usec lang ist. da dachte ich mir das mach ich ganz einfach mit waitus X aber in der hilfe von bascom steht irgendwas drin, das dieser befehl nicht genau X us lang ist(X steht für den wert, den hab ich aber grade nicht im kopf ich glaub aber es waren so um die 3 usec). für mich als anfänger in micoprozessorprogrammierung ist das irgendwie ein bischen verwirrend. kann mir einer das mal genau erklären bzw sagen wie ich genaue zeiten "pause" machen kann.

ich verwende auf meiner schaltung einen 7.3728MHz crystal, falls das relevant sein sollte

danke
gruss
markus

oe9vfj
13.01.2006, 14:23
Die Verzögerung kannst du im Simulator ermitteln.


$Crystal = 7372800

waitus 3

end

Kompiliere den Code und starte den Simulator. Gehe das Programm schrittweise durch. Wenn der Befehlszeiger auf waitus 3 steht, klicke mit der rechten Maustaste in der Statuszeile auf das Feld Cycl.... und lösche mit Clear Cycles den CPU-Zyklen-Zähler.
Drücke dann noch einmal das Step-Symbol (oder F8) und du kannst dann in der Statuszeile die benötigen Zyklen und die Zeit im mSec ablesen.
Bei deinen Beispiel ergibt das 3,255 µSec.
Wenn du davor und danach noch den Pegel eines Pins änderst um einen Impuls zu erzeugen, wird dafür natürlich auch noch etwas Zeit verbraucht.
Wenn es ganz genau sein soll, wirst du um eine Sequenz in ASM nícht umhin kommen.