Trying to migrate to 18F..


Closed Thread
Results 1 to 30 of 30

Hybrid View

  1. #1
    Join Date
    Sep 2008
    Location
    Stockholm
    Posts
    80


    Did you find this post helpful? Yes | No

    Default

    Well, I'm back again...

    Last time I got so tired of it so I quitted that project and started with other stuff instead, PIC16F based, coz there I never get any of those troubles.

    *Every* single time I try to use a 18f pic I seriously considering to get another hobby, I really really really HATE mpasm.. it NEVER f**ing work.. I dont want to know how many hour I been using on this crap

    I write a program, compile it with like 87665 errors, trying to get the config bits correctly (wich always works on 16f and mp) and after some hour or so I MAYBE can compile it witn just warnings, and then I upload it to the pic, and it does NOT work..

    I REALLY try to read both the includes of mpasm AND microchips datasheets, but still, I never get it right.. I try to comment out all config directives in the PBP include (tor the correct pic), or sometimes just the ones I want to change.. but nonono.

    ..If I at that point change the config bits to "mp-style" and compile it for a 16f (with mp), it ofcourse works directly with no problems... so its NOT my code, its the configbits.

    The pic I try to use now is a PIC18F2520 and since my long advanced program (that works perfectly fine on a pin compatible 16F876A) OFCOURSE didn't work, I created a reeeally simple short program that just blinked two LED's..

    Code:
    @	 __CONFIG    _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
    @  __CONFIG   _CONFIG1H, _FOSC_INTOSCIO_EC_1H
    '@  __CONFIG   _CONFIG2H, _MCLRE_OFF_2H
    @  __CONFIG    _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
    @  __CONFIG    _CONFIG3H, _PBADEN_OFF_3H
    @  __CONFIG    _CONFIG4L, _LVP_OFF_4L & _XINST_OFF_4L
    
    DEFINE OSC 20	' Lets work at 20 MHz
    
    blueled		var PORTB.4
    redled		var PORTB.5
    
    main:
    	low redled
    	low blueled
    	pause 500
    	high redled
    	pause 500
    	high blueled
    	pause 500
    	goto main
    This compiles with no errors, but warnings (about deprecated __CONFIG for example)

    ..I have a pulldown on MCLR and the LED's are connected with resistors.. I want to use the internal oscillator, and no WDT.

    all __CONFIG statements in the PBP 18F8520.INC are commented out.

    Can anyone point me to somwhere this are explained ? or tell me what the problem is ?

  2. #2
    Join Date
    Sep 2008
    Location
    Stockholm
    Posts
    80


    Did you find this post helpful? Yes | No

    Default

    ..I can add that this is one of MANY MANY different config settings I have tried..

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


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Glenn View Post
    Code:
    @	 __CONFIG    _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
    @  __CONFIG   _CONFIG1H, _FOSC_INTOSCIO_EC_1H
    '@  __CONFIG   _CONFIG2H, _MCLRE_OFF_2H
    @  __CONFIG    _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
    @  __CONFIG    _CONFIG3H, _PBADEN_OFF_3H
    @  __CONFIG    _CONFIG4L, _LVP_OFF_4L & _XINST_OFF_4L
    It can be confusing to switch. It looks like you are using the wrong configs for the PIC18F2520.

    You should be looking at the mpasm folder called 'MPASM Suite' (at least that is what mine is called), and then look at file: P18F2520.INC

    At the bottom of that file, you will see all your options, like this:

    Code:
    ; The following is an assignment of address values for all of the
    ; configuration registers for the purpose of table reads
    _CONFIG1H        EQU  H'300001'
    _CONFIG2L        EQU  H'300002'
    _CONFIG2H        EQU  H'300003'
    _CONFIG3H        EQU  H'300005'
    _CONFIG4L        EQU  H'300006'
    _CONFIG5L        EQU  H'300008'
    _CONFIG5H        EQU  H'300009'
    _CONFIG6L        EQU  H'30000A'
    _CONFIG6H        EQU  H'30000B'
    _CONFIG7L        EQU  H'30000C'
    _CONFIG7H        EQU  H'30000D'
    
    ;----- CONFIG1H Options --------------------------------------------------
    _OSC_LP_1H           EQU  H'F0'    ; LP oscillator
    _OSC_XT_1H           EQU  H'F1'    ; XT oscillator
    _OSC_HS_1H           EQU  H'F2'    ; HS oscillator
    _OSC_RC_1H           EQU  H'F3'    ; External RC oscillator, CLKO function on RA6
    _OSC_EC_1H           EQU  H'F4'    ; EC oscillator, CLKO function on RA6
    _OSC_ECIO6_1H        EQU  H'F5'    ; EC oscillator, port function on RA6
    _OSC_HSPLL_1H        EQU  H'F6'    ; HS oscillator, PLL enabled (Clock Frequency = 4 x FOSC1)
    _OSC_RCIO6_1H        EQU  H'F7'    ; External RC oscillator, port function on RA6
    _OSC_INTIO67_1H      EQU  H'F8'    ; Internal oscillator block, port function on RA6 and RA7
    _OSC_INTIO7_1H       EQU  H'F9'    ; Internal oscillator block, CLKO function on RA6, port function on RA7
    
    _FCMEN_OFF_1H        EQU  H'BF'    ; Fail-Safe Clock Monitor disabled
    _FCMEN_ON_1H         EQU  H'FF'    ; Fail-Safe Clock Monitor enabled
    
    _IESO_OFF_1H         EQU  H'7F'    ; Oscillator Switchover mode disabled
    _IESO_ON_1H          EQU  H'FF'    ; Oscillator Switchover mode enabled
    
    ;----- CONFIG2L Options --------------------------------------------------
    _PWRT_ON_2L          EQU  H'FE'    ; PWRT enabled
    _PWRT_OFF_2L         EQU  H'FF'    ; PWRT disabled
    
    _BOREN_OFF_2L        EQU  H'F9'    ; Brown-out Reset disabled in hardware and software
    _BOREN_ON_2L         EQU  H'FB'    ; Brown-out Reset enabled and controlled by software (SBOREN is enabled)
    _BOREN_NOSLP_2L      EQU  H'FD'    ; Brown-out Reset enabled in hardware only and disabled in Sleep mode (SBOREN is disabled)
    _BOREN_SBORDIS_2L    EQU  H'FF'    ; Brown-out Reset enabled in hardware only (SBOREN is disabled)
    
    _BORV_0_2L           EQU  H'E7'    ; Maximum setting
    _BORV_1_2L           EQU  H'EF'    ; 
    _BORV_2_2L           EQU  H'F7'    ; 
    _BORV_3_2L           EQU  H'FF'    ; Minimum setting
    
    ;----- CONFIG2H Options --------------------------------------------------
    _WDT_OFF_2H          EQU  H'FE'    ; WDT disabled (control is placed on the SWDTEN bit)
    _WDT_ON_2H           EQU  H'FF'    ; WDT enabled
    
    _WDTPS_1_2H          EQU  H'E1'    ; 1:1
    _WDTPS_2_2H          EQU  H'E3'    ; 1:2
    _WDTPS_4_2H          EQU  H'E5'    ; 1:4
    _WDTPS_8_2H          EQU  H'E7'    ; 1:8
    _WDTPS_16_2H         EQU  H'E9'    ; 1:16
    _WDTPS_32_2H         EQU  H'EB'    ; 1:32
    _WDTPS_64_2H         EQU  H'ED'    ; 1:64
    _WDTPS_128_2H        EQU  H'EF'    ; 1:128
    _WDTPS_256_2H        EQU  H'F1'    ; 1:256
    _WDTPS_512_2H        EQU  H'F3'    ; 1:512
    _WDTPS_1024_2H       EQU  H'F5'    ; 1:1024
    _WDTPS_2048_2H       EQU  H'F7'    ; 1:2048
    _WDTPS_4096_2H       EQU  H'F9'    ; 1:4096
    _WDTPS_8192_2H       EQU  H'FB'    ; 1:8192
    _WDTPS_16384_2H      EQU  H'FD'    ; 1:16384
    _WDTPS_32768_2H      EQU  H'FF'    ; 1:32768
    
    ;----- CONFIG3H Options --------------------------------------------------
    _MCLRE_OFF_3H        EQU  H'7F'    ; RE3 input pin enabled; MCLR disabled
    _MCLRE_ON_3H         EQU  H'FF'    ; MCLR pin enabled; RE3 input pin disabled
    
    _LPT1OSC_OFF_3H      EQU  H'FB'    ; Timer1 configured for higher power operation
    _LPT1OSC_ON_3H       EQU  H'FF'    ; Timer1 configured for low-power operation
    
    _PBADEN_OFF_3H       EQU  H'FD'    ; PORTB<4:0> pins are configured as digital I/O on Reset
    _PBADEN_ON_3H        EQU  H'FF'    ; PORTB<4:0> pins are configured as analog input channels on Reset
    
    _CCP2MX_PORTBE_3H    EQU  H'FE'    ; CCP2 input/output is multiplexed with RB3
    _CCP2MX_PORTC_3H     EQU  H'FF'    ; CCP2 input/output is multiplexed with RC1
    
    ;----- CONFIG4L Options --------------------------------------------------
    _STVREN_OFF_4L       EQU  H'FE'    ; Stack full/underflow will not cause Reset
    _STVREN_ON_4L        EQU  H'FF'    ; Stack full/underflow will cause Reset
    
    _LVP_OFF_4L          EQU  H'FB'    ; Single-Supply ICSP disabled
    _LVP_ON_4L           EQU  H'FF'    ; Single-Supply ICSP enabled
    
    _XINST_OFF_4L        EQU  H'BF'    ; Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
    _XINST_ON_4L         EQU  H'FF'    ; Instruction set extension and Indexed Addressing mode enabled
    
    _DEBUG_ON_4L         EQU  H'7F'    ; Background debugger enabled, RB6 and RB7 are dedicated to In-Circuit Debug
    _DEBUG_OFF_4L        EQU  H'FF'    ; Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
    Take a look at 2.6.4 in the datasheet (and all around the oscillator section). Here is one of the figures there:

    Attached Images Attached Images  
    Last edited by ScaleRobotics; - 6th February 2010 at 17:31.

  4. #4
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,648


    Did you find this post helpful? Yes | No

    Default

    Hi, Glenn

    a '2520 config header, just for example.

    Code:
    '*****************************************************************************
    '*****************************************************************************
    'Config processeur
    '*****************************************************************************
    '
    
    
    
    @   __CONFIG    _CONFIG1H, _IESO_OFF_1H & _OSC_XT_1H & _FCMEN_OFF_1H
    @   __CONFIG	_CONFIG2L, _BOREN_OFF_2L & _PWRT_ON_2L
    @   __CONFIG    _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
    
    
    
    @   __CONFIG    _CONFIG3H, _MCLRE_ON_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_PORTBE_3H
    @   __CONFIG    _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L & _DEBUG_OFF_4L & _XINST_OFF_4L
    
    
    
    @   __CONFIG    _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L
    @   __CONFIG    _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    @   __CONFIG    _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L
    @   __CONFIG    _CONFIG6H, _WRTB_OFF_6H & _WRTC_OFF_6H & _WRTD_OFF_6H 
    @   __CONFIG    _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L
    @   __CONFIG    _CONFIG7H, _EBTRB_OFF_7H 
    
    '*****************************************************************************
    'Config TIMERs
    
    OSCCON  = %01100000
    
    '*****************************************************************************
    'Config TIMERs
    
    T0CON = %00000010	' 16Bits 1/8 prescaler, Horloge Système, OFF
    					' Utilisé pour détection sous regime ou arret
    					
    T1CON = %00000000	'1/1 prescaler, Quartz 32,768
    ' *** Géré par Elapsed Timer ***
    
    T3CON = %01110001	' CCP SUR TMR3,1/8 prescaler,Horloge système,ON
    					' Mesure de la vitesse
    '*****************************************************************************
    'Config CCP1 arret CCP2
    
    CCP1CON = %00000101	' Capture sur front montant 
    
    CCP2CON = %00000000	'inhibition module CCP2
    
    '*****************************************************************************
    'Inhibition SSP
    
    SSPCON1.5 = 0
    
    '*****************************************************************************
    'Inhibition Comparateurs
    
    CMCON = 7
    
    '*****************************************************************************
    'Inhibition Reference interne
    
    CVRCON = 0
    
    '*****************************************************************************
    'Config Interruptions
    
    INTCON  = %10000000
    INTCON2 = %11110000
    INTCON3 = %00000000
    
    PIE1    = %00000100
    PIE2    = %00000000
    
    IPR1    = %00000001
    IPR2	= %00000000
    
    RCON	= %10000000
    
    '*****************************************************************************
    'Config ADC
    '*****************************************************************************
    
    ADCON0 = %11000000		' 
    ADCON1 = %00011100 		' A0 > A2 Vref+ A3, Vref- = Vss 
    ADCON2 = %10100110		' Right Just., 8Tad, clock /64
    
    '*****************************************************************************
    '*****************************************************************************
    'Config et Prepositionnement E/S
    '*****************************************************************************
    
    PORTA	= %00110000
    PORTB 	= %00010000
    PORTC	= %00001000
    'PORTD	= 0
    'PORTE	= 0
    
    TRISA 	= %00011111
    TRISB	= %00000110
    TRISC	= %00000111
    'TRISD	= %00000000
    'TRISE	= %00000000
    '
    Powerful devices need to configure more registers ... that's it !!!

    Alain
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  5. #5


    Did you find this post helpful? Yes | No

    Default

    Glen,

    Probably a typo:

    You said

    "..I have a pulldown on MCLR and the LED's are connected with resistors.. I want to use the internal oscillator, and no WDT."

    A pulldown (tied to ground) on MCLR will keep the pic from working. I assume, since you said your PIC16's programs function its just a typo and you are using a "pullup" resistor (tied to Vcc) on MCLR. Don't give up!

  6. #6
    Join Date
    Sep 2008
    Location
    Stockholm
    Posts
    80


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mark_s View Post
    Glen,

    A pulldown (tied to ground) on MCLR will keep the pic from working. I assume, since you said your PIC16's programs function its just a typo and you are using a "pullup" resistor (tied to Vcc) on MCLR. Don't give up!
    Oops, yes, its connected to Vcc with a 10k resistor

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


    Did you find this post helpful? Yes | No

    Default

    Hi Glenn,
    Couple of minor details: In Assembly the ' apostrophe does not work to make a line a comment, you MUST use the semicolon ;
    now this line:
    Code:
    ..I have a pulldown on MCLR and the LED's are connected with resistors.. I want to use the internal oscillator, and no WDT.
    <b>I HAVE NOT</b> checked the data sheet, If you use the MCLR pin as an output, <b>MOST PICS </b>have an Open Collector output, which requires a PullUp resistor, as they can only pull down.
    Try this for your osc:
    __CONFIG _CONFIG1H, _OSC_INTIO67_1H & _FCMEN_OFF_1H & _IESO_OFF_1H ; enable int osc, disable failsafe osc enable, disable internal external switchover
    <b>Ok now I have looked at the data sheet,</b> as for the MCLR pin This is from the data sheet:
    The fourth pin of PORTE (MCLR/VPP/RE3) is an input
    only pin. Its operation is controlled by the MCLRE Configuration
    bit. When selected as a port pin (MCLRE = 0),
    it functions as a digital input only pin; as such, it does not
    have TRIS or LAT bits associated with its operation.
    Otherwise, it functions as the device’s Master Clear
    input. In either configuration, RE3 also functions as the
    programming voltage input during programming.
    INPUT ONLY
    Last edited by Archangel; - 6th February 2010 at 19:10.
    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.

  8. #8
    Join Date
    Sep 2008
    Location
    Stockholm
    Posts
    80


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Joe S. View Post
    Hi Glenn,
    Couple of minor details: In Assembly the ' apostrophe does not work to make a line a
    Well, if the ' is before the @ it should work ? or ?

    Quote Originally Posted by Joe S. View Post
    Try this for your osc:
    __CONFIG _CONFIG1H, _OSC_INTIO67_1H & _FCMEN_OFF_1H & _IESO_OFF_1H ; enable int osc, disable failsafe osc enable, disable internal external switchover
    This gives me..

    Error[113] C:\PBP\LTIMERT.ASM 63 : Symbol not previously defined (_OSC_INTIO67
    _1H)

    ..And the usual "deprecated" warning about __CONFIG.

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


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Glenn View Post
    Well, if the ' is before the @ it should work ? or ?



    This gives me..

    Error[113] C:\PBP\LTIMERT.ASM 63 : Symbol not previously defined (_OSC_INTIO67
    _1H)

    ..And the usual "deprecated" warning about __CONFIG.
    Did you write it @ __CONFIG _CONFIG1H, _OSC_INTIO67_1H & _FCMEN_OFF_1H & _IESO_OFF_1H ; enable int osc, disable failsafe osc enable, disable internal external switchover ?
    As for ' , is a PBP compiler directive, whereas ; directs both compiler and assembler
    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.

  10. #10
    Join Date
    Sep 2008
    Location
    Stockholm
    Posts
    80


    Did you find this post helpful? Yes | No

    Default

    scalerobotics: Yes, I have looked at that, but still, for example that include mentions:

    _BOREN_OFF_2L

    ..But if I include that in my PBP program I get a "symbol previosly not defined" error from mpasmwin:

    Error[113] C:\PBP\LTIMERT.ASM 70 : Symbol not previously defined (_BOREN_OFF_2L)

    acetronics: Same with that, a good example is the _BOREN_OFF_2L that does not work ?

    Just an example of working configbits for internal oscillator that works on 20MHz would be great, then I could try things after that, but now I cant even get the damned thing to run..

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


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Glenn View Post

    Just an example of working configbits for internal oscillator that works on 20MHz would be great, then I could try things after that, but now I cant even get the damned thing to run..
    Section 2.6 datasheet.
    section 2.64 " "
    32 mhz is your speed limit using PLL and internal osc.
    Set it up in OSCCON register
    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.

  12. #12
    Join Date
    Sep 2008
    Location
    Stockholm
    Posts
    80


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Joe S. View Post
    Section 2.6 datasheet.
    section 2.64 " "
    32 mhz is your speed limit using PLL and internal osc.
    Set it up in OSCCON register
    Well, at maximum I presume ? actually I don't really understand what they mean exactly in that part of the datasheet, I would belive that I set one speed on the oscillator, and then the PLL multiplies it ? then 8x4 would give 32Mhz ? ..Ofcourse that would give me troubles to get excactly 20Mhz then, but still, it would work I think ? (but for exampe, "pause 1000" would not be one second)

    Anyway, I could use another clock frequency too, the main reason to use 20Mhz is that I tried the same program on a 16f PIC with no internal oscillator, and then I used a 20Mhz xtal.

    Quote Originally Posted by Joe S. View Post
    Did you write it @ __CONFIG _CONFIG1H, _OSC_INTIO67_1H & _FCMEN_OFF_1H & _IESO_OFF_1H ; enable int osc, disable failsafe osc enable, disable internal external switchover ?
    As for ' , is a PBP compiler directive, whereas ; directs both compiler and assembler
    I simply wrote:

    @ __CONFIG _CONFIG1H, _OSC_INTIO67_1H & _FCMEN_OFF_1H & _IESO_OFF_1H

    with no comment at all..

Similar Threads

  1. 16F to 18F transition pains
    By lurker in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 5th December 2008, 01:35
  2. 18F Config fuses
    By Angus Anderson in forum mel PIC BASIC Pro
    Replies: 20
    Last Post: - 18th December 2007, 15:59
  3. Super easy 18F print strings to UART
    By Bruce in forum Code Examples
    Replies: 0
    Last Post: - 26th August 2007, 23:19
  4. Upgrading 16F to 18F
    By Ron Marcus in forum General
    Replies: 1
    Last Post: - 29th March 2006, 09:44
  5. Newby- PBP wont compile for 18F (MPLAB)
    By jd76duke in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 17th December 2005, 23:30

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