Problem mit Reset beim Trennen der Versorgung

Gast #1714891
Lesenswert?

Hallo zusammen!

Ich habe ein Problem mit meinem Mikrocontroller und zwar geht es um den 
Reset. Es ist ein MSP430F2011.

Der Reset ist über 47k an Vcc und hat momentan einen 2n2 Kondensator 
gegen Masse.

Wenn ich die Versorgung trenne, dann wackelt der uC kurz an einem Pin, 
bevor er ausgeht. Das sollte ja eigentlich nicht sein. Es stellt auch 
ein Problem da, da dort ein Motor dran hängt, welcher dann kurz zuckt.

ABER: Wenn ich den Programmieradapter mit dran habe, so passiert das 
nicht (ez430f2013). Also der beeinflusst den Reset irgendwie in 
positiver Weise.


Kann mir da vielleicht einer helfen?
#1714912
Lesenswert?

Hallo,
wenn der Programmieradapter mit an der Versorgung hängt, wird natürlich 
mehr Leistung entnommen -> evtl. sinkt dadurch die Versorgungsspannung 
beim abstecken schnell genug, damit der MSP nicht mehr anläuft? 
Vielleicht macht der Adapter auch seltsame Sachen am Reset, wenn man ihm 
langsam den Saft abdreht. Oder er benutzt ne Brown-Out-Detection, so 
dass sich der Programmieradapter irgendwann abschaltet, die 
Versorgungsspannung geht nochmal hoch, der MSP läuft nochmal kurz an.
Woran auch immer es liegt: Brown-Out-Detection ist nie ne schlechte 
Idee. Hat der MSP sowas?

Gruß, Alex
Persönliche Seite #1714915
Lesenswert?

Jetzt hast du mich erwischt. Ist anders als beim AVR, beim MSP430, wenn 
vorhanden, dann immer aktiv.

[zitat http://focus.ti.com/lit/ml/slad011/slad011.pdf]
The MSP430 introduced the industry’s first ultra-low power BOR 
protection feature.
The brown-out reset (BOR) function forces a MCU into reset both on 
power-up when VCC rises and when VCC falls below the normal operating 
range, but not fully to ground.
While BOR protection is not unique, the MSP430 features a unique 
low-power implementation that is in the nA range. This makes BOR 
practical for all applications including those that are extremely low 
power. The MSP430 BOR function is so low power that it is always-on and 
active even in all low-power modes. This ensures the most reliable 
performance possible.
Competitor’s BOR protection is in the 10-50uA range, which is not usable 
in ultra-low power battery powered applications. This leaves the 
application vulnerable to BOR conditions.
[/zitat]

Allerdings gibt es Berichte über "mäßige Funktion" und "besser externen 
Resetcontroller nehmen" z.B. Beitrag "MSP430-Anfängerfrage"

ADD:
Hinweise zum externen Supply Voltage Supervisor (SVS)
http://focus.ti.com/lit/ml/slap126/slap126.pdf
#1715107
Lesenswert?

Darf ich mal nach fragen wie der Motor Treiber angeschlossen ist? Hängt 
der zufällig mit an einem Pin für den Programmieradapter? Kann es sein 
dass der Ausgang hochomig wird und dein Treiber dann kurzeitig einen 
nicht definierten Zustand am Eingang hat?
Es könnte sein dass Dein Programmieradaper für einen definierten Pegel 
sorgt und darum nichts passiert. Wenn dem so ist dann hilft ganz einfach 
ein Widerstand um den Treiber sicher zu sperren wenn der Ausgang 
hochomig wird.
Gast #1715111
Lesenswert?

Wolfgang Heinemann schrieb:
> Wenn dem so ist dann hilft ganz einfach
> ein Widerstand um den Treiber sicher zu sperren wenn der Ausgang
> hochomig wird.

Also erstmal nein, ich programmiere über SBW - die Pins kann man 
garnicht anders zweckentfremden. Daran liegt es also nicht.

Zu deinem Text - meinst du damit Widerstände von den Basen nach GND? Ich 
benutze ein ULN2003, der hat die Pull-Down-Rs ja schon integriert, der 
definierte Pegel sollte da sein.

Aber das mit dem Programmiergerät wundert mich auch.
Gast #1716381
Lesenswert?

Ich muss das hier leider nochmal aufwärmen...

Kann sich vielleicht jemand mal meine Initialisierung der Ports 
angucken? Ob da vielleicht der Fehler liegt? Das ist hier echt ein 
Problem mit meinem zuckenden Motor beim Aus- wie auch beim Einschalten.

Für alle, die die Thematik hier nicht kennen, ganz kurz:

MSP430F2011 wackelt beim Ein- und Ausschalten an einem Pin, an dem ein 
Motortreiber hängt. Der Motor zuckt dadurch leider kurz, was sehr stört.

Der interne Brownout des uCs scheint daran Schuld zu sein - einen 
externen kann ich leier nicht mehr einbauen, da alles schon auf der 
Platine sitzt. Ich hatte beim experimentieren immer den Debugger dran - 
mit Debugger verläuft der Reset ohne Probleme, kein Mux.

Ist meine Initialisierung so korrekt?
1
  P1SEL = 0x00; // Port 1 GPIO [1100 0000]
2
  P1REN = 0x3F; // P 1.0,1,2,3,4,5 Pull-Rs [0011 1111]
3
  P1OUT = 0x3C; // P 1.0,1 Pull-Down-Rs; P 1.2,3,4,5 Pull-Up-Rs [0011 1100]
4
  P1DIR = 0xC0; // P 1.0,1,2,3,4,5 Eingang; P 1.6,7 Ausgang
5
  P1IFG = 0x00; // Port 1 Interrupt-Flags loeschen
6
  
7
  P2SEL = 0x00; // Port 2 GPIO [0000 0000]
8
  P2REN = 0xC0; // P 2.6,7 Pull-Rs [1100 0000]
9
  P2OUT = 0xC0; // P 2.6,7 Pull-Up-Rs [1100 0000]
10
  P2DIR = 0x00; // Port 2 Eingang [0000 0000]
11
  P2IFG = 0x00; // Port 2 Interrupt-Flags loeschen

Ich schreib erst an den Port und deklariere ihn dann als Ausgang.

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