[AVR] LCD an veränderten Pins ansteuern

OP #1054747
Hallo,

ich benutze die LCD-Routine aus dem AVR-GCC Tutorial, da ist der Code 
aber für die Datenpins PD0-PD3 angepasst, jetzt habe ich aber das 
problem das ich auch den USART benötige und somit die PINS PD0 und PD1 
schon belegt sind, also habe ich ich jetzt die Datenpins auf PD4-PD7 
verlegt, was natürlich eine Änderung veränderung im bestehenden Code 
benötigt, jetzt habe ich die zuweisungen nach LCD_PORT &= 0x0F; 
geändert, funktionieren tut es aber nicht, es kommen nur kryptische 
zahlen am LCD an, vllt. kann mir jemand einen Tipp gegeben was ich 
falsch mache.
#1054753
Pins vertauscht? Adressierung korrekt? Aufschluss "kann" die 
Zeichentabelle des Datenblattes bieten, da kann man ablesen, was man 
vertauscht hat :)

Reagiert es denn überhaupt sauber auf die Commands, also Steuerbefehle 
wie CURSOR HOME etc???

Klaus.
OP #1054761
Klaus R. wrote:
> Pins vertauscht? Adressierung korrekt? Aufschluss "kann" die
> Zeichentabelle des Datenblattes bieten, da kann man ablesen, was man
> vertauscht hat :)
>
> Reagiert es denn überhaupt sauber auf die Commands, also Steuerbefehle
> wie CURSOR HOME etc???
>
> Klaus.

Ne, reagiert im mom. nur mit kryptischen Zeichen, als ich die datenpins 
des LCD noch wie im tutorial beschrieben an PD0-PD3 angeschlossen hatte 
funktionierte alles wunderbar, ich denke eher ich hab da einen 
denkfehler bei der anpassung der bestehenden lcd-routine, habe ja bis 
jetzt nur alle zeilen mit :LCD_PORT &= 0xF0 in LCD_PORT &= 0x0F 
umgeändert, weiß nicht ob das reicht.

Pinbelegung ist im moment:

RS PD2
EN PD3
DB4 PD4
DB5 PD5
DB6 PD6
DB7 PD7
#1054781
...weiß nicht ob das reicht.

-> Rate mal...

Du musst erstmal den Port initialisieren, also ob die Pins ein oder 
ausgänge sind, dann ob mit oder ohne pullup und ob, falls ausgang, hi 
oder low.

woher soll der uC wissen, welche daten/commandleitung überhaupt an 
welchen pin angeschlossen ist???

also, tasse tee kochen, hinsetzen und NOCHMAL alles lesen im avr 
tutorial - denn verstanden hast du es scheinbar noch nicht, oder?!

Klaus.
OP #1054813
Klaus R. wrote:
> ...weiß nicht ob das reicht.
>
> -> Rate mal...
>
> Du musst erstmal den Port initialisieren, also ob die Pins ein oder
> ausgänge sind, dann ob mit oder ohne pullup und ob, falls ausgang, hi
> oder low.
>
> woher soll der uC wissen, welche daten/commandleitung überhaupt an
> welchen pin angeschlossen ist???
>
> also, tasse tee kochen, hinsetzen und NOCHMAL alles lesen im avr
> tutorial - denn verstanden hast du es scheinbar noch nicht, oder?!
>
> Klaus.

Ne so ganz habe ich das noch nicht verstanden, kann mir denn mal jemand 
diese Zeile erläutern:
LCD_DDR = LCD_DDR | 0x0F | (1 << LCD_RS) | (1 << LCD_EN);

1 << LCD_RS und 1 << LCD_EN ist klar, also die Pins PD2 und PD3 als 
Ausgang initialisieren, aber was wird mit dem 0x0F gemacht, ein 
bestimmter bereich ausmaskiert?
OP #1055542
Habe es jetzt selbst geschafft, den bestehende code so umzuändern das er 
für meine pinbelegung passt, man lernt so warscheinlich viel mehr als 
wenn man einfach die lösung serviert bekommt, das habt ihr euch wohl 
auch gedacht, deshalb ein dank an alle die mir geholfen haben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.