CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

PIC16F73 to PIC16F737

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
FCP



Joined: 19 May 2010
Posts: 13

View user's profile Send private message

PIC16F73 to PIC16F737
PostPosted: Thu Nov 29, 2012 6:29 pm     Reply with quote

I am having problems programming a PIC16F737 to run code designed for a PIC16F73. Does anybody know what changes must be done to the source code to migrate the firmware ?

Note:

I could probably figure it out, but I am pressed for time. In their wisdom, our purchasing department, could not get the PIC16F73 on time and decided on their own to buy the PIC16F737. Now that the units produced are in testing, they are failing.

Thank you.
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Thu Nov 29, 2012 8:10 pm     Reply with quote

Quote:
Now that the units produced are in testing, they are failing.

1. What are the boards supposed to do, and what features are failing to
work properly ? For example, is the RS-232 failing, or the A/D, or
the PWM, or it just failing to compile without errors ? Give details.
Note that the 16F73 has an 8-bit A/D but the 16F737 has a 10-bit A/D.

2. What is your compiler version ?

3. What is the Vdd voltage on the PIC ?

4. Are you compiling the program in Debug mode, or in Release mode ?

5. How are you testing it ? Are you running it with an ICD debugger
or are you running it in Standalone mode (ie., the same as the customer
would run it) ?

6. What is the frequency of the external crystal or oscillator ?

7. Do you have a bypass capacitor (Ceramic, 100 nF) placed very close
to the Vdd pin on the PIC ? The 16F737 probably has a smaller die
compared to the 16F73 and will likely be more sensitive to lack of
proper bypassing on the Vdd pin. You need the cap on the Vdd pin
(between Vdd and ground).
FCP



Joined: 19 May 2010
Posts: 13

View user's profile Send private message

PostPosted: Fri Nov 30, 2012 8:59 am     Reply with quote

1. The application is an LED display board, and the actual failure is related to the activation of the display matrix. I do have indicator LED's which are working properly (mostly heartbeat and communication enabled).
2. Latest compiler version by CCS.
3. 5 VDC.
4. Release mode.
5. Programming an IC and running it in the application PCB.
6. ~7.3 Mhz.
7. All the coupling and oscillator capacitors are in place.

Apparently the micro is executing code, what I am afraid is that the original programmer relied in the default values of IC setup and it worked fine, and with the change of component it will require to do the setup "manually" due to the added functions at each pin.
ckielstra



Joined: 18 Mar 2004
Posts: 3680
Location: The Netherlands

View user's profile Send private message

PostPosted: Fri Nov 30, 2012 9:50 am     Reply with quote

Quote:
2. Latest compiler version by CCS.
Today v4.139 was released. I doubt you are using that version.
Always post the exact version number so we can be sure to be testing with the same version you are using.

Quote:
Apparently the micro is executing code, what I am afraid is that the original programmer relied in the default values of IC setup and it worked fine, and with the change of component it will require to do the setup "manually" due to the added functions at each pin.
Very likely it is something like that, but those problems are easy to fix a with a small software change. I don't have time now but will have a look into it later, unless someone else responds here sooner.
asmboy



Joined: 20 Nov 2007
Posts: 2128
Location: albany ny

View user's profile Send private message AIM Address

PostPosted: Fri Nov 30, 2012 1:11 pm     Reply with quote

i think PCM gave good advice.
post all the code you can especially header and fuses
but really all you can so evaluation becomes possible.
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Fri Nov 30, 2012 2:42 pm     Reply with quote

Quote:

what I am afraid is that the original programmer relied in the
default values of IC setup

1. Did the original programmer let the CCS "Wizard" insert the i/o setup
code ? Post the setup code which normally appears at the start of main().
Post the #fuses, #use delay(), all #use statements.

2. Post a list of the i/o pins you're using for the LED display board.

3. If the LED display board is a purchased component, post the
manufacturer and part number and a link to the webpage for it.

Quote:

Latest compiler version by CCS.

4. What compiler version did the original programmer use ? Surely not
the latest one. There were important changes done between versions
that can cause older programs to fail if compiled with a new compiler.
If we know the original version and your current version (exact number)
then we can tell you what to look for in your code.
asmboy



Joined: 20 Nov 2007
Posts: 2128
Location: albany ny

View user's profile Send private message AIM Address

PostPosted: Fri Nov 30, 2012 2:59 pm     Reply with quote

because it is intermittent - have you checked the brownout voltage selection for the 737 ??


And you are sure the ADC 8 bit vs 10 bit thing is not biting you ?
ckielstra



Joined: 18 Mar 2004
Posts: 3680
Location: The Netherlands

View user's profile Send private message

PostPosted: Fri Nov 30, 2012 3:02 pm     Reply with quote

As indicated by the other people in this thread we can only give exact when we know more details, but there is one very likely culprit that you can have a look at:

The PIC16F737 has more functions, some of which override the functions that are enabled on the PIC16F73. Especially the PIC16F737 has more analog inputs and these are all enabled at power up and that will block all other activities on the Port B0 to B5 pins.
When your code contains:
Code:
setup_adc_ports(NO_ANALOGS);
then the compiler will configure this correctly for both processors. However, when you are directly writing to the ADCON1 register than the configuration for the other processor will leave B0 to B5 configured as analog inputs.

Too bad your purchasing department did choose another PIC that is even more expensive than the original. Wink
The PIC16F73 is so basic that many of the newer and cheaper models would fit the requirements.
asmboy



Joined: 20 Nov 2007
Posts: 2128
Location: albany ny

View user's profile Send private message AIM Address

PostPosted: Sat Dec 01, 2012 7:46 am     Reply with quote

there is a worse thing than when/if purchasing decides on components though. Its when SALES makes the call instead ;-((
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group