hallo,
ik ben al een tijd bezig met het debuggen van een stukje programma.
ik gebruik een pic16F877A.
en ik gebruik de timer0 interrupt.
in de datasheet staat dat je tot 8 call instructies kunt geven zonder een return.
ik heb kunnen vast stellen dat de routine in mijn programma niet meer terug komt op de eerste call.
zonder dat ik daar een logisch verklaring voor kan vinden.
ik vraag me nu dus af, of een interrupt te vergelijken is met een call instructie!
de routine gaat tot in de 8e stack.
wat gebeurd er als er dan een interrupt komt?
even als voorbeeld:
dit kan!
call
---- call
--------- call
-------------- call
------------------- call
------------------------ call
----------------------------- call
---------------------------------- call
---------------------------------- ....
---------------------------------- ....
---------------------------------- ....
---------------------------------- ....
---------------------------------- ....
---------------------------------- return
----------------------------- return
------------------------ return
------------------- return
-------------- return
--------- return
---- return
return
maar werkt dit?:
call
---- call
--------- call
-------------- call
------------------- call
------------------------ call
----------------------------- call
---------------------------------- call
---------------------------------- ....
---------------------------------- ....
---------------------------------- ....
----------------------------------hier een interrupt
---------------------------------- ....
---------------------------------- ....
---------------------------------- return
----------------------------- return
------------------------ return
------------------- return
-------------- return
--------- return
---- return
return
ik heb het vermoeden dat een interrupt te vergelijken is met een call instructie, waardoor je eigenlijk 9 stack levels nodig zou hebben.
in de datasheet staat:
12.11 Context Saving During Interrupts
During an interrupt, only the return PC value is saved
on the stack.
dit is het enigste wat ik me kan verzinnen.
of zie ik toch nog iets over het hoofd?!!!