Another 2.60 worry


Closed Thread
Results 1 to 19 of 19

Hybrid View

  1. #1
    Join Date
    Jun 2005
    Location
    Up the bush, Western Plains, NSW Au
    Posts
    216

    Default Another 2.60 worry

    Hi everyone, me again with another question concerning PBP 2.60

    2.60 Doesn't seem to like the following config stuff

    @ DEVICE pic16F886, HS_OSC ' System Clock Options
    @ DEVICE pic16F886, WDT_OFF ' Watchdog Timer
    @ DEVICE pic16F886, PWRT_ON ' Power-On Timer
    @ DEVICE pic16F886, BOD_ON ' Brown-Out Detect
    @ DEVICE pic16F886, LVP_OFF ' Low-Voltage Programming
    @ DEVICE pic16F886, CPD_OFF ' Data Memory Code Protect
    @ DEVICE pic16F886, PROTECT_OFF ' Program Code Protection
    @ DEVICE pic16F886, WRT_OFF ' Flash Memory Word Enable

    I have read through the Melabs blurb on config (Specifying configuration bit settings in PICBASIC PRO™ programs.)
    but can't get my head around the waffle.
    It's obviously written by geeks for other geeks to understand.
    Not being a geek I just can't understand any of it.

    So can anyone translate the above listing into a 2.60 config statement.

    I don't necessarily want to know what it all means, I just want a statement that works and that I can use over and over.
    I generally use the same Pic type for most things so a standard version of the above would be great.
    _CONFIG_ SOMETHING OR OTHER

    Thanks again,
    Peter Moritz.
    Up the bush, Western Plains,
    New South Wales,
    Australia.

  2. #2
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,605


    Did you find this post helpful? Yes | No

    Default Re: Another 2.60 worry

    Hi,
    There IS a standard, basic, working most of the time configuration fuse setting already setup for each and every chip that the compiler supports. You don't have to set them in your code if the default is OK.

    If you wan't to see how they "work" and what they are simply open the .inc file for the specific target you're compiling for, it's located in the root of the PBP folder. For the 16F886 the fileneme is 16F866.INC and looks like this:
    Code:
            NOLIST
        ifdef PM_USED
            LIST
            include 'M16F88x.INC' ; PM header
            device  pic16F886, intrc_osc_noclkout, wdt_on, mclr_on, lvp_off, protect_off
            XALL
            NOLIST
    
        else
    
            LIST
            LIST p = 16F886, r = dec, w = -302
            INCLUDE "P16F886.INC" ; MPASM  Header
            __config _CONFIG1, _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF
            NOLIST
        endif
            LIST
    Now, the @ DEVICE statement is used when you're using PM as the assembler and the __CONFIG (note two underscores) is used when you're using MPASM as the assembler. If you're Win7 you can't use PM which means you're using MPASM which means @ DEVICE is the wrong "command".

    In order to find out the "names" of the various fuses go to your MPASM folder and open the P16F886.INC file, at the end of that file you'll find this:
    Code:
    ;==========================================================================
    ;
    ;       Configuration Bits
    ;
    ;==========================================================================
    _CONFIG1                     EQU     H'2007'
    _CONFIG2                     EQU     H'2008'
    ;----- Configuration Word1 ------------------------------------------------
    _DEBUG_ON                    EQU     H'1FFF'
    _DEBUG_OFF                   EQU     H'3FFF'
    _LVP_ON        EQU     H'3FFF'
    _LVP_OFF       EQU     H'2FFF'
    _FCMEN_ON                    EQU     H'3FFF'
    _FCMEN_OFF                   EQU     H'37FF'
    _IESO_ON                     EQU     H'3FFF'
    _IESO_OFF                    EQU     H'3BFF'
    _BOR_ON                      EQU     H'3FFF'
    _BOR_NSLEEP                  EQU     H'3EFF'
    _BOR_SBODEN                  EQU     H'3DFF'
    _BOR_OFF                     EQU     H'3CFF'
    _CPD_ON                      EQU     H'3F7F'
    _CPD_OFF                     EQU     H'3FFF'
    _CP_ON                       EQU     H'3FBF'
    _CP_OFF                      EQU     H'3FFF'
    _MCLRE_ON                    EQU     H'3FFF'
    _MCLRE_OFF                   EQU     H'3FDF'
    _PWRTE_ON                    EQU     H'3FEF'
    _PWRTE_OFF                   EQU     H'3FFF'
    _WDT_ON                      EQU     H'3FFF'
    _WDT_OFF                     EQU     H'3FF7'
    _LP_OSC                      EQU     H'3FF8'
    _XT_OSC                      EQU     H'3FF9'
    _HS_OSC                      EQU     H'3FFA'
    _EC_OSC                      EQU     H'3FFB'
    _INTRC_OSC_NOCLKOUT          EQU     H'3FFC'
    _INTRC_OSC_CLKOUT            EQU     H'3FFD'
    _EXTRC_OSC_NOCLKOUT          EQU     H'3FFE'
    _EXTRC_OSC_CLKOUT            EQU     H'3FFF'
    _INTOSCIO                    EQU     H'3FFC'
    _INTOSC                      EQU     H'3FFD'
    _EXTRCIO                     EQU     H'3FFE'
    _EXTRC                       EQU     H'3FFF'
    ;----- Configuration Word2 ------------------------------------------------
    _WRT_OFF                     EQU     H'3FFF'    ; No prog memmory write protection
    _WRT_256                     EQU     H'3DFF'    ; First 256 prog memmory write protected
    _WRT_1FOURTH                 EQU     H'3BFF'    ; First quarter prog memmory write protected
    _WRT_HALF                    EQU     H'39FF'    ; First half memmory write protected
    _BOR21V             EQU     H'3EFF'
    _BOR40V             EQU     H'3FFF'
    So, to change the CONFIG fuses you have two options:
    1) Edit the 16F866.INC file in the PBP folder to have the CONFIG you want/need. Do make a backup of the original file first.
    2) Comment out the CONFIG from the 16F866.INC file and instead put them in your code.

    /Henrik.

  3. #3
    Join Date
    Jun 2005
    Location
    Up the bush, Western Plains, NSW Au
    Posts
    216


    Did you find this post helpful? Yes | No

    Default Re: Another 2.60 worry

    Rightio, I opened the M16f88x.inc file in the PBP directory.
    That first example you gave does not exist anywhere in the file??
    This is getting all too hard..I'm gunno go play soliraire.

    I do understand that I can edit the first example you gave and make it into a new default that suits me.
    But, as I said, it ain't in there.
    Peter Moritz.
    Up the bush, Western Plains,
    New South Wales,
    Australia.

  4. #4
    Join Date
    Feb 2006
    Location
    Gilroy, CA
    Posts
    1,530


    Did you find this post helpful? Yes | No

    Default Re: Another 2.60 worry

    Hi Muddy,

    Not those Mxxx inc files, these 16f886.inc files . Check here: C:\PBP\

    Name:  incs.PNG
Views: 1077
Size:  74.7 KB
    Last edited by ScaleRobotics; - 27th July 2011 at 17:47.

  5. #5
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,605


    Did you find this post helpful? Yes | No

    Default Re: Another 2.60 worry

    Ah, come on now Peter...
    If you wan't to see how they "work" and what they are simply open the .inc file for the specific target you're compiling for, it's located in the root of the PBP folder. For the 16F886 the fileneme is 16F866.INC and looks like this:
    Why did you go open the M16F88x.inc ? (I don't even have that file on my system.)

    It's not THAT hard...but you have to actually read ;-)

  6. #6
    Join Date
    Jun 2005
    Location
    Up the bush, Western Plains, NSW Au
    Posts
    216


    Did you find this post helpful? Yes | No

    Default Re: Another 2.60 worry

    Aah, there it is. I didn't look through the whole directory, did I?
    So If I change
    __config _CONFIG1, _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF
    NOLIST
    endif

    to

    __config _CONFIG1, _XT_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_ON & _LVP_OFF & _CP_OFF
    NOLIST
    endif

    that should then make the default suit my preference? And I shouldn't need to do a config with any new programs, unless I want or need to change them?

    Thanks Man.
    Peter Moritz.
    Up the bush, Western Plains,
    New South Wales,
    Australia.

  7. #7
    Join Date
    Jun 2005
    Location
    Up the bush, Western Plains, NSW Au
    Posts
    216


    Did you find this post helpful? Yes | No

    Default Re: Another 2.60 worry

    after a bit more experimentation....should be

    __config _CONFIG1, _XT_OSC & _WDT_OFF & _MCLRE_ON & _LVP_OFF & _CP_OFF
    NOLIST
    endif
    Peter Moritz.
    Up the bush, Western Plains,
    New South Wales,
    Australia.

  8. #8
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,605


    Did you find this post helpful? Yes | No

    Default Re: Another 2.60 worry

    Yep, looks good to me. As you can see, the different configuration settings for the oscillator (and everything else) are at the bottom of the P16F886.inc file (the one in the MPASM folder):
    Code:
    _LP_OSC                      EQU     H'3FF8'
    _XT_OSC                      EQU     H'3FF9'
    _HS_OSC                      EQU     H'3FFA'
    _EC_OSC                      EQU     H'3FFB'
    _INTRC_OSC_NOCLKOUT          EQU     H'3FFC'
    _INTRC_OSC_CLKOUT            EQU     H'3FFD'
    _EXTRC_OSC_NOCLKOUT          EQU     H'3FFE'
    _EXTRC_OSC_CLKOUT            EQU     H'3FFF'
    _INTOSCIO                    EQU     H'3FFC'
    _INTOSC                      EQU     H'3FFD'
    _EXTRCIO                     EQU     H'3FFE'
    _EXTRC                       EQU     H'3FFF'
    On the 16F886 there are two CONFIG words (on other chips there are more) so if you need to change something that resides in another CONFIG word you have to add a second line, like
    Code:
       __config _CONFIG2, WRT_HALF & _BOR21V
    Then you have your defaults and it is what will be included in every program you compile for that particular target, no need to have them in your code if you don't want to.

    /Henrik.

Members who have read this thread : 0

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