Как генерировать прерывание от радиомодуля при получении сообщения с Adafruit Feather 32u4 Lora
В качестве MCU для удаленного датчика и переключателя я использую Adraruit Feather 32u4 RFM95 Lora Radio. Я использую библиотеку RadioHead для взаимодействия с радиомодулем.
Моя цель состоит в том, чтобы мое перо отправляло данные датчика через регулярные интервалы. Я также хочу, чтобы он мог получать команды удаленно, которые включают и выключают подключенные устройства. Я подключил его к аккумулятору и солнечной панели. Решение, которое я имею до сих пор, состоит в следующем
void loop()
{
if (rf95.available())
{
handleRFInput();
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= TIME_BETWEEN_PACKETS)
{
// Sends the data
sendSensorData();
// save the last time data was sent
previousMillis = currentMillis;
}
}
Есть несколько проблем с этим. Первая и самая большая проблема заключается в том, что я могу легко потерять входящие данные. Во-вторых, процессор всегда работает, и я не могу уснуть из-за страха потерять входящие сообщения. Я хотел бы сохранить как можно больше энергии, позволяя ей спать как можно дольше.
Очевидное решение этой проблемы - запуск прерывания при появлении нового сообщения. Я не могу понять, как это сделать. В документации есть вывод № 7, в котором говорится, что это IRQ. Я старался
#define RFM95_INT 7
attachInterrupt(digitalPinToInterrupt(RFM95_INT), handleRFInput, CHANGE);
но когда я побежал, ничего не случилось. Данные датчика не были переданы или что-то еще. Что мне нужно сделать, чтобы получить прерывание при получении сообщения?