![](templates/subSilver/images/CCSLogo.jpg) |
![CCS C Software and Maintenance Offers](templates/subSilver/images/forumAd6.jpg) |
View previous topic :: View next topic |
Author |
Message |
mgunesen
Joined: 07 Jan 2018 Posts: 2 Location: Turkey
|
18F4550 delay_ms problem |
Posted: Sun Jan 07, 2018 1:18 am |
|
|
Hello everybody, This is my first question in this form.
I am using 18F4550 at 48Mhz and program to have 1 second delay between steering leds. But actual delay seems 5 seconds. My code is as follows:
Code: |
#fuses HSPLL, PLL5,CPUDIV1, NOWDT, NOLVP, NOPROTECT, VREGEN
#use delay(clock=48000000)
void main()
{
int i=0b00000001;
int tersDon=0;
while(TRUE)
{
output_d(i);
if(tersDon==0)
{
i=i<<1;
if(i==0b10000000)
{
tersDon=1;
}
}
else
{
i=i>>1;
if(i==0b0000001)
{
tersDon=0;
}
}
delay_ms(1000);
}
}
|
HSPLL, PLL5,CPUDIV1 fuses should be enough to operate at 48MHz.
Later I am going to change this code to communicate with pc through usb, but with this timing it won't work.
Thanks for your help |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19382
|
|
Posted: Sun Jan 07, 2018 1:56 am |
|
|
Almost certainly implies your crystal is not oscillating.
The settings you have are for a 20MHz crystal. What crystal have you got?. What loading capacitors have you got?. How is it wired to the PIC?.
If the crystal doesn't start, the default unless you have NOFCMEN, is to 'drop back' to the internal oscillator at 8MHz. So you would get about 6 seconds.
The 4550, is quite fussy about it's crystals (more so than many later PIC's). |
|
![](templates/subSilver/images/spacer.gif) |
temtronic
Joined: 01 Jul 2010 Posts: 9177 Location: Greensville,Ontario
|
|
Posted: Sun Jan 07, 2018 6:12 am |
|
|
As Mr. T. say it's probably your xtal hardware. I used 4MHz xtals for my 4550 projects and never had a any fail to start, even on white breadboards.
I'm pretty sure 4MHz will allow USB operation as well, but best to check the 'clock configuration' diagram in the datasheet as it's been years since I used them.
Jay |
|
![](templates/subSilver/images/spacer.gif) |
mgunesen
Joined: 07 Jan 2018 Posts: 2 Location: Turkey
|
|
Posted: Sun Jan 07, 2018 3:20 pm |
|
|
temtronic wrote: | As Mr. T. say it's probably your xtal hardware. I used 4MHz xtals for my 4550 projects and never had a any fail to start, even on white breadboards.
I'm pretty sure 4MHz will allow USB operation as well, but best to check the 'clock configuration' diagram in the datasheet as it's been years since I used them.
Jay |
Problem solved, I was using test board and it was set to 4 Mhz. I changed to 20MHz and every thing is fine. Sorry for the simple mistake.
What is your advice for the usb operation, 20Mhz or 4Mhz? |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19382
|
|
Posted: Sun Jan 07, 2018 4:01 pm |
|
|
Honestly 4 or 8MHz.
The lower the master crystal, the less problems with RF being generated by the oscillator, and slightly lower power. 8MHz has the (fractional) advantage of using the divider, which absolutely ensures a 50:50 mark space to the USB PLL. However provided the crystal is not overdriven, 4MHz is fine.
The only reason you use a higher oscillator like 20MHz, is if you actually want to run the CPU physically at this frequency, or something else on the board needs this.
Otherwise PLL1, and you can run the CPU at 48, 24, 16Mhz etc., depending on how fast you actually want to clock. ![Smile](images/smiles/icon_smile.gif) |
|
![](templates/subSilver/images/spacer.gif) |
temtronic
Joined: 01 Jul 2010 Posts: 9177 Location: Greensville,Ontario
|
|
Posted: Sun Jan 07, 2018 4:06 pm |
|
|
It doesn't matter, providing the xtal/caps WORK reliably. I still have LOTS of 4MHz from 16C84 projects from 2 decades ago, so I try to use them.
As for USB operation, I gave up using the internal USB version PICs.
re: software, the USB driver code took +- 1/3 of code space !
re: hardware,when you look at the cost of necessary parts and compare to a premade USB<>TTL module, the module only cost $1 CDN more.
Some of the benefits of the module are
1) can be used with ANY PIC
2) NO software driver required, less code to deal with
3) NO code space for USB driver
4) NO PCB problems, like oops D+ is D-, D- is D+ !
5) Reliablity, I've used them for years, no problems
6) cost savings. No bad PCB, No code issue, NO R&D time wasted !
yes, it takes a little more space in the product BUT that easily offsets the pain of making a second or third PCB due to layout issues. Also ANY PIC can be used, so it's easy to upgrade or migrate to another PIC.
just some points to think about.
Jay |
|
![](templates/subSilver/images/spacer.gif) |
|
|
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
|