SDCC och pic18

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: SDCC och pic18

Inlägg av lillahuset »

PIC18 fanns inte när jag köpte den, tror jag.
Jag blev erbjuden en Hitech-C för PIC18 och om jag minns rätt någon större modell. Gratis. Jag tackade nej och sa att jag var så nöjd med GCC för ARM. Kanske ofint av mig. :D
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45264
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: SDCC och pic18

Inlägg av TomasL »

PIC C-18 finns/fanns ju som alternativ.
Användarvisningsbild
swesysmgr
Inlägg: 14158
Blev medlem: 28 mars 2009, 06:56:43
Ort: Göteborg

Re: SDCC och pic18

Inlägg av swesysmgr »

Rick81 skrev:TomasL:
Om du nu är så säker på din sak, kan väl du bevisa det?

Ser inte riktigt vad du hänger upp dig på, oavsett så generar ju kompilatorn en massa konstiga skräpinstruktioner som tar flash och gör koden långsammare. Sen om det är avsiktligt eller bara en sunkig kompilator spelar mindre roll.
I blogginlägget från 2014 som länkades till på förra sidan står det att de dragit ner på suboptimeringen:
"It is obvious that when running in Free mode, XC8 is bloating the generated code for if-else structures with useless GOTO’s. Remember that in the PIC microarchitecture each jump takes 2 instruction cycles, so these padding GOTOs have a big impact in the execution speed.
Strangely, when using a switch structure, no bloating is performed.
Fortunately, this ‘GOTO padding feature’ disappeared in the version 1.20 released in July of 2013. In fact, look what the “Change Log” says about version 1.20:"
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: SDCC och pic18

Inlägg av Rick81 »

Efter lite testande med SDCC får jag nog säga att den hamnar i kategorin "sunkigare än XC8 free"

1) sprintf kan inte länkas med, blir bara kompileringsfel
2) Den verkar ha problem med pekare till funktioner. Se exempel nedan:
main.c

Kod: Markera allt

void PrintTest()
{
    UART_PutChar('?');
    UART_PutString("?????");
}

void main()
{
    Init();
    PrintTest();
}
uart.c

Kod: Markera allt

void UART_PutString(char *str)
{
	while((*str)!=0)
	{
		UART_PutChar(*str);
		str++;
	}
}
Så funkar koden som den ska, dvs 6 st ? skrivs ut på serieporten.

MEN flyttar jag PrintTest() till pwm.c, som inkluderas i main.c via pwm.h så skriva bara ett ? dvs UART_PutChar('?');
Pekarna char *str pekar bara på 0 hela tiden.

Imponerande dåligt....kanske därför Microchip kan ta 995$ för optimering då det inte finns vettiga alternativ....
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45264
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: SDCC och pic18

Inlägg av TomasL »

Du har ju också FED-C och CCS C-kompilatorer
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: SDCC och pic18

Inlägg av lillahuset »

Jag köpte CCS C för många år sedan. Maken till hopkok av eget hittepå, brister och buggar har jag aldrig sett varken förr eller senare.
Jag returnerade smörjan efter en vecka och meddelade säljaren att jag inte tänkte betala fakturan, säljaren hotade med inkasso men det bidde inget.

Eftersom CCS finns kvar måste de ha ryckt upp sig ordentligt men jag skulle ändå aldrig köpa något från dem.
Användarvisningsbild
swesysmgr
Inlägg: 14158
Blev medlem: 28 mars 2009, 06:56:43
Ort: Göteborg

Re: SDCC och pic18

Inlägg av swesysmgr »

TomasL skrev:PIC C-18 finns/fanns ju som alternativ.
Senast uppdaterad 2014 och nedlagd. Lite tråkigt att begränsa sig till enbart gamla modeller.
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1339
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Re: SDCC och pic18

Inlägg av baron3d »

Kan det vara så att SDCC skiljer på "char *str" och på "const char *str"(som C18).
I manualen står det att det är olika pekartyper beroende på om det är en pekare till RAM eller det är en pekare till ROM(flash).

Prova med detta:

Kod: Markera allt

void UART_PutString(const  char *str) {
   while((*str)!=0) {
      UART_PutChar(*str);
      str++;
   }
}
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: SDCC och pic18

Inlägg av Rick81 »

Har provat
char *
const char *
register const char*

Samma resultat.

Och som sagt den funkar ju i main...
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: SDCC och pic18

Inlägg av Rick81 »

Hade tänkt börja med en 6 servo robot arm men sen borde det gå utöka plattformen till nått riktigt maffigt:
https://www.ebay.com/itm/17DOF-Biped-Ro ... 62fff498fe
Därav jag gärna vill köra optimerat...
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: SDCC och pic18

Inlägg av lillahuset »

Välj en "riktig" processor istället, om du nu inte har all kod för I/O på just en PIC18.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: SDCC och pic18

Inlägg av Rick81 »

Har skrivit koden så den är lätt att porta till stm32 (i princip bara byta ut plattformsfunktioner som jag redan har för stm32)..men kul om det går lösa med en pic18..
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: SDCC och pic18

Inlägg av lillahuset »

Varför inte lösa det med TTL?

Allvarligt talat, PIC18 är en relik från förra millenniet.
STM32 är förmodligen billigare och har en väl fungerande utvecklingsmiljö vilket PIC18 verkar sakna. Håll inte på med gammal junk om du inte måste eller har någon intressant läggning.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: SDCC och pic18

Inlägg av Rick81 »

För att det är en utmaning! Detta är ju bara ett hobbyprojekt. Plus att frugan får löda lite. Eldar hon upp en eller flera pic18 gör det inget...

Professionellt kör jag stm32 och GCC. Och där skulle jag aldrig välja en pic18 då de är dyrare och sämre än stm32 och utvecklingsmiljö mplabX är inte i närheten av coocox/stm32 studio/true studio.

Här backupen, mer prisvärt devkit får man leta efter. 20 kr för stm32f1....
https://www.electrodragon.com/product/a ... -board-r2/
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: SDCC och pic18

Inlägg av lillahuset »

Kan du inte hitta en intressantare utmaning? Bygga det i en FPGA tex och lära dig VHDL? Lära dig arabiska eller jiddisch?
Det finns massor av utmaningar som är mer givande än PIC18. Och PIC18 är väl egentligen inte en utmaning på riktigt, utom för humöret och tålamodet. Eller kör en PIC32 så får du insyn i MIPS. Med GCC.
Skriv svar