Teensy++ 2.0 low power minimum current

Status
Not open for further replies.

liuhuan

Member
SOLVED! After switching to SLEEP_MODE_PWR_DOWN, Teensy now draws only 18uA!

Dear Paul and friends,

I'm trying to lower the current of my Teensy++2.0 at 5V in SLEEP_MODE_PWR_SAVE following the insturction on http://www.pjrc.com/teensy/low_power.html, and the lowest I could get is 1.3mA while the lowest possible is 0.04mA.

Below is the code I'm using. I wonder if I'm missing something obvious.

Thanks so much for your help!

Code:
const int ledPin = 6;
const int wakeupPin = 2;

void wakeUp()
{
  Serial.println("in wakeUp()");
  Serial.println("Turn on");
  digitalWrite(ledPin, HIGH);
  delay(5000);
  Serial.println("Turn off");
  digitalWrite(ledPin, LOW);
}

volatile int ledVal;
void setup()
{
  Serial.begin(38400);
  pinMode(ledPin, OUTPUT);
  pinMode(wakeupPin, INPUT_PULLUP);
  
  pinMode(PIN_D1, OUTPUT);
  pinMode(PIN_D3, OUTPUT);
  pinMode(PIN_D4, OUTPUT);
  pinMode(PIN_D5, OUTPUT);
  pinMode(PIN_D6, OUTPUT);
  pinMode(PIN_D7, OUTPUT);
  pinMode(PIN_E0, OUTPUT);
  pinMode(PIN_E1, OUTPUT);
  pinMode(PIN_E4, OUTPUT);
  pinMode(PIN_E5, OUTPUT);
  pinMode(PIN_E6, OUTPUT);
  pinMode(PIN_E7, OUTPUT);
  pinMode(PIN_F0, OUTPUT);
  pinMode(PIN_F1, OUTPUT);
  pinMode(PIN_F2, OUTPUT);
  pinMode(PIN_F3, OUTPUT);
  pinMode(PIN_F4, OUTPUT);
  pinMode(PIN_F5, OUTPUT);
  pinMode(PIN_F6, OUTPUT);
  pinMode(PIN_F7, OUTPUT);
  pinMode(PIN_C0, OUTPUT);
  pinMode(PIN_C1, OUTPUT);
  pinMode(PIN_C2, OUTPUT);
  pinMode(PIN_C3, OUTPUT);
  pinMode(PIN_C4, OUTPUT);
  pinMode(PIN_C5, OUTPUT);
  pinMode(PIN_C6, OUTPUT);
  pinMode(PIN_C7, OUTPUT);
  pinMode(PIN_B0, OUTPUT);
  pinMode(PIN_B1, OUTPUT);
  pinMode(PIN_B2, OUTPUT);
  pinMode(PIN_B3, OUTPUT);
  pinMode(PIN_B4, OUTPUT);
  pinMode(PIN_B5, OUTPUT);
  pinMode(PIN_B6, OUTPUT);
  pinMode(PIN_B7, OUTPUT);
  
  attachInterrupt(wakeupPin, wakeUp, FALLING); //LOW,RISING, FALLING,CHANGE
  ledVal=0;
  digitalWrite(ledPin, ledVal);
  Serial.println("done init");
}

#include <avr/sleep.h>

void powerdown() {
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  Serial.println("bye world!");
  delay(1000);
  Serial.end(); // shut off USB
  ADCSRA = 0;   // shut off ADC
  set_sleep_mode(SLEEP_MODE_PWR_SAVE);
  noInterrupts();
  sleep_enable();
  interrupts();
  sleep_cpu();
  sleep_disable();
}

void loop() 
{
  powerdown();
}
 
Last edited:
Status
Not open for further replies.
Back
Top