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

Clock speed issue PIC18F46K22 at power-up

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



Joined: 01 Feb 2011
Posts: 32
Location: 53

View user's profile Send private message AIM Address

Clock speed issue PIC18F46K22 at power-up
PostPosted: Tue Sep 09, 2014 4:31 am     Reply with quote

I have a problem with the clock speed after power-up.

I have a simple flashing LED program 50ms on and 400ms off.

When I program using the ICD programmer everything is fine. The LED flashes at the correct frequency and I can send debug messages via RS232.

When I power off/on it would appear that the clock frequency doesn't set correctly which results in my 50ms LED on period changing to 500ms (x10).

This also messes up the baud rate and corrupts the RS232 debug messages.

My fuses are:

#fuses ECL,NOLVP,NOWDT,PLLEN,PUT
#use delay (clock=10M, oscillator=2.5M)

I'm taking an external clock from an MCP2515 CAN chip which provides 2.5Mhz (divided by 8 from 20mhz).

I'm using the PLL x4 clock.

I have SPI and CAN on the board and this all works when programmed but not after a power-up.

I'm clearly not understanding something about the clock configuration at power-up but I'm struggling to understand what the difference is between a power-up and a re-program.

Any assistance would be appreciated.
temtronic



Joined: 01 Jul 2010
Posts: 9142
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Tue Sep 09, 2014 5:22 am     Reply with quote

Probably need to recompile your program with the 'build configuration' set to 'release' NOT 'debug' when using MPLAB.

You can set the default to 'release' to avoid this..

hth
jay
neochrome32



Joined: 09 Jun 2013
Posts: 153

View user's profile Send private message Visit poster's website

PostPosted: Tue Sep 09, 2014 6:10 am     Reply with quote

try this...
Code:

#include <18F46k22.h>
#DEVICE *=16


#FUSES MCLR
#FUSES PRIMARY_ON           
#FUSES NOWDT
#FUSES NOPROTECT
#FUSES NODEBUG
#FUSES PLLEN //Ineternal 16MHz + PLL(4)
#FUSES INTRC_IO

#fuses NOIESO
#FUSES NOSTVREN                   //Stack full/underflow will cause reset
#FUSES NOPBADEN                   //PORTB pins are configured as analog input channels on RESET
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#FUSES NOCPB                    //No Boot Block code protection
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOWRTC                   //configuration not registers write protected
#FUSES NOWRTB                   //Boot block not write protected
#FUSES NOWRTD                   //Data EEPROM not write protected
#FUSES NOEBTR                   //Memory not protected from table reads
#FUSES NOEBTRB                  //Boot block not protected from table reads
#FUSES NODEBUG
#FUSES NOXINST

#use delay(clock=64M)


Just ensure you have a good Volt Reg, this turned out to be a deal breaker
gaugeguy



Joined: 05 Apr 2011
Posts: 290

View user's profile Send private message

PostPosted: Tue Sep 09, 2014 7:29 am     Reply with quote

The PLL is only designed to accept 4MHz - 16MHz in. Check section 2.8 of the data sheet.
jmaudley



Joined: 01 Feb 2011
Posts: 32
Location: 53

View user's profile Send private message AIM Address

Explanation of ICD=TRUE
PostPosted: Tue Sep 09, 2014 10:09 am     Reply with quote

Thanks for your responses.

I seem to have it working but I'm just trying to understand why this has seemingly fixed it.

I've added #device ICD=TRUE which makes it work.

What is ICD=TRUE doing that fixes my timing issues?

By the way I'm not using microchips ICD debugger.

I'm using the ICD-U64 CCS programmer and CCS compiler.

I'm up and running but I would like to understand why.
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Tue Sep 09, 2014 10:36 am     Reply with quote

Quote:
What is ICD=TRUE doing that fixes my timing issues?

If you were compiling in Release mode, adding #device ICD=TRUE will
change it to Debug mode. This will automatically change some of the
fuse settings to be compatible with Debug mode. You can see these
fuse differences by looking at the compiled fuse settings at the end of
the .LST file.

But as previously mentioned, if you are still putting 2.5 MHz into the PIC
from the MCP2515 and using the PLL, you are violating the spec. The
18F46K22 data sheet says:
Quote:

2.8.1 PLL IN EXTERNAL OSCILLATOR MODES

The PLL can be enabled for any of the external
oscillator modes using the OSC1/OSC2 pins by either
setting the PLLCFG bit (CONFIG1H<4>), or setting the
PLLEN bit (OSCTUNE<6>). The PLL is designed for
input frequencies of 4 MHz up to 16 MHz. The PLL then
multiplies the oscillator output frequency by four to
produce an internal clock frequency up to 64 MHz.
Oscillator frequencies below 4 MHz should not be used
with the PLL.

These comments are reiterated in the table in this section:
Quote:
TABLE 27-8: PLL CLOCK TIMING SPECIFICATIONS

18F46K22 data sheet:
http://ww1.microchip.com/downloads/en/DeviceDoc/41412F.pdf

Quote:
When I power off/on it would appear that the clock frequency doesn't set correctly which results in my 50ms LED on period changing to 500ms (x10).

This suggests that the PIC is switching to the internal oscillator, most
likely because it doesn't like your out-of-spec PLL input frequency.
jmaudley



Joined: 01 Feb 2011
Posts: 32
Location: 53

View user's profile Send private message AIM Address

PostPosted: Wed Sep 10, 2014 1:37 am     Reply with quote

Understood.

I clearly need to resolve my clock issue.

Thank you.
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