КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Автоматическая генерация проекта
Запустите интегрированную среду разработки программ CodeVisionAVR. Из меню выберите File – New – Project – OK. На вопрос Do you want to use CodeWizardAVR ответьте Yes. (Wizard – мудрец, чародей). В появившемся диалоге
во вкладке Chip выберите тип контроллера (Atmega8 или Atmega16) и установите частоту впаянного на плату кварца (для МК2 это 12 MHz). Program Type – Application (Тип программы – приложение). Во вкладке Ports должны быть запрограммированы порты на ввод информации (In) или на вывод (Out) в зависимости от подключенных к портам устройств. В соответствии со схемой контроллера MK2 к порту В подключены катоды светодиодных индикаторов, а к порту D – управление их сегментами, следовательно эти порты программируем на вывод. Начальное состояние Output Value (выводимая величина) устанавливаем нулевым. К выводам порта А PA7 и PA6 подключены реле, а к PA1 – динамик, поэтому их программируем на вывод, Output Value = 0 иначе реле сразу сработают. Остальные выводы порта А будут использоваться как входы АЦП, поэтому их программируем на вход, подтяжку (Pullup) – внутреннее подключение к источнику питания через резистор 20К во избежание неопределенного состояния порта – не производим. К выводам порта С подключена клавиатура, поэтому их программируем на вход. Подтяжку не производим, так она реализована внешними резисторами 10К к напряжению питания. Во вкладке External IRQ (Interrupt Request – внешние прерывания) можно указать внешние источники прерываний. Так если выбрать INT2 Enabled (дана возможность) то при установке Falling Edge (по спадающему фронту) при переходе (INT2/AIN0)PB2 входа порта В из высокого в низкое состояние будет вызвана функция с именем ext_int2_isr(), которая должна быть оформлена в тексте программы. Такое действие можно вызвать, например, нажатием кнопки, заземляющей при нажатии данный вывод. Найдите на корпусе процессора выводы, через которые можно вызывать внешние прерывания INT0 и INT1. В нашем контроллере внешние прерывания не используются, поэтому ничего во вкладке не меняйте. Timer 0 – это 8-битнй таймер, имеющий низкую точность. Будет использоваться для переключения разрядов светодиодного индикатора. В качестве источников импульсов (Clock Source) выбираем System Clock, тогда таймер будет работать с частотой кварцевого генератора, уменьшенной в 1, 8, 64, 256 или 1024 раз, в зависимости от значения делителя, что при частоте кварца 12 МГц дает нам частоты 12000 КГц, 1500 КГц, 187.5 КГц, 64.875 КГц или 11.718 КГц. Выберем Clock Value = 187.5 КГц. При поступлении импульсов на вход таймера с такой частотой, его счетчик будет увеличиваться на 1 при получении каждого импульса. Выбираем Mode: Normal Top, что означает нормальный режим работы – счет от 0 до FF. Для вызова прерывания при переполнении выбрать Overflow Interrupt. Вызываемая функция будет иметь имя interrupt [TIM0_OVF] void timer0_ovf_isr(void) и будет вызываться с частотой 187500 Гц / 256 = 732 раза в секунду. При 6 цифрах в индикаторе будет происходить 732 / 6 = 122 зажигания каждой цифры в секунду. Так как частота выше 60, то мерцания индикатора заметно не будет. Timer1 – 16-битный таймер. Максимальное значение счетчика FFFF = 216 - 1 = 65535. Соответственно имеет большУю точность. В УМК используется для организации часов. На вход таймера подадим системные тактовые импульсы, в нашем случае 12 МГц. Прерывание будем вызывать не при переполнении, а при достижении счетчиком значения 12000. 12 000 000 / 12 000 = 1000 вызовов в секунду. Поместив в функцию прерывания счетчик, получим значение времени в миллисекундах, прошедшего с момента включения МК – переменная itime. Установки таймера 1: Clock Source: System Clock Clock Value: 12000 kHz – установить частоту кварца
Interrupt on: Compare A Match – совпадение при сравнении
Вызываемая функция будет иметь имя interrupt [TIM1_COMPA] void timer1_compa_isr(void). Вкладка Project Information – занести свою фамилию и группу.
Nose Canceller – Подавлять шумы при работе АЦП
Можно выбрать AVCC pin – сравнение будет производится с напряжением питания или Int.cap.on AREF – использовать внутренний источник референсного напряжения 2.54 В.
Данные во вкладках LCD (Liquid Crystal Display), I2C, 1Wire, USART, Analog Comparator, SPI оставляем без изменений, так как их не используем. Запускаем генерацию проекта: Диалог со вкладками не закрываем(!) а из его меню выбираем File – Generate Save and Exit – будут вызваны три диалога: 1. 2. Save C Compiler Project File – во всех случаях укажите одно и тоже имя файла, 3. Save Workspace – например, TimerTest Предлагаемые типы файлов не изменяйте! После того, как генерация проекта будет завершена и в окне откроется сгенерированный текст файла на языке С, следует установить режимы работы программатора.
Дата добавления: 2014-12-23; Просмотров: 645; Нарушение авторских прав?; Мы поможем в написании вашей работы! |