www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD mit ATMEGA128 und Peter Fleury


Autor: µC-noop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich versuch jetzt schon seit 2tagen mein LCD zum laufen zu 
bringen.
Ich verzweifel bald...

Daten:

ATMEGA128 externer 16MHz Clock

LCD Display HD44780 (lt. Datenblatt)
4 Zeilen; 20 Spalten.

Ich wollte den Code von Peter Fleury verwenden (nach der Methode... 
nicht das Rad selbst erfinden)

Pins sind richtig angeschlossen. Dabei benutze ich vier datenpins.

PA1 an LCD_Pin11; ... PA3 an LCD_Pin14
PA6 -- EN -- LCD_Pin6
PA5 -- RW -- LCD_Pin5
PA4 -- RS -- LCD_Pin4
LCD_Pin7...LCD_Pin10 sind offen.

Bei Peter Fleury habe ich im header folgendes angepasst:
#define XTAL 16000000UL 
#define LCD_LINES           4     /**< 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 */

alles andere im .h und .c habe ich gleich gelassen.

Mit folgender main wollte ichs zum laufen bringen:
#include <stdlib.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include "lcd.h"

#define F_CPU = 16000000UL;

int main(void){

  lcd_init(LCD_DISP_ON);
  lcd_clrscr();

  lcd_puts("..test..");

while(1){}
}

Folgendes Phänomän:
Ich schalte die Spannung ein, in der ersten und dritten zeile erscheinen 
Balken.
Ich lade das Programm auf den µC, das Display geht aus und tut gar nix.

Die lcd.c und .h habe ich in das projekt im AVR studio eingebunden, 
daran liegts schonmal nicht.

Danke schonmal für eure hilfe

Gruß

Autor: µC-noop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das zu Trivial, oder zu viel Text???
könnt echt hilfe brauchen...

gruß

Autor: Interrupter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon mal am Kontrastpoti gedreht?
Die Lib. ist O.K. habe keine Probleme damit.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil du meinst alles andere hast du so gelassen: hier hast den Port aber 
auf deinen gesetzt bzw du alles so verbunden das es so wies original 
drin steht passt?
#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    0            /**< pin for 4bit data bit 0  */
#define LCD_DATA1_PIN    1            /**< pin for 4bit data bit 1  */
#define LCD_DATA2_PIN    2            /**< pin for 4bit data bit 2  */
#define LCD_DATA3_PIN    3            /**< 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        6            /**< pin  for Enable line     */

mit PA1 meinst wahrscheinlich PA0 oder? Sons wärns ja nur drei Pins :D

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kontrasteinstellung würde ich ausschliessen (obwohl es grundsätzlich ein 
wertvoller Tipp ist). µC-noop schreibt, dass anfangs (bei Power-On) zwei 
dunkle Zeilen sichtbar sind, die anschliessend verschwinden. Das wäre 
bei ungünstiger Kontrasteinstellung nicht der Fall.

> LCD_Pin7...LCD_Pin10 sind offen.
Verbinde diese Leitungen (restl. Datenleitungen des LCD-Controllers?) 
am LCD mal mit GND, damit sie nicht stören bzw. definiert auf 0 
gesetzt sind.

Du kompilierst auch mit eingeschalteter Optimierung, damit die 
delay-Funktionen korrekt arbeiten? Hast du schon eine Warteschleife vor 
dem lcd_init() probiert? Nicht dass du den eigenständigen Power-On-Reset 
des LCD-Controllers unterbrichst und der danach nichts sinnvolles mehr 
macht.

Hast du einen Link zu dem Datenblatt des konkret von dir verwendeten 
LCDs parat?

Add wg. dem Posting von Thomas und der Zeile
#define LCD_PORT         PORTC        /**< port for the LCD lines   */

Du betreibst den Atmega128 auch als Atmega128 und nicht als Atmega103?
http://www.mikrocontroller.net/articles/AVR_Checkl... 
Ohne es geprüft zu haben: es könnte im M103C-Modus Schwierigkeiten mit 
PORTC geben

Autor: µC-noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die antworten,

habs problem gefunden:
peinlich peinlich
war ne kalte lötstelle, natürlich ausgerechnet am EN...

nochmal danke
Gruß

Autor: Dirk (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hey,

habe leider das selbe Problem :-(

Alle Leitungen mehrmals geprüft...
Vor dem initialisieren erscheint der Balken und danach passiert nichts 
mehr..

Der Atmega32 bleibt aber nicht hängen ;-)
Wenn das Display nicht angeschlossen ist, macht er auch nicht weiter, 
also sollte das mit dem WaitBusy schonmal funktionieren...

Hat jemand eine Idee?

Hab meine lcd.h auch mal angehängt

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.