Возобновление последовательного соединения после сна на Arduino M0
Для отладки я хочу, чтобы мое последовательное соединение возобновилось после sleep. After запуска LowPower.sleep() из библиотеки <ArduinoLowPower.h>, я не получаю никаких новых последовательных сообщений в последовательном мониторе.
Несколько факторов, кажется, в игре (которые я перечислил внизу), и я разработал частичное решение, но это не здорово, потому что для возобновления последовательного режима требуется несколько длительных искусственных задержек около 1 секунды после каждого сна. Итак, повторюсь, мой вопрос заключается в том, как я могу получить последовательный режим работы после спящего микроконтроллера без необходимости вставлять длинные задержки.
Для фона я использую Adafruit Feather M0, который, как я думаю , на самом деле использует SerialUSB и автоматически преобразует последовательные команды в это в соответствии с руководством, но я не уверен, что это означает.
Вот некоторые вещи, которые я изучил:
COM-порт: Одним из факторов является то, что Arduino отключается от компьютера My Windows 10 в спящем режиме и снова подключается, когда он просыпается иногда на другом COM-порту. Использование термина Tera программы вместо последовательного монитора Arduino IDE, кажется, держит его на том же COM-порту.
Последовательный сброс и завершение: Как отмечается в моем примере кода, обе эти команды кажутся необходимыми перед сном, иначе я не буду получать новые сообщения после сна.
Задержка: Похоже, что arduino может посылать сообщения сразу после пробуждения, которые Tera Term не увидит. Я должен поставить задержку в 1 полную секунду после пробуждения, иначе я не увижу сообщений.
Вот какой код я уже пробовал.
#include <ArduinoLowPower.h>
void setup() {
Serial.begin(115200);
while(!Serial){delay(10);}
Serial.println("start");
}
void loop() {
Serial.println("");
Serial.println("sleep");
Serial.flush(); //если эта строка закомментирована, то будет показан только один цикл "сна"
Serial.end(); //если эта строка закомментирована, то будет показан только один цикл "сна"
//delay(2000); //похоже, ничего такого закомментированного не исправляет
LowPower.sleep(2000);
delay(1000); //at 750 пропускает некоторые "бодрствующие" сообщения
//Serial.begin(115200); //эта строка, похоже, ничего не исправляет, поэтому закомментирована
Serial.println("проснулся");
Выход:
start
sleep
awake
sleep
awake
sleep
awake
@rfii, 👍1
Обсуждение0
- Arduino Pro Mini ATmega 328P: вывод мусора на последовательную консоль
- Как вывести несколько переменных в строке?
- Максимальная последовательная скорость CH340
- Эмуляция стандартного периферийного USB-устройства Mifare с помощью RFID-RC522
- Можно ли загрузить скетч Arduino через последовательный порт (RX) вместо USB?
- Может ли Arduino Leonardo одновременно использовать USB-порт и последовательные контакты RX TX?
- Внешнее питание 5 В и последовательный порт USB
- Можно ли использовать Serial.print(сообщение), когда USB-кабель не подключен к хост-компьютеру?
в то время как (!Серийный номер);
?, @Jurajтак что у меня есть шанс открыть серийный номер на моем компьютере, прежде чем он сойдет с ума, @rfii