mikrocontroller.net

Forum: Compiler & IDEs lcd.c/lcd.h Probleme LCD mit Mega8 ansteuern (-:


Autor: Tzu Ying (tzu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Leute,  hab ein ähnliches Problem wie dieses hier möchte zum 
erstenmal mein LCD mit meinem mega8 ansteuern:

Beitrag "Fleurys LCD Library - undefined reference to..."
habe die Tips dort verfolgt nur leider kam ich nicht zum erfolg.

Meine Hardware:LCD 202A :: LCD-MODUL 20X2

http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=A52...


*Meine Fehlerausgabe im Debuger:*

../../../../../WinAVR-20100110/avr/include/lcd.c: In function 
'lcd_write':
../../../../../WinAVR-20100110/avr/include/lcd.c:109: error: 
'LCD_DATA_PORT' undeclared (first use in this function)
../../../../../WinAVR-20100110/avr/include/lcd.c:109: error: (Each 
undeclared identifier is reported only once
../../../../../WinAVR-20100110/avr/include/lcd.c:109: error: for each 
function it appears in.)
../../../../../WinAVR-20100110/avr/include/lcd.c: In function 
'lcd_read':
../../../../../WinAVR-20100110/avr/include/lcd.c:160: error: 
'LCD_DATA_PORT' undeclared (first use in this function)
../../../../../WinAVR-20100110/avr/include/lcd.c: In function 
'lcd_puts_p':
../../../../../WinAVR-20100110/avr/include/lcd.c:380: warning: implicit 
declaration of function 'PRG_RDB'
../../../../../WinAVR-20100110/avr/include/lcd.c: In function 
'lcd_init':
../../../../../WinAVR-20100110/avr/include/lcd.c:402: error: 
'LCD_DATA_PORT' undeclared (first use in this function)
make: *** [lcd.o] Error 1
Build failed with 5 errors and 1 warnings...



Das ist mein Code:
 
#include <avr/io.h>
#include <util/delay.h> // Headerdadei für delay Funktion
#include <avr/sleep.h>
#include <avr/pgmspace.h>
#include "lcd.h"


int main (void)
{
  
    
/* Initialisiere Display, Cursor aus */
    lcd_init(LCD_DISP_ON);

    /* loesche das LCD Display und Cursor auf 1 Zeile, 1 Spalte */
    lcd_clrscr();
        
    /* String auf Display anzeigen */
    lcd_puts("Hello world.");



}
*Anschluss vermutlich noch unintressant... :*

DB 4  ->  Pc2
DB 5  ->  Pc3
DB 6  ->  Pc4
DB 7  ->  Pc5

RS    ->  PB5
R/W   ->  PB6
E     ->  PB7


lcd.h:
....
#define LCD_LINES           2     /**< number of visible lines of the display */
#define LCD_DISP_LENGTH    20     /**< visibles characters per line of the display */
#define LCD_LINE_LENGTH  0x40     /**< internal line length of the display    */
#define LCD_START_LINE1  0x00     /**< DDRAM address of first char of line 1 */
#define LCD_START_LINE2  0x40     /**< DDRAM address of first char of line 2 */
#define LCD_START_LINE3  0x14     /**< DDRAM address of first char of line 3 */
#define LCD_START_LINE4  0x54     /**< DDRAM address of first char of line 4 */
#define LCD_WRAP_LINES      0     /**< 0: no wrap, 1: wrap at end of visibile line */


#define LCD_IO_MODE      1         /**< 0: memory mapped mode, 1: IO port mode */
#if LCD_IO_MODE
....


....
#define LCD_PORT         PORTC        /**< 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    2            /**< pin for 4bit data bit 0  */
#define LCD_DATA1_PIN    3            /**< pin for 4bit data bit 1  */
#define LCD_DATA2_PIN    4            /**< pin for 4bit data bit 2  */
#define LCD_DATA3_PIN    5            /**< pin for 4bit data bit 3  */
#define LCD_RS_PORT      PORTD     /**< port for RS line         */
#define LCD_RS_PIN       5            /**< pin  for RS line         */
#define LCD_RW_PORT      LCD_PORT     /**< port for RW line         */
#define LCD_RW_PIN       6            /**< pin  for RW line         */
#define LCD_E_PORT       LCD_PORT     /**< port for Enable line     */
#define LCD_E_PIN        7            /**< pin  for Enable line     */
....

Hoffe ihr könnt mir Helfen (-: *Wo liegt der Fehler? liegt es an der 
lcd.c die erkennt er doch ode? Müsste doch alles korrekt eingebunden 
sein?* An der lcd.c habe ich nichts verändert habe ich irgendwo ausem 
Netz mir geladen...


Gruß
TZU

Autor: Klaus T. (gauchi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du definierst nur LCD_DATAx_PORT, nicht LCD_DATA_PORT. Ich kenne die 
lcd.c nicht, weiss also nicht, wofür das gebraucht wird und was folglich 
drinstehen muss, aber es ist in dem Teil den Du zeigst nicht drin.

PRG_RDB soll anscheinend auch ein Makro sein, was nicht definiert ist.

Autor: Tzu Ying (tzu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zunächst erstmal Danke für deine antwort,

allerdings weiß ich damit grad nichts so richtig anzufangen also meine 
lcd.c ist unverändert muss man die lcd.c auch wie die lcd.h auch 
anpassen?

Hab es mti diesem Tutorial versucht:

http://www.rn-wissen.de/index.php/LCD-Modul_am_AVR

4-Bit Ansteuerung mit Busy(I/O Mode)


Debugger weißt auf diese Zeile in (beim ersten Fehler):

*DDR(LCD_DATA_PORT) = 0xFF;*

Habe ich vieleicht eine falsche *lcd.c* ???

Gruß
TZU

Autor: Tzu Ying (tzu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach doch nun hab ichs nachvollziehen können hatte wirklich eine lcd.h 
die nicht zu meiner lcd.c passt (-:


da fehlte eine zeile mindestens...


*Danke Klaus (-:*

Gruß
TZU

Autor: Tzu Ying (tzu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun ist mein Code angenommen allerdings sehe ich wie viel nur schwarze 
Balken in der Unteren Reihen habe mich verschrieben habe das:

LCD 162 mit 2x16
http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=A52...

und den mega8



* müsste ja im 4Bit Modus Kompatibel sein oder? *

* Stimmt was mit meiner lcd.h nicht? *

Autor: Tzu Ying (tzu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mann auch den fehler hab ich nun gefunden SRY Anschluss bzw 
Deklarartionsfehler!!


Gruß
TZU

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.