I'm making a software latch with following features:
[*]ATtiny85 @ 1 MHz, BOD disabled
[*]PB0 = LED, PB3 = Button (with internal pull-up) Interrupt on change
[*]Deep sleep until button press
[*]Change state with 2s button hold
АЦП и периферийные устройства отключены для сохранения питания < /li>
< /ul>
Код ниже сейчас работает, но есть какое -то странное поведение, которое иногда не регистрирует кнопку после сна, поэтому он не просыпается. Может ли кто -нибудь помочь улучшить это? < /P>
#include
#include
#include
#define LED_PIN 0 // PB0
#define BUTTON_PIN 3 // PB3
bool ledState = false;
bool buttonHandled = false;
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
digitalWrite(LED_PIN, LOW);
GIMSK |= (1 = 2000) return true;
}
return false;
}
// Sleep function
void goToSleep() {
digitalWrite(LED_PIN, LOW);
cli();
wdt_disable(); // Disable watch dog timer to save power
sleep_bod_disable(); // Disable Brown out detector
// Power-saving: disable peripherals
ADCSRA &= ~(1
Подробнее здесь: https://stackoverflow.com/questions/797 ... ate-change
Attiny85 программное обеспечение с помощью кнопки удержание для запуска / смены спящего состояния ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение