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
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.
Moin, wie Knut schon schrieb, Doku lesen. Wie ist das Display denn elektrisch vertütelt sprich 3,3V zu 5V MfG
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...???
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?
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
Hast Du einen Logikanalysator oder ein Oszi? Dann könntest Du mal gucken, ob überhaupt ´was rauskommt. Wie schnell ist Dein XMega getaktet?
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
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...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.