www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bitte dringend Hilfe MSP-Experten gesucht Problem mit Quarzclock - zu viel Stromverbrauch!


Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Ich bin wirklich verzweifelt!!!
Ich muss am Montag meine Schaltung präsentieren und habe ein riesen 
Problem mit dem Clock-Modul!

Ich hatte hier schonmal reingeschrieben - unterm Strich kam raus, dass 
vielleicht der MSP oder der Quarz nen Schuss hat.

Aber nun ist beides NEU! Es kann nicht am Quarz liegen und am MSP daher 
auch nicht.

Folgendes Problem:

Ich benutze einen MSP430F2418 und habe an ihm zwei Quarze.

Hauptquarz (System): 3.6864MHz
Uhrenquarz         : 32.768kHz

Beide laufen, aber der Stromverbrauch des MSPs liegt über 2mA!!! Das 
darf nicht sein, denn die Schaltung darf maximal 3,8mA verbauchen und 
das kann ich mit dem Verbrauch vom uC nicht mehr gewährleisten.

Laut Datenblatt darf der MSP lange nicht soviel verbrauchen - ich habe 
zum Test schonmal den Haupttakt durch zwei geteilt, arbeite also nurnoch 
mit 1.8432MHz - der Verbrauch ist trotzdem zu hoch.

Mit 3.6864MHz liegt der Verbrauch meiner gesamten Schaltung bei ca. 
4,6mA
Mit 1.8432MHz ist er immernoch bei 4,07mA

Damals hatte ich bereits herausgefunden, dass wenn ich den 32kHz-Quarz 
von Anfang an nicht anschließe, der Verbrauch selbst mit dem 3MHz Quarz 
bei ca. 700uA liegt.

Wenn ich mich nun den Pins vom Uhrenquarz genähert habe, dann stieg der 
Verbrauch schlagartig auf über 2mA an und blieb auch da bis zum Reset.

Die Schaltung damals war noch auf 'nem Steckbrett, daher bestand noch 
die Möglichkeit, dass das vielleicht für den extremen Stromverbrauch 
verantwortlich war - aber nun ist es auf ner Platine - mit minimalen 
Abständen.

Ich denke daher, dass es an meiner Initialisierung liegt - kann da mal 
bitte eine drüber gucken? Ich bin sowas von verzweifelt!!!!!!
void configure_clock_module (void)
{
  // Initialization of clock source - Crystal 1.8432 MHz
  
  // BCSCTL1: BASIC CLOCK SYSTEM CONTROL REGISTER 1
  // XT2OFF:  XT2 oscillator (bit cleared: XT2 is now active)
  BCSCTL1 &= ~XT2OFF;
  
  // BCSCTL3: BASIC CLOCK SYSTEM CONTROL REGISTER 3
  // XT2Sx:   XT2 range select (XT2S_2: 3-16 MHz)
  // XCAPx:   Oscillator capacitor selection (XCAP_1: ~6pF)
  BCSCTL3 = ( XT2S_2 | XCAP_1 );
  
  do
  {
    volatile uint16_t i = 0;
    IFG1 &= ~ OFIFG;            // Clear oscillator-fault-flag
    for (i = 0xFF; i > 0; i--)  // Time to get stable
    {}                          // Loop
  } while (IFG1 & OFIFG);       // Do, until no fault present
  
  // BCSCTL2: BASIC CLOCK SYSTEM CONTROL REGISTER 2
  // SELMx:   Select MCLK (SELM_2: XT2CLK)
  // SELS:    Select SMCLK (bit set: XT2CLK)
  // DIVM:    Divider MCLK (DIVM_1: /2)
  // DIVS:    Divider SMCLK (DIVS_1: /2)
  BCSCTL2 = ( SELM_2 | SELS | DIVM_1 | DIVS_1 );
}

Muss ich noch irgendwas deaktivieren? Geht der DCO nicht automatisch 
aus?


Bin über jeden Ratschlag dankbar!

Autor: Malte M. (maltem)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie misst du denn? Bzw. wie kommst du drauf, das der Microcontroller 2mA 
"verbraucht", und nicht eventuell andere Komponenten, die an ihn 
angeschlossen sind?

Poste am besten mal deinen Schaltplan, und zusätzlich am besten das 
Layout (interessant sind ja auch Pins, die du nicht verwendest: wie sind 
diese beschaltet?) Alternativ ein Link zum alten Thread falls dies dort 
schon enthalten.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht benutzte Pins sind auf Ausgang->low geschaltet.
Habe es aber auch schon in allen anderen Varianten probiert - Pins als 
Eingang mit und ohne Pull-Up...

Alle Pins werden initialisiert und auf richtigen Pegel gebracht.
Ein USCI Modul wird geteilt auf zwei verschiedene EEPROMs und ein LCD, 
aber auch da sind alle CSs richtig, es sind nie Zustände vorhanden, wo 
irgendwas kurzgeschlossen wird oder ähnliches.

Die anderen USCIs sind jeweils für ein Modul.

Den Stromverbrauch messe ich ausschließlich am uC, habe einen Jumper 
zwischen Versorgung und uC, wo ich ein Multimeter eingeschleift habe 
(Yokogawa, kein Conrad-Multimeter). Der Jumper ist eigentlich für 
Programmieren und Betrieb, damit keine Spannung vom Programmer an 
Spannungsreglern in falscher Potentialrichtung anliegt.

Ich habe mitlerweile echt schon alles probiert....

Das seltsame ist halt, dass gerade der super-sparsame Oszillator mit dem 
32kHz Quarz den Strom wegsaugt. Ohne ihn geht es, bis man sich halt dem 
Pin nähert oder ihn ggf. anfasst.

Der ganze Betrieb und Zusammenbau erfolgte immer unter ESD-Schutz! Das 
jetzt schon wieder genau dasselbe kaputt sein könnte, halte ich für 
unwahrscheinlich - da ist nichts kaputt.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du mal probiert, parallel zum Uhrenquarz einen 1M Widerstand zu 
schalten? Ich hatte mal ähnliche komische Effekte mit dem LF Oszillator 
am MSP. Dabei kam´s zwar nicht auf den Stromverbrauch an, aber bei 
Näherung oder gar Berührung ist der völlig ausgerastet.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian R. schrieb:
> Hast du mal probiert, parallel zum Uhrenquarz einen 1M Widerstand zu
> schalten?

Nee, das habe ich natürlich nicht probiert...

Autor: Dennis (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So, hab mal ein paar Bilder angehängt.

Auf dem Board sieht man, dass Quarz-Masseflächen von anderen getrennt 
sind.

Auf dem Schaltplan sind beim Uhenquarz links zwar Kondensatoren 
eingezeichnet, diese sind aber nicht bestückt, da ich die internen 
verwenden wollte. Habe nur Platz für eine eventuele Nachbestückung frei 
gelassen. ABER: Macht kein Unterschied (habe die in Software dann 
natürlich entfernt).

Autor: codehamster (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich mich nicht irre, ist gut möglich habe das Datenblatt nicht vor 
mir, sind die Kondensatoren im Code nicht Physikalisch vorhanden, 
sondern du sagst dem uC mit was du die Oscillatoreingänge belastet.

schau dir diesen abschnitt doch nochmal im UserGuide an, ich werde mich 
auch nochmal schlau machen.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist mit WDTCTL?
Hast du den Watchdog-Timer deaktiviert?
Notfalls könntest du irgendein Beispielprogramm von der TI-Seite 
ausprobieren und den Stromverbrauch testen.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:
> Was ist mit WDTCTL?

Klar, der ist aus!

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
codehamster schrieb:
> sind die Kondensatoren im Code nicht Physikalisch vorhanden,
> sondern du sagst dem uC mit was du die Oscillatoreingänge belastet

Schade - das hätte evtl. alles erklärt, im User's Guide steht 
allerdings...(siehe Bild).

Autor: Dennis (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
...Bild fehlt natürlich...hier isses.

Autor: oszi40 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon mal geprüft ob das Übel von der Hardware oder der SW stammt?
Evtl. Takt anhalten und nur Strom messen? Evtl. muß auch der Aufbau 
optimiert / abgeschirmt werden?

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Übel ist dieser Uhrenquarz. An der Hardware wird es nicht liegen - 
als es noch auf dem Steckbrett war OK, aber jetzt auf der Platine nicht 
mehr - da lief schon so manch übleres...

Wenn ich beim Debuggen anhalte, dann ist der Strom nahe Null. Es sind 
rein die Oszillatoren, welche den Strom verbrauchen. Ich probiere ja nun 
auch schon ewig herum...erst mit Kontakt, bzw. Beschaltung des 
LOW-Frequency_oszillators beginnt der Spuk.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du XTS in BCSCTL1 auf 0 (Low frequency mode) gestellt?

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:
> Hast du XTS in BCSCTL1 auf 0 (Low frequency mode) gestellt?

Das ist beim Start auf Low - aber auch wenn ich es explizit auf Low 
stelle, dann ändert sich..............................nichts.

Autor: Hannes H. (mui)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Stromverbrauch wurde auch ohne Debugger gemessen? Zumindest beim 
MSP430-FET ist es so, dass der Stromverbrauch wesentlich höher ist, wenn 
der Debugger angesteckt ist. Zieht man das Teil ab und resetet den 
Controller fällt der Stromverbauch auf ein erträgliches Maß zurück. Das 
schon probiert?

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes H. schrieb:
> Das schon probiert?

Ja klar, daran liegts leider auch nicht. Bei mir ist es sogar umgekehrt, 
wenn der dran ist, dann ist's weniger.

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du auch den internen RC-Oszillator ausgeschaltet?

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe alles so initialisiert wie oben im C-Text. Dass ist das, was 
ich dem User's Guide entnehmen konnte. Dass da irgendwas nicht stimmt, 
ist mir ja bewusst. Ich hoffe, ch habe einfach irgendwas vergessen!

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hängt einer der Eingänge auf halbem Potiential zwischen 0V und VCC?
In diesem Fall ist ein CMOS-Gatter im linearen Bereich in dem ein 
Querstom von VCC nach Masse fließt.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Helmut S. schrieb:
> Hängt einer der Eingänge auf halbem Potiential zwischen 0V und VCC?
> In diesem Fall ist ein CMOS-Gatter im linearen Bereich in dem ein
> Querstom von VCC nach Masse fließt.

Nein! Alle auf Ausgang und low. Auch Pins wie Veref+ und Veref- sind 
nach Datenblatt verschaltet.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wirkliche Eingänge habe ich nur 3 Taster und eine andere Leitung - alle 
haben Pull-Ups.

Ausschließlich der SVS ist ein Eingang, an dem 1,5V anliegen, aber der 
ist ja dafür gemacht.

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur eine Intuition, ohne irgendwelche Begründung:
Hast Du das Quarzgehäuse tatsächlich angelötet? Also, wie im Schaltplan 
gezeigt an Masse gelegt? Wenn ja, versuchs mal bitte ohne.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch doch mal statt hart Masse einen internen Pullup zu aktivieren. 
Möglicherweise fließt da durch den Ausgang irgendwo Strom?

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huch schrieb:
> Hast Du das Quarzgehäuse tatsächlich angelötet?

Ja, habe ich - aber auch vorher ohne angelötet war es gleich.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon K. schrieb:
> Versuch doch mal statt hart Masse einen internen Pullup zu aktivieren.
> Möglicherweise fließt da durch den Ausgang irgendwo Strom?

Statt hart Masse einen Pull-Up?

Ich habe sie nicht an Masse verbunden. Sie sind offen, aber habe ja 
schon alles probiert - Eingänge mit Pull-Up/Down, sowohl SW wie auch HW. 
Und halt auch Ausgang.

Was ist denn mit dem internen RC-Oszillator - vielleicht liegt es daran, 
kann mir da nicht einer noch näheres zu sagen?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läuft der LFXT1?
Schon im Device Erratasheet 
http://focus.ti.com/lit/er/slaz033g/slaz033g.pdf nachgesehen ob es ein 
Problem mit dem Quarzoszillator geben könnte, eventuell XOSC8 bei einem 
Quarz mit ESR unter 40 kiloohm?

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan schrieb:
> Läuft der LFXT1?

JA, der läuft einwandfrei. Ich habe einen Zeitzähler in meiner 
Schaltung, der auf dem XT1 basiert. Die Sekunden sind auch nach mehreren 
Tagen noch exakt.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan schrieb:
> Quarz mit ESR unter 40 kiloohm?

Im Datenblatt steht max 50kOhm.

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.