www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit Reset beim Trennen der Versorgung


Autor: Resetter (Gast)
Datum:

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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hast du den brownout detector des MSP430 programmiert/eingestellt?

Autor: Resetter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist der nicht immer aktiv?!!!

Autor: Resetter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich dachte, Versorgung weg -> zu wenig Spannung -> alles hochohmige 
Eingänge

Autor: Alexander v. Grafenstein (avogra)
Datum:

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

Autor: Resetter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, alle Modelle haben einen! Nur wie gesagt, dachte das wäre 
standardmäßig eingeschaltet, so hatte ich es zumidnest verstanden - 
scheinbar hab ich das falsch verstanden.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

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

Autor: Resetter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ne scheisse! Aber vielen Dank!

Autor: Resetter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat den jemand für mich einen Tip bezüglich Reset-Baustein, welcher auch 
schon bei 3V Versorgung arbeitet?

Autor: Resetter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe nen 7702 gefunden, aber der is mit der Spannung auch schon eher 
grenzwertig

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da gibts viele... MAX812, etc.

Ralf

Autor: Wolfgang Heinemann (frickelkram)
Datum:

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

Autor: Resetter (Gast)
Datum:

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

Autor: Resetter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?
  P1SEL = 0x00; // Port 1 GPIO [1100 0000]
  P1REN = 0x3F; // P 1.0,1,2,3,4,5 Pull-Rs [0011 1111]
  P1OUT = 0x3C; // P 1.0,1 Pull-Down-Rs; P 1.2,3,4,5 Pull-Up-Rs [0011 1100]
  P1DIR = 0xC0; // P 1.0,1,2,3,4,5 Eingang; P 1.6,7 Ausgang
  P1IFG = 0x00; // Port 1 Interrupt-Flags loeschen
  
  P2SEL = 0x00; // Port 2 GPIO [0000 0000]
  P2REN = 0xC0; // P 2.6,7 Pull-Rs [1100 0000]
  P2OUT = 0xC0; // P 2.6,7 Pull-Up-Rs [1100 0000]
  P2DIR = 0x00; // Port 2 Eingang [0000 0000]
  P2IFG = 0x00; // Port 2 Interrupt-Flags loeschen

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

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.