Forum: Mikrocontroller und Digitale Elektronik Bluno Beetle mit CC2540 - Low Power?


von Leon I. (leon_i)


Angehängte Dateien:

Lesenswert?

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
}

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.