Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
96 Микроконтроллеры AVR от азов программирования... Это полезно запомнить. Регистр маски — это обычный регистр ввода-вывода, служащий для управления отдельными источниками прерываний. Каждому биту в регистре маски соответствует один источник. Если бит сброшен в ноль, прерывание этого вида запрещено. Если бит установлен в еди ничное состояние, прерывание разрешено. В микроконтроллерах AVR применяются два регистра маски. Регистр GIMSK управляет всеми видами прерываний, кроме прерываний от тай меров. В некоторых микроконтроллерах семейства «Mega» этот регистр называется GICR. Для управления прерываниями от таймеров имеется специальный регистр TIMSK. Кроме регистров маски для управления процессом выполнения преры ваний существуют еще два регистра. Это регистры флагов прерываний. Каждый бит такого регистра — это флаг одного из видов прерываний. При поступлении запроса на прерывание флаг устанавливается в единицу. По состоянию флага программа может судить о наличии запроса. В определенных режимах после установки флага процедура обработки прерывания вызывается автоматически. Сразу после вызова процедуры соответствующий флаг сбрасывается. Микроконтроллеры AVR имеют два регистра флагов: регистр GIFR (обслуживает те же прерывания, что и регистр GIMSK) и регистр TIFR (флаги прерываний от таймеров). Алгоритм работы системы прерываний Общий алгоритм работы системы прерываний следующий. После сброса микроконтроллера все прерывания запрещены (флаги разре шения сброшены). Если программист планирует использовать один из видов прерываний, он должен предусмотреть в своей программе вклю чение этого прерывания. Для включения прерывания программа должна установить флаг I регистра SREG в единицу и записать в регистры маски такой код, кото рый разрешит лишь нужные в данный момент прерывания. Разрешив, таким образом, прерывания, программа приступает к выполнению своей главной задачи. При поступлении запроса на прерывание устанавливается флаг соот ветствующего прерывания. Флаг устанавливается даже в том случае, если прерывание запрещено. Если прерывание разрешено, то микроконтрол лер приступает к его выполнению. Текущая программа временно при останавливается, и управление передается на адрес соответствующего вектора прерывания. В тот же момент флаг I автоматически сбрасывается, запрещая обра ботку других прерываний. Флаг, соответствующий вызванному преры
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==