Xmega mit 4x40 LCD

Gast #2004512
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
Angehängte Dateien:
Gast #2005170
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...???
Gast #2005510
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
Gast #2006310
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren