Показать сообщение отдельно
Старый 24.12.2018, 22:46   #12
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Если совпадают выводы, то так нельзя оставлять.
Ведь это внешний вывод при приходе сигнала на который будет срабатывать внешнее прерывание.

Но у тебя есть второе прерывание- INT1.
И оно на другой ноге.
Так что можно поменять.
EICRA |= (1 << ISC11);
EIMSK |= (1 << INT1);

Ну и пару ссылок чтоб было понятнее:
http://mainloop.ru/avr-atmega/avr-ex...interrupt.html
http://arduino.ru/forum/programmirov...preryvaniyam-0

PS. Не забудь разрешить обработку прирывания INT1 вместо INT0 (всё подробно в первой ссылке).
И кстати я этого в коде не вижу?
К этой ноге точно что-то подключено от трансивера?
А то код настройки прирывания есть, а включения его нет!
GICR |= 1<<INT0; должно в коде быть.
Но там только включение глобального прерывания есть sei();

Ещё ссылка на английском, но более наглядная:
http://www.avr-tutorials.com/interru...nal-Interrupts

Ха! Точно!
ISR(INT0_vect)
{
//interr = register_get( INTSTATUS);
//if( interr & ( 1 << ROKR) && interr & ( 1 << RNOKR))
//register_set( INTRESET, 0x83);
//inter |= ( 1 << 1) | (1 << 0);
//register_set( INTRESET, 0x00);
};
Обработчик прерывания пустой!
В общем эта настройка нафиг не нужна.
Не помню sei(); надо оставлять для конвеера SPI или нет, но вроде нет...
Так что настройку внешнего прерывания и включение глобального не имеет смысла оставлять.

Последний раз редактировалось T_r_D; 24.12.2018 в 23:17.
T_r_D вне форума   Ответить с цитированием