MSP430 Problem mit LCD

Gast #394655
Lesenswert?

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
Gast #394656
Lesenswert?

Öö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...
Gast #394658
Lesenswert?

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.
Gast #394659
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren