ATTiny13プログラミング(その1) スリープ編

USBaspが一段落したのでATTiny13Aでプログラミングを始めました

USBaspとATTiny13Aとの接続は下記のとおりです

まずはCR2032での電池駆動を考えているのでスリープのテストです

LED点灯時は3.81mA

picture 12.jpg

set_sleep_mode(SLEEP_MODE_PWR_DOWN) 設定だと0mA

picture 13.jpg

set_sleep_mode(SLEEP_MODE_IDLE) 設定でも0.91mA

picture 14.jpg

 


#include <avr/interrupt.h>
#include <avr/sleep.h>
#define SW 3
#define LED 1
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED,OUTPUT);
  pinMode(SW,INPUT_PULLUP);
  digitalWrite(LED,HIGH);
}

// the loop function runs over and over again forever
void loop() {
//  digitalWrite(1, HIGH);   // turn the LED on (HIGH is the voltage level)
//  delay(100);                       // wait for a second
//  digitalWrite(1, LOW);    // turn the LED off by making the voltage LOW
//  delay(100);                       // wait for a second
  if(digitalRead(SW)==0){
    digitalWrite(LED,LOW);
    pinMode(LED,INPUT);
    //set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    set_sleep_mode(SLEEP_MODE_IDLE);
    sleep_mode();
  }
}