Datum:
Hallo habe folgendes Problem: bei dem Quellcode des sed1335 kommt der Fehler ../sed1335.c:14: undefined reference to `GLCD_InitializePorts' Woran liegt das?
//------------------------------------------------------------------------------------------------- // //------------------------------------------------------------------------------------------------- #include "sed1335.h" #include <util/delay.h> extern void GLCD_InitializePorts(void); //------------------------------------------------------------------------------------------------- // Funkcja inicjalizacji wyœwietlacza //------------------------------------------------------------------------------------------------- void GLCD_Initialize(void) { GLCD_InitializePorts(); GLCD_WriteCommand(SED1335_SYSTEM_SET); GLCD_WriteData(SED1335_SYS_P1); GLCD_WriteData(SED1335_SYS_P2); GLCD_WriteData(SED1335_FY); GLCD_WriteData(SED1335_CR); GLCD_WriteData(SED1335_TCR); GLCD_WriteData(SED1335_LF); GLCD_WriteData(SED1335_APL); GLCD_WriteData(SED1335_APH); GLCD_WriteCommand(SED1335_SCROLL); GLCD_WriteData(SED1335_SAD1L); GLCD_WriteData(SED1335_SAD1H); GLCD_WriteData(SED1335_SL1); GLCD_WriteData(SED1335_SAD2L); GLCD_WriteData(SED1335_SAD2H); GLCD_WriteData(SED1335_SL2); GLCD_WriteData(SED1335_SAD3L); GLCD_WriteData(SED1335_SAD3H); GLCD_WriteData(SED1335_SAD4L); GLCD_WriteData(SED1335_SAD4H); GLCD_WriteCommand(SED1335_CSRFORM); GLCD_WriteData(SED1335_CRX); GLCD_WriteData(SED1335_CSRF_P2); GLCD_WriteCommand(SED1335_CGRAM_ADR); GLCD_WriteData(SED1335_SAGL); GLCD_WriteData(SED1335_SAGH); GLCD_WriteCommand(SED1335_CSRDIR_R); GLCD_WriteCommand(SED1335_HDOT_SCR); GLCD_WriteData(SED1335_SCRD); GLCD_WriteCommand(SED1335_OVLAY); GLCD_WriteData(SED1335_OVLAY_P1); GLCD_WriteCommand(SED1335_DISP_ON); GLCD_WriteData(SED1335_FLASH); } //------------------------------------------------------------------------------------------------- // Funkcja zapalaj¹ca piksel //------------------------------------------------------------------------------------------------- void GLCD_SetPixel(unsigned int x,unsigned int y, int color) { unsigned char tmp = 0; unsigned int address = SED1335_GRAPHICSTART + (40 * y) + (x/8); GLCD_SetCursorAddress(address); GLCD_WriteCommand(SED1335_MREAD); tmp = GLCD_ReadData(); if(color) tmp |= (1 << (SED1335_FX - (x % 8))); else tmp &= ~(1 << (SED1335_FX - (x % 8))); GLCD_SetCursorAddress(address); GLCD_WriteCommand(SED1335_MWRITE); GLCD_WriteData(tmp); } //------------------------------------------------------------------------------------------------- // Funkcja wyswietlajaca tekst //------------------------------------------------------------------------------------------------- void GLCD_WriteText(char * tekst) { GLCD_WriteCommand(SED1335_MWRITE); while(*tekst) GLCD_WriteData(*tekst++); } //------------------------------------------------------------------------------------------------- // Funkcja wyœwietlaj¹ca tekst z pamiêci programu (AVR) //------------------------------------------------------------------------------------------------- void GLCD_WriteTextP(char * tekst) { GLCD_WriteCommand(SED1335_MWRITE); while(GLCD_ReadByteFromROMMemory(tekst)) GLCD_WriteData(GLCD_ReadByteFromROMMemory(tekst++)); } //------------------------------------------------------------------------------------------------- // Funkcja ustawiaj¹ca adres kursora //------------------------------------------------------------------------------------------------- void GLCD_SetCursorAddress(unsigned int address) { GLCD_WriteCommand(SED1335_CSRW); GLCD_WriteData((unsigned char)(address & 0xFF)); GLCD_WriteData((unsigned char)(address >> 8)); } //------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- void GLCD_TextGoTo(unsigned char x, unsigned char y) { GLCD_SetCursorAddress((y * 40) + x); } //------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- void GLCD_GraphicGoTo(unsigned int x, unsigned int y) { GLCD_SetCursorAddress(SED1335_GRAPHICSTART + (y * 40) + x/8); } //------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- void GLCD_ClearText(void) { int i; GLCD_TextGoTo(0,0); GLCD_WriteCommand(SED1335_MWRITE); for(i = 0; i < 1200; i++) GLCD_WriteData(' '); } //------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- void GLCD_ClearGraphic(void) { unsigned int i; GLCD_SetCursorAddress(SED1335_GRAPHICSTART); GLCD_WriteCommand(SED1335_MWRITE); for(i = 0; i < (40 * 240); i++) GLCD_WriteData(0x00); } //------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- void GLCD_Bitmap(char * bmp, int x, int y, int width, int height) { unsigned int i, j; for(i = 0; i < height ; i++) { GLCD_GraphicGoTo(x, y+i); GLCD_WriteCommand(SED1335_MWRITE); for(j = 0; j < width/8; j++) GLCD_WriteData(GLCD_ReadByteFromROMMemory(bmp+j+(40*i))); } } //------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- |
Datum:
Kennt sich damit wirklich keiner aus? Ich habe die sed1335 library von der seite http://en.radzio.dxp.pl/sed1335/ heruntergeladen und in avr studio 4 eingebunden und dann kommt dieser Fehler raus.
Datum:
Der Compiler sagt ja : undefined reference to `GLCD_InitializePorts' Also findet er die GLCD_InitializePorts nicht. Schau mal in die entsprechende Datei für Deinen Controller. Welche das ist kann ich nicht sagen, weil Du vergessen hast uns das mitzuteilen. Zumindest in der Datei für den AVR hat der Hersteller der Lib die Finktion nicht GLCD_InitializePorts sonder als GLCD_InitPorts genannt. Das müsste man umbenennen.
Datum:
Andreas S. schrieb: > Kennt sich damit wirklich keiner aus? Derjenige, der die Software geschrieben hat. Deine Fehlermeldung besagt, daß in deine Programm zwar GLCD_InitializePorts() aufgerufen wird, es die Funktion aber nirgends gibt. Warum, wissen nur du und ie Götter. Vielleicht hast du nicht alle benötigten Programmteile installert, vielleicht musst du die Funktion, passend zu deiner Hardware, selber schreiben, keine Ahnung. Mit an Sicherheit grenzender Wahrscheinlichkeit steht aber dazu was in der Doku zu der lib. Also: RTFM. Oliver
Datum:
Na ja - das wurde im Posting eins weiter oben bereits - sogar schon etwas genauer - beantwortet. Aber wahrscheilich hat der Threadersteller eh keine Lust mehr. Hat sich zumindest nicht mehr gemeldet.
Datum:
Danke für die antworten. habe die Funktion in GLCD_InitializePorts umbenannt.