Принципиальная схема МКУ для исследования внешнего прерывания от кнопки приведена на рис. 3.
Рис. 3. Схема МКУ с прерыванием от кнопки
МКУ должно выполнять следующий алгоритм. После запуска программы (сброса МК) светодиод D1(красный) «мигает» с частотой 0,5 Гц, а светодиод D2 (зеленый) не горит, если контакт SB1 разомкнут (кнопка не нажата). При каждом нажатии на кнопку SB1 светодиод D2 переключается, т.е. то горит, то гаснет. При разработке программы предполагается, что нажатие на кнопку SB1 генерирует запрос внешнего прерывания INT0.
3.3.1. В раскрытом окне CVAVR создайте новый проект, для чего выберите команду из меню File > New (Файл > Новый). В появившемся диалоговом окне Create New File (Создать новый файл) выберите тип (File Type) создаваемого файла – Project (Проект) и щелкните по кнопке ОК.
После этого появится диалоговое окно Confirm (Подтверждение), в котором будет предложено для создания нового проекта использовать CodeWizardAVR (Автоматический генератор программ). Щелкните по кнопке Yes (Да).
Далее на экране появится окно CodeWizardAVR, в котором запрашивается тип используемого в проекте микроконтроллера (AVR Chip Type). Выберите строку с типом ATmega и нажмите кнопку OK.
3.3.2. При запуске Автоматического программного генератора на экране появится окно CodeWizardAVR с новым проектом, который по умолчанию будет назван untitled.cwp.
3.3.3. В окне CodeWizardAVR на закладке Chip (Чип) выберите микроконтроллер ATmega16 и установите тактовую частоту 8,000000 МГц. Остальные настройки на этой закладке оставьте без изменения.
3.3.4. Перейдите на закладку External IRQ (внешнее прерывание), которая позволяет определить конфигурацию внешних прерываний.
Щелкните мышью по окошку INT0 Enabled (разрешить прерывание 0), что разрешит внешнее прерывание INT0.
После этого появится окошко Mode (Способ) с выпадающем списком, в котором нужно выбрать способ инициирования прерывания. Выберите из списка Falling Edge (Спадающий фронт) – прерывание будет инициировано по спадающему фронту (перепаду из «1» в «0») на входе INT0 (вывод PD2 микроконтроллера).
Для выбранного внешнего прерывания INT0 CodeWizardAVR определит программу обслуживания прерывания ext_int0_isr.
3.3.5. Теперь нужно перейти на закладку Ports (Порты) для конфигурации портов, используемых в проекте.
На закладке Port C (Порт С) сконфигурируйте биты 0 и 7 как выходы со значением 0, чтобы после запуска программы светодиоды были погашены.
На закладке Port D (Порт D) сконфигурируйте бит 2 порта как вход (In). Установите подтягивающий резистор на этом входе, что обозначается буквой P для этого бита. Остальные биты порта D оставьте без изменения, так как они не используются в данном проекте.
3.3.6. Теперь все готово для генерации кода. С этой целью выберите пункт меню Program. В раскрывшемся списке уберите «галочку» со строки “Generate Code for Disabled Peripherals” (Генерировать код для неиспользованной периферии). Это сделает программу более компактной и удобной для анализа. Затем выберите из списка команду Generate, Save and Exit (Генерировать, сохранить и выйти) и щелкните мышью.
После выбора этой команды появится окно Save C Compiler Source File (сохранить исходный файл компилятора Си), в котором нужно будет выбрать папку для сохранения проекта. С этой целью выберите папку AVR и раскройте ее. Затем щелкните в окне правой кнопкой мыши, из выпадающего списка выберите пункт меню Создать > Папку и щелкните левой кнопкой. Вместо текста «Новая папка» введите имя Int0 (Прерывание 0) папки, где будут храниться все файлы разрабатываемого проекта. Далее щелкните два раза левой кнопкой мыши, чтобы раскрыть новую папку Int0.
В поле Имя файла введите имя исходного файла с расширением .c, например, int0.c и щелкните по кнопке Сохранить.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.