Hallo, ich habe mal eine Frage. Ich habe ein Programm geschrieben und setze damit, verschiedene Port und Pins High. Das problem an der Sache ist, dass alle funktioniert. Nur Port1.4 und Port1.5 tuen das nicht, was sie sollen. Alle anderen funktionieren einwand frei. Ich bin mal mit dem Oszi dran und habe es gemessen. Sobald ich das Programm laufen lassen, bekommt er sofort eine Highflanke für wenige ms und fällt dann wieder ab und bleibt dann auf low. Da ich ein zweites Board habe, dachte ich, das vielleicht zufällig diese beiden Pins defekt sind, aber genau das selbe beim zweiten Board. Kann mir jemand weiter helfen?? Es handelt sich um das Board MSP430F5529 Brauchen die beiden Pins eine besondere Einstellung, oder muss ich was ausschalten oder einen Jumper versetzen. Im Datenblat finde ich leider nichts dazu. Kennt sich jemand aus damit?
Klaus schrieb: > Kann mir jemand weiter helfen?? Der Fehler könnte im unbekannten Sourcecode liegen...
Klaus schrieb: > Brauchen die beiden Pins eine besondere Einstellung, oder muss ich was > ausschalten oder einen Jumper versetzen. Nein, diese beiden Pins verhalten sich völlig normal, wie alle anderen Pins, wenn sie richtig konfiguriert werden. Letzteres ist offensichtlich nicht der Fall.
Was ist denn an den Pins angeschlossen?
Klaus schrieb: > Es handelt sich um das Board MSP430F5529 Da gibts nur eins? Glaube ich nicht. Ansonsten: Siehe Schaltplan. An den Pins könnte ja auch noch andere Hardware hängen.
Lothar M. schrieb: > Klaus schrieb: >> Kann mir jemand weiter helfen?? > Der Fehler könnte im unbekannten Sourcecode liegen... Der Sourcecode ist nicht das Problem. Habe auch einen ganz einfachen code benutzt: #include <msp430.h> #include <stdint.h> #define LED1_HIGH P1OUT = P1OUT|BIT4 #define LED2_HIGH P1OUT = P1OUT|BIT5 int main(void) { WDTCTL = WDTPW | WDTHOLD; P1DIR = 0xFF; P2DIR = 0xFF; while (1) { LED1_HIGH; LED2_HIGH; } }
Bei sowas würde ich auch prinzipiell erstmal von einem Konfigurationsfehler ausgehen. Ohne selbst Ahnung von dem uC zu haben, sehe ich im Datenblatt auf Anhieb, das die Pins alternative Funktionen haben: TA0 CCR3 capture: CCI3A input compare: Out3 output TA0 CCR4 capture: CCI4A input, compare: Out4 output Sicher, dass dir da nicht ein Capture / Compare eines Timers reinhackt? Würde zu der Beobachtung passen, dass sich der Pegel nach einer bestimmten Zeit ändert.
:
Bearbeitet durch User
Clemens L. schrieb: > Nein, diese beiden Pins verhalten sich völlig normal, wie alle anderen > Pins, wenn sie richtig konfiguriert werden. Letzteres ist offensichtlich > nicht der Fall. Joe F. schrieb: > Was ist denn an den Pins angeschlossen? Ich bin mit einer LED dran und sie leuchten kurz auf und das wars. Auch mit dem OSZI, kurzes High Signal und das wars.
lass mal die pins togglen, also an udn asu und dann teste das im debug modus aus, falls du debuggen kannst . code sieht prinzipiell gut aus, liegt wahrscheinlich an irgendeinem Detail. vlt schreibst du den Code mal aus ohne Makro. also P1DIR = 0xFF; P1OUT |= BIT4 + BIT5; P1OUT ^= BIT4; irgendeine Reaktion wirst du bekommen. die MSP pins wollen unter 2mA rausgeben, test mal lieber ohne LED, außer du bist dir bei deinen Strömen im klaren.
Stefan S. schrieb: > also P1DIR = 0xFF; > P1OUT |= BIT4 + BIT5; > > P1OUT ^= BIT4; Habe ich gemacht, genau das selbe. Alle anderen Ports funktionieren Einwand frei. Kann an jede eine Led anhängen und die leuchten dauerhaft, nur diese beiden nicht.
Stephan W. schrieb: > Sicher, dass dir da nicht ein Capture / Compare eines Timers reinhackt? > Würde zu der Beobachtung passen, dass sich der Pegel nach einer > bestimmten Zeit ändert. Nein, das sind ja auch noch zwei andere Pins mit der selben Eigentschaft und die schalten dauerhaft.
Wie groß ist der Vorwiderstand an der LED? Nachtrag: ich kenne den Prozessor auch nicht, aber habe ein Stück Code im Netz gefunden: http://janvitek.org/vitekj/490s11/Schedule_files/doc.pdf Da wird noch zusätzlich beim Initialisieren die drive strength auf "full" gesetzt, und der Port in die "I/O function" versetzt.
1 | //Switch S1
|
2 | P2SEL &= ~0x40; //I/O Function |
3 | P2DIR &= ~0x40; //P2.6 as input |
4 | P2REN |= 0x40; //Enable pull resistor |
5 | P2OUT |= 0x40; //Enable Pull-Up resistor |
6 | |
7 | //LED 1
|
8 | P1SEL &= ~0x01; //I/O Function |
9 | P1DIR |= 0x01; //P1.0 as output |
10 | P1DS |= 0x01; //Enable Full drive strength |
auf deinen Fall übertragen würde das dann wohl bedeuten:
1 | int main(void) |
2 | {
|
3 | WDTCTL = WDTPW | WDTHOLD; |
4 | P1DIR = 0xFF; |
5 | P2DIR = 0xFF; |
6 | |
7 | P1SEL = 0x00; // I/O function |
8 | P2SEL = 0x00; |
9 | |
10 | P1DS = 0xFF; // enable full drive strength |
11 | P2DS = 0xFF; |
12 | |
13 | LED1_HIGH; |
14 | LED2_HIGH; |
15 | |
16 | while (1) |
17 | ;
|
18 | }
|
:
Bearbeitet durch User
Da du ein Scope hast, mach einen einfachen Versuch: Ersetze eine LED durch einen 10kOhm Widerstand und sieh dir den Ausgang mit dem Scope an.
Clemens L. schrieb: > Klaus schrieb: >> Auch mit dem OSZI, kurzes High Signal und das wars. > > Wie lange? 32 ms? Also, genau Zeit kann ich nicht messen, weil mein Oszi, diese Funktion nicht unterstützt, aber es ist wirklich nur ein kurzes aufleuchten. Mehr nicht
Georg G. schrieb: > Da du ein Scope hast, mach einen einfachen Versuch: Ersetze eine LED > durch einen 10kOhm Widerstand und sieh dir den Ausgang mit dem Scope an. Bringt nicht, genau das selbe Ergebnis, bin ja direkt an den Pin mit dem Oszi, selbst wenn kein verbraucher dran hängt, müsste die Spannung am Pin anliegen, und das tut es nicht
Hast du die PxSEL und PxDS Settings ausprobiert?
Klaus schrieb: > Bringt nicht Dann ist das aufgespielte Programm anders als das, was du hier gezeigt hast oder du hast ein Hardware Problem ausserhalb der CPU.
Joe F. schrieb: > Hast du die PxSEL und PxDS Settings ausprobiert? Nein, habe mal eine Pause gemacht. Morgen geht es direkt weiter und dann schreib ich dir. Georg G. schrieb: > Dann ist das aufgespielte Programm anders als das, was du hier gezeigt > hast oder du hast ein Hardware Problem ausserhalb der CPU. Ich habe nur die Spannungsversorgung und eine LED auf die Ports von P1.4 auf Masse gelegt. Da kann man nichts falsch machen. Mit den anderen PORTS FUNKTIONIERT es ja, nur mit diesem. Das einzige was ich bisjetzt nachvollziehen kann, ist die Antwort von Joe F. Hat den jemand diesen MSP und kann es mal bei sich selbst testen??
Hallo Klaus, welches Board hast Du denn nun? Wenn es das experimenter-board ist, sind auf P1.4 und P1.5 LEDs dran. Und welche Portpins funktionieren? Überall identische Widerstände? Mit der drive-strength hat das nichts zu tun. Schon in der (power-up)reduced-drive-strength können die Ports P1.X -2mA/+2mA treiben bei 3V Vcc. Nebenbei: Datenblatt und family-usersguide hast Du? Gruss Dietmar
Dietmar S. schrieb: > welches Board hast Du denn nun? Ja das experemtierboard. Msp430f5529. Ja, habe beides aber nichts dazu gefunden. Die Leds bei dem Board sind an P1.0 Und P1.2 An P1.4 und P1.5 ist keins dran. Ich habe selber eine Led Schaltung gebaut mit einem kleinen Vorwiderstand. An P2, P3, P8 an alle funktioniert sie, nur bei den beiden funktioniert es nicht. An P1.6 funktioniert es auch, nur eben diese zwei nicht.
Beim experimenter's-board sind definitiv auf P1.4 und P1.5 LEDs. Oder hast Du ein MSP430F5529 LaunchPad? Da sind die LEDs auf P1.0 und P4.7.
Hallo Klaus also ich hab hier das MSP-EXP430F5529LP Launchpad von TI rumliegen und hab mal den Minimalcode, also nur P1DIR und P1OUT auf high, draufgespielt. Die beiden Ausgänge gehen sauber auf 3,28V ohne Last. Mit 2 LEDs dran und 470Ohm Vorwiderstand immer noch 3,14V und ca. 3mA Strom. Also alles normal, P1SEL und P1DS sind nach dem Reset auf 0x00. Ich denke Du hast da doch irgendeine Last in der Hardware oder Du hast den Port zerschossen. Wie ist die genaue Bezeichnung Deines Boards? Gruß wv
wv schrieb: > also ich hab hier das MSP-EXP430F5529LP Launchpad von TI rumliegen und > hab mal den Minimalcode, also nur P1DIR und P1OUT auf high, > draufgespielt. Die beiden Ausgänge gehen sauber auf 3,28V ohne Last. Mit > 2 LEDs dran und 470Ohm Vorwiderstand immer noch 3,14V und ca. 3mA Strom. > Also alles normal, P1SEL und P1DS sind nach dem Reset auf 0x00. > > Ich denke Du hast da doch irgendeine Last in der Hardware oder Du hast > den Port zerschossen. > > Wie ist die genaue Bezeichnung Deines Boards? Ja, das dachte ich zunächst auch, aber als ich ein nagelneues 2. Board getestet habe, kam mir das ein bisschen spanisch vor... Habe es jetzt mit P1SEL und P1DS ausprobiert und wieder nichts.... Joe F. schrieb: > Hast du die PxSEL und PxDS Settings ausprobiert? Habe es ausprobiert, hat nichts gebracht, schade ...... Dietmar S. schrieb: > Beim experimenter's-board sind definitiv auf P1.4 und P1.5 LEDs. > Oder hast Du ein MSP430F5529 LaunchPad? > Da sind die LEDs auf P1.0 und P4.7. Die genaue Bezeichnung heist Lunchpad MSP430F5529 Version 1.6
Klaus schrieb: > Die genaue Bezeichnung heist Lunchpad MSP430F5529 Version 1.6 Aha. Also kein "Experimenters Board". Sondern das hier: http://www.ti.com/tool/msp-exp430f5529lp Es wäre schön, wenn Du keine Phantasiebezeichnungen erfinden würdest.
Moin Klaus, also zum Lunch ist das schwer verdaulich- kleiner Scherz! Du kannst einen Minimaltest durchführen. Man nehme den Jumper JP8 heraus (Du hast den Stromlaufplan von LaunchPad vorliegen?). Dann nimmst Du das Beispiel (Led blinken) von den TI-Beispielen des Launchpads. Den P1.5 nimmst Du anstatt des P1.0. P1.0 kannst Du auch als Eingang konfigurieren zum Debuggen. Dann schliesst Du P1.5 an den Jumper JP8 (die Seite zum Widerstand). Du arbeitest mit dem CodeComposer? Wenn Du das laufenlässt, müsste jetzt die LED1 blinken. Ein Wort zur Zeitabschätzung mit Deinem Osci: >Also, genau Zeit kann ich nicht messen, weil mein Oszi, diese Funktion >nicht unterstützt, aber es ist wirklich nur ein kurzes aufleuchten. Mehr >nicht Du hast Deine Zeitbasis eingestellt- da gibt es eine Skala mit Angaben- Auf Deinem Display sind so lustige horizontale und vertikale Linien. Die vertikalen sind wichtig. Zähle die Kästchen (pi mal Daumen). Multipliziert mit der Zeiteinheit- fällt Dir etwas auf? @Rufus: Hör' auf zu meckern ;-)- Du liest doch auf welchem Stand Klaus noch ist.
Klaus schrieb: > genau Zeit kann ich nicht messen, weil mein Oszi, diese Funktion > nicht unterstützt Dann zeig uns einen Screenshot.
Wie hast du denn die LED an den Port angeschlossen? Hast du immer einen Vorwiderstand benutzt, wenn ja, welchen?
Man, man, man, was für eine schwierige Geburt. Im Simulator läuft das einwandfrei. Es liegt also an der Hardware. Wen die anderen Pins gehen, sollte der Schaltplan etwas preisgeben. Da gibt es bestimmt pullup pulldown oder so.
Vielleicht ist das Oszi auf AC-Kopplung eingestellt? duckundwech
oder die Poly-Kleidung hat ihren Tribut gefordert. :-D
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.