mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430F169 startet nicht


Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Habe ein Problem mit einem Olimex-Headerbord mit dem MSP430F169 drauf.
Und zwar startet dieser beim Einschalten der Versorgungsspannung nicht! 
Erst nach einem Reset läuft er los!
Hab schon alles überprüft, der Quarz schwingt...den Kondensator am 
Reset-Eingang hab ich auch schon vergrößert...hat aber alles nichts 
gebracht!
Im Programm schalte ich nur den Watchdog ab und initialisiere das 
Taktmodul.
WDTCTL = WDTPW + WDTHOLD;    // Watchdogtimer ausschalten
BCSCTL1 &= ~XTS;      // XT1 = LF
_BIC_SR(OSCOFF);      // XT1 anschalten

BCSCTL1 |= DIVA_0;      // ACLK = 32kHz
BCSCTL1 &= ~XT5V;
BCSCTL2 = SELM_3 + DIVM_0;    // MCLK = XT1 = 32kHz

Bitte um Hilfe!!! Danke.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, das is so nen MSP430-Phänomen.....wenn die Versorgungsspannung zu 
langsam ansteigt, startet der einfach nicht. Ich bau mittlerweile nur 
noch richtige Supervisor-ICs da dran. Der kleine SOT23 stört auch 
nirgends....

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na ist ja super...ich habe schon an mir selber gezweifelt.
Was mich nur verwundert, das mein erster MSP ohne Probleme startete.

Danke Dir.

Welchen Supervisor IC nutzt Du?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI

Kann man nicht nen grösseren C an den Resetpin des Controllers machen, 
damit er erst später anfängt, wenn die Betriebsspannung voll da ist?

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich habs jetzt. Einfach einen hochohmigen Pulldown von Xout nach Masse 
Habe jetzt 820kOhm dran und funzt prima.

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm, beim Start scheint der Pulldown-Widerstand gute Dienste zu leisten 
aber leider startet der MSP jetzt manchmal bei einem manuellen Reset 
(Druck auf Reset-Taster) nicht!
Alles sehr komisch!

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm einen TPS3836 o.ä. das klappt sicher.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warte einfach, bis der Quarz stabil läuft:
Aus den Beispielen:
  do
  {
  IFG1 &= ~OFIFG;                           // Clear OSCFault flag
  for (i = 0xFF; i > 0; i--);               // Time for flag to set
  }
  while ((IFG1 & OFIFG));                   // OSCFault flag still set?

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:
> Warte einfach, bis der Quarz stabil läuft:

Mein Oszillator läuft auf LF (32768Hz), d.h. das OSCFault-flag 
funktioniert nicht!

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt. Steht im Kommentar. hatte ich übersehen. Dann hilft wirklich nur 
ein Supervisor. Normal ist das aber nicht.Ich habe hier auch ein 
F169-Board, zwar selbst gemacht, aber es läuft ohne Probleme. Aber 
selbst TI empfiehlt ja oftmals Supervisor, eigentlich kein Wunder, sind 
ja die eigenen.

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:
> Stimmt. Steht im Kommentar. hatte ich übersehen. Dann hilft wirklich nur
> ein Supervisor. Normal ist das aber nicht.Ich habe hier auch ein
> F169-Board, zwar selbst gemacht, aber es läuft ohne Probleme. Aber
> selbst TI empfiehlt ja oftmals Supervisor, eigentlich kein Wunder, sind
> ja die eigenen.

Für mich ist das ja auch das 2. Board mit dem MSP und beim ersten lief 
es wunderbar ohne Probleme!

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Msp 430_crew wrote:
> Für mich ist das ja auch das 2. Board mit dem MSP und beim ersten lief
> es wunderbar ohne Probleme!

Glück gehabt. Mehr nicht.

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein 5,1MOhm Widerstand von Xout nach Masse funktioniert noch besser!!!

Steht auch im Datenblatt für Betriebsspannungen unter 2,5V. Nur komisch 
das mein MSP an 3,3V läuft!

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieser Widerdtand ist einfach dazu da, dass der Quarz-Oszillator bei 
niedrigen Spannungen überhaupt anläuft. Zuerst startet der MSP aber 
immer mit dem DCO, der läuft immer. Die einzig zuverlässige Möglichkeit 
ist ein Supervisor.

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also bis jetzt läuft das aber mit dem 5.1MOhm-Widerstand super! Er 
startet immer zuverlässig und beim manuellen Reset gibts auch einen 
Reset.

Wenn der DCO immer anlaufen würde, dann hätte ich doch aber nicht das 
Problem mit dem nicht-starten des MSP oder?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der DCO läuft natürlich erst an, wenn der MSP aus dem Reset raus ist. 
Meistens passiert genau das aber nicht, wenn die Versorgungsspannung zu 
langsam ansteigt. Haben wir hier im Labor ausprobiert.

Bei dir wird eher das Problem gewesen sein, dass der LF-Oszillator nicht 
sicher anschwingt.

User Guide:

Note: LFXT1 Oscillator Characteristics
Low-frequency crystals often require hundreds of milliseconds to start 
up,
depending on the crystal.

Wenn du also den MCLK ofort auf den LFXT1 umschaltest, kann das nicht 
klappen.

Autor: Ramon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello to all, I am a student that this programming MSP430f169 for a 
project, but I have a small problem with the programming of the clock, 
my code for init the osccillator is the following one:
void InitOsc(void) 
{
  WDTCTL = WDTPW | WDTHOLD;   // Paramos el watchdog timer
  BCSCTL1 |= XTS;     // XT1 ~ high-frequency
  _BIC_SR(OSCOFF);     // turn on XT1 oscillator

  do     // wait in loop until crystal is stable
  IFG1 &= ~OFIFG;
  while (IFG1 & OFIFG);

  BCSCTL1 |= DIVA1 | DIVA0;     // ACLK = XT1 / 8 = 1 MHz
  IE1 &= ~WDTIE;       // desactiva WDT int.
  IFG1 &= ~WDTIFG;       // clear WDT int. flag
  WDTCTL = WDTPW | WDTTMSEL | WDTCNTCL | WDTSSEL | WDTIS1;
    // use WDT as timer, flag each. 512 pulses from ACLK

  while (~(IFG1 & WDTIFG));     // cuenta 1024 pulsos XT1 

  IFG1 &= ~OFIFG;       // clear osc. fault int. flag
  DCOCTL |= DCO2 | DCO1 | DCO0;
  BCSCTL1 |= RSEL2 | RSEL1 | RSEL0;   // MCLK = DCO, 8 MHz  (MCLK=Reloj de la CPU)
}
   And not because he still has to me blocked in the intruccion:
  While (~ (IFG1 and WDTIFG));
   It is supposed that on having put the Watchdog already not deberia to 
enter(approach) of indefinite form, but does it.

 Regards to all, I wait for answers

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.