PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Simulator Frage und ISR länge abzählen ?



Roberto
30.09.2006, 12:25
Hallo Leute

Ich quäle mich gerade mit einer ISR Funktion rum und hätte da ein paar Fragen:

Wie finde ich raus, wie lange meine ISR braucht ?

Gehe dazu in den Simulator und setze einen Preakpoint bei dem Einsprung der ISR

Z.B. bei

@ Anfang:

Wenn ich hier auf Einzelschritt drücke, habe ich als erster schon mal 53cyclen drauf!!

Sind das die, die gebraucht werden, um die Register zu speichern ?

Und beim Einzelschritt beim Return (am Ende) habe ich auch gleich + 992 Cyclen :-(

ich schätze mal, dass ich die alle zu der ISR rechnen muss ?!

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

Andere Frage:

Wird eine ISR vom eigenen Überlauf abgebrochen (wenn er zu kurz ist), oder wird die eigene ISR immer fertig gemacht und erst dann darf der Überlauf wieder wirken ?


Bitte um Hilfe :-)

l.G. Roberto

PicNick
30.09.2006, 14:37
. ISR immer fertig gemacht ..
So isses.

..die gebraucht werden, um die Register zu speichern .
Auch das könnte hinkommen.


Nur das mit den 992 Zyklen am Ende ics mit jetzt auch nicht klar

Roberto
30.09.2006, 17:33
Hallo Robert

Jetzt wollt eich es genau wissen.
Habe dann mit einer leeren ISR angefangen.
53 Cyclen beim reinspringen, 57 bei raus. (Simulator)
Dann weiter rangetastet bis zum originalen Quellcode...

Jetzt habe ich noch immer 53/57 ??!

Komische..
Irgendwie spinnt der Simulator :-(

l.G. Roberto

PicNick
30.09.2006, 19:19
Könnte mir vorstellen, daß er den Call auf die ISR nicht zählt, sonder erst ab "Label". Den RETI mit 4 Cycles (glaub ich) wird er aber wohl schon rechnen, die Schweinebacke, die.

-tomas-
06.10.2006, 20:58
@Roberto
Eine normale Bascom-ISR sieht so aus:

push r0
push r1
push r2
push r3
push r4
push r5
push r7
push r10
push r11
push r16
push r17
push r18
push r19
push r20
push r21
push r22
push r23
push r24
push r25
push r26
push r27
push r28
push r29
push r30
push r31
in r24, SREG
push r24
... 'Code
pop r24
out SREG, r24
pop r31
pop r30
pop r29
pop r28
pop r27
pop r26
pop r25
pop r24
pop r23
pop r22
pop r21
pop r20
pop r19
pop r18
pop r17
pop r16
pop r11
pop r10
pop r7
pop r5
pop r4
pop r3
pop r2
pop r1
pop r0
reti

zähl mal die Push/Pop Takte aus :-)