Forum: Mikrocontroller und Digitale Elektronik MSP430G2231 Launchpad 7-Seg flackert


von Jonas E. (joenten)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich möchte das Programmieren erlernen und setze mich deshalb mit dem 
Launchpad und dem MSP430G2231 auseinadner. Als Übung will ich eine 
7-Segment Anzeige programieren und wollte deshalb die demensprechende 
Hardware dazu erstellen, die ich einfach auf das Launchpad aufklemmen 
kann.

Fakten:
Die Ansteuerung, der 7-Segment Anzeige, erfolgt durch eine Treibestufe 
mit MOSFET's welche am Gate jeweils von einem Pin angesteurt werden.
Ich benutze eine 7-Segment Anzeige welche eine gemeinsame Anode hat, 
welche ich durch VCC des µC versorge.

So weit so gut nun Folgendes Problem:
Ich habe das alles aufgebaut und ein ganz einfaches Programm zum Testen 
geschrieben.
1
#include <msp430g2231.h>
2
3
void main(void)
4
{
5
   WDTCTL = WDTPW + WDTHOLD;    // Watchdog Timer anhalten
6
7
  P1DIR = 0xFF;        //Alle Pins als Output
8
  P1OUT = 0;        //schalte alle LEDs aus
9
10
  BCSCTL3 |= LFXT1S_2;      // VLOCLK 
11
  IFG1 &= ~OFIFG;        // loeschen des Oszillator Fehler Flag
12
  BCSCTL2 |= SELM_3 + DIVM_3;    // MCLK ist VLO geteilt durch 8 = ca. 1500 Hz
13
  
14
  while (1)
15
  {
16
    P1OUT = BIT0;
17
    P1OUT = BIT1;
18
    P1OUT = BIT2;
19
    P1OUT = BIT3;
20
    P1OUT = BIT4;
21
    P1OUT = BIT5;
22
  P1OUT = BIT6;
23
    P1OUT = BIT7;
24
    }
25
}

Als ich nun alle 8 Segmente (mit Punkte-Segment) zusammen angesteurt 
habe, haben alle Segmente "geflackert". Und folgendes Oszilogramm 
ergeben sich als ich an einem Pin gemessen habe.
Sieht fast aus wie ein PWM???

Meine versuchten Fehlerbehebungen:
Ich habe das ganze zuerste ohne Treiber, mit einer direkten Ansteuerung 
(mit Vorwiderstand), versucht. Da habe ich vermutet, dass der µC nicht 
genug Strom liefern kann und deshalb zusammenbricht. Als Folge dessen 
haben ich es ein zweites mal mit Treiber aufgebaut doch das Problem war 
immer noch das gleiche.
Ich habe daraufhin vermutet, dass das Stromversorgungs IC des Launchpads 
diesen Strom nicht mit macht und habe die Treiber durch eine externe 
Stromversorgung versorgt...doch leider hat dies zu keiner Verbesserung 
geführt.

Nun weiß ich leider nicht mehr weiter, habe aber die Vermutung, dass ich 
irgendwas beim Programmieren vergesse habe.

Ich hoffe es kann mir jemand helfen.
Danke schonmal für die Antworten :-)

von Karl H. (kbuchegg)


Lesenswert?

Jonas Enderlin schrieb:

> Als ich nun alle 8 Segmente (mit Punkte-Segment) zusammen angesteurt
> habe, haben alle Segmente "geflackert".

Was meinst du mit 'geflackert'. Hast du das optisch gesehen?

> Und folgendes Oszilogramm
> ergeben sich als ich an einem Pin gemessen habe.

Ja, das würde ich in etwa als Oszillogramm an einem Pin bei diesem 
Programm
1
  while (1)
2
  {
3
    P1OUT = BIT0;
4
    P1OUT = BIT1;
5
    P1OUT = BIT2;
6
    P1OUT = BIT3;
7
    P1OUT = BIT4;
8
    P1OUT = BIT5;
9
  P1OUT = BIT6;
10
    P1OUT = BIT7;
11
    }

erwarten. Mit jeder neuen Zuweisung wird ein anderes Bit auf 1 gesetzt, 
so dass im schnellen Wechsel alle 8 Bits reihum einmal drann kommen. 
Betrachtet man 1 Bit, so ist es nur 1/8 der Zeit auf 1 und sonst 0. 
Deckt sich ganz gut mit deinem Oszillogram.


Ich sehe jetzt nichts Ungewöhliches. Das was du beobachtest, ist IMHO 
das was du programmiert hast.

von Helmut L. (helmi1)


Lesenswert?

Jonas Enderlin schrieb:
> while (1)
>   {
>     P1OUT = BIT0;
>     P1OUT = BIT1;
>     P1OUT = BIT2;
>     P1OUT = BIT3;
>     P1OUT = BIT4;
>     P1OUT = BIT5;
>   P1OUT = BIT6;
>     P1OUT = BIT7;
>     }

Du machst doch hier der Reihe nach die einzelnen Leds an. Und das reihe 
um.

Hast du einen Schaltplan von deinem Display?

von Jonas Enderlin (Gast)


Lesenswert?

Ja danke, da hatte ich wohl einen kleinen Denkfehler drin...bin erst 
ziemlich an Anfang.
Aber jetzt geht alles wunderbar :-)

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
Noch kein Account? Hier anmelden.