Gast
#351314
Hallo,
aus der Busyflag abfrage werde ich nicht ganz schau, da wenn ich das
Datenblatt eines LCDs verstanden habe, setzte ich die RW und EN PINs
auf logisch 1 und der PIN an welchem die Datenleitung DB7 angeschlossen
wird, wird als Eingang deklariert und abgefragt, ob dieser logisch 1
ist. Solange dieser auf logisch 1 ist, ist das LCD beschäftigt???
Nabe ich folgendes Problem, ich benutzte die 4-Bit LCD Ansteuerung,
d.h. ich schicke zuerst das lower nibble anschließend das upper nibble.
Ich mache eine Busyflag abfrage vor dem senden des lower nibbles ->
keine Probleme. Mach ich eine Busyflagabfrage vor dem senden des upper
nibbles, geht's nicht weiter, bzw. er kommt nicht aus der schleife
raus!
Kann mir vielleicht jemand helfen und sagen, ob die Routine korrekt
geschrieben wurde?
void check_busyflag(void) //Check if the LCD is still busy
{
DDRT &= ~(1<<DB7); // PIN DB7 as input
PTT|=(1<<RW)|(1<<EN); //Set the RW Pin to high
while(PTIT & (1<<DB7)) //Read the Input Pin, as long as this pin
is set to high
{
}
PTT &= ~(1<<RW); //LCD is no longer busy, reset the RW Pin
PTT &= ~(1<<EN);
DDRT |= (1<<DB7);
};