Как генерировать прерывание из радиомодуля при получении сообщения с Adafruit Feather 32u4 Lora - PullRequest
0 голосов
/ 29 ноября 2018

Я использую Adafruit Feather 32u4 RFM95 Lora Radio в качестве MCU для дистанционного датчика и переключателя.Я использую библиотеку 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);

, но когда я побежал, ничего не произошло.Данные датчика не были переданы или что-то еще.Что мне нужно сделать, чтобы получить прерывание при получении сообщения?

...