hallo, bis jetzt habe ich immer lange genug gewartet (delay) bis das LCD-Display auf jeden Fall bereit zum Datenempfang war, das gefällt mit aber nicht. Also habe ich eine Routine geschrieben welche einfach solange das Busy-Flag abfragt bis Bit 7 Low ist, das funktioniert aber bei mir nicht. Bin auch nicht so der Profi in C. Also folgendes Funktioniert nicht: void lcdbsy() { DDRC = 0; // Port A auf Eingang setzen PORTA = PORTA &~ (1<<DDA0); // RS low PORTA = PORTA | (1<<DDA1); // R/W low do { PORTA = PORTA &~ (1<<DDA2); // E Low _delay_ms(5); PORTA = PORTA | (1<<DDA2); // E High } while ((PORTC & 128) != 128); // Solange durchlaufen bis Bit 7 Low ist DDRC = 255; // Port A auf Ausgang setzen } Danke für einen Tip.
Da du mit PortC & 128 maskierst, müsstes du nicht auf 1 abfragen? so ala ... while !(PortC & 128);
PORTA = PORTA | (1<<DDA2); Da benutzt man normalerweise den operator "|=": PORTA |= 1 << DDA2; Das ist nämlich viel übersichtlicher als deine Version (entsprechendes gilt für &, dafür gibts &=).
Was für ein Device? Wenn's ein AVR Tiny oder Mega ist, dann sorgen deren Sync-Register am Input dafür, dass der Zustand vom Port gelesen wird, bevor E überhaupt High-Pegel kriegt.
PORTx ist ein register zum port beschreiben.... man kann das port register auch lesen, jedoch nur, um zu sehen was man hineingeschreiben hat wenn man an manchen ports, die man als eingang konfiguriert hat den evtl. vorhandenen pull-up einschalten will, muß man für den jeweiligen portpin eine 1 ins PORTx - register schreiben... wenn man als eingang konfiguriete ports lesen will, steht der wert, der am jeweiligen port anliegt im PINx - register!!!! du mußt beim lesen des port das PINA - register lesen, bis dessen bit 7 gesetzt oder gelöscht ist. im PORTx - register steht NICHT das, was am port (der als eingang konfiguriert ist) anliegt!!!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.