mikrocontroller.net

Forum: Compiler & IDEs LCD Problem


Autor: Gizmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute

sorry das ich nun schon wieder mit dem lcd anfange, aber ich bekomm es
einfach nicht hin.

Ausgangssituation:
ATMEL STK 500
AT MEGA 32
44780 Kompatiebles LCD

Pinbelegung:

PortB stk500        44780 LCD Controller

     PB4 ------------- PIN4  (RS)
     PB6 ------------- PIN5  (R/W)
     PB5 ------------- PIN6  (E)
     NC  ------------- PIN7  (DB0)
     NC  ------------- PIN8  (DB1)
     NC  ------------- PIN9  (DB2)
     NC  ------------- PIN10 (DB3)
     PB0 ------------- PIN11 (DB4)
     PB1 ------------- PIN12 (DB5)
     PB2 ------------- PIN13 (DB6)
     PB3 ------------- PIN14 (DB6)

das LCD soll im 4 Bit Modus betrieben werden
der Compiler compiliert alles schön keine Probleme wenn ich auf
programm gehe, flackert das lcd kurz auf, aber sonst passiert nix.

ich habe in der lcd.h den atmega 32 folgender maßen ergänzt:

#elif defined(_AVR_AT90S4414_) || defined(_AVR_AT90S8515_) ||
defined(_AVR_ATmega64_) || \
      defined(_AVR_ATmega8515_)|| defined(_AVR_ATmega103_) ||
defined(_AVR_ATmega128_) || \
      defined(_AVR_ATmega161_) || defined(_AVR_ATmega162_) ||
defined(_AVR_ATmega32_)

das ist doch inordnung oder ?

mein PIN Definitionen in der lcd.h sehen so aus:

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

ist das richtig ?

was habe ich falsch gemacht ?
habe mehr mals Beispiele aus dem Forum ausprobiert und weiß absolut
nicht mehr weiter.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Busy?  Großer Fehler.  Dann musst du exorbitant lange warten
(viel länger als normalerweise nötig) um sicher zu gehen, dass du
auch wirklich das nächste Kommando rausschicken darfst.

Autor: Gizmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was heist das jetzt ?

Autor: Peter Fleury (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Gizmo

Du musst nicht einfach ATmega32 irgendwo in lcd.h einflicken.
Für was diese #elif Abfrage ist, steht im Kommentar drunter.

Die LCD_xxx_PIN nummern müssen natürlich mit den effektiven Pins vom
STK500 übereinstimmen:

Also wenn du oben schreibt:
>  PB4 ------------- PIN4  (RS)

muss die entsprechende Definition lauten:
#define LCD_RS_PIN       4

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

Bewertung
0 lesenswert
nicht lesenswert
hier mal meine LCD.h hab alles eingestellt, aber es funzt trotzden net

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht die Pin-Nummer am Chip, sondern die Bitnummer am Port. Wenn DB4 an
PB0 hängt, dann heisst das PB0 oder einfach 0 und nicht Pin 11 vom
Gehäuse.

Autor: Gizmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in welcher Zeile stellt man das ein ?

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn
    PB0 ------------- PIN11 (DB4)
dann nicht
    #define LCD_DATA0_PIN    4
und nicht
    #define LCD_DATA0_PIN    11
sondern
    #define LCD_DATA0_PIN    PB0
weil: Fleury's Bit 0 ist des LCDs DB4.

Den Rest darfst Du selber rauskriegen.

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.