avr eclipse atmega128

Gast #4131300
Lesenswert?

Hallo zusammen,

ich versuche, ein LCD-Display in eclipse mit avr in c und einem Atmega 
128 zum Laufen zu bekommen. Ich verwende die Header-Datei von P. Fleury. 
Aber irgendwie gibt es Probleme beim Kompilieren der Datei. Hier meine 
main.c:

/*
 * main.c
 *
 *  Created on: 17.05.2015
 *      Author: arubuntu
 */
#include <avr/io.h>
//#include <avr/pgmspace.h>
#include <util/delay.h>
#include "lcd.h"

int main(void)
{
  _delay_ms(10);
/* initialize display, cursor off */
lcd_init(LCD_DISP_ON);

/* clear display and home cursor */
lcd_clrscr();

/* put string to display (line 1) with linefeed */
lcd_puts("LCD Test Line");

while(1)
{


}

return 0;
}


Der Kompiler sagt mir, dass es kein Verweis auf lcd_init, lcd_clrscr und 
lcd_puts gibt.

Wenn ich in den Einstellungen unter AVR C Linker die Library von Hand 
und den dazugehörigen Pfad eintrage kommt dann folgende Fehlermeldung:

/usr/lib/gcc/avr/4.8.2/../../../avr/bin/ld: cannot find -llcd.h

kennt jemand das Problem ?
Gast #4131310
Lesenswert?

Welche Library hat denn den Namen "lcd.h"? Lib's hören auf *.a".
P.F.-LCD besteht doch aus "lcd.h" und "lcd.c".
Beide einfach in's Source-Verzeichnis und CDT/AVR-Plugin erledigen den 
Rest. In kurz: "Build".
Gast #4131334
Lesenswert?

ah dacht ich mir. ich habe die lcd.h als include eingebunden. Aber 
gerade da sagt mir eclipse dann dass es ein nicht definierter Verweis 
auf

../src/main.c:16: Nicht definierter Verweis auf `lcd_init'
../src/main.c:28: Nicht definierter Verweis auf `lcd_clrscr'
../src/main.c:28: Nicht definierter Verweis auf `lcd_puts'

ist
Gast #4131513
Lesenswert?

Jetzt habe ich es hinbekommen, aber ich glaube, die folgende 
Schreibweise ist ned ganz richtig:

  _delay_ms(10);
/* initialize display, cursor off */
lcd_init(LCD_DISP_ON);

/* clear display and home cursor */
lcd_clrscr();

/* put string to display (line 1) with linefeed */
lcd_puts("********************");
lcd_puts("*     Display      *");
lcd_puts("*                  *");
lcd_puts("********************");

Genauso hätte ich glaube fast alles in eine Zeile schreiben können. Auf 
dem Display wird es richtig angezeigt, aber wie müßt ich es machen, 
damit auch immer nur eine Zeile beschrieben wird und nicht gleich die 
nächste, wenn ich mal zuviele Zeichen eingebe ??
Gast #4131530
Lesenswert?

Was verstehst du unter "einbinden"? Das darf nicht mit #include 
geschehen, nur die ".h"-Datei wird inkludiert. Liegt "lcd.c" im 
Source-Folder, dann werden alle ".c"-Dateien übersetzt und vom Linker 
gebunden. Doppeldefinition deutet auf "c-File inkludiert" hin, dann gibt 
es die LCD-Funktionen in 2 Objekt-Files.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren