Hi,
I've got a problem I can't seem to wrap my head around...
The PIC I'm using is a 18F4520 and when I discovered the problem I was compiling with 2.6A but have now switched to 3.0.1.4
Running the following code:Everything works as expected, and with everything I mean nothing happens really. PortD.0 pulses on startup and then it sits there doing "nothing" (I've waited for ~5 minutes, you'll understand why soon.)Code:DEFINE OSC 8 #CONFIG CONFIG OSC = HS CONFIG FCMEN = OFF CONFIG IESO = OFF CONFIG PWRT = ON CONFIG BOREN = OFF CONFIG WDT = ON CONFIG WDTPS = 512 CONFIG CCP2MX = PORTC CONFIG PBADEN = OFF CONFIG LPT1OSC = OFF CONFIG STVREN = OFF CONFIG MCLRE = ON CONFIG LVP = OFF CONFIG XINST = OFF CONFIG DEBUG = OFF #ENDCONFIG i VAR BYTE High PortD.0 : Pause 500 : Low PortD.0 i = 0 Main: i = i + 1 PauseUs 20 Goto Main
However, if I reduce the PauseUS to 10 or remove it completely the program restarts (PortD.0 pulses) roughly 22 times per second. (I know PauseUs 10 is border line on the specified miniumu of 9 for a 18F chip at 8Mhz) but why does it restart? And why does it restart if I remove it all together?
This works:While this restarts the PIC once every 3rd second:Code:Main: i = i + 1 If I = 255 Then i = 0 Goto MainThe variable i is declared as a BYTE as can be seen above. It "feels" like it has something to do with i overflowing but why and why does it matter if I pause 20us?Code:Main: i = i + 1 Goto Main
What am I doing wrong here? 18F4520, PBP 3.0.1.4, MPLAB 8.73a/MPASM 5.42, compiling for the correct chip from MCSP 5.0.0.0.
Thanks!
/Henrik.




Bookmarks