Kustaa, I gave up on using SDCC for interrupts and process UART interrupts in assembler. I setup 2 queues, one for transmit and one for extraction. Each queue has an insert pointer, extraction pointer, and byte count. With this scheme I am able to reliably communicate with a host PC at 38400 on a 40MHz PIC18F2620.
If you allocate 256 bytes for each queue the wrap is handled by the PIC. It does require some code to manage the transmit interrupt state. George Kustaa Nyholm wrote: > Hi list, > > > in order to get rid of some longish preamble in my interrupt I tried to > define the interrupt as '__naked' but this produced 'Bus error' during > compilation. > > After a lot of pruning I got the code down to: > > unsigned char x; > > void test() __naked { > if (x) { > x = 1; > } > } > > which when compiled with parameters: > > SDCCFLAGS = "-Wl,-m,-s 18f4550.lkr" -mpic16 -p18f4550 --disable-warning 85 > --std-sdcc99 --obanksel=3 --pno-banksel > > > produces SIGSEGV . > > If I remove the __naked the problem disappears, but I'm back in square one. > > So this appears to be compiler bug. I tried to look for this in the list > archives but I could not find anything related to that. > > Now I have specific questions: > > 1) Should I file a bug? > > 2) How can I circumvent this? > > My actual problem is that the compilers emits a lot of code like: > > 002C C000 FFE5 01503 MOVFF r0x00, POSTDEC1 > 0030 C000 FFE5 01504 MOVFF r0x01, POSTDEC1 > 0034 C000 FFE5 01505 MOVFF r0x02, POSTDEC1 > 0038 C000 FFE5 01506 MOVFF r0x03, POSTDEC1 > 003C C000 FFE5 01507 MOVFF r0x04, POSTDEC1 > 0040 C000 FFE5 01508 MOVFF r0x05, POSTDEC1 > > that I would like to avoid, all I want is for the compiler to allocate > these are global variables used solely by the interrupt so that there > is no need to save/restore them...I know 'naked' alone would not do this > but it seems like a necessary step in getting there...? > > 3) I seem to recall some list discussion relating to PIC / inline assembly > and that it does not work or something but I cannot find that > discussion. Is there a problem there? > > br Kusti > > > > > ------------------------------------------------------------------------------ > Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA > -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise > -Strategies to boost innovation and cut costs with open source participation > -Receive a $600 discount off the registration fee with the source code: SFAD > http://p.sf.net/sfu/XcvMzF8H > _______________________________________________ > Sdcc-user mailing list > Sdcc-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/sdcc-user > > ------------------------------------------------------------------------------ Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H _______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user