Hallo, ich probiere gerade einen (für mich neuen) Compiler aus. Wenn ich spi.h einbinden möchte, wir diese nicht gefunden. In der Doku fand ich: <htc.h> will automatically include peripheral library header files when --ru 1) Stimmt der Syntax? Der Buchstabe 'u' hört direkt am rechten Rand des pdf-files aus... könnte da noch was nachkommen? 2) Wo kann ich die Option setzten? Oder ist sie nicht schon per default gesetzt? Beim C18 finde ich jede Menge gesetzte Compiler-Schalter unter Projects -> build options -> projects -> Reg.karte Compiler, bei Hitech keinen einzigen. #include <htc.h> #include <spi.h> __CONFIG(1, FCMDIS & IESODIS & HS); __CONFIG(2, BORDIS & BORV45 & PWRTEN & WDTDIS & WDTPS1); __CONFIG(3, CCP2RB3 & LPT1DIS & 0xFDFF); __CONFIG(4, DEBUGDIS & XINSTDIS & LVPDIS & STVRDIS); __CONFIG(5, 0xFFFF); __CONFIG(6, 0xFFFF); __CONFIG(7, 0xFFFF); void init(void) { // port directions: 1=input, 0=output PORTC = 0b00000000; //clear output data latch TRISC = 0b00000000; } //wait void wait(unsigned int a) { unsigned int i,j; for (i = 0; i < a ; i++) { for (j = 1 ; j < 1000; j++); } } void main(void) { int a, iValue1, iValue2; /*************************************************************** * 20.07.2011 * spi 74HC595 shift register test * * Lines: * clk: RB1 * Ser in: RC7 * /G (output enable): RC6 (mußt be low) * storage register: RC2 * **************************************************************/ init(); PORTC &= 0b10111111; //RC6 = 0 (/G) OpenSPI(SPI_FOSC_16, MODE_00, SMPEND); iValue1 = 1; iValue2 = 1; WriteSPI(iValue1); WriteSPI(iValue2); PORTC |= 0b00000100; //RC2 = 1 clock data in storage } ergibt: Build C:\Test\Hi-Tech\Test1\Test_name for device 18F4550 Using driver C:\Program Files\HI-TECH Software\PICC-18\PRO\9.66\bin\picc18.exe Make: The target "C:\Test\Hi-Tech\Test1\main.p1" is out of date. Executing: "C:\Program Files\HI-TECH Software\PICC-18\PRO\9.66\bin\picc18.exe" --pass1 C:\Test\Hi-Tech\Test1\main.c -q --chip=18F4550 "-IC:\Program Files\HI-TECH Software\PICC-18\PRO\9.66\include\peripheral" "-IC:\Program Files\HI-TECH Software\PICC-18\PRO\9.66\include" -P --runtime=default,+clear,+init,-keep,-download,+stackwarn,-config,+clib, -plib --opt=default,+asm,-speed,+space,9 --warn=0 -Blarge --double=24 --cp=16 -D--runtime=plib -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" Executing: "C:\Program Files\HI-TECH Software\PICC-18\PRO\9.66\bin\picc18.exe" -oTest_name.cof -mTest_name.map --summary=default,-psect,-class,+mem,-hex --output=default,-inhx032 main.p1 --chip=18F4550 "-IC:\Program Files\HI-TECH Software\PICC-18\PRO\9.66\include\peripheral" "-IC:\Program Files\HI-TECH Software\PICC-18\PRO\9.66\include" -P --runtime=default,+clear,+init,-keep,-download,+stackwarn,-config,+clib, -plib --opt=default,+asm,-speed,+space,9 --warn=0 -Blarge --double=24 --cp=16 -D--runtime=plib -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" HI-TECH C PRO for the PIC18 MCU Family V9.66 Copyright (C) 1984-2011 HI-TECH SOFTWARE licensed for evaluation purposes only this licence will expire on Fri, 02 Sep 2011 Advisory[1233] Employing 18F4550 errata work-arounds: Advisory[1234] * Corrupted fast interrupt shadow registers Error [500] ; 0. undefined symbols: _OpenSPI(Test_name.obj) _WriteSPI(Test_name.obj) .
Joachim ... schrieb: > #include <htc.h> > #include <spi.h> gibt es die Datei überhaupt? Hast du die compilerspezifischen Include Directories durchsucht, ob sich dort eine derartige Datei findet? Die müsste auf dem gleichen Verzeichnis sein, wie die htc.h. Eventuell ist sie ja auch auf einem Subverzeichnis und die Doku ist falsch.
Moment mal Error [500] ; 0. undefined symbols: _OpenSPI(Test_name.obj) _WriteSPI(Test_name.obj) das ist eine traditionelle Fehlermeldung des Linkers und nicht des Compilers. D.h. das Header File ist völlig in Ordnung, aber der Linker konnte die entsprechenden Funktionen nicht finden. Da wirst du wohl noch irgendeine Library beim Linken mit angeben müssen.
@Karl Heinz Buchegger Yep hast recht, jetzt seh ich's auch ;-) Aber ich glaub ich hab's gefunden. Die Lösung für den nächsten der über das Problem stolpert: Projects -> build options -> projects -> Reg.karte Compiler "Link in C library" ist angehakt. Statttdessen muß "Link in peripheral library" angehakt sein. Möglicherweise sind die peripheral libs von Microchip und nicht vom Compiler-Hersteller selbst... vielleicht muß Hitech da einen Trennstrich ziehen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.