PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [gelöst] RP6 Display (AnagVision AV1640) an M32 header



Blaxxun
09.08.2010, 17: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'

Dirk
09.08.2010, 19:43
@Blaxxun:

Vielleicht hilft dieser Post:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=46241

Gruß Dirk

Blaxxun
09.08.2010, 23:20
Danke Dirk für deine schnelle Antwort!

Unter anderem dieser Beitrag hat mir geholfen. Nur leider habe ich das Problem, dass nachdem ich die Datei verändert habe das Compilieren meiner LCD Test Datei fehlschlägt mit dem Worten:


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'

Blaxxun
10.08.2010, 00:17
Ich habs gelöst !

Es lag an meinen C-Kenntnissen. Hier für alle die vielleicht ein ähnliches Problem haben:

Ich hatte aus einem anderen Projekt noch alte header Dateien drin, diese haben Funktionen gleichen Namens zur Verfügung gestellt und den Konflikt ausgelöst.

Gruß, Blaxxun