Tôi đang cố gắng để có được một ATTiny85 để hết pin. Tôi có đồng hồ từ một tinh thể 16.384 MHz, với bộ cầu chì chia cho 8. Vcc là 3,3 volt. Hình 22-7 trong biểu dữ liệu nói rằng tại idle ( set_sleep_mode(SLEEP_MODE_IDLE); sleep_mode();
), nó sẽ vẽ khoảng 300 PatrickA. Trong thực tế, tôi thấy nó vẽ giống 850 850A. Tôi không thể hiểu tại sao tiêu thụ năng lượng được dự kiến gấp đôi. Tôi đã tắt mọi thứ trong PRR ngoại trừ timer0, mà tôi đã cấu hình để ngắt mỗi 25 ms. Vì vậy, nó nên dành phần lớn thời gian của nó ở trạng thái nhàn rỗi, đó là điều tốt nhất tôi có thể làm được vì tôi vẫn muốn bộ đếm thời gian được tính.
Các cầu chì là 0x7f, 0xdf, 0xff.
Đây là mã nó đang chạy cho thử nghiệm này:
#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() {}