mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Problem mit LCD


Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: SupaChris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Steffen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: SupaChris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ehde76 (ex-Steffen) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.