ラズピコのmicroPythonで以下のようなコードではRTC割り込み受け付けられません
つまりlight sleep()で無限に待つ設定にして、RTC割り込みを受けようとしてもラズピコのmicroPython実装では、lightsleep中は他の割り込み受け付けは機能しません
try:
while True:
if alarm_triggered:
alarm_triggered = False
clear_alarm_flag()
time.sleep_ms(5)
set_alarm()
value1 = round((adc0.read_u16() >> 4) * 3.3 * 3 / 4096, 2)
value2 = round((adc1.read_u16() >> 4) * 3.3 * 2 / 4096, 2)
print(value1, value2)
if value2 > 2.0:
logger.write(rtc, value1, value2)
machine.lightsleep()
except KeyboardInterrupt:
print("terminated")
従って、やりたい機能を実装しようとすると、
machine.lightsleep()でRTC割り込みと同等の値(最大値)を設定してやらないとダメ、電池寿命計ろうと思って無限待ちにしたら最初のRTC割り込みしか実行されず、それ以降のRTC割り込みは発生しなくなってしまった
まあラズピコの実装レベルはその程度のようです
admin