библиотека таймера на Arduino DUE
Я пытаюсь вызвать подпрограмму прерывания (назовем ее handler()) каждую секунду на своем Arduino DUE. Я думал, что самый простой способ сделать это — использовать эту библиотеку но кажется, что я не знаю, как им пользоваться...
@Julie96, 👍0
Обсуждение1 ответ
Лучший ответ:
Вы пытаетесь напечатать 6 символов («test\r\n»), т.е. 60 бит. включая стартовый и стоповый биты, 1000 раз в секунду. Это требует скорость передачи данных не менее 60 кбит/с, однако последовательный порт настроен всего на 9,6 кбит/с. Что-то должно дать...
Как написал в комментарии Микаэль Патель, вообще не рекомендуется
Serial.print()
из ISR. Хотя это должно работать, т.к.
до тех пор, пока вы не заполните выходной буфер Serial
. Проблема в том, что
ваш код заполняет буфер, поскольку он записывает в него быстрее, чем
UART может его очистить. Как только буфер заполнится, программа
неисправность.
Спасибо ! теперь обязательно воспользуюсь флагом, @Julie96
- Генерация комплементарного ШИМ с внешним триггером с помощью Arduino Due
- Использование millis() и micros() внутри процедуры прерывания
- Arduino Due vs Mega 2560
- Как сделать очень долгую функцию delay(), несколько часов
- Разница между «time_t» и «DateTime»
- Получение BPM из данного кода
- Как считать время в секундах?
- Создание таймера с использованием часов реального времени с указанием времени начала и остановки
Я думаю, вы имеете в виду
start(1000000)
., @Edgar Bonetда........... это неловко ахахах Есть ли у вас предположения, почему не работает start(1000) ? Serial.print слишком длинный для выполнения?, @Julie96
Последовательная печать в ISR не рекомендуется. Установите флаг в ISR и вместо этого опрашивайте в цикле()., @Mikael Patel