Setting up a 12F683 to run at 20 Mhz


Closed Thread
Results 1 to 14 of 14

Hybrid View

  1. #1
    Join Date
    Jan 2009
    Posts
    34

    Default Setting up a 12F683 to run at 20 Mhz

    I'm trying to get the 12F683 to run on an external crystal at 20 mhz...with no luck.

    I've played with the OSCON and had it run at 1, 2, 4 and 8 Mhz. The Define command doesn't seem to do this though.

    How do I setup the 12F683 for 20 mhz??????

    Here is some code I'm playing with.

    [HTML]'config_wdt_on
    'config_fosc2_off
    'config_fosc1_on
    'config_fosc0_off
    'config_ircf2_on
    'config_ircf1_off
    'config_ircf0_off
    'define osc 20


    'cfg %111111111111010
    'osccon = %01001000 ' Osc set to 1 MHz
    'osccon = %01100000 ' Osc set to 4 MHz
    osccon = %01110000 ' Osc set to 8 MHz


    trisio = %00011000 '
    wpu = %00011000
    CMCON0 = 7 ' Analog comparators off
    ANSEL = 0 ' Analog select set to digital, pg 69 data
    ADCON0 = 0 ' A/D turned OFF, pg 68 of data



    pausetime var word
    Out0 var gpio.0
    Out1 var gpio.1
    Out2 var gpio.2
    B0 var byte

    'input gpio.4

    ' SET VARIABLES
    pausetime = 100
    B0 = 0
    low 0
    low 1
    low 2


    start:

    'button gpio.3,1,10,5,B0,1,notp
    if gpio.3 = 1 then goto start

    call blink0
    call blink2
    call blink1


    goto start


    blink0:
    high out0
    pause pausetime
    low out0
    'pause pausetime
    return

    blink1:
    high out1
    pause pausetime
    low out1
    'pause pausetime
    return

    blink2:
    high out2
    pause pausetime
    low out2
    'pause pausetime
    return

    notp:
    goto start

    end
    [/HTML]

  2. #2
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    _HS_OSC
    Needs to be used in the configs.
    Then
    DEFINE OSC 20
    needs to be near the top of your code.

    Have you read this thread?
    http://www.picbasic.co.uk/forum/showthread.php?t=543
    Dave
    Always wear safety glasses while programming.

  3. #3
    Join Date
    Jan 2009
    Posts
    34


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mackrackit View Post
    _HS_OSC
    Needs to be used in the configs.
    Then
    DEFINE OSC 20
    needs to be near the top of your code.

    Have you read this thread?
    http://www.picbasic.co.uk/forum/showthread.php?t=543
    I just looked at the link...Great information! Thanks for that.

    I'll try your suggestions above today, really appreciate that too.

    Do you know if the crystal and capacitor setup is 'touchy'? I'm trying to paste an image of the setup here...but not sure if you'll see it...
    Attached Images Attached Images  
    Last edited by johnnylynx; - 1st March 2009 at 18:28. Reason: no picture

  4. #4
    Join Date
    Jan 2009
    Posts
    34


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mackrackit View Post
    _HS_OSC
    Needs to be used in the configs.
    Then
    DEFINE OSC 20
    needs to be near the top of your code.

    Have you read this thread?
    http://www.picbasic.co.uk/forum/showthread.php?t=543
    OK, I tried the above but didn't work.

    Trial 1:
    - using the default setting of 4 mhz, the LED's flashed at rate 'X'

    Trial 2:
    - using the osccon = %01110000 (8 mhz)
    - The LED's flashed at a rate of '2X'

    Trial 3:
    - Using the
    _hs_osc
    Define OSC 20
    - the LED flashing rate went back to 'X'

    It doesn't seem that the 20 Mhz is working??? Should it not flash at '5X' rate?

    Here is what the top end of the code looks like now:

    [HTML]

    '*************************************
    'Configuration Bits

    _hs_osc

    define osc 20

    'osccon = %01001000 ' Osc set to 1 MHz
    'osccon = %01100000 ' Osc set to 4 MHz
    'osccon = %01110000 ' Osc set to 8 MHz


    trisio = %00011000 '
    ' GPIO.5 output
    ' GPIO.4 input
    ' GPIO.3 input
    ' GPIO.2 output
    ' GPIO.1 output
    ' GPIO.0 output

    wpu = %00010000
    ' GPIO.5 Weak pullup disabled
    ' GPIO.4 Weak pullup enabled
    ' GPIO.3 Weak pullup disabled
    ' GPIO.2 Weak pullup disabled
    ' GPIO.1 Weak pullup disabled
    ' GPIO.0 Weak pullup disabled

    CMCON0 = 7 ' Analog comparators off
    ANSEL = 0 ' Analog select set to digital, pg 69 data
    ADCON0 = 0 ' A/D turned OFF, pg 68 of data


    '***************************************
    'Define Variables

    pausetime var word
    Out0 var gpio.0
    Out1 var gpio.1
    Out2 var gpio.2
    B0 var byte

    '***************************************
    'Set Variables

    pausetime = 100
    B0 = 0
    low 0
    low 1
    low 2
    [/HTML]

  5. #5
    Join Date
    Sep 2005
    Location
    Campbell, CA
    Posts
    1,107


    Did you find this post helpful? Yes | No

    Default

    When you set

    'DEFINE OSC 20'

    You are not "telling" the chip to run at 20MHz, you are telling PBP that
    the chip is running at 20MHz (rather than 4MHz), and to adjust all pertinent
    timing accordingly.

    If the chip is actually running at 4MHz and you have DEFINE OSC 20, all the PBP PAUSES (and a lot of other timing, such as SERIN) will be off by a factor of 5. PBP uses a default define of 4MHz, so if you are actually running at 4MHz, you don't have to change this define. PAUSE 1000 will give a 1 second delay. If the PIC is actually running at 20MHz, then a PAUSE 1000 will give a 200 millisecond delay.
    If you are running at any speed other than 4MHz, then you change the define accordingly.
    Charles Linquist

  6. #6
    Join Date
    Jan 2009
    Posts
    34


    Did you find this post helpful? Yes | No

    Unhappy

    Quote Originally Posted by Charles Linquis View Post
    When you set

    'DEFINE OSC 20'

    You are not "telling" the chip to run at 20MHz, you are telling PBP that
    the chip is running at 20MHz (rather than 4MHz), and to adjust all pertinent
    timing accordingly.

    If the chip is actually running at 4MHz and you have DEFINE OSC 20, all the PBP PAUSES (and a lot of other timing, such as SERIN) will be off by a factor of 5. PBP uses a default define of 4MHz, so if you are actually running at 4MHz, you don't have to change this define. PAUSE 1000 will give a 1 second delay. If the PIC is actually running at 20MHz, then a PAUSE 1000 will give a 200 millisecond delay.
    If you are running at any speed other than 4MHz, then you change the define accordingly.
    Ah, makes sense.

    So in theory, if I use CFG_HS_OSC to get the 12F683 to use the external oscillator on pins 2&3 and use the DEFINE OSC 4 command...then the LED's should blink at the rate of 5X...right?

    If so, I just tried that and the rate is still X???

    What am I doing wrong?

    Better yet...How do I confirm that the chip is running at 20Mhz??

    John.

  7. #7
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default

    Read this link: http://www.picbasic.co.uk/forum/showthread.php?t=543
    Setting the config statement to HS controls the power supplied to the oscillator to "enable" it to run at high speed. The crystal determines that speed, The Define statement as Charles explained Syncs up the chips internal timing to the supplied crystal and Oscon allows you to alter the oscillator's prescaler in code (more or less ).
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

Similar Threads

  1. PICKit2 - warning about configuration words
    By flotulopex in forum mel PIC BASIC Pro
    Replies: 26
    Last Post: - 4th August 2009, 14:01
  2. Char. LCD and 18F452 on 20 MHz not work
    By samettin in forum General
    Replies: 11
    Last Post: - 28th July 2008, 09:59
  3. PIC18F2685 config settings for 20 MHz
    By wwilson17 in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 31st March 2008, 23:13
  4. 20 MHz + PLL vs 48MHz
    By Demon in forum General
    Replies: 14
    Last Post: - 31st July 2006, 12:02
  5. How to use a 20 MHz resonator on a 16F688
    By Thomas Williams in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 21st December 2005, 09:18

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts