Как правило, прерывания будут иметь именно те биты / регистры конфигурации, которые им нужны, и не более. В общем случае для каждого вектора прерывания имеется только один enable bit.
Чтобы взять ваши примеры:
Прерывания смены выводов довольно просты и требуют только бит разрешения на вектор и регистр битовой маски (один бит на вывод).
Таймеры более сложны - хотя вы и говорите, что для включения прерывания переполнения timer0 вам нужно всего лишь установить TOIE0
в TIMSK0
, вам все равно нужно правильно настроить таймер, чтобы его можно было использовать в ваше приложение, выполнение которого может занять несколько строк кода.
В обоих случаях есть шаг setup step и enable step.
Преимущество этого заключается в том, что вы можете настраивать прерывания, но активировать их только при необходимости. Это значит:
- Нет циклов процессора или ОЗУ тратится на прерывания, выполняемые, когда они не нужны
- Не тратится мощность на прерывания, когда они не нужны
- Переконфигурирование прерываний возможно при запуске, путем отключения прерывания, изменения конфигурации и повторного включения его
Все это полезно для встроенных программных приложений.