Hallo zusammen, ich habe folgendes Problemchen. Ich habe ein 4 mal 20 Zeilen Display an meinen msp430f149 angeschlossen. Funktioniert auch soweit. Nun habe ich zwei Tasten, die auch am Controller hängen "Display Clear" gehangen. Wenn nun Text auf dem Display steht und ich die Taste drei drücke, wird das Display gelöscht. Wenn Text auf dem Display steht und ich die erste taste drücke, wird das Display nicht gelöscht. Wenn auf dem Display nix steht und ich die erste Taste drücke, wird auch mit der Taste 1 das Display gelöscht. (Erkennbar, dass ich dann auch noch kurz einen Txt ausgeben lasse). Die Steuerleitungen E RW RS vom LCD hängen an 5.0 - 5.2. Die Taster hängen an 5.3-5.7. Wäre toll, wenn jemandem auffallen würde, woran das wohl liegen könnte. Gruß Steffen WDTCTL = WDTPW + WDTHOLD;// Watchdog Timer stoppen P1DIR=0xFF; // Port 1 = Output (6 LEDs) P4DIR=0xFF; // Port 4 = Output (8 Datenleitungen LCD) P5DIR=0x07; // Port 5 = Input (5 Taster) // Port 5 = Output (RS, R/W und E vom LCD //(entspricht P 5.0, 5.1, 5.2)) P1SEL=0x00; // Alle Ports als GPIO nutzen P4SEL=0x00; // Alle Ports als GPIO nutzen P5SEL=0x00; // Alle Ports als GPIO nutzen P1IE=0x00; // Interrupt ausmachen P1OUT=0x00; // Initial alle LED's aus P5OUT=0x01; // Initial E (clock) auf high, RS, R/W low P4OUT=0x00; // Ports mit null initialisieren wait(30000); // Init-zeit des display ist ca. 15 ms LCDInit(); // LCD initialisieren ... LCDClear(); // und dann noch löschen und Cursor an den // Anfang zurück
Ööhhmm...also ich weiß nach Lesen deines Beitrags nichtmal, wo das Problem liegt. Kein Mensch weiß, wie deine Funktionen LCDInit() und LCDClear() aussehen. Niemand weiß, was du in der Taster-ISR machst. Und aus deiner Beschreibung werd ich auch nicht wirklich schlauer...
Hier dann mal meinen kompletten Code. Taster 1 und 4 sollen ja das Display clearen. Bei Taster 4 funktioniert das auch immer. Taster eins funktioniert nur, wenn das Display eh schon leeer ist. Gruß Steffen
Hmm...das ist ja übel durcheinander. Wie kommt man drauf, solche Tasterabfrage als Polling zu machen? Das gehört in nen Interrupt. Aber an P5 geht beim INT. Aber so sieht man doch nich durch, kein Wunder, dass man da beim Programmieren durchnander kommt. Mach ma die Tasterabfrage (wenn die denn an P5 bleiben müssen) lieber in einer Switch Case Anwendung. Ich nehme an, dass es an der fehlenden Entprellung liegen könnte. Also mal Tasten entprellen.
so, nachdem hier wieder ein Steffen aufgekreuzt ist, änder ich mal meinen namen, aug, aug... ansonsten, wie chris schon sagt, ordentliche isr, tasten entprellen (daran liegt es aber bestimmt nicht) und mal code überdenken... das geht auch kürzer und nicht so umständlich, wer soll bei dem durcheinander einen fehler finden... ausserdem kommen mir einige stellen sehr bekannt vor (mathar.com?)... gutes tutorial, jedoch ist der lcd-teil nicht gerade seine kür... das soll jetzt aber nix gegen sebastian sein, seine seite ist insgesamt 'ne tolle sache! gruß next_state <= ehde76
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.