Forums

Need Help Urgently - Mysterious Problem after adding Function

Started by Roger_4U December 8, 2007
Hi Folks:

I am up a creek, I have been working on some code for over a year and
I am totally stumped with this last problem:

Device: Pic16F88
Chip OSC: 20Mhz
Programmer: MeLabs USB Programmer
Code is spread across two codepages. i.e Linker is being used.
Number of Software Modules: 4 [3 in CodePage0 and 1 in CodePage1]
Assembler/Complier: MPLAB IDE v8.00
Serial speed: 57.6Kbps

My problem is that the circuit stops working properly once I add a new
sub-program (function) to CodePage0; and what is totally baffling is
that even if I comment out the call in the main program to this
function, the problem still persists. When I reduce the size of the
function by say 7 statements, the serial portion, a LED switch, and
the blinking LED, work as expected. However when I have all the code
present, everything seems to be still working except the serial part
of the circuit which starts sending out mixed up data.

I have changed the chip, upgraded to the latest IDE, and still the
same problem.

What is going on here? PLEASE HELP - I feel like jumping ship and
starting over from scratch with a different platform (e.g AVR).
--- In p..., "Roger_4U" wrote:
>
> I am using the PIC16 instruction set to write the code, and I am even
> commenting out the call to the function. The code was working fine
> for days until I added the now Not called function.
>

Check ALL your lookup tables. Make sure you haven't pushed one so that
it is split across a code page boundry. If so make sure your address
calc compensates for crossing the boundry i.e. don't just add the
index to PCL.

make sure you havent pushed your ISR into another code page and that
you are saving and restoring PCLATH correctly.

Regards
Sergio Masci

http://www.xcprod.com/XCSB
.
Just because you don't call it doesn't mean it isn't assembled, and this
new code didn't just cross a page boundary (one of the reasons I've
moved to AVR's, that antiquated page boundary crap.) Check to make sure
that something didn't move some other call to another page.

DLC

Roger_4U wrote:
> I am using the PIC16 instruction set to write the code, and I am even
> commenting out the call to the function. The code was working fine
> for days until I added the now Not called function.
>
> --- In p..., "Jcullins" wrote:
>
>>sounds like you may have something declared as byte and using it as
>
> word so
>
>>it writes over the next memory location.
>>Just a first guess
>>
>>----- Original Message -----
>>From: "Roger_4U"
>>To:
>>Sent: Saturday, December 08, 2007 7:03 PM
>>Subject: [piclist] Need Help Urgently - Mysterious Problem after adding
>>Function
>>
>>>Hi Folks:
>>>
>>>I am up a creek, I have been working on some code for over a year and
>>>I am totally stumped with this last problem:
>>>
>>>Device: Pic16F88
>>>Chip OSC: 20Mhz
>>>Programmer: MeLabs USB Programmer
>>>Code is spread across two codepages. i.e Linker is being used.
>>>Number of Software Modules: 4 [3 in CodePage0 and 1 in CodePage1]
>>>Assembler/Complier: MPLAB IDE v8.00
>>>Serial speed: 57.6Kbps
>>>
>>>My problem is that the circuit stops working properly once I add a new
>>>sub-program (function) to CodePage0; and what is totally baffling is
>>>that even if I comment out the call in the main program to this
>>>function, the problem still persists. When I reduce the size of the
>>>function by say 7 statements, the serial portion, a LED switch, and
>>>the blinking LED, work as expected. However when I have all the code
>>>present, everything seems to be still working except the serial part
>>>of the circuit which starts sending out mixed up data.
>>>
>>>I have changed the chip, upgraded to the latest IDE, and still the
>>>same problem.
>>>
>>>What is going on here? PLEASE HELP - I feel like jumping ship and
>>>starting over from scratch with a different platform (e.g AVR).
>>>
>>>
>>>
>>>
>>>to unsubscribe, go to http://www.yahoogroups.com and follow the
>>>instructions
>>>
You need to post more details. Does the last function added fit in
the lower program memory page wholly or partially? Do you have an
emulator/ICD2? Is it in C or assembly. Are all the data bank pointers
correct? Do you have to use 'far' addressing to use the new routine.
What if you put the function into code page 1? If the serial port is
involved are you using interrupts are they being serviced correctly.
Is there a rate problem with the line (one side too fast). If the
data is corrupted are you writing/reading beyond a memory buffer or a
data bank pointer might be corrupted. Are you using a Watch Dog?
M

--- In p..., "Roger_4U" wrote:
>
> Hi Folks:
>
> I am up a creek, I have been working on some code for over a year
and
> I am totally stumped with this last problem:
>
> Device: Pic16F88
> Chip OSC: 20Mhz
> Programmer: MeLabs USB Programmer
> Code is spread across two codepages. i.e Linker is being used.
> Number of Software Modules: 4 [3 in CodePage0 and 1 in CodePage1]
> Assembler/Complier: MPLAB IDE v8.00
> Serial speed: 57.6Kbps
>
> My problem is that the circuit stops working properly once I add a
new
> sub-program (function) to CodePage0; and what is totally baffling is
> that even if I comment out the call in the main program to this
> function, the problem still persists. When I reduce the size of
the
> function by say 7 statements, the serial portion, a LED switch, and
> the blinking LED, work as expected. However when I have all the
code
> present, everything seems to be still working except the serial part
> of the circuit which starts sending out mixed up data.
>
> I have changed the chip, upgraded to the latest IDE, and still the
> same problem.
>
> What is going on here? PLEASE HELP - I feel like jumping ship and
> starting over from scratch with a different platform (e.g AVR).
>


Is your code overflowing page 0 and into page 1?



I don't believe MPLAB throws this up as an error.



Have a look through the listing and follow the addresses up to page 1



www.murtonpikesystems.co.uk









-------Original Message-------



From: Roger_4U

Date: 12/09/07 01:04:41

To: p...

Subject: [piclist] Need Help Urgently - Mysterious Problem after adding
Function



Hi Folks:



I am up a creek, I have been working on some code for over a year and

I am totally stumped with this last problem:



Device: Pic16F88

Chip OSC: 20Mhz

Programmer: MeLabs USB Programmer

Code is spread across two codepages. i.e Linker is being used.

Number of Software Modules: 4 [3 in CodePage0 and 1 in CodePage1]

Assembler/Complier: MPLAB IDE v8.00

Serial speed: 57.6Kbps



My problem is that the circuit stops working properly once I add a new

sub-program (function) to CodePage0; and what is totally baffling is

that even if I comment out the call in the main program to this

function, the problem still persists. When I reduce the size of the

function by say 7 statements, the serial portion, a LED switch, and

the blinking LED, work as expected. However when I have all the code

present, everything seems to be still working except the serial part

of the circuit which starts sending out mixed up data.



I have changed the chip, upgraded to the latest IDE, and still the

same problem.



What is going on here? PLEASE HELP - I feel like jumping ship and

starting over from scratch with a different platform (e.g AVR).