www.mikrocontroller.net

Forum: Compiler & IDEs Fleurys LCD Library - undefined reference to...


Autor: SvenM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

probiere gerade mal mit ein paar librarys herum.

Bei der Ansteuerung eines LCDs bin ich auf die vom Peter Fleury
gestoßen, die schon interessante Steuerungen des Displays beinhaltet.

Bei meinem kleinen Beispielprogramm, welches nur nen par Zeichen
ausgeben soll, bekomme ich aber ein Problem beim Kompilieren.

Fehler sind folgende:

../auto_aktuell.c:12: undefined reference to `lcd_init'
../auto_aktuell.c:16: undefined reference to `lcd_gotoxy'
../auto_aktuell.c:17: undefined reference to `lcd_puts'

Mein Code ist:

#include <stdlib.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include "lcd.h"



int main (void)
{
  lcd_init(LCD_DISP_ON);
  for (;;)
  {
    lcd_gotoxy( 0, 0 );
          lcd_puts( "Test:" );
  }
}

Ich denke, ich habe alles Wichtige includiert. Das ganze programmiere
ich im AVR Studio 4. Patch etc für's Studio sind installiert. Ich bin
ratlos.

Was mach ich falsch? Was hab ich verpennt??

Wäre über Hilfe dankbar!

Gruß Sven

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde noch mal die Lcd.c einbinden. Ansonsten müsste es gehen. Alle
Einstellungen in der Lcd.h gemacht?

Autor: SvenM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey...

wenn ich LCD.C einbinde, habe ich folgende Fehler:

../lcd.c:120: error: `PORTA' undeclared (first use in this function)
../lcd.c:120: error: (Each undeclared identifier is reported only once
../lcd.c:120: error: for each function it appears in.)
../lcd.c: In function `lcd_write':
../lcd.c:141: error: `PORTA' undeclared (first use in this function)
../lcd.c: In function `lcd_read':
../lcd.c:222: error: `PORTA' undeclared (first use in this function)
../lcd.c: In function `lcd_init':
../lcd.c:528: error: `PORTA' undeclared (first use in this function)
make: *** [auto_aktuell.o] Error 1


Ist also auch keine Lösung! :-(

Sven

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doch, das ist die Lösung.

Wie hast du den 'lcd.c' eingebunden?

Der richtige Weg ist:

Dein 'auto_aktuell.c' von oben bleibt so wie du sie da oben
geschrieben hast.

Dann gehst DU im AVR-Studio her und teilst dem Projekt mit,
dass 'lcd.c' auch noch mit dazugehoert. Das machst du so:
Du klickst links im Projektbaum auf 'Source Files'. Und zwar
mit der rechten Maustaste. Im aufgehenden Menü wählst du aus:
'Add existing Source File(s)...' und zeigst AVR-Studio wo
denn die lcd.c liegt. Mittels OK wird dann lcd.c zum Projekt
hinzugefügt. Lässt du das Prjekt daraufhin 'builden', so wird
deine 'auto_aktuell.c' übersetzt, es wird 'lcd.c' übersetzt
und anschliessend werden die beiden Einzelteile zu einem
fertigen Programm zusammen-gelinkt (engl: to link - verbinden)

Autor: SvenM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohhh...

ihr beiden seid super. Hat so geklappt. Vielen Danke...

Hoffe ich kann bald auch mal helfen! :-)

Schöne Grüße
  Sven

Autor: eisenkoch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schade bei mir kplat das irgendwie nicht.....
ich bekomme immer nur die Meldung
lcd.c:120: error: `PORTA' undeclared (first use in this function)
schon wenn ich nur die lcd.c übersetze.....

Hat da jemand noch eine Idee

Andreas

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du

"#include <avr/io.h>"

vor

"#include "lcd.h""

stehen?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat dein Controller denn überhaupt einen Port A?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du die lcd.h konfiguriert, sodass
sie deinen Hardware-Gegebenheiten entspricht?
Du musst dem lcd.c schon mittteilen, wo denn
das LCD liegt und wie es angeschlossen ist.
Dazu gibt es am Anfang der lcd.h ein paar
#define-s. Die musst du anpassen!

Autor: eisenkoch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
besten Dank für die Anregungen, es war die lcd.h
*nun läst es sich kompelieren
-----
aber es passiert nicht
* Display zeigt 8 Balken an beim einschalten

<<<<<lcd.h>>>>>>>>>>>
#define LCD_PORT         PORTB        /**< port for the LCD lines   */
#define LCD_DATA0_PORT   LCD_PORT     /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT   LCD_PORT     /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT   LCD_PORT     /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT   LCD_PORT     /**< port for 4bit data bit 3 */
#define LCD_DATA0_PIN    3            /**< pin for 4bit data bit 0  */
#define LCD_DATA1_PIN    2            /**< pin for 4bit data bit 1  */
#define LCD_DATA2_PIN    1            /**< pin for 4bit data bit 2  */
#define LCD_DATA3_PIN    0            /**< pin for 4bit data bit 3  */
#define LCD_RS_PORT      LCD_PORT     /**< port for RS line         */
#define LCD_RS_PIN       4            /**< pin  for RS line         */
#define LCD_RW_PORT      LCD_PORT     /**< port for RW line         */
#define LCD_RW_PIN       5            /**< pin  for RW line         */
#define LCD_E_PORT       LCD_PORT     /**< port for Enable line     */
#define LCD_E_PIN        7            /**< pin  for Enable line     */
<<<<<lcd.h>>>>>>>>>>>

<<<<<<Pinbelegung>>>>>>>>>>>>
Pin &#956;C Displ.
1   -  VCC
2   -  GND
3   B0 DB 4
4   B1 DB 5
5   B2 DB 6
6   B3 DB 7
7   B4 RS
8   B5 RW
9   B7 E
<<<<<<Pinbelegung>>>>>>>>>>>>

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.