Откройте окно Pick Device библиотеки компонентов. Последовательно вводите в окно Keywords имена компонентов и выбирайте их из библиотеки: ATMEGA16 для микроконтроллера, BUTTON для кнопки, LED-RED для светодиода, RES для резистора.
Разместите все компоненты в окне редактора согласно схеме на рис. 1. Сделайте необходимые соединения, отредактируйте величины параметров и надписи.
После завершения разводки необходимо сохранить проект. Для этого выберите пункт меню File > Save Design As… В диалоговом окне раскройте папку e:\....\AVR\Led_sb и сохраните в ней проект под именем led_sb.dsn.
Далее необходимо установить параметры микроконтроллера. С этой целью подведите курсор мыши на изображение микроконтроллера и дважды щелкните левой кнопкой. Откроется окно редактирования свойств компонентов Edit Component. Прежде всего нужно записать hex-код программы в память МК, или, как часто говорят, запрограммировать МК. С этой целью щелкните по кнопке в правой части строки ProgramFile. Откроется окно SelectFileName с файлами из папки с проектами Led_sb. Раскройте папку с именем Exe (исполняемые). Выберите файл с именем led_sb.hex и нажмите кнопку «Открыть».
В строке ProcessorClockFrequency (тактовая частота процессора) выставьте 8 МГц. Остальные установки изменять нет необходимости.
Щелкните по кнопке ОК для подтверждения выбора параметров. Затем щелкните по пустому месту схемы для снятия выделения с МК.
3.1.8. Теперь можно проверить работу МКУ. С этой целью с помощью кнопки Play – ПУСК запустите программу работы МК. После запуска светодиод не горит. Нажмите кнопку SB1. Светодиод должен загореться. Теперь отпустите кнопку. Светодиод должен погаснуть. Если все выполняется, как надо, то все в порядке.
3.2. Разработка генератора меандра на микроконтроллере
Необходимо разработать с помощью CodeWizardAVR программу, которая будет формировать на выводе PD1 порта D микроконтроллера ATmega16 периодическую последовательность импульсов – меандр частотой 1 кГц. Этот сигнал можно использовать для звукового генератора, тактирования каких-либо устройств и т.д.
Так частота сигнала 1 кГц, то, следовательно, период – 1 мс (100 мкс), а полупериод – 0,5 мс (500 мкс). Таким образом, каждые 500 мкс логический уровень сигнала на выводе PD1 должен меняться на противоположный: если была «1» - должен стать «0», если был «0» - должна стать «1». Для формирования временных промежутков в 500 мкс используем прерывания по переполнению таймера/счетчика 0 (T/C0).
Таким образом, требуется так сконфигурировать T/С0, чтобы каждые 500 мкс он переполнялся и прерывал выполнение основной программы, а в программе обработки прерывания необходимо изменить на противоположный уровень сигнала на выводе PD1 порта D.
В таймере T/C0 имеется предварительный делитель (прескалер), коэффициент деления которого KPS можно программно установить равным 8, 64, 256 и 1024.
Для системной тактовой частоты МК, равной 8 МГц, выберем KPS = 64. В этом случае тактовая частота на входе Т/С0 будет:
F0 = 8 МГц / 64 = 125 кГц
Период тактовых импульсов для Т/С0 будет:
Т0 = 1 / F0 = 8 мкс
Максимальное время, которое может подсчитать 8-разрядный Т/С0 до переполнения будет:
tmax = 256 × 8 мкс = 2048 мкс
Видно, что tmax больше требуемых 500 мкс. Поэтому требуется определить начальное значение, которое необходимо загрузить в Т/С0, чтобы его переполнение, а следовательно, и запрос прерывания наступал после отсчета 500 мкс.
Обозначим ТПР = 500 мкс – период прерывания от T/C0. Тогда получается, что
ТПР = Т0 × (Nmax – N0)
Следовательно,
N0 = Nmax – (ТПР / Т0), где Т0 – период тактовых импульсов на входе Т/С0;
Nmax – максимальное значение Т/С0 (Nmax = 256);
N0 – начальное значение Т/С0, которое требуется определить.
Подставив все числовые значения в формулу, получим:
N0 = Nmax – (ТПР / Т0 ) = 256 – (500·10-6 / 8·10-6) = 256 – 62,5 = 193,5
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.