SDCC och pic18
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: SDCC och pic18
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.
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.
Re: SDCC och pic18
I blogginlägget från 2014 som länkades till på förra sidan står det att de dragit ner på suboptimeringen: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.
"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:"
Re: SDCC och pic18
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
uart.c
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....
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();
}
Kod: Markera allt
void UART_PutString(char *str)
{
while((*str)!=0)
{
UART_PutChar(*str);
str++;
}
}
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....
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: SDCC och pic18
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.
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.
Re: SDCC och pic18
Senast uppdaterad 2014 och nedlagd. Lite tråkigt att begränsa sig till enbart gamla modeller.TomasL skrev:PIC C-18 finns/fanns ju som alternativ.
Re: SDCC och pic18
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:
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++;
}
}
Re: SDCC och pic18
Har provat
char *
const char *
register const char*
Samma resultat.
Och som sagt den funkar ju i main...
char *
const char *
register const char*
Samma resultat.
Och som sagt den funkar ju i main...
Re: SDCC och pic18
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...
https://www.ebay.com/itm/17DOF-Biped-Ro ... 62fff498fe
Därav jag gärna vill köra optimerat...
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: SDCC och pic18
Välj en "riktig" processor istället, om du nu inte har all kod för I/O på just en PIC18.
Re: SDCC och pic18
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..
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: SDCC och pic18
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.
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.
Re: SDCC och pic18
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/
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/
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: SDCC och pic18
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.
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.