PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : laufzeiten im simulator von bascom anzeigen



sechsrad
09.02.2008, 11:51
hallo, ich möchte im simulator von bascom die laufzeizen auswerten. wie geht das? habe bascom 1.11.9.0.



$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 64
$crystal = 8000000
$baud = 19200


Waitus 1

Waitus 9

Waitus 889


ldi r17,33
Wgloop0:
Set Portd.5
Waitus 13
Reset Portd.5
Waitus 12
nop
nop
nop
nop
nop
nop
dec r17
brne WGLOOP0


End

sechsrad
14.02.2008, 08:47
weiss hier keiner weiter um die µs anzuzeigen mit dem simulator.

MeckPommER
14.02.2008, 09:19
Mein Senf, auch wenn ich noch nie mit dem Simulator gearbeitet habe (schäm):

Wenn ich es richtig deute, versuchst du ein 40KHz-Signal (für einen ultraschall-sender?) zu erzeugen.

Ich zähle die Zyklen, die jeder asm-Befehl benötigt, zusammen und komme somit auf die Laufzeit eines Programmabschnitts. Fürs Grobe nehme ich einen Frequenzzähler, der z.b. auch schon in Multimetern für 30 Euro vorhanden ist.

Sollen beide Zustände, High und Low, die gleiche Länge haben, ist man mit dem waitus-Befehl natürlich schlecht bedient. Ich würde hierfür lieber einen Timer benutzen, das ist erheblich genauer einstellbar.

Diese Vermischung von Basic und ASM ist etwas ungewohnt für meine Augen -.- Ich trenne die verschiedenen Sprachbereiche lieber deutlicher voneinander um z.B. auch besser erkennen und vermeiden zu können, das man in ASM etwas macht, was Bascom aus dem Tritt bringt.

Gruß MeckPommER

Guenni_Berli
14.02.2008, 14:58
Hi.
Also ich finde den Simulator sehr sinnvoll und benutze ihn auch relativ oft.

@Sechsrad:
File compilieren und dann den Simulator starten.
In den angezeigten Sourcecode klicken und mit F8 im Einzelschritt durchsteppen.
In der Statuszeile werden Dir die Taktzyklen und die abgelaufene Zeit ab Beginn des Programms angezeigt.
Mit F8 zum Beginn Deines zu analysierenden Codes springen, die Zeit / Zyklen merken und steppen.
In Deinem Fall benötigt die WGLoop z. B. 26,625us bzw 213 Taktzyklen.

Ach ja, es muss unter Optionen-> Compiler -> Output bei Debugfile erzeugen ein Häkelchen sein.

Gruss
Guenter

mlgahoc
14.02.2008, 17:30
Hallo,

kleine Ergänzung:

Im Simulator werden die anzuspringenden Befehle ganz links mit einem gelben Kreis gekennzeichnet.
Den Cursor auf so einen Kreis setzen –rechte Maustaste– im Menü -Run to- wählen.
Das Programm wird dann bis an diese Stelle abgearbeitet.
Dann den Cursor in die Statuszeile (ganz unten) setzen –rechte Maustaste- -Clear Cycles- .
Nun sucht man sich die gewünschte Stelle im Programm und wählt wieder –Run to- aus.
Auf diese Art spart man sich die Rechnerei und kann Laufzeiten von Schleifen usw. bestimmen.

Gruß Manfred
www.malo-web.de

sechsrad
14.02.2008, 17:50
danke für die antworten.
der code oben war nur zum testen.

habe es einmal mit avrstudio getestet und wollte mal einen vergleich mit dem bascom machen.

die waitµs sind in bascom erstaunlichlich genau 1 waitµs sind in der zeitnehmung vom avrtsudio 1,13 µs und 890µs sind 890,13 , also alle achtung für bascom.

https://www.roboternetz.de/phpBB2/viewtopic.php?t=37768

dort befindet sich ein test zum rc5-code senden mit asm und bascom gemischt. also sehr gut.