From: <mat...@ph...> - 2004-05-27 19:35:22
|
Hi, After my troubles with the libraries I tried to compile a very simple program that just puts on a pin on portB: #include <pic18fregs.h> unsigned int at 0x300001 __config = 0xfe; //data char at 0x300000 conf0 = 0xfe; //data unsigned int at 0x300000 __config = 0xfffe; /*data unsigned int at 0x300001 __config = 0xfe*/ void main() { TRISB = 0x00; // All Pins are outputs PORTB = 0xAA; // set 10101010 } I tried different types but nothing worked :( I found a post of vangelis from 5th january and he wrote: configuration words can be set with: data char at 0x300000 conf0 = 0xff; or data unsigned int at 0x300000 conf0 = 0xffff; but this doesn't seem to work anymore. I just try to enable the _HSPLL_OSC_1H EQU H'FE' ; HS PLL . Thank you Matthias |
From: <mat...@ph...> - 2004-05-27 20:07:45
|
Hi again :) > Hi, > After my troubles with the libraries I tried to compile a > very simple program that just puts on a pin on portB: > #include <pic18fregs.h> > unsigned int at 0x300001 __config = 0xfe; > //data char at 0x300000 conf0 = 0xfe; > //data unsigned int at 0x300000 __config = 0xfffe; > /*data unsigned int at 0x300001 __config = 0xfe*/ > void main() > { > TRISB = 0x00; // All Pins are outputs > PORTB = 0xAA; // set 10101010 > } > I tried different types but nothing worked :( > I found a post of vangelis from 5th january and he wrote: > configuration words can be set with: > data char at 0x300000 conf0 = 0xff; > or > data unsigned int at 0x300000 conf0 = 0xffff; > but this doesn't seem to work anymore. > I just try to enable the _HSPLL_OSC_1H EQU H'FE' ; HS PLL . > Thank you > Matthias It's not really wrong, but it is defined twice, that means additionally in the idata part: ; Initialised data (idata) idata __CONFIG data 0xfe,0x00 The code assembled with MPLAB and without all exports works for me: CLRF _TRISB ;#CSRC test.c 55 PORTB = 0xAA; MOVLW 0xaa MOVWF _PORTB _PORTB yours Matthias |
From: Vangelis R. <vr...@ot...> - 2004-05-27 22:25:55
|
On Thu, 27 May 2004, [ISO-8859-15] Matthias H=E4nel wrote: > > I tried different types but nothing worked :( > > I found a post of vangelis from 5th january and he wrote: > > > configuration words can be set with: > > > data char at 0x300000 conf0 =3D 0xff; > > > or > > > data unsigned int at 0x300000 conf0 =3D 0xffff; > > > but this doesn't seem to work anymore. > > I just try to enable the _HSPLL_OSC_1H EQU H'FE' ; HS PLL . =09This was true, but I haven't touched that piece of code since tonight!;-) =09Well, it is now fixed, with the new revision (see ChangeLog ver. 1.735). You declare the configuration words with the following code: char at 0x300001 conf0 =3D 0xfe; I know this isn't right, because it seems that data will be placed in the data memory, but it seems there is an optimization in SDCC which discards the assignment if you put the specifier 'code' before the 'char'. I asked Erik to take a look at it. Now it should work ok. Unfortunately there are more problems with code initialisations, for example the line: code char name[]=3D"foo"; doesn't produce any valid code. It was Hans who was working on it last time, but didn't have the time to fix it. Regards, Vangelis |
From: Vangelis R. <vr...@ot...> - 2004-05-27 22:41:51
|
On Fri, 28 May 2004, Vangelis Rokas wrote: > Well, it is now fixed, with the new revision > (see ChangeLog ver. 1.735). > > You declare the configuration words with the following code: > > char at 0x300001 conf0 = 0xfe; Don't forget to remove the argument --pomit-config-words from the sdcc command line. It was one of the proposing command line arguments in the NOTES file (in the src/pic16 directory) for compiling sources with pic16 port. Vangelis |