PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD Steuerung auf AT91SAM7x



galdo
26.05.2007, 16:22
Hallo,

ich habe ein Problem mit der LCD-Steuerung. Wenn ich manuell die benötigten Datenbits setze klappt alles wunderbar, will ich das ganze aber in der Form automatisieren, dass ich nur einen Hex-Wert in die Funktion geben kann, macht das Display ganz komische Sachen (Zeigt schwarze / weiße Blöcke an, oder Zeichen, die ich nicht hex-codiert habe).

Wer hat eine Idee?



unsigned char data;
data = 0x11;

AT91F_PIO_SetOutput(arm_portb, lcd_rs); //data mode
AT91F_PIO_ClearOutput(arm_portb, lcd_rw);
for (j=0; j < 8; j++) {
if ((data & (1<<j)) == 0) {
//mask the j-th bit and set or clear it
AT91F_PIO_SetOutput(arm_porta, (1 << j));
} else {
AT91F_PIO_ClearOutput(arm_porta, (1 << j));
}
}
enable_lcd();


Beim ARM kann man leider nicht auf den ganze Port zugreifen, so wie ich das weiß... - deswegen mach ich das bitweise...

Hat jemand eine Idee?

Danke GALDO

MartinITM
29.05.2007, 22:32
Hio,

teste doch mal

for (j=0; j < 8; j++) {
if ((data & (unsigned char)(0x01U<<j)) == 0) {
//mask the j-th bit and set or clear it
AT91F_PIO_SetOutput(arm_porta, (unsigned char)(0x01U << j));
} else {
AT91F_PIO_ClearOutput(arm_porta, (unsigned char)(0x01U << j));
}
Evtl. macht der Compiler bei der Optimierung was falsch?

LG
Martin

galdo
29.05.2007, 22:36
Habs bereits gelöst - aber danke für die Hilfe! Da waren mehrere Denkfehler im Code (siehe: http://wiki.galdo.de/doku.php?id=microcontroller:arm_code_lcd)

Trotzdem vielen Dank für die Hilfe
Galdo