Прерывание по приходу байтов в UART

ermvad
Offline
Зарегистрирован: 25.11.2015

Всем привет. МК находится в спячке (pwrdown). Если в uart что то приходит, контроллер просыпается, обрабатывает это прерывание и засыпает. Как это сделать? Подключbnm rx на INT0 или INT1 не могу. Слышал про регистр USART_rx_vect, но он вроде занят библиотекой Hadrwade Serial. Как быть? Сам serial нужен

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

ermvad, вы читали раздел sleep modes даташита? Там перечислены источники, которые способны пробудить МК в том или ином режиме. И прерываний USART там нету.

ermvad
Offline
Зарегистрирован: 25.11.2015

Извиняюсь не так написал, режим энергопотребеления pwr idle, в нем usart работает. Прерывание от usart может пробудить, но проблема в том, что оно используется в HardwareSerial0.cpp

ermvad
Offline
Зарегистрирован: 25.11.2015

Пробовал этот вариант: http://arduino.ru/forum/programmirovanie/com-port-i-serialavailable

Не сработало....

Вписал в HardwareSerial0.cpp
#if defined(USART_RX_vect)
  ISR(USART_RX_vect){
	PORTB&=~(1<<3);  // сброс бита
	PORTB|=(1<<3);     // установка бита
  }

Вместо

#if defined(USART_RX_vect)
  ISR(USART_RX_vect)
UPD, вроде как получилось, до этого не тот файл редактировал ((Нужный: C:\Users\Влад\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.10\cores\arduino))