Howdy,
Ich habe hier einen atxmega64a1, den ich in den "Idle"-Modus versetze
(bester Modus, den ich für meine Bedürfnisse nutzen kann). Die CPU läuft
mit intern mit 2MHz. Laut Datenblatt liegt die Stromaufnahme hierbei bei
etwa 500µA (ext. 2MHz Clk.). Mit den mir zur Verfügung stehenden
Messgeräten messe ich jedoch eine Stromaufnahme im "Idle" von 5mA. (Die
CPU verbraucht im "Aktiv"-Modus in etwa auch 5mA. Stelle ich jedoch
anstatt den "Idle"-Mode den "PowerSave"-Mode ein, hab ich eine
Stromaufnahme von 50µA.
Jetzt meine Frage: der Idle Modus wird doch genauso "angesteuert" wie
der Powersave Modus? Wieso ist kein Unterschied messbar zwischen Idle
und Aktiv ? Desweiteren ist mit aufgefallen das im Datenblatt bei 2MHz
ext. eine Stromaufnahme von 1,4mA (3V) steht. Ich jedoch eine
Stromaufnahme mit dem internen Takt von 2MHz von 5mA messe, kann
zwischen internen und externen Takt solch ein Unterschied zu stande
kommen?
PS: Alles mit Angaben beziehen sich auf eine Spannung von 3,6V falls
nicht anders angegeben.
Beispiel Quellcode hierbei ist folgender:
1 | SLEEP_CTRL= SLEEP_SEN_bm | SLEEP_SMODE_IDLE_gc;
|
2 | //bzw.
|
3 | SLEEP_CTRL= SLEEP_SEN_bm | SLEEP_SMODE_PSAVE_gc;
|
4 |
|
5 | while(1)
|
6 | {
|
7 | uart_puts("aktiv!");
|
8 | _delay_ms(100);
|
9 | asm("sleep");
|
10 | }
|