...nevermind... keep thinking...
...nevermind... keep thinking...
Last edited by mister_e; - 28th May 2011 at 21:47.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
The same is happening with @ CLRF _Counter +1.
And ISR stops, sometimes begins to run, sometimes I have to reset my pic![]()
I'm tad rusty, for ease... I would bet your should assign your array to BANK0 instead...
post your PIC model and code, we'll try to help
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Here it is ISR
Pic is 18LF14K50Code:if PIR2.1=1 then T3CON=%00000110 Wp= Wp & uwp Xn.0=IN1 Xn.1=IN2 IF (Xn.0<Xs.0 AND Trf=0) OR (Xn.0<Xs.0 AND Xn.1=1 AND Trf=1) THEN @ INCF _Counter,F 'this work IF Counter[0] = Mtp2[0] OR (Counter=256 AND Mtp2[0]=0)THEN @ CLRF _Counter ' and this CNT[0]=CNT[0] + Add[0] ENDIF ENDIF IF (Xn.1<Xs.1 AND Trf=0) OR (Xn.0<Xs.0 AND Trf=1 AND Xn.1=0) THEN @ INCF _Counter+1,F 'Counter[1] = Counter[1] + 1 'won't work IF Counter[1] = Mtp2[1] OR (Counter[1]=256 AND Mtp2[1]=0)THEN @ CLRF _Counter+1'Counter[1]=0 'won't work CNT[1]=CNT[1]+Add[1] ENDIF ENDIF Xs=Xn @ CLRF PIR2 endif
EDIT:
bank0 or bankA is same...
I tried RTC,it works fine with both.
Last edited by pedja089; - 28th May 2011 at 22:14.
weird... a simple loop works here,
but as you're using a blend mix of ASM and PBP in an ISR, you must make sure you're always on the good BANK case not, hell yeah it may goes to lalaland... what you could try is to set all variable that goes in the ISR to BANKA.Code:start: asm incf _MyArray,F incf _MyArray+1,F endasm myvar=myarray[0] myvar2=myarray[1] goto start
And yes I know I miss something
EDIT: The more I think, the more it looks like a bank switching issue,
The above work... commentout the CHK?RP line.. and nope... it doesn't.Code:MyArray VAR BYTE[8] BANK1 MyVar var byte BANK0 MyVar2 var byte BANK0 clear start: asm CHK?RP _MyArray incf _MyArray,F incf _MyArray+1,F endasm pause 500 myvar=myarray[0] myvar2=myarray[1] goto start
And NOPE, BANK0 !=BANKA
Finger crossed before the real ASM/Compiler gurus came here and slap me a good oneCode:BANKA $0000, $005F BANK0 $0060, $00FF![]()
Last edited by mister_e; - 28th May 2011 at 22:58.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
As you can see, my isr have both and asm and pbp... All variables is in bankA.
Somewhere i read that bank for 18F doesn't matter...
How to setup correctly banks?
But if I use i = i +1 instead INCF everything works. INCF and CLRF work if I make a array to separate variables...
Since we don't have the full code, or .LST file, I'll leave the more in deep & technical explanation of Access Ram, BSR and plah plah plah of section 3.3.3 to better guys (I hope I'm right though).
Again, the compiler keep track of everything for you, hence why the PBP lines will always works.
add
@ CHK?RP _Counter
just before your INCF, DECF and or CLRF to see what happen
Last edited by mister_e; - 28th May 2011 at 23:31.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Bookmarks