Moin,
ich arbeite derzeit mit den BitCloud Stack von Atmel (Version 1.13.0).
Zielplattform sind ZigBit Module (ATZB-24-A2, das mit zwei Antennen).
Auf meinem Board befindet sich das ZigBit Modul, die
Abblockkondensatoren, zwei LEDs und ein Pull-Up Widerstand am Reset.
Also kaum mehr als das Nötigste.
Mein Vorhaben ist es, dass die als EndDevice konfigurierten Module alle
30 Sekunden aufwachen, einen Sensor einlesen, den Messwert senden und
den Rest der Zeit schlafen. Die Software ist auch fertig und läuft.
Einziger hacken ist, dass die Module im Schlaf 210 bis 240 µA
verbrauchen. Das ist weit mehr als die 6 µA aus dem Datenblatt von
Meshnetics. Auch wenn ich weiß, dass der Stromverbrauch für den Timer2
hinzukommt.
Mein Problem ist, dass die Module aus Batterien gespeist werden sollen
und 200 µA um einiges zu hoch sind.
Mein Code zum schlafen legen:
1 | static ZDO_SleepReq_t sleep_req;
|
2 | static void ZDO_SleepConf(ZDO_SleepConf_t *conf);
|
3 |
|
4 | void APL_TaskHandler(void)
|
5 | {
|
6 | ...
|
7 | //Diese Stelle wird aufgerufen, getestet durch LEDs.
|
8 | //Ohne diesen Aufruf bleibt der Stromverbrauch bei einigen mA
|
9 | sleep_req.ZDO_SleepConf = ZDO_SleepConf;
|
10 | ZDO_SleepReq(&sleep_req);
|
11 | ...
|
12 | }
|
13 |
|
14 | ...
|
15 |
|
16 | static void ZDO_SleepConf(ZDO_SleepConf_t *conf)
|
17 | {
|
18 | if (ZDO_SUCCESS_STATUS == conf->status)
|
19 | {
|
20 | //Nichts zu tun
|
21 | //Diese Stelle wird nachweislich erreicht
|
22 | }
|
23 | else
|
24 | {
|
25 | //Nochmal versuchen
|
26 | SYS_PostTask(APL_TASK_ID);
|
27 | }
|
28 | }
|
In der halSleep.c habe ich alles auskommentiert, womit ein anderer
Schlafmodus als der PowerSave eingenommen werden würde.
In der configuration.h wurde CS_END_DEVICE_SLEEP_PERIOD auf 30000L (30
Sekunden) gesetzt.
Die Fuses sind auf internen Takt mit 8 MHz gestellt. Weiterhin ist nur
die ISP Programmierung aktiv. JTAG und OCDEN sind deaktiviert.
Hat jemand von euch mit dem BitCloud Stack Erfahrungen und weiß, wie ich
den Stromverbrauch senken kann? Wird der RF-Chip vielleicht nicht
komplett abgeschaltet? Wenn nein, wie würde ich ihn abschalten können?
Am Taktausgang des Moduls liegt im Schlafmodus kein Takt an.
Danke im voraus