Also
Code:
Config Lcdpin = Pin , Rs = Portb.0 , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portd.6 , E2 = Portd.7
lässt vermuten dass RS an PB0 hängt und D4-D7 des LCDs an PD5 - PD4 hängen. Das folgende Konstrukt kann also gar nicht funktionieren!
Code:
#define LCD_DATA_PORT PORTD //Port on which the 4 LCD datapins are connected to
#define LCD_DATA_OFFSET 2 //Offset for data pins (e.g. 0 = PIN0..PIN3, 2 = PIN2..PIN5)
#define LCD_CTRL_PORT PORTD //PORT on which E1, E2, RS and RW are connected to
#define LCD_PIN_RW 4
#define LCD_PIN_RS 0
#define LCD_PIN_E1 6
#define LCD_PIN_E2 7
Zunächst sollten D4-D7 auch aufsteigend an einem Port hängen. D4 an PD4, D5 an PD5 usw. Dann kannst du LCD_DATA_OFFSET auf 4 und LCD_DATA_PORT auf PORTD setzen.
RS, E1 und E2 würde ich auf PD0, PD1, PD2 und den RW-Pin eventuell auch auf PD3 setzen, da die Lib die du verwenden möchtest sicherlich auch das Busy-Flag abfragt.
Dann sollte das Ganze so aussehen :
Code:
#define LCD_DATA_PORT PORTD //Port on which the 4 LCD datapins are connected to
#define LCD_DATA_OFFSET 4 //Offset for data pins (e.g. 0 = PIN0..PIN3, 2 = PIN2..PIN5)
#define LCD_CTRL_PORT PORTD //PORT on which E1, E2, RS and RW are connected to
#define LCD_PIN_RW 3
#define LCD_PIN_RS 0
#define LCD_PIN_E1 1
#define LCD_PIN_E2 2
Anmerkung: Toolchain-Einstellungen -> Symbols kann man F_CPU für das ganze Projekt definieren. Dazu ein Symbol anlegen und F_CPU=8000000UL eintragen und fertig ist die Laube. Zu viele F_CPU-Definitionen werden irgendwann unübersichtlich und führen zu langen, nervenden und vor allem frustrierenden Fehlersuch-Aktionen die man sich selbst ersparen sollte.
Lesezeichen