Yes, I checked it again. For some reason I remember to have two NOPs. Sorry for that. Have one or three. It is up to you.![]()
Yes, I checked it again. For some reason I remember to have two NOPs. Sorry for that. Have one or three. It is up to you.![]()
"If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte
I rephrase: at least one NOP.
You may have as many as you want of course. Will not argue that. Still, I do not know which case(s) will not need the NOP, so put it there in any case!
Ioannis
So I've run all the test Sayzer has suggested. No changes. I then strip code to a couple of lines. I have done this on multipal 1936 and different boards.
SLEEP is the first command after which my LED flashes apx. every 2.14seconds.Code:Asm __config _CONFIG1,_FOSC_INTOSC & _CLKOUTEN_OFF & _MCLRE_ON & _BOREN_OFF & _WDTE_OFF & _FCMEN_OFF & _CP_OFF & _CPD_OFF & _IESO_OFF __config _CONFIG2, _WRT_OFF & _PLLEN_OFF & _STVREN_ON & _BORV_LO & _LVP_OFF endasm define OSC 8 OSCCON=%01110000 ;1110=8Mhz ANSELA=$0 ANSELB=$0 ADCON0=$0 PortA=0 PortB=0 PortC=0 TrisA=%00000001 TrisB=%00001001 TrisC=%00000000 Avar var byte Bvar var byte Cvar var byte SleepMode: ASM ; BTFSS BAUDCON,RCIDL ;Check for High, no receive in progress ; GOTO $-1 ;return to previous line ; BSF BAUDCON,WUE ;Wake on Rx from Master ; BSF PORTA,1 ;LED SLEEP BSF PORTC,1 ;LED nop nop nop . ENDASM
I then expand the code.
I run the code and LED A.1 is on and LED C.1 is blinding every 2.14sec.Code:SleepMode: ASM ; BTFSS BAUDCON,RCIDL ;Check for High, no receive in progress ; GOTO $-1 ;return to previous line BSF BAUDCON,WUE ;Wake on Rx from Master BSF PORTA,1 ;LED SLEEP BSF PORTC,1 ;LED nop nop nop . ENDASM END
I then expand the code.
I run the code and No LED comes on. The program is stuck in the loop BTFSS BAUDCON, RCIDL & GOTO $-1. This is a HARDWARE RESET not caused by any of my code unless something in the configs are at falt. Threre are no interrupts as I have tested all flag bits i can think of. Rx stays LOW. No com is connected to the board. RCIDL should be HIGH but it is not.Code:SleepMode: ASM BTFSS BAUDCON,RCIDL ;Check for High, no receive in progress GOTO $-1 ;return to previous line BSF BAUDCON,WUE ;Wake on Rx from Master BSF PORTA,1 ;LED SLEEP BSF PORTC,1 ;LED nop nop nop ; Should be in sleep for 10sec. ENDASM
CONFIGS !!! Next round of testing.
its all the same problem
what bank is baudcon in?
what bank is porta or portc in ?
ASM
BTFSS BAUDCON,RCIDL ;Check for High, no receive in progress
GOTO $-1 ;return to previous line
BSF BAUDCON,WUE ;Wake on Rx from Master
BSF PORTA,1 ;LED
SLEEP
BSF PORTC,1 ;LED
nop
nop
nop ; Should be in sleep for 10sec.
ENDASM
Warning I'm not a teacher
Your MCLRE is ON.
If you are using power adapter (not battery), make sure you have 100nf cap from MCLRE pin to GND. And I am not even asking about 4K7 - 10K res to vdd; Assuming it is already there.
And, if the osc is giving you issues somehow, then try OSCCON=%01110010.
And check OSC stable bits in OSCSTAT.
"If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte
if you are going to do this sort of thing in asm then you need to understand how banked memory access is
used for this chip. hint [ baudcon is not in access bank ]
Warning I'm not a teacher
Thanks guys for all your replies. I really do appreciate the time you've
taken.
So Richard, I should have understood what you were saying the first time. I converted all code to PBP and it looks like RCIDL is set after all. However it didn't change the results.
I then went to battery power, no change. Still a reset every 2.14sec. I also changed several of the configs with no change in results. I may mark this one up as part of the magical mystery tour as I have a work around for the problem. This is one of a couple problems that I could never solve. The other was the inability to make RA.7 a digital I/O. I wonder if my software has some corruption. Yea, when all else fails blame it on the software. Wayne
Bookmarks