|
|
View previous topic :: View next topic |
Author |
Message |
mrYalamen
Joined: 13 Aug 2011 Posts: 9 Location: Viet Nam
|
18F6722 Delay function work wrong ??? |
Posted: Tue Sep 27, 2011 9:02 am |
|
|
This is the first time I work with 18F6722!
I just program to export I/O normally and delay 1s but 18F6722 run close to 2s ???
Can somebody tell me the reason & how to solve this problem?
Here is my code :
Code: |
#include <18F6722.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPROTECT //Code not protected from reading
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES NOBROWNOUT //No brownout reset
#FUSES TO
#FUSES NOPUT //No Power Up Timer
#FUSES NOCPD //No EE protection
#FUSES STVREN //Stack full/underflow will cause reset
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT //Program memory not write protected
#FUSES NOCPB //No Boot Block code protection
#FUSES NOEBTRB //Boot block not protected from table reads
#FUSES NOEBTR //Memory not protected from table reads
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES NOWRTC //configuration not registers write protected
#FUSES NOWRTB //Boot block not write protected
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES LPT1OSC //Timer1 configured for low-power operation
#FUSES MCLR //Master Clear pin enabled
#FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES BBSIZ1K //1K words Boot Block size
#use delay(clock=40000000)
void main()
{
while(true)
{
output_b(0xff);
delay_ms(1000);
output_b(0x00);
delay_ms(1000);
}
}
|
|
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9226 Location: Greensville,Ontario
|
|
Posted: Tue Sep 27, 2011 9:20 am |
|
|
Are you really using a 40 MHz xtal ? |
|
|
mrYalamen
Joined: 13 Aug 2011 Posts: 9 Location: Viet Nam
|
|
Posted: Tue Sep 27, 2011 10:42 am |
|
|
yes! I used 40Mhz in Proteus simulation and real hardware but the same result : near close to 2s !??? |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9226 Location: Greensville,Ontario
|
|
Posted: Tue Sep 27, 2011 10:50 am |
|
|
OK... you haven't selected a 'CPUdivider' fuse option so the default must be set.
If you show us the Fuses ( configuration words) that will show what's going on. |
|
|
mrYalamen
Joined: 13 Aug 2011 Posts: 9 Location: Viet Nam
|
|
Posted: Tue Sep 27, 2011 11:36 am |
|
|
Thanks for your fast response !
here is all of fuses of 6722 .
you know i have used PLL funtion (H4 -> x4 external oscillator)that must use 10Mhz hardware so it work exactly 1s . But i still want to use (HS) -> high speed direct crystal 40Mhz ??? please !help me solve this prob ?
Code: |
//////// Program memory: 65536x16 Data RAM: 3840 Stack: 31
//////// I/O: 54 Analog Pins: 12
//////// Data EEPROM: 1024
//////// C Scratch area: 00 ID Location: 200000
//////// Fuses: LP,XT,HS,RC,EC,EC_IO,H4,RC_IO,PROTECT,NOPROTECT,IESO,NOIESO
//////// Fuses: NOBROWNOUT,BROWNOUT,WDT1,WDT2,WDT4,WDT8,WDT16,WDT32,WDT64
//////// Fuses: WDT128,WDT,NOWDT,TO,BORV27,BORV42,BORV45,PUT,NOPUT,CPD,NOCPD
//////// Fuses: NOSTVREN,STVREN,NODEBUG,DEBUG,NOLVP,LVP,WRT,NOWRT,CPB,NOCPB
//////// Fuses: EBTRB,NOEBTRB,EBTR,NOEBTR,CCP2E7,CCP2C1,WRTD,NOWRTD,WRTC
//////// Fuses: NOWRTC,WRTB,NOWRTB,FCMEN,NOFCMEN,INTRC,INTRC_IO,BROWNOUT_SW
//////// Fuses: BROWNOUT_NOSL,WDT256,WDT512,WDT1024,WDT2048,WDT4096,WDT8192
//////// Fuses: WDT16384,WDT32768,LPT1OSC,NOLPT1OSC,MCLR,NOMCLR,XINST
//////// Fuses: NOXINST,BBSIZ1K,BBSIZ2K,BBSIZ4K,RC
////////
////////////////////////////////////////////////////////////////// I/O |
|
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Tue Sep 27, 2011 12:52 pm |
|
|
Do you really have a 40 MHz crystal ? Or is it a 40 MHz oscillator ?
But anyway, the 18F6722 won't work with a 40 MHz crystal.
Download the data sheet:
http://ww1.microchip.com/downloads/en/DeviceDoc/39646c.pdf
Look at this table
Quote: | TABLE 28-6: EXTERNAL CLOCK TIMING REQUIREMENTS
|
It says the highest frequency for HS mode is 25 MHz. HS mode is
used for a crystal.
The PIC can run at 40 MHz, but that's in EC mode with a external
oscillator chip, not a crystal.
Or you could use a 10 MHz crystal in HSPLL mode to get 40 MHz. |
|
|
mrYalamen
Joined: 13 Aug 2011 Posts: 9 Location: Viet Nam
|
|
Posted: Tue Sep 27, 2011 6:38 pm |
|
|
Thank you very much about your answer!
I understood. It is difficult to read datasheet. But anyway, i will try to read again. And more questions ?
Can you give me the name of some oscillator chips in EC model ? thanks.
this is the way work well
Code: |
#include <18F6722.h>
#device *=16
#device adc=10
#device HIGH_INTS=TRUE
#include <math.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or
#FUSES NOPUT
#FUSES H4 // use x4 external oscillator
#FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#use delay(clock=40M ) |
|
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Tue Sep 27, 2011 7:17 pm |
|
|
Quote: | this is the way work well
#FUSES H4
#use delay(clock=40M )
|
That method is for 40 MHz with a 10 MHz crystal.
If that works well for you, then why do you want to use EC mode with
an external oscillator chip ? Why not use the 4x PLL mode with a 10 MHz
crystal ? It's much cheaper.
But if want to search for external oscillator chips, then go to
http://www.digikey.com
1. In search box, type in: oscillator and press the Go button.
2. Click on the link that says: Oscillators (6,285 items)
3. Then click on some parameters in these columns:
Type: XO (standard)
Frequency: 40MHz
Output: CMOS and also CMOS/TTL
Voltage Supply: 5v
Frequency Stability: 50ppm (or 100ppm or whatever you need)
Mounting Type: Choose either Surface Mount or Through Hole (or both)
Packaging: Choose both Bulk and Cut Tape
Then click the Apply Filters button and you will get some results.
They will probably all be SMD packages. Then click on the part number
of each part for more information such as prices and data sheets. |
|
|
mrYalamen
Joined: 13 Aug 2011 Posts: 9 Location: Viet Nam
|
|
Posted: Wed Sep 28, 2011 9:56 am |
|
|
Thanks alot about your detailed instructions! you are a big man
I have found some oscillator ic.
You right, I would to use HSPLL osc because it's cheaper than other model but still fast. thank! |
|
|
danyghi
Joined: 03 Aug 2008 Posts: 2
|
|
Posted: Sun Oct 02, 2011 9:25 am |
|
|
Quote: | Thanks alot about your detailed instructions! you are a big man
I have found some oscillator ic.
You right, I would to use HSPLL osc because it's cheaper than other model but still fast. thank! |
HMMMM!!! what are you talking about ""still""??
10MHz with PLL x4 = 40MHz same freqvency
but dont forget to read the pdf in DC characteristics and to much the DC voltage with the maximum freqvence at the specific voltage from the graph.
In the hardware proj unlike simulation you need to select a crystal that it have the internal capacitor around 22pf (see pdf page 34) and for ext oscilators or extrasmall quartz with integrated capacitors and ground connection you can browse Farnell products oscillators crystals.
Last advice use a serial port for debug with serial always you can see if you set corect the fuse clock source etc... |
|
|
danyghi
Joined: 03 Aug 2008 Posts: 2
|
|
Posted: Sun Oct 02, 2011 9:32 am |
|
|
If you don't need extra precision you can set the internal at 8mhz and PLLx4 which is 32MHz and you can tune osc a little bit higher with osctune.
Your micro controller it have a lot of options, use them.
If you want you can monitor with one of ad-s the source voltage and put an external thermometer from Dallas for example and increase stability by modifying osctune when you need it.
Finally use a capacitor with low ESR near vcc and Gnd of pic for a good decouplage. |
|
|
|
|
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
|