Saya mencoba untuk mendapatkan ATTiny85 untuk menjalankan baterai. Saya memilikinya clock dari kristal 16,384 MHz, dengan set sekering divide-by-8. Vcc adalah 3,3 volt. Gambar 22-7 dalam datasheet mengatakan bahwa saat idle ( set_sleep_mode(SLEEP_MODE_IDLE); sleep_mode();
), ia harus menggambar sekitar 300 μA. Sebenarnya, saya melihatnya menggambar lebih seperti 850 μA. Saya tidak tahu mengapa konsumsi daya dua kali lipat dari yang diharapkan. Saya telah mematikan semuanya dalam PRR kecuali untuk timer0, yang telah saya konfigurasikan untuk menginterupsi setiap 25 ms. Jadi itu harus menghabiskan sebagian besar waktunya dalam keadaan diam, yang merupakan yang terbaik yang bisa saya lakukan mengingat saya masih ingin penghitung waktu menghitung.
Sekeringnya adalah 0x7f, 0xdf, 0xff.
Berikut kode yang sedang dijalankan untuk tes ini:
#include <Arduino.h>
#include <EEPROM.h>
#include <avr/sleep.h>
#include <avr/power.h>
#define P0 0
#define P1 1
#define P_UNUSED 2
ISR(TIMER0_COMPA_vect) {
// do nothing - just wake up
}
void setup() {
power_adc_disable();
power_usi_disable();
power_timer1_disable();
//PRR = _BV(PRADC) | _BV(PRTIM1) | _BV(PRUSI); // everything off but timer 0.
TCCR0A = _BV(WGM01); // mode 2 - CTC
TCCR0B = _BV(CS02) | _BV(CS00); // prescale = 1024
// xtal freq = 16.384 MHz.
// CPU freq = 16.384 MHz / 8 = 2.048 MHz
// count freq = 2.048 MHz / 1024 = 2000 Hz
OCR0A = 50; // 25 msec per irq
TIMSK = _BV(OCIE0A); // OCR0A interrupt only.
set_sleep_mode(SLEEP_MODE_IDLE);
pinMode(P_UNUSED, INPUT_PULLUP);
pinMode(P0, OUTPUT);
pinMode(P1, OUTPUT);
digitalWrite(P0, LOW);
digitalWrite(P1, LOW);
while(1) { sleep_mode(); }
}
void loop() {}