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 :-)