我对微控制器的编程很陌生,我刚刚开始使用Attiny85。我正试图建立一个电路的LED与触觉开关。每次按下触觉开关,它就会跳过LED到下一种工作状态。由于它是电池操作,当LED关闭,我希望命运85消耗尽可能低的电流。到目前为止,它正在消耗4mA时,LED是关闭没有睡眠模式。所以我试了一下Attiny 85的断电模式,但是我还是被困在了断电模式中。
if(count == 8){
analogWrite(0,LOW);
//Serial.println("I am OFF");
//Serial.println(count);
set_sleep_mode(SLEEP_MODE_PWR_DOWN); //Power down everything
sleep_mode();
sleep_disable();
}它成功地进入了睡眠模式,但我无法摆脱它。能请人帮忙吗。当触觉开关再次被按下时,我想要凹槽85脱离睡眠模式。开关在第7引脚上,即命运85的PB2。
发布于 2020-01-29 14:35:20
请参阅数据表,7.1节睡眠模式,在第34页。
在表中可以看到,在断电模式下,只有3个源可以唤醒CPU:
这意味着,如果您希望该部分唤醒时按钮已按下,那么最好的选择将是配置引脚更改中断。
首先,您需要配置中断服务例程(ISR)。ISR只需要处理中断事件,如果没有中断事件,程序将被重新启动。由于不需要采取行动,ISR可以是空的:
#include <avr/interrupt.h>
EMPTY_INTERRUPT(PCINT0_vect);接下来,您需要配置引脚更改中断(请参阅数据表中的9.2 External Interrupts部分),例如:
// I don't know which pin do you use for the button
// Let's assue it is PB0 which corresponds to PCINT0
// (see section 1. Pin Configurations)
PCMSK = (1 << PCINT0); // set pin change mask to PCINT0
GIMSK = (1 << PCIE); // enable pin change interrupt
sei(); // enable global interrupts就这样。在配置中断之后,输入端的任何逻辑级别的更改都会导致CPU苏醒。
https://stackoverflow.com/questions/59908541
复制相似问题