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


von Dennis (Gast)


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!!!!!!
1
void configure_clock_module (void)
2
{
3
  // Initialization of clock source - Crystal 1.8432 MHz
4
  
5
  // BCSCTL1: BASIC CLOCK SYSTEM CONTROL REGISTER 1
6
  // XT2OFF:  XT2 oscillator (bit cleared: XT2 is now active)
7
  BCSCTL1 &= ~XT2OFF;
8
  
9
  // BCSCTL3: BASIC CLOCK SYSTEM CONTROL REGISTER 3
10
  // XT2Sx:   XT2 range select (XT2S_2: 3-16 MHz)
11
  // XCAPx:   Oscillator capacitor selection (XCAP_1: ~6pF)
12
  BCSCTL3 = ( XT2S_2 | XCAP_1 );
13
  
14
  do
15
  {
16
    volatile uint16_t i = 0;
17
    IFG1 &= ~ OFIFG;            // Clear oscillator-fault-flag
18
    for (i = 0xFF; i > 0; i--)  // Time to get stable
19
    {}                          // Loop
20
  } while (IFG1 & OFIFG);       // Do, until no fault present
21
  
22
  // BCSCTL2: BASIC CLOCK SYSTEM CONTROL REGISTER 2
23
  // SELMx:   Select MCLK (SELM_2: XT2CLK)
24
  // SELS:    Select SMCLK (bit set: XT2CLK)
25
  // DIVM:    Divider MCLK (DIVM_1: /2)
26
  // DIVS:    Divider SMCLK (DIVS_1: /2)
27
  BCSCTL2 = ( SELM_2 | SELS | DIVM_1 | DIVS_1 );
28
}

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


Bin über jeden Ratschlag dankbar!

von Malte M. (maltem)


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.

von Dennis (Gast)


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.

von Christian R. (supachris)


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.

von Dennis (Gast)


Lesenswert?

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

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

von Dennis (Gast)


Angehängte Dateien:

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).

von codehamster (Gast)


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.

von Martin (Gast)


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.

von Dennis (Gast)


Lesenswert?

Martin schrieb:
> Was ist mit WDTCTL?

Klar, der ist aus!

von Dennis (Gast)


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).

von Dennis (Gast)


Angehängte Dateien:

Lesenswert?

...Bild fehlt natürlich...hier isses.

von oszi40 (Gast)


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?

von Dennis (Gast)


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.

von Martin (Gast)


Lesenswert?

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

von Dennis (Gast)


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.

von Hannes H. (mui)


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?

von Dennis (Gast)


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.

von Helmut S. (helmuts)


Lesenswert?

Hast du auch den internen RC-Oszillator ausgeschaltet?

von Dennis (Gast)


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!

von Helmut S. (helmuts)


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.

von Dennis (Gast)


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.

von Dennis (Gast)


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.

von Huch (Gast)


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.

von Simon K. (simon) Benutzerseite


Lesenswert?

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

von Dennis (Gast)


Lesenswert?

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

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

von Dennis (Gast)


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?

von Stefan (Gast)


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?

von Dennis (Gast)


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.

von Dennis (Gast)


Lesenswert?

Stefan schrieb:
> Quarz mit ESR unter 40 kiloohm?

Im Datenblatt steht max 50kOhm.

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
Noch kein Account? Hier anmelden.