Blaxxun
09.08.2010, 18:14
Hallo zusammen,
es ist mein erster Beitrag und daher vorweg:
Vielen Dank für die viele Hilfe die ich im Forum durch nachlesen und SuFu ausreizen bisher erhalten habe!
Mein Robbi RP6 hat zu seinem Geburtstag ein AnagVision AV 1640 LCD Display 16 x 4 Zeichen bekommen. Es ist am LCD Port der Erweiterungsplatine M32 angeschlossen ( selbst gelötet *juhu* ) und funktioniert auch. Jetzt möchte ich mich an die Zeile 3 und 4 des Displays machen und versuche die RP6ControlLib.h zu verändern.
Meine C Kenntnisse beschränken sich leider immer noch auf das nötigste. Zu meinem Vorgehen:
Zeile 141 in der RP6ControlLib.h
void _showScreenLCD_P(const char *line1, const char *line2,[highlight=red:6b0ec1f91d]const char *line3,const char *line4);[/highlight:6b0ec1f91d]
hier den Übergabe-Parametern 2 weitere Zeilen hinzugefügt.
Zeile 143
#define showScreenLCD(__line1,__line2,__line3,__line4); ({_showScreenLCD_P((PSTR(__line1)),(PSTR(__line2)) ,[highlight=red:6b0ec1f91d](PSTR(__line3)),(PSTR(__line4))[/highlight:6b0ec1f91d]);})
auch hier 2 Zeilen eingefügt.
Hier habe ich die RP6ControlLib.c verändert um mehr Zeilen zu gestatten. Unter anderem die Zeilensprünge in der SetCursorPosLCD Funktion
void _showScreenLCD_P(const char *line1, const char *line2)
{
clearLCD();
writeNStringLCD_P(line1);
setCursorPosLCD(1, 0);
writeNStringLCD_P(line2);
setCursorPosLCD(2, 0);
writeNStringLCD_P(line3);
setCursorPosLCD(3, 0);
writeNStringLCD_P(line4);
}
/**
* Sets the cursor position on LCD.
*/
void setCursorPosLCD(uint8_t line, uint8_t pos)
{
pos |= 128;
if(line==1) pos += 0x40;
writeLCDCommand(pos);
if(line==1) pos += 0x10; // hier noch die ZeilenSprünge eingefügt
writeLCDCommand(pos);
if(line==1) pos += 0x50;
writeLCDCommand(pos);
}
Jetzt meine Frage:
Ich habe das alles mit AVR Studio 4 gemacht und wollte die Datei Compilieren. Da ich noch nie eine Header Datei verändert habe war ich nicht überrascht das ein Fehler auftritt aber wie kann ich das ändern ?
Wie ändere ich etwas an header dateien. Müssen die eventuell noch anders compiliert werden?
C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXA MPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:5: undefined reference to `initRP6Control'
C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXA MPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:8: undefined reference to `initLCD'
C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXA MPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:25: undefined reference to `_showScreenLCD_P'
C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXA MPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:27: undefined reference to `_showScreenLCD_P'
C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXA MPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:29: undefined reference to `_showScreenLCD_P'
C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXA MPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:31: undefined reference to `clearLCD'
es ist mein erster Beitrag und daher vorweg:
Vielen Dank für die viele Hilfe die ich im Forum durch nachlesen und SuFu ausreizen bisher erhalten habe!
Mein Robbi RP6 hat zu seinem Geburtstag ein AnagVision AV 1640 LCD Display 16 x 4 Zeichen bekommen. Es ist am LCD Port der Erweiterungsplatine M32 angeschlossen ( selbst gelötet *juhu* ) und funktioniert auch. Jetzt möchte ich mich an die Zeile 3 und 4 des Displays machen und versuche die RP6ControlLib.h zu verändern.
Meine C Kenntnisse beschränken sich leider immer noch auf das nötigste. Zu meinem Vorgehen:
Zeile 141 in der RP6ControlLib.h
void _showScreenLCD_P(const char *line1, const char *line2,[highlight=red:6b0ec1f91d]const char *line3,const char *line4);[/highlight:6b0ec1f91d]
hier den Übergabe-Parametern 2 weitere Zeilen hinzugefügt.
Zeile 143
#define showScreenLCD(__line1,__line2,__line3,__line4); ({_showScreenLCD_P((PSTR(__line1)),(PSTR(__line2)) ,[highlight=red:6b0ec1f91d](PSTR(__line3)),(PSTR(__line4))[/highlight:6b0ec1f91d]);})
auch hier 2 Zeilen eingefügt.
Hier habe ich die RP6ControlLib.c verändert um mehr Zeilen zu gestatten. Unter anderem die Zeilensprünge in der SetCursorPosLCD Funktion
void _showScreenLCD_P(const char *line1, const char *line2)
{
clearLCD();
writeNStringLCD_P(line1);
setCursorPosLCD(1, 0);
writeNStringLCD_P(line2);
setCursorPosLCD(2, 0);
writeNStringLCD_P(line3);
setCursorPosLCD(3, 0);
writeNStringLCD_P(line4);
}
/**
* Sets the cursor position on LCD.
*/
void setCursorPosLCD(uint8_t line, uint8_t pos)
{
pos |= 128;
if(line==1) pos += 0x40;
writeLCDCommand(pos);
if(line==1) pos += 0x10; // hier noch die ZeilenSprünge eingefügt
writeLCDCommand(pos);
if(line==1) pos += 0x50;
writeLCDCommand(pos);
}
Jetzt meine Frage:
Ich habe das alles mit AVR Studio 4 gemacht und wollte die Datei Compilieren. Da ich noch nie eine Header Datei verändert habe war ich nicht überrascht das ein Fehler auftritt aber wie kann ich das ändern ?
Wie ändere ich etwas an header dateien. Müssen die eventuell noch anders compiliert werden?
C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXA MPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:5: undefined reference to `initRP6Control'
C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXA MPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:8: undefined reference to `initLCD'
C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXA MPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:25: undefined reference to `_showScreenLCD_P'
C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXA MPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:27: undefined reference to `_showScreenLCD_P'
C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXA MPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:29: undefined reference to `_showScreenLCD_P'
C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXA MPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:31: undefined reference to `clearLCD'