Go Down

Topic: Mega 2560 + Strom sparen? (Read 1 time) previous topic - next topic

arduinofish

Hallo,

ich möchte gern den Stromverbrauch meines Mega reduzieren. Ich bin mit ein bisschen suchen auf diese Bibliothek gestoßen.
http://www.rocketscream.com/blog/2011/07/04/lightweight-low-power-arduino-library/

Scheint recht simpel zu sein, aber leider geht es nicht so recht. Ich bekomme folgende Fehlermeldungen


Code: [Select]

LowPower.cpp: In member function 'void LowPowerClass::powerDown(period_t, adc_t, bod_t)':
LowPower.cpp:298: error: 'BODS' was not declared in this scope
LowPower.cpp:298: error: 'BODSE' was not declared in this scope
LowPower.cpp: In member function 'void LowPowerClass::powerSave(period_t, adc_t, bod_t, timer2_t)':
LowPower.cpp:379: error: 'BODS' was not declared in this scope
LowPower.cpp:379: error: 'BODSE' was not declared in this scope
LowPower.cpp: In member function 'void LowPowerClass::powerStandby(period_t, adc_t, bod_t)':
LowPower.cpp:439: error: 'BODS' was not declared in this scope
LowPower.cpp:439: error: 'BODSE' was not declared in this scope
LowPower.cpp: In member function 'void LowPowerClass::powerExtStandby(period_t, adc_t, bod_t, timer2_t)':
LowPower.cpp:512: error: 'BODS' was not declared in this scope
LowPower.cpp:512: error: 'BODSE' was not declared in this scope



Was bedeutet das?


Grüße
Peter

uwefed


arduinofish

richtig. Hier ist er


Code: [Select]

#include "LowPower.h"

void setup()
{
    // No setup is required for this library
}

void loop()
{
    // Sleep for 8 s with ADC module and BOD module off
    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
    // Do something here
    // Example: read sensor, log data, transmit data
}

uwefed

Auf http://www.rocketscream.com/blog/2011/07/04/lightweight-low-power-arduino-library/
steht in der 3. Zeile:
Quote
Supports all sleeping mode of ATmega328P:

Der Arduino Mega hat keinen ATmega328 sondern einen ATmega2560.
Ich befürchte daß die Bibiothek mit den 2560 nicht kompatibel ist.

Grüße Uwe

arduinofish

Gibt es da was ähnliches für den Mega? Oder wie macht man das? Der ArduinaSleepCode geht nicht so recht,...der Mega wollte nicht mehr erwachen.

arduinofish


voithian


Hat keiner ne Idee:)?

Doch, ich hätte da was anzubieten:

1. Die Fehlermeldungen resultieren daher, dass BODS und BODSE nicht in der controllertyp-spezifischen Header-Datei für den 2560 definiert sind. Es handelt sich dabei um Bit-Nummern in einem speziellen Register des Controllers.

2. Das dürfte daran liegen, dass die Betriebsart "BOD Disable" beim ATMega 2560 nicht unterstützt wird (wohl aber beim 328P). Jedenfalls habe ich im Datenbuch für den 2560 nichts dergleichen gefunden.

3. Folglich dürfte Uwe mit seiner Vermutung richtig liegen, dass die Library nicht für den 2560 geeignet ist, weil der "nicht alles kann", was der 328P kann.

4. Könnte man als Tüftler versuchen, die Library so anzupassen, dass die beim 2560 nicht unterstützten Betriebsarten aus dem Programmcode herausgeworfen werden (und den Rest behalten). Das erfordert aber ganz sicher auch ein fleißiges Studium des Datenbuchs, um den Code der Library überhaupt zu verstehen.

5. Frage ich mich, ob es auf einem ATMega-Board Sinn macht, den eigentlichen Controller auf möglichst geringe Stromaufnahme zu trimmen, während die sonstigen Chips auf dem Board (z.B. Controller für USB<->RS232-Wandlung, Power-LED, usw.) von alledem nichts wissen.

Gruß
Wolfgang



Go Up