Нет.
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.
|