Прерывание по входу байта через UART
- Войдите на сайт для отправки комментариев
Ср, 25/09/2013 - 07:24
Здравствуйте.
Необходимо, чтобы запускалось прерывание, когда в буфер UART поступал байт.
Как это реализовать.
Гуглить пробовал не нашел.
Это не по прерыванию, но по завешению функции loop, там и примеры есть:
http://arduino.cc/en/Reference/SerialEvent
Это не по прерыванию, но по завешению функции loop, там и примеры есть:
http://arduino.cc/en/Reference/SerialEvent
А зачем по завершению функции loop?
это ведь нескончаемый цикл. мне нужно в любое время при получении байта в буфер UART вызвать обработку прерывания.
Каким образом ваш пример может заменить вышеописанную необходимость?
Если ждать когда закончится loop (который вообще не заканчивается. Или я может чего-то не понимаю, поясните, пожалуйста) то я непосредственно и в самой функции могу опрашивать буфер. Мне то нужно в любой момент остановить действие программы, в обработчике прерываний получить данные по UART и обработать их, потом продолжить выполнение основной программы.
Пример, который вы прислали на английском, перевод гугл тьолком ничего не пояснил.
Пояните, пожалуйста и приведите пример программного кода с подробными пояснениями в комментариях к каждой строке кода
Для начала это почитайте что бы таких вопросов не возникало.
http://arduino.ru/forum/obshchii/migaem-vstroennym-svetodiodom-s-chastotoi-opredelyaemoi-kompyuterom
Необходимо, чтобы запускалось прерывание, когда в буфер UART поступал байт.
Ну так и воспользуйтесь прерыванием 19 "Завершение приема по каналу USART"
подниму зомбятину...
---Ну так и воспользуйтесь прерыванием 19 "Завершение приема по каналу USART"
Это включение в код по сути асма atmega328. А такой команды ардуино, чтобы годилась и на atmega328, и на другие чипы (вроде sam3) нету?
То что вам нужно
http://arduino.ru/forum/programmirovanie/preryvanie-po-postupleniyu-bait...
Работает быстро, надёжно, вовремя и без ожиданий, задержек ...
То что вам нужно
http://arduino.ru/forum/programmirovanie/preryvanie-po-postupleniyu-baita-usart-preryvanie-arduino-mega-2560
Работает быстро, надёжно, вовремя и без ожиданий, задержек ...
Пасиб, но это немного не то - это по сути включение в код в arduino ide cпецифических асм команд мк atmega2560 вроде
ISR(USART0_RX_vect)
. На любом другом мк, в том числе и на atmega328, этот код уже не пойдет, Там другие команды, там нужно будетISR(USART_RX_vect)
. Но тем не менее спасибо.