mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Xmega mit 4x40 LCD


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

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

versuche verzweifelt ein 4x40 Display mit 2 Controllern am Xmega128 zum 
laufen zu bringen.
Das angehängeten Projekt will ich von atmega auf Xmega umschreiben, 
läuft so aber nicht.
Das Problem liegt vermutlich nur am ändern der Port config in der lcd.h 
und lcd.c
Wo gehören PORTD.IN und PORTD.DIR rein?
Kann mir jemand weiterhelfen?

Grüße Johu

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PORTx.IN entspricht dem alten PINx, PORTx.DIR wäre DDRx. Schreiben geht 
mit PORTx.OUT oder PORTx.OUTSET oder PORTx.OUTCLR. Darüberhinaus kann 
man 4 virtuelle Ports definieren, die direktes Bitschreiben/-Lesen 
unterstützen. En wenig Lektüre der Datenblätter/Manuals zum XMega könnte 
jedoch nicht schaden.

Autor: Sauger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

wie Knut schon schrieb, Doku lesen. Wie ist das Display denn elektrisch 
vertütelt sprich 3,3V zu 5V

MfG

Autor: Johu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin moin,

der Unterschied in der Portdefinition beim Xmega hab ich ja soweit,
Das Display ist VCC an 5V, die Datenleitungen über 3,3V vom Xmega.

Mit diversen anderen LCD routinen läuft das Display bereits, ich möchte 
nur speziell den obigen code zum laufen bringen.

Auszug original Portdefinition in der lcd.h

#define PIN(x) (*(&x - 2))  /* address of data direction register of 
port
#define DDR(x) (*(&x - 1))  /* address of input register of port

Habe bisher PIN(x) mit PORTD.IN und DDR(x) mit PORTD.DIR ersetzt,
so läuft das aber leider noch nicht...???

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johu schrieb:
> Habe bisher PIN(x) mit PORTD.IN und DDR(x) mit PORTD.DIR ersetzt,
> so läuft das aber leider noch nicht...???

Hast Du auch PORTx in PORTx.OUT geändert?

Autor: Johu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, hab ich gemacht. Sowie natürlich auch die Pins an mein LCD 
angepasst.

#define LCD_PORT         PORTD.OUT        /**< 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    PIN0            /**< pin for 4bit data bit 0 
*/
#define LCD_DATA1_PIN    PIN1            /**< pin for 4bit data bit 1 
*/
#define LCD_DATA2_PIN    PIN2            /**< pin for 4bit data bit 2 
*/
#define LCD_DATA3_PIN    PIN3            /**< pin for 4bit data bit 3 
*/
#define LCD_RS_PORT      LCD_PORT     /**< port for RS line         */
#define LCD_RS_PIN       PIN4            /**< pin  for RS line 
*/
#define LCD_RW_PORT      LCD_PORT     /**< port for RW line         */
#define LCD_RW_PIN       PIN6            /**< pin  for RW line 
*/
#define LCD_E_PORT       LCD_PORT     /**< port for Enable line     */
#define LCD_E_PIN        PIN5            /**< pin  for Enable 1     */
#define LCD_E2_PIN       PIN7            /**< pin  for Enable 2     */

Ich suche den Fehler nach wie vor in der lcd.c!
Eventuell arbeiten Funktionen die PIN(x) und DDR(x) verwenden nicht
wenn ich die definition in PORTD.IN und PORTD.DIR geändert habe.
Kann das sein?

Es stehen nur schwarze Balken in der 1. und 3. Zeile, das Display
wird also auch nicht mal intialisiert.

Danke und viele Grüße

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du einen Logikanalysator oder ein Oszi? Dann könntest Du mal 
gucken, ob überhaupt ´was rauskommt. Wie schnell ist Dein XMega 
getaktet?

Autor: Johu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

Hab nen 16MHz Quarz und verschiedene Taktraten getestet, aber keine 
Veränderung.

An ein Oszi kann ich erst wieder ab Montag, im Geschäft. :-)
Hab noch nen anderen code der mit dem 4x40 läuft, d.h. die Hardware 
passt.

Viele Grüße

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johu schrieb:
> Hab noch nen anderen code der mit dem 4x40 läuft, d.h. die Hardware
> passt.

Dann bleib doch bei dem Code, der geht. Oder vergleiche mal dessen 
Inhalt mit dem, der nicht geht...

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.