Forum: Mikrocontroller und Digitale Elektronik MSP430FR2422: Fragen zum Datenblatt


von Sven Scholz (Gast)


Lesenswert?

Guten Tag,

ich hätte eine kurze Frage zum Datenblatt bzgl. der Power Consumption im 
Active-Mode (bei 1MHz).

https://www.ti.com/product/MSP430FR2422

Direkt auf Seite 1 ist zu lesen:

Optimized ultra-low-power modes
– Active mode: 120 µA/MHz (typical)

Detailliertere Angaben finden man weiter hinten im Dokument --> 8.4 
Active Mode Supply Current, Seite 15.

Hier wird in der oberen Tabelle in der letzten Zeile plötzlich 216uA / 
MHz bei EXECUTION MEMORY = RAM für 3V angegeben.
Für FRAM 100% cache hit ratio hingegen 199uA.

Was hat zu bedeuten?
Widerspricht sich dies nicht irgendwie mit Seite 1?
Sollte man das Programm dann ausschlißelich aus dem FRAM ausführen, um 
hier Energie zu sparen?

In der Tabelle unter 8.5 Active Mode Supply Current Per MHz taucht dann 
wieder in der einzigen Zeile die 120uA/MHz auf...
"Active mode current consumption per MHz, execution from FRAM, no wait 
states"

Ich kann mir derzeit keinen Reim daraus machen...

Bei einem ersten kleinen Breadboard-Aufbau habe ich mit meinem 
Multimeter einen Verbrauch von 220uA gemessen bei 1 Mhz und 3,0V.
Ich hatte hier allerdings die 120uA erwartet, da damit auf der 1. Seite 
"geworben" worden ist.
Ist dies nur eine leere Versprechung und die 220uA sind realistisch?
Wie kann es sein das FRAM sparsamer ist?
Muss ich mein gesamtes Programm via "#pragma memory section" in den FRAM 
Bereich verlegen?

Herzlichen Dank!

von Clemens L. (c_l)


Lesenswert?

In 8.5 steht, dass mit "120 µA/MHz" gemeint ist, dass zwischen 1 MHz und 
8 MHz der Verbrauch um 120 µA pro MHz ansteigt.

Das erste MHz verbraucht mehr. In 8.4 findest du die Absolutwerte.

> Sollte man das Programm dann ausschlißelich aus dem FRAM ausführen, um
> hier Energie zu sparen?

Kommt drauf an, wie viel im Cache gehalten werden kann.

> Muss ich mein gesamtes Programm via "#pragma memory section" in den FRAM
> Bereich verlegen?

Nein, ist eh schon Standard.

von Sven Scholz (Gast)


Lesenswert?

Okay, DANKE!

Ich habe jetzt noch versucht den MSP430FR2422 in den LPM3 zu bringen.
Dabei verwende ich nahezu fast nur den uC, nur mit einem 100nF 
Abblockkondensator und einem 47kOhm PullUp-Widerstand an Reset, da 
low-active.

Ich hätte jetzt hier einen Stromverbauch um die 1uA erwartet.
ICh messe hingegen 16uA!

Hat hier jemand spontan eine Idee woran das liegen könnte?
Der Watchdog Timer ist abgeschaltet, der ADC auch.

Der Mechanismus "gehe nach LPM3 und lass dich aufwecken durch Timer_A 
Interrupt" funktioniert einwandfrei.

Ich weiß es leider im Moment nicht...

Danke!

von Clemens L. (c_l)


Lesenswert?

Eine Clock zu viel aktiv, oder zu schnell?
Oder einfach Leckströme irgendwo außerhalb ...

von Erik2000 (Gast)


Lesenswert?

Hallo , probier mal folgendes

alle Ports    mov.b   #0h,&PxOUT
              mov.b   #0FFh,&PxDIR

sorry kann nur Assembler

mfg Erik

von Sven Scholz (Gast)


Lesenswert?

Danke für eure Hinweise.

Meine Schaltung ist falsch ist mir aufgefallen. :-)
Ich war es gewohnt am MSP430G2553 einen 100nF-Abblockkondensator oben an 
den IC zu packen (zwischen Pin 1 und Pin 20).

Dies hatte ich leider für den MSP430FR2422 übernommen.
Was natürlich falsch ist, hier liegen Vcc und Vss auf der linken Seite 
(Pin 5 und Pin 6).

Meine Schaltung muss ich noch "umbauen", aber ich denke das ist der 
Fehler mit dem zu hohen Strom.
Hoffe das der uC nicht kaputt gegangen ist dadurch...

von Erik2000 (Gast)


Lesenswert?

Solange wie kein Latch up  ( Hohe Stromaufnahme ) eintritt

eigentlich unkaputtbar

von Sven Scholz (Gast)


Lesenswert?

Okay, ich habe jetzt meine Beschaltung korrekt umgebaut.
Also 100nF zwischen Vcc und Vss.

An der Stromaufnahme hat sich allerdings nichts getan.
Ich messe hier immer noch 15,9uA in LPM3 - was sehr verwunderlich ist...

Ich möchte den uC eigentlich so konfigurieren, dass als Clocksource der 
DCO ohne FLL verwendet wird bei 1MHz.

Was kann evtl. auf dem uC eingeschaltet sein, dass ein so hoher 
DeepSleep-Strom zustande kommt?
Im Active-Mode bin ich bei 223uA was passen sollte.

Danke und Viele Grüße

von Clemens L. (c_l)


Lesenswert?

Zeig doch mal dein minimales Testprogramm. (Orientiere dich an 
msp430fr2422_lpm3_01.c.)

von Sven Scholz (Gast)


Lesenswert?

Okay..
Kurze Hinweise zu meinem Code.
Also der MCU soll per Timer-Interrupt aufgeweckt werden. Das 
funktioniert bereits auch sehr gut.
Den WDT stoppe demnach gleich am Anfang, da dieser im Moment nicht 
benötigt wird.

Nach jedem Aufwecken lasse ich die CPU für einige Zeit im active-Mode 
mit
__delay_cycles(5000000);

Das Beispiel von TI verwendet offenbar einen externen Crystal. Diese 
äußere Beschaltung gibt es bei mir nicht.
Ich möchte die gesamte Schaltung mit dem DCO (ohne FLL) betreiben und im 
LPM3 mit VLO.
Ich glaube dies ist standardmäßig auch so eingestellt bzw. wird 
automatisch eingenommen wenn an XT1 kein Crystal erkannt wird. (?)

Ich messe wie gesagt derzeit ca. 213uA während Active und 17uA in LPM3.
Hier also mein aktuelles Testprogramm:

1
#include <msp430.h>
2
3
int main(void)
4
{
5
    WDTCTL = WDTPW + WDTHOLD; //Stop watchdog timer
6
7
    // configure timer A1 for wake-up interrupts
8
    TA1CCTL0 = CCIE;                 // CCR0 interrupt enabled
9
    TA1CCR0  = 55000;             // Upper limit of count for TAR // incremented by a 187,5Hz clock (VLO / 64 = 12000Hz / 64)
10
    TA1CTL = MC_1 | TASSEL_1 | TACLR | ID_3;            // Set up and start Timer A: "up to CCR0" mode, divide clock by 8, clock from ACLK, clear timer
11
12
    // Port Configuration all un-used pins to output low
13
    P1OUT = 0x00;
14
    P2OUT = 0x00;
15
    P3OUT = 0x00;
16
    P4OUT = 0x00;
17
    P5OUT = 0x00;
18
    P6OUT = 0x00;
19
    P1REN = 0xFF;
20
    P2REN = 0xFF;
21
    P3REN = 0xFF;
22
    P4REN = 0xFF;
23
    P5REN = 0xFF;
24
    P6REN = 0xFF;
25
26
    P1DIR = 0xff;
27
    P2DIR = 0xff;
28
    P3DIR = 0xff;
29
    P4DIR = 0xff;
30
    P5DIR = 0xff;
31
    P6DIR = 0xff;
32
33
    // Disable the GPIO power-on default high-impedance mode
34
    // to activate previously configured port settings
35
    PM5CTL0 &= ~LOCKLPM5;
36
37
    while(1)
38
    {
39
        // Enter LPM3 --> standard low power mode
40
        // waiting for timer_A1 interrupt for wakeup
41
        __bis_SR_register(LPM3_bits + GIE);
42
        //P1OUT ^= BIT7;                          // Toggle P1.0 (LED) every 1s
43
44
        // do something
45
        __delay_cycles(5000000);           // Delay for 10000000*(1/MCLK)=1.25s
46
47
    }
48
}
49
50
// Timer A1 interrupt service routine
51
#pragma vector=TIMER1_A0_VECTOR
52
__interrupt void Timer1_A0 (void)
53
{
54
    // wake-up from LPM3
55
  __bic_SR_register_on_exit(LPM3_bits);
56
}

von Sven Scholz (Gast)


Lesenswert?

Also ich glaube es liegt daran, dass bei der Konfiguration ohne externem 
Cyrstal (XT1) der REFO Oscillator IMMER mitläuft. Eben auch in LPM3.
Der benötigt laut Datenblatt 15uA. Das ist so ziemlich genau der Wert 
den ich messe.

Kann das jemand bestätigen?

Herzlichen Dank und viele Grüße

von Clemens L. (c_l)


Lesenswert?

ACLK geht halt nur mit XT1 oder REFO. Wenn der Timer SMCLK als Quelle 
hat, kannst du VLO benutzen. (Siehe auch Tabelle 3-2 im User's Guide.)

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.