Hallo,
ich habe folgende Frage: Ich habe diesen sehr kleinen
Arduino([[https://www.dfrobot.com/product-1259.html]]) bestellt, welcher
mit einem CC2540 von Texas Instruments ausgestattet ist.
Ich würde ihn gerne bei einem Batterie-Projekt benutzen und der
Stromverbrauch soll somit möglichsz gering sein, alle möglichen
Maßnahmen beim Atmega 328, welcher verbaut ist, habe ich bereits
getroffen jedoch ist der Stromverbauch immernoch relativ hoch. Auf der
Seite von Texas Instruments steht, dass der CC2540 im activer mode 10mA
verbraucht.
Das kann mit Low power modes bis in den muA Bereich reduziert
werden.([[http://www.ti.com/product/CC2540]]).
Nun meine Frage, wie kann ich den Power Mode ändern? Bisher habe ich den
Arduino in der Arduino IDE programmiert. Anbei finden Sie den Code und
das Datenblatt des Arduinos.
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 | #include <avr/power.h>
|
4 | #include <avr/sleep.h>
|
5 | #include <avr/wdt.h>
|
6 |
|
7 | #define BUZZER 4
|
8 |
|
9 | volatile const int ping = 0xA1;
|
10 | volatile const int mute = 0xB1;
|
11 | volatile int counter = 0;
|
12 |
|
13 | void setup() {
|
14 | cli(); // disable interrupts during setup
|
15 | Serial.begin( 115200 );
|
16 | pinMode(BUZZER, OUTPUT);
|
17 | EIMSK |= (1 << INT0); // Enable external interrupt port zero (switch)
|
18 | EICRA = ISC10; // Logical change generates external interrupts
|
19 | power_adc_disable(); // ADC converter
|
20 | power_spi_disable(); // SPI
|
21 | power_timer1_disable();// Timer 1
|
22 | power_timer2_disable();// Timer 2
|
23 | power_twi_disable(); // TWI (I2C)
|
24 | wdt_disable();
|
25 | sei();
|
26 | set_sleep_mode(SLEEP_MODE_PWR_DOWN);
|
27 | sleep_enable();
|
28 | sleep_cpu();
|
29 | }
|
30 |
|
31 | void loop() {
|
32 | checkSerial();
|
33 | }
|
34 |
|
35 | void checkSerial() {
|
36 | if (Serial.available()) {
|
37 | byte b = Serial.read();
|
38 | Serial.flush();
|
39 | if (b == ping) {
|
40 | digitalWrite(BUZZER, HIGH);
|
41 | }
|
42 | if (b == mute) {
|
43 | digitalWrite(BUZZER, LOW);
|
44 | }
|
45 | set_sleep_mode(SLEEP_MODE_PWR_SAVE);
|
46 | sleep_enable();
|
47 | sleep_cpu();
|
48 | }
|
49 | }
|
50 |
|
51 | ISR(INT0_vect) { // waking up the processor
|
52 | }
|