Why not compiling, assembling and linking in one command:

sdcc -mpic16 -p18f46k22 test.c

SDCC assembles and links the needed libraries by default. I think the -I.
is not necessary.

If you need a custom linker script (e.g. MylinkerScript.lkr) it can be
provided like this:
sdcc -mpic16 -p18f46k22 -Wl-sMylinkerScript.lkr test.c

Could you send both .lst files (the working and the not working one) for us
to inspect them?

Regards,
Diego Herranz


On Thu, Feb 28, 2013 at 10:25 AM, Butuza Tamas <tbutu...@freemail.hu> wrote:

> Dear sdcc users and developers,
>
> At the past I used sdcc for 14 bit pic devices with success.Now I'd like
> to use sdcc for a 16 bit pic microcontroller, but I have a problem just at
> the beginning.
> I tried to use timer interrupt, but my program was not able to run. After
> some investigation, I found a misterious problem: Just defining an
> interrupt routine, but not using it (disabled interrupts) makes the program
> unable to run.
>
> At this point I cannot understand why? Just defining a never called
> routine can make the program broken?
> This is my example:
> This works:
>
> #include "pic18f46k22.h"
> #pragma config XINST = OFF
> #pragma config FOSC = HSHP
> #pragma config WDTEN = OFF
> #pragma config MCLRE = EXTMCLR
> #pragma config CP0 = ON
> #pragma config CP1 = ON
> #pragma config CP2 = ON
> #pragma config CP3 = ON
> #pragma config CPB = ON
>
> #define PORTC_OUTPUT_LED1            (0b00010000)
> #define PORTD_OUTPUT_LED2            (0b00001000)
>
> // No iterrupt routine defined
>
> void main(void) {
>     TRISC = 0;
>     TRISD = 0;
>     LATC = PORTC_OUTPUT_LED1;    // Leds should be switched on as the
> program starts run.
>     LATD = PORTD_OUTPUT_LED2;
>     while(1) {
>     }
> }
>
> This one does not work: (The similar program with an interrupt routine
> defined, but interrupts were not enabled at all.)
>
> #include "pic18f46k22.h"
> #pragma config XINST = OFF
> #pragma config FOSC = HSHP
> #pragma config WDTEN = OFF
> #pragma config MCLRE = EXTMCLR
> #pragma config CP0 = ON
> #pragma config CP1 = ON
> #pragma config CP2 = ON
> #pragma config CP3 = ON
> #pragma config CPB = ON
>
> #define PORTC_OUTPUT_LED1            (0b00010000)
> #define PORTD_OUTPUT_LED2            (0b00001000)
>
> // Interrupt routine defined, but never used before interrupts are
> disabled by default.
> // This makes the code actually unable to run! sdcc bug? gputils bug?
> void interruptHigh (void) __interrupt 1 {
>     if(INTCONbits.TMR0IF) {    // Timer0 overflow interrupt
>         INTCONbits.TMR0IF = 0;    // ACK
>     }
> }
>
> void main(void) {
>     TRISC = 0;
>     TRISD = 0;
>     LATC = PORTC_OUTPUT_LED1;    // Leds should be switched on as the
> program starts run.
>     LATD = PORTD_OUTPUT_LED2;
>     while(1) {
>     }
> }
>
> The program has an interrupt routine but the interrupts were not enabled
> (after reset, interrupts are disabled by default.) After programming it
> into the pic, the two leds swould be switched on soon. But it does not
> occur.When I delete the unused interrupt routine from the source and
> compile and reprogram the pic, it works. The two led switched on.
>
> Did I miss something?
> It is not lear to me when and how should use extended instruction set or
> it is necessary?
>
> I use PIC18F46K22
>
> sdcc version:SDCC :
> mcs51/gbz80/z80/z180/r2k/r3ka/ds390/pic16/pic14/TININative/ds400/hc08/s08
> 3.2.1 #8437 (Feb 22 2013) (MINGW32)
>
> gputils version:gpasm-1.0.0 #925 (Dec 23 2012)
>
> compiling and linking:
>
> sdcc -S -mpic16 -p18f46k22 -I. test.c
> gpasm -c test.asm
> gplink -s 18f46k22_g.lkr test.o libdev18f46k22.lib
>
> Thanks in advance,
> Tamas
>
>
>
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_d2d_feb
> _______________________________________________
> Sdcc-user mailing list
> Sdcc-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/sdcc-user
>
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to