16F to 18F context saving differences
Hi, I am trying to move my PicBasic Pro programs from 16F876 to 18F2525. I am unclear as to the difference in context saving/restoring with interrupts. In the PicBasic Pro manual it says that:
"If a 14-bit core PICmicro MCU has more than 2K of code space, an
interrupt stub is automatically added that saves the W, STATUS and
PCLATH registers into the variables wsave, ssave and psave, before
going to your interrupt handler. Storage for these variables must be
allocated in the BASIC program:"
wsave var byte $20 system
wsave1 var byte $a0 system ‘ If device has RAM in bank1
wsave2 var byte $120 system ‘ If device has RAM in bank2
wsave3 var byte $1a0 system ‘ If device has RAM in bank3
ssave var byte bank0 system
psave var byte bank0 system
My original intrrupt rountine, which seems to have worked fine for years had the following code in an included file containing my inerrupt rountines in assembly language.
;======= System variables: ======================
wsave VAR BYTE $70 system
ssave VAR BYTE bank0 system
psave VAR BYTE bank0 system
I had no context saving intering the routine as I believe PBP is doing this for me.
Upon exit I have the following:
intsrvx bcf STATUS,RP0 ;select Bank 0
bcf STATUS,RP1
movf psave, W ;restore the state of everything
movwf PCLATH
swapf ssave, W
movwf STATUS
swapf wsave, F
swapf wsave, W
retfie
The interrupts I am using are Timer1(16F876) and Serial Recieve. In my intrrupt rountine I am writing to EEProm too.
As I said I believe all is well here. My question is, can anyone recommend what will be required to do for the 18F2525 to provide the context save/restore to accomplish the same thing? Do I supply the context saving as well as restoring. Does anyone have any recommended methods?
Thanks for any help you can provide, Bob
Don't save your context!!!!!!!!!!
Hi,
Hope you are using high priority interrupts only. (That is no way of a low priority interrupt interrupted by a high priority). Then this should suffice:
18F series have a single level shadow register stack which saves your w,status and bsr automatically on interrupt.
1 Attachment(s)
Go through the PIC18 reference manual
Quote:
Originally Posted by
brittons
If you could point me to a datasheet were this is explained I would appreciate it.
Hi,
<img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=1510&stc=1&d=117539433 5">
Could you post your code snippets so that we could discuss this stuff in detail. Also try using Darrel Taylor's Instant Interrupt. As you are already familiar with asm. A review of Darrel's Code would make things much clear. I will get back to this thread.