PDA

View Full Version : Long config line



Ioannis
- 6th October 2008, 21:42
Well, it might sound stupid but, how can I break this long configuration line in two as it is too long to be printed or displayed on-screen? This line compiles OK:

@ __CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_ON & _CP_ON & _MCLRE_ON & _PWRTE_ON & _WDT_ON & _HS_OSC


The idea of multiple @ __CONFIG lines won't work:

@ __CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF
@ __CONFIG _CONFIG1, _BOR_ON & _CP_ON & _MCLRE_ON & _PWRTE_ON & _WDT_ON & _HS_OSC

It produces an Overwriting previous address contents (2007) error.

Thanks for the care,
Ioannis

skimask
- 6th October 2008, 21:58
It won't work the way you want it to work... Not all of those CONFIG options are location in CONFIG1, some are located CONFIG2L, CONFIG2H, and so on and so on...
And since I'm not 100% sure which PIC you're using, I can't tell you which option goes where.
This is one of my old config setups for a PIC18F4620.


@ __CONFIG _CONFIG1H, _OSC_HSPLL_1H & _FCMEN_ON_1H & _IESO_ON_1H
;_HSC_1H=HS, HSPLL_1H=PLL '4xPLL on, failsafe/switch-over on
@ __CONFIG _CONFIG2L, _PWRT_ON_2L & _BOREN_OFF_2L & _BORV_3_2L
;powerup timer on, brown out off
@ __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_32768_2H
;'wdt off
@ __CONFIG _CONFIG3H, _MCLRE_OFF_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_PORTC_3H
;mclr is i/o, t1osc off, porta digital
@ __CONFIG _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L
;stack overflow , lvp off, xinst off, debug off
@ __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
;all code protection, eeprom write protection off
@ __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
@ __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
@ __CONFIG _CONFIG6H, _WRTB_OFF_6H & _WRTC_OFF_6H & _WRTD_OFF_6H
@ __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
@ __CONFIG _CONFIG7H, _EBTRB_OFF_7H


EDIT: Just noticed the 'Overwriting.....(2007) error... So, yes, it is a 16F... Kinda hard to get that error with an 18F...

Darrel Taylor
- 6th October 2008, 23:19
I won't work the way you want it to work... Not all of those CONFIG options are location in CONFIG1, some are located CONFIG2L, CONFIG2H, and so on and so on...
And since I'm not 100% sure which PIC you're using, I can't tell you which option goes where.
This is one of my old config setups for a PIC18F4620.

It will work the way he want's it.
Almost all the options are in the CONFIG1 word.
There are no CONFIG2L or H. Because even though I'm not 100% sure which PIC he's using.
I'm 100% sure it's a 16F.
@MyConfig = _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_ON
@MyConfig = MyConfig & _CP_ON & _MCLRE_ON & _PWRTE_ON & _WDT_ON & _HS_OSC
@ __CONFIG _CONFIG1, MyConfig

Ioannis
- 7th October 2008, 08:50
Thanks for the replies. Sorry I forgot to mention the MCU, that is 16F887... I did it like a newbie!

Well, the solution of Darrels is clever. Where is this trick described? On MPASM manual maybe?

Thanks,
Ioannis

Darrel Taylor
- 7th October 2008, 10:02
Probably won't find it in a manual. It's just a single value.

When you do something like ...

  __CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_ON

You might as well put a couple parenthesis around everything ...

  __CONFIG _CONFIG1, (_DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_ON)

Because you're really only giving it a single value.

So you are free to figure out that value on your own, before supplying it to the __CONFIG statement.

Binary Math, it's a wonderful diversion. :)
<br>

Ioannis
- 7th October 2008, 13:39
Suddenly there was light!

Yeah, that '&' is really a binary addition to the total value to be placed at 2007 address...

All are simple and easy now!

Thanks,
Ioannis