Gast
#260227
Ok, auch wenn das Thema schon hundert mal durchgezogen wurde ...
Ich versuche mit vier Bit ein LCD anzuwerfen. Dazu sende ich das
bekannte Muster 3 x und warte dann darauf, dass das Busy flag wieder
low wird. Und dafuer habe ich mir folgende Zeilen zusammengebastelt:
// enable Impuls
void lcd_doit()
{
E_PORT |=(1<<E_BIT);
_delay_ms(1);
E_PORT &=~(1<<E_BIT);
_delay_ms(1);
}
// Busy abwarten
void lcd_ready()
{
//Befehl Busy flag und Adresse auslesen
RW_PORT|=(1<<RW_BIT);
// absenden
lcd_doit();
// lcd 7 als Eingang
LCD_7_DDR &=~(1<<LCD_7_BIT);
// solange warten bis busy flag=low
while(LCD_7_PIN & (1<<LCD_7_BIT));
// R/W und LCD_7 zuruecksetzen
RW_PORT&=~(1<<RW_BIT);
LCD_7_DDR |=(1<<LCD_7_BIT);
}
Von der Idee her richtig?