- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: [gelöst] RP6 Display (AnagVision AV1640) an M32 header

  1. #1

    [gelöst] RP6 Display (AnagVision AV1640) an M32 header

    Anzeige

    Praxistest und DIY Projekte
    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

    Code:
    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?

    Code:
    C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXAMPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:5: undefined reference to `initRP6Control'
    C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXAMPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:8: undefined reference to `initLCD'
    C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXAMPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:25: undefined reference to `_showScreenLCD_P'
    C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXAMPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:27: undefined reference to `_showScreenLCD_P'
    C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXAMPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:29: undefined reference to `_showScreenLCD_P'
    C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXAMPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:31: undefined reference to `clearLCD'

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @Blaxxun:

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

    Gruß Dirk

  3. #3
    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:
    Code:
    C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXAMPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:5: undefined reference to `initRP6Control'
    C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXAMPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:8: undefined reference to `initLCD'
    C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXAMPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:25: undefined reference to `_showScreenLCD_P'
    C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXAMPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:27: undefined reference to `_showScreenLCD_P'
    C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXAMPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:29: undefined reference to `_showScreenLCD_P'
    C:\Robbi\Prog\lib\RP6Examples_20080915\RP6BASE_EXAMPLES\Start\default/../../../RP6CONTROL_EXAMPLES/Example_01_LCD/Start.c:31: undefined reference to `clearLCD'

  4. #4
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad