8381Views19Replies

Author Options:

PIC Internal Clock -- How accurate? Answered

Can I trust a PIC's 4Mhz internal clock to keep accurate time over days of use? Or will I need an external crystal. I'm vary weary of that, as I'm going for a compact design. Thanks for the help.

19 Replies

user
zachninme (author)2007-08-09

I just realized. I'm keeping 4 of these guys together, and they all have to be +/-0.0012% of each other, so they'll all be at the same temperature, so is temperature the only major factor? If it is I should be set.

I'm also thinking of using an Atiny (the number escapes me right now, but the 8-pin).

Select as Best AnswerUndo Best Answer

user
westfw (author)2007-08-04

It's in the spec sheet; on the order of 2%, IIRC. Nowhere NEAR 0.0012% or 30s/month accurate, but (just barely) accurate enough to do serial comm, if you're lucky.

Select as Best AnswerUndo Best Answer

user
zachninme (author)westfw2007-08-04

Hrm... Do resonators tend to be less accurate than crystals? I'm thinking about those since their size is what I need.

Select as Best AnswerUndo Best Answer

user
westfw (author)zachninme2007-08-04

Traditionally, clocks use 32.768kHz "watch crystals", which are available in quite tiny packages (there is probably one inside your watch!)

Select as Best AnswerUndo Best Answer

user
VIRON (author)westfw2007-08-05

PICs can use watch crystals, even though they are really slow compared to 4Mhz, they can be used to make a PIC clock, and may run over a year because PICs use very little power when they are run at 32768 hz. They probably would be just as accurate as a quartz watch then.

Select as Best AnswerUndo Best Answer

user
zachninme (author)VIRON2007-08-05

Speed doesn't matter, its for a clock, so I could technically use a 1Hz crystal -- if it existed.

Select as Best AnswerUndo Best Answer

user
trialex (author)zachninme2007-08-05

Hey. I've done a few microcontroller clock projects too - accurate timing is always the hardest/most annoying part. The major problem I've found with using an internal clock is not the accuracy - it's easy to compute a correction factor, but the problem is that it is highly temperature dependant, so your correction factor goes out the window. Using a watch crystal is a good solution - it's a little bit of work to get it running, but it's a good cheap and low power solution. Another solution is a DS1307 chip - it can be used a 1Hz source without using it's complicated RTC funtions. You can therefore link the 1Hz output to an interrupt pin. Or if you are up for some i2c coding you can use the RTC clock function. Let us know how you go.

Select as Best AnswerUndo Best Answer

user
westfw (author)zachninme2007-08-05

Most of the somewhat larger PICs have both the CPU oscillator, which can be internal at about 4MHz, AND a timer that can be set up to use an external 32kHz watch crystal, AND a sleep mode that lets the timer run along on its 32kHz crystal (at very low power) while the main CPU oscillator is turned off. This lets you have low average power with crystal timing accuracy, while still letting you do more complex CPU calculations when you need to. A bunch of other chips (TI's MSP430 comes to mind. Maybe some of the newer PICs?) derive the CPU clock from a 32kHz crystal using PLL clock multipliers, so you have the high accuracy timebase AND a high-speed CPU clock of reasonable accuracy. (Sometimes, however, relatively high "jitter." Our Network Time Protocol folk were cursing out the 68331 cpu that did this at one time...)

Select as Best AnswerUndo Best Answer

user
gmoon (author)VIRON2007-08-05

The 32.768K xtal value is easily dividable to obtain a precise 1Hz value, hence their use in clocks. I'm sure, as you say, the lower power consumption of the slow clock speed is a useful byproduct. With AVRs, no loading caps are needed with the clock xtals, also (maybe PICs, too?)

Select as Best AnswerUndo Best Answer

user
westfw (author)westfw2007-08-04

(and to answer your question, I think resonators tend to be about 100 times more accurate better than RC circuits (like the internal oscillator), and crystals about 100 times better than resonators.) Keep in mind that some of the accuracy of cheap digital watches comes from the fact that they're kept at a pretty constant temperature by body heat...

Select as Best AnswerUndo Best Answer

user
NachoMahma (author)2007-08-03

. Depends on how you define accurate. . While the clock may not be dead-on 4MHz, it should be fairly stable so that you can compute a correction factor.

Select as Best AnswerUndo Best Answer

user
zachninme (author)NachoMahma2007-08-03

Well, I'd like to make a clock, so it should be accurate to at least %0.0012 (thats 30 seconds a month) The problem, is its 4 clocks, all from separate PICs, but they need to all have the same time. (If I make them, it will defiantly be an instructable, and you will see the point)

Select as Best AnswerUndo Best Answer

user
NachoMahma (author)zachninme2007-08-05

. As others have pointed out, for that accuracy, an external timebase will be required.

Select as Best AnswerUndo Best Answer

user

Each PIC will have it's own accuracy ... As stated by gmoon, the internal clock accuracy is affected by temperature. So, the best solution is to use external crystals for each of your PICs.

Select as Best AnswerUndo Best Answer

user
HBF (author)2007-08-04
user
gmoon (author)2007-08-03

If it's anything like the AVR's internal calibrated RC oscillator then it's probably not accurate enough (even after you calibrate it.) The internal oscillators are also effected by temp. Even an indoor clock would probably vary by > 30 sec. An xtal won't take up that much space. See if the PIC can use a watch xtal, which are tiny and don't need the two caps that are generally required (that's the case with the AVR.)

Select as Best AnswerUndo Best Answer

user
zachninme (author)gmoon2007-08-04

I found an accurate SMD crystal. I was going to go with a resonator, but it was only as accurate as the PIC (2%) although it could stand up to temp differences.

Select as Best AnswerUndo Best Answer

user
gmoon (author)zachninme2007-08-04

You're on the right track, don't forget the loading caps.

One more note: a 4.00 MHz xtal is NOT the same as a 4.00000000 MHz one. The first xtal might be 4.007392734 MHz....

Select as Best AnswerUndo Best Answer

user
zachninme (author)gmoon2007-08-04

Hmm... thanks. I'll look up how to use the crystal and stuff. I don't have much experience with crystal stuff.

Select as Best AnswerUndo Best Answer