kompilerings problem cc5x

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
athunell
Inlägg: 3
Blev medlem: 7 augusti 2004, 12:45:54

kompilerings problem cc5x

Inlägg av athunell »

Har använt cc5x (c-kompilator, Knudsen Data) till mitt lilla PIC program till PIC16F870/876.
Använder mig av interrupt samt att jag vill använda modulo(%) in en annan funktion i programmet.
Kompilatorn klagar då på följande:

#include "INT16Cxx.h"
#pragma origin 4
^________
Error[1] c:\********* 13: "Overlapping code (The pointer to the next free location in each code page can not be moved backwards (only forwards). This also applies if locations was skipped by an earlier #praga origin statement)"

Kommenterat jag bort raden, //a=b%c; så funkar det...
eller om jag kommenterar bort interruptrutinen.
Det funkar även om jag skriver a=12%2; t.ex.
Vad är det för speciellt med % och interrupt (har inkluderat math16.h)???
Tacksam för svar!
/Anders
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

Eftersom 12%2 är en konstant så tar preprocessorn hand om det redan i kompilatorn, så ingen kod genereras för det då.

Jag skulle börja att titta efter hur mycket minne som blir utnyttjat. Och om du har några andra pragma / originrader i programmet.

Felmeddelandet tyder ju på att kompilatorn bli ombedd att backa i kodgenereringen och skriva över redan "utskriven" kod.
Rockmater
Inlägg: 8
Blev medlem: 9 oktober 2004, 13:24:40

Inlägg av Rockmater »

Jag vill också använda mig av interrupt till min 16F628. Och när jag compilerar min cod i cc5x så får jag felmeddelandet "Overlapping Code" och hänvisar just till raden "#pragma origin 4".

Jag börjar bli frustrerad nu, har ägnat 7 timmar åt felsökning, men kommer ingenstans. Kan nån vänlig själ ute i cyberspace som är hajj på PIC-C programmering och cc5x vara vänlig och säga några väl valda ord... :cry:
Rockmater
Inlägg: 8
Blev medlem: 9 oktober 2004, 13:24:40

Inlägg av Rockmater »

Jag har löst problemet nu. Jag använder mig av MATH16.H. Om man inkluderar den h-filen innan koden för interruptrutinen så får man kompileringsfelet. Om man istället lägger inkluderingen efter interruptet så funkar allt bra. Fråga mig inte varför, men ibland så är man glad att nått funkar även fast man inte fattar varför :D
Skriv svar