Показать сообщение отдельно
Старый 30.12.2018, 14:07   #15
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
По умолчанию

Нет.
EIMSK |= (1 << INT0) разрешает обработку прибывания 0.

Я выше затупил.
Так что прирывание включилось.

Тоесть вывод INT0 настроен на реакцию на внешний импульс и срабатывание будет по заднему фронту отрицательного импульса.

Другими словами:
EICRA |= (1 << ISC01);
EIMSK |= (1 << INT0);
sei();
Включит обработку прирывания на выводе INT0 по отрицательному импульсу его спаду.

EICRA |= (1 << ISC11);
EIMSK |= (1 << INT1);
sei();
Включит обработку прирывания на выводе INT1 по отрицательному импульсу его спаду.

А ещё проще- если на выводе INT0 (или INT1) появляется отрицательное напряжение, то после прекращения его подачи обработается код прерывания:
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);
};

Но поскольку в теле функции ни чего нету (всё закоменчено), то ни чего и не произойдёт.

А прерывание это аппаратный приоритет кода.
Тоесть как только будет вызвано событие прерывания, основной код остановит своё выполнение и отработается код из функции прерывания.

НО!
Поскольку в коде прерывания пусто, то настраивать и разрешать его не имеет смысла!

И на схеме видно что выводы INT0(4) и INT1(5) ни куда не подключены!
Тоесть не парься по поводу этих строк.
Можешь их из кода вообще выкинуть и функцию тоже.
Ни чего не изменится.

Видимо был рассчёт на то, что контроллер шины или выдаёт импульс на приём пакета или что очевиднее это увод в SLEEP контроллера когда на шине тихо.
Но это ни как не реализовано.
Задействованы ноги PB0-5.
А именно сигналы GPIO (PB0), CS2(PB1), CS1(PB2) это как цифровые выходы.
И PB3-5 - MOSI, MISO, SCK как SPI шина.

Ну и PD0 и PD1 как UART.

Так что забудь о прерывании.
При переделку кода на другой контроллер нужно поменять назначения 8 выводов если они не совпадают (те что написал выше).

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