Bitte dringend Hilfe MSP-Experten gesucht Problem mit Quarzclock - zu viel Stromverbrauch!

Gast #1916881
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!
#1916886
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.
Gast #1916959
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.
Gast #1917095
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).
Angehängte Dateien:
Gast #1917110
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.
Gast #1917154
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.
#1917255
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?
Gast #1917268
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!
Gast #1917273
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.
Gast #1917283
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?

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