|
|
View previous topic :: View next topic |
Author |
Message |
spikit_uk
Joined: 11 Dec 2005 Posts: 3
|
Setting up 16F88 with external 20MHz oscillator |
Posted: Sun Dec 11, 2005 4:07 pm |
|
|
Hi guys, sorry this is such a fundamental question. I have searched for an answer previously posted, and I apologise if I have missed it.
I am just wondering if anyone has any advice on setting up a 16F88 with an external 20MHz oscillator.
So far I have
#use delay(clock=20000000)
#fuses EC_IO, HS, NOWDT, NOLVP, NOMCLR, NOPUT
Do I need to set the osccon to anything? Also I am doing this on breadboard with a 2pin crystal, am I right in connecting both pins to 0V with very small capacitors (eg 15nf)? Is the breadboard likely to give me trouble at these speeds?
Many thanks for any help you can offer guys, thankyou
Tom |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
|
Humberto
Joined: 08 Sep 2003 Posts: 1215 Location: Buenos Aires, La Reina del Plata
|
|
Posted: Sun Dec 11, 2005 6:07 pm |
|
|
Quote: |
am I right in connecting both pins to 0V with very small capacitors (eg 15nf)?
|
No, it's wrong. Here you will find how to connect the crystal to a PIC.
http://www.mikroelektronika.co.yu/english/product/books/PICbook/2_02chapter.htm
Quote: |
Is the breadboard likely to give me trouble at these speeds?
|
Lets assume that a breadboard is not the best choise for high freq, it should run ok
but keepping the wires as short as possible.
Humberto |
|
|
spikit_uk
Joined: 11 Dec 2005 Posts: 3
|
|
Posted: Mon Dec 12, 2005 6:15 am |
|
|
Hi again guys, many thanks for your help and links.
I think it is actually a two pin crystal; a CMAC CK.
Humberto, your link does seem to suggest typing both pins to 0v with capacitors; although I was a few orders of magnitude out with 15nF; as the link seems to suggest 30pF!
I may switch to a 3pin with internal capacitors for simplicity however.
So can you guys by any chance suggest a fuse/osccon configuration for such a system?
Thanks again fellas, Tom |
|
|
Ttelmah Guest
|
|
Posted: Mon Dec 12, 2005 6:50 am |
|
|
If it is a two pin crystal, then the mode _must_ be HS, not 'EC', or 'EC_IO'. These latter modes are for external _oscillators_. Now the capacitor value that should be used, will depend on the crystal, and should be specified by the manufacturer. In fact it'll probably run OK, with the capacitor fairly well 'out of spec', but this will cause the frequency to be out of the manufacturers specification. If you get the value 'right' (and remember that you also have to include the capacitance of the pin, and the traces in the calculation - with a 'breadboard', the latter may well already be larger than required...),the crystal will then give it's specified accuracy.
Basically the oscillator modules, are normally for pin devices, with only three connected. They have a crystal, and solid state oscillator/buffer all built into the one package, and produce a square wave output that can be fed directly into the 'OSC1/CLKIN' pin. For these, EC, or EC_IO, are the right fuse settings (the former produces a clock output on OSC2, that can be used to feed other devices, the latter makes this pin available for I/O.
Best Wishes |
|
|
Humberto
Joined: 08 Sep 2003 Posts: 1215 Location: Buenos Aires, La Reina del Plata
|
|
Posted: Mon Dec 12, 2005 7:27 am |
|
|
Quote: |
Humberto, your link does seem to suggest typing both pins to 0v with capacitors
|
I preffer to show a circuit.
The phrase:
"connecting both pins to 0V with very small capacitors"
sound quite confusing to me.
Quote: |
although I was a few orders of magnitude out with 15nF; as the link seems to suggest 30pF!
|
Pls read the datasheet.
You will find all you are asking in Page 35,
4.0 OSCILLATOR CONFIGURATIONS
Quote: |
So can you guys by any chance suggest a fuse/osccon configuration for such a system?
|
If you are going to use a crystal like this one (thanks PCM Programmer)
http://rocky.digikey.com/WebLib/ECS/Web%20Photos/HC-49US.jpg
....your header should look like this:
Code: |
#include <16F88.h>
#device adc=8 // or #device adc=10
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#FUSES PUT //Power Up Timer
#FUSES MCLR //Master Clear pin enabled
#FUSES BROWNOUT //Reset when brownout detected
#FUSES NOLVP //No low voltage prgming, B3(PIC16)
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOPROTECT //Code not protected from reading
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES IESO //Internal External Switch Over mode enabled
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,ERRORS)
void main()
{
// Select according to yours need.
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(VREF_LOW|-2);
setup_oscillator(False);
// your code
// ............
// ............
// ............
}
|
Hope this help.
Humberto |
|
|
spikit_uk
Joined: 11 Dec 2005 Posts: 3
|
|
Posted: Tue Dec 13, 2005 4:26 pm |
|
|
Thankyou so much again guys, you're fab.
Things are working fine now, I was just getting a bit confused. I apologise that I was a little unspecific about certain things. All the best
T |
|
|
|
|
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
|