>O.K. So I'm reading the "B" version note, >Where is the "A" note? >Who has "B" version chips, and what do I have since I bought them months >ago >and they have neither A or B markings. Thomas, chip versions A,B etc. are usual used as marks for new chip layout, redesign or technology. They are marked on the chip package, like 16F84 and 16F84A. So far I know, at the time are available only the first versions of 18Cxx2. Errata sheets revision A,B are written after chip testing, both HW and SW. And all errors are then reported with possible corrections and work around. Let see the Atmel AVR errata, for some chips you find versions F,G,H and so. The last one contains summary of all previous. ... >Let me answer that in part... > >I have discovered if you have in interrupt happen while using a MOVFF, >It may NOT complete the 2 part of the instruction, and when you return >from interrupt >You get bogus results... Probably if more interrupts running simultaneously, one with higher priority as the other one. > >As Murphy would have it, I'm doing table lookups for a JUMP table and the >PC get some >pseudo-random value! >No, I'm not using MOVFF something, PCL. That's been pointed out as a >no-no. >I am using MOVFF something, WREG, which is specifically encouraged in the >MOVFF >instruction manual. Well the value in WREG get clobbered by interupts... >sometimes. I think MOVFF fs, fd is primary used for data exchange between two registers without affecting any status bits. This is usual needed when you need to transfer some variables to locals and so. Not to transfer to W register. When you need data to be in W reg. you must use the usual way with MOVF fs,W,source_bank If jump table is needed you cann't use MOVFF for this jumping, expect the case of fixed address stored in ram: Pointer_High, Pointer_Low - targed 16 bit address where to jump stored in ram MOVFF Pointer_High, PCLATH - this transfers only 8 bit from Pointer_High MOVF Pointer_Low,W,bank_sel - cann't use PCL, then get it via W MOVWF PCL,bank_0 - jump If your addresses are in Program Space, you must use the TBLRD instructionin to get the 8 data set TBLPTR to point to adress of jump TBLRD*+ MOVFF TBLATH, PCLATH TBLRD* MOVF TBLATH,W,bank_0 - again cann't use PCL as target in movff MOVWF PCL,bank_0 >I didn't trust the RETFIE FAST to restore W, so I added my own >save/restore in the >interrupt service routine. Didn't help either way. Did you tried to run with only one interrupt and correct disabled all other. Then did you setup the interrupt compatibility mode bit? Andrej _________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com. Share information about yourself, create your own public profile at http://profiles.msn.com. -- http://www.piclist.com hint: PICList Posts must start with ONE topic: "[PIC]:" PIC only "[EE]:" engineering "[OT]:" off topic "[AD]:" ad's