Hallo,
bin grad ein bisschen durcheinandergekommen bei der LCD
Ansteuerungsroutine, die es hier gibt.
Es wird ja erwartet, dass alle Pins an einem Port liegen und
aufeinanderfolgend sind. Das trifft bei mir auch zu, jedoch erwartet das
Programm für DB4-7 die Pins PB0-3. Bei mir liegt DB4-7 jedoch auf den
Pins PB3-0. Also genau umgekehrt.
Hab nun angefangen mir Bitweise die lcd-routines.c anzusehen bzw.
genauer was in der Funktion lcd_out() passiert.
z.B. wird mit
1 | lcd_out( LCD_SOFT_RESET );
|
auf DB4 und DB5 ein Bit gesetzt. Mit
1 | LCD_PORT |= (data>>(2-LCD_DB));
|
kriegt man das auch wieder hin. Werden nun jedoch andere Daten
übergeben, stimmt das alles nicht mehr.
1 | lcd_out( LCD_SET_FUNCTION |
|
2 | LCD_FUNCTION_4BIT );
|
Hier z.B. wird mit der obigen Veränderung Bit 3, anstatt Bit 1 gesetzt
(von 0 gezählt), also an DB4, anstatt an DB5.
Hat jemand eine ganz einfache Methode um das zu umgehen/anzupassen, oder
sollte ich mich lieber nach einer anderen Routine umsehen?