- •А.В. Шарапов
- •Часть 1. Микроконтроллеры мк51
- •Предисловие
- •1 Принципы построения цифровых устройств управления
- •2 Общая характеристика микроконтроллеров семейства мк51
- •3 Программная модель и система команд мк51 ( лабораторная работа №1)
- •Программная модель микроконтроллера мк51
- •Система команд микроконтроллера
- •Команды микроконтроллера семейства мк51
- •Команды, влияющие на флаги результата
- •Запись программы на языке ассемблера и ее трансляция
- •Загрузка программы в эмулятор и управление его работой
- •Программа работы
- •Контрольные вопросы
- •Содержание отчета
- •4 Таймеры и система прерываний mк51 (лабораторная работа №2)
- •Таймеры/счетчики событий mcs-51
- •Система прерываний mк51
- •Программа работы
- •Контрольные вопросы
- •Содержание отчета
- •Машинные коды команд mк51
- •5 Упражнения по решению задач
- •6 Примеры программ обработки данных
- •7 Последовательный порт мк51
- •8 Организация линий портов мк51. Подключение внешних устройств
- •9 Направление развития элементной базы 8-разрядных микроконтроллеров Отличительные признаки современной элементной базы
- •Направления развития 8-разрядных мк
- •Модульный принцип построения
- •Резидентная память мк
- •Таймеры и процессоры событий
- •Сторожевой таймер
- •Контроллеры последовательного ввода/вывода
- •Минимизация потребления энергии в системах с мк
- •10 Микроконтроллеры семейства ат89 фирмы Atmel
- •Микроконтроллер at89c4051
- •Микроконтроллер at89s51
- •11 Примеры вопросов компьютерной контрольной работы
- •Литература
- •Часть 2. Микроконтроллеры avr
- •Предисловие
- •1 Общая характеристика микроконтроллеров avr, программная модель и система команд
- •2 Директивы ассемблера
- •Include — Вложить другой файл
- •Форматы представления чисел
- •3 Программный пакет avrStudio
- •4 Микроконтроллер aTtiny15l(лабораторная работа №3)
- •Таймеры aTtiny15l
- •Энергонезависимая память данных еeprom
- •Аналоговый компаратор
- •Аналого-цифровой преобразователь
- •Программа работы
- •Контрольные вопросы
- •Содержание отчета
- •Перечень команд микроконтроллера aTtiny15l
- •5 Микроконтроллер aTmega8 (лабораторная работа № 4)
- •Порты ввода-вывода
- •Регистры таймера т1
- •Режимы работы таймера т1
- •Нормальный режим работы (Normal)
- •Режим сброса таймера при совпадении (стс)
- •Режим быстрой шим (Fast pwm)
- •Режим шим с фазовой коррекцией
- •Режим шим с фазовой и частотной коррекцией
- •Прерывания от таймеров /счетчиков
- •Программа работы
- •Контрольные вопросы
- •Содержание отчета
- •6 Средства разработки программы на языке си, компиляторы и симуляторы
- •7 Язык си для микроконтроллеров
- •Структура программы на языке Си
- •Пункт 4. Объявление переменных
- •8 Загрузка программы в микроконтроллер
- •9 Моделирование работы микроконтроллера avrс помощью симулятораvmlab (лабораторная работа №5)
- •Программа работы
- •Содержание отчета
- •10 Моделирование работы микроконтроллера avr с помощью симулятора proteus vsm
- •11 Измеритель частоты сети
- •Обоснование алгоритма решения задачи
- •Разработка прикладной программы
- •Моделирование работы устройства с помощью vmlab
- •Моделирование работы устройства с помощью симулятора
- •Литература
Контрольные вопросы
Чем ограничен размер массива?
Перечислите все методы адресации памяти данных.
Разрешены ли прерывания после системного сброса?
Для чего нужен регистр Input capture (ICR)? Назовите ситуации, когда необходимо его использование. Назовите его альтернативные функции.
Что должно произойти при достижении счётчиком значения 0x01FF, если в битах WGMn3:1 записано 0b0010? 0b0110? Как при этом поведёт себя OCnx?
Что может выступать в качестве источника импульсов синхронизации таймеров/счётчиков?
Содержание отчета
Отчет должен содержать листинги отлаживаемых программ (в том числе и по индивидуальным заданиям), комментарии по ходу выполнения пунктов работы и рисунки, вставляемые в текст формата WORD, отображающие окна регистров и памяти, а также ответы на контрольные вопросы.
6 Средства разработки программы на языке си, компиляторы и симуляторы
При проектировании микропроцессорного устройства вы определились с тем, что оно должно делать, нарисовали схему устройства, физически способную выполнить вашу задачу. Программу для МК удобно создавать с помощью специальных программных средств – компиляторов. Компилятор позволяет написать программу для МК на универсальном языке программирования Си (кстати, для МК требуется всего 3-5% всех его возможностей).
Текст программы, набранный в компиляторе, называют исходным кодом. Компилятор проверяет отсутствие ошибок в набранном исходнике и, если ошибок нет, преобразует исходник (компилирует его) в специальный файл обычно с расширением .hex – его называют "прошивка".
Прошивку с помощью программатора (для AVR это, например, пять проводков с параллельного порта ПК) помещают во FLASH-память программ МК и при необходимости частично в его EEPROM.
Очень трудно написать программу сразу правильно и без ошибок. Поэтому важнейшим этапом разработки электронного устройства является отладка программы МК.
Для отладки вы включаете устройство с прошитым МК, находите отклонения от требуемого алгоритма, выявляете ошибки, вносите соответствующие изменения в исходный текст программы и опять компилируете, прошиваете новый .hex в МК и так до победного конца – т.е. до тех пор, пока устройство не заработает так, как вам нужно.
Не всегда допустимо включить устройство, не зная наверняка, правильно ли работает программа МК – в некоторых случаях могут произойти серьезные и дорогостоящие повреждения обвязки МК и другой аппаратуры. Иногда требуется проверить работу МК, не имея вообще реально спаянной схемы и самого МК. В этих случаях рекомендуется использовать специальные программные средства – симуляторы.
Симулятор приблизительно моделирует на персональном компьютере (ПК) работу "прошитого" вашей программой МК и его обвязки – т.е. электронных компонентов, окружающих МК по схеме устройства.
Кроме того, симуляторы позволяют:
- останавливать программу, организуя точки останова; - выполнять программу по шагам; - видеть, как именно происходит выполнение программы; - наблюдать и изменять значения в регистрах МК; - наблюдать текущие значения переменных; - использовать виртуальные измерительные приборы; - симулировать работу МК с обвязкой, включающей различные электронные компоненты и устройства; - виртуально обмениваться информацией с терминалом на ПК;
- делать еще много полезного!
Для начинающих наиболее удобен в работе компилятор Си для AVR CodeVisionAVR (или CVAVR). Компилятор содержит очень понятный и мощный генератор начального кода программы по вашим потребностям в конфигурации периферии МК AVR – называется он CodeWizardAVR (будем называть его мастером).
Рис. 6.1 – Окно мастера создания нового проекта
Вам нужно просто выбрать МК, частоту тактирования, затем открыть ярлыки тех устройств МК, которые будете использовать, и установить нужные параметры их работы.
Затем мастер создаст файл проекта .prj и файл исходного текста программы на языке Си с расширением .c – в нем уже будет содержаться код на Си, конфигурирующий МК по сделанному вами "заказу". Вам нужно будет добавить лишь код, реализующий нужный вам алгоритм работы устройства.
Используйте этот мастер и далее по ходу работы программы – точно так же как и в начале, но не генерируйте новые файлы, а просто откройте меню "Program Preview" и посмотрите нужный кусок программы на Си, возьмите, что вам нужно и вставьте в вашу программу.
Компилятор CodeVisionAVR имеет и встроенный программный модуль для прошивки МК и конфигурационных ячеек (Fuse Bits - фьюзов) прямо в схеме. Фьюзы расположены в отдельном адресном пространстве, доступном только при программировании.
Для полного цикла разработки устройства достаточно только одного компилятора CodeVisionAVR. В компиляторах есть отличные примеры программ на Си для наиболее часто встречающихся задач на МК. В CodeVisionAVR примеры находятся в папке CVAVR\Examples. Примеры – это исходные тексты программ на Си для управления периферией МК и интерфейса с популярными внешними устройствами. Исходники снабжены подробными комментариями. Комментарии – это то, что написано после двух косых черточек // – в одну строку, либо между /* и */ – в одну или несколько строк.
Вы инсталлировали компилятор Си для AVR CodeVisionAVR и получили файл-прошивку для МК. Естественно, хотите узнать – будет ли прошивка, а значит ваша программа, работать в МК так, как вам нужно. Для этого удобно использовать специальные программы для ПК, называемые симуляторами. Вы можете проверить работу не только программы, загруженной в модель МК, но и работу модели целого электронного устройства!
Установите на ПК симулятор для AVR – VMLAB. В поставку VMLAB включено множество примеров программ и прошивок для немедленной симуляции-эмуляции устройства с МК. Примеры находятся в папках: Tutorial и AVR_demo. Есть пример работы VMLAB с CodeVisionAVR. Откройте файл проекта C:\VMLAB\AVR_demo\codevisi.prj и посимулируйте. При симуляции вы увидите движение по исходному тексту программы на Си, и можете расставлять точки останова программы, наблюдать за изменениями значений в регистрах МК, посмотреть осциллограммы сигналов на ножках МК и многое другое.
На симуляторе VMLAB мы будем проверять работу программы для разрабатываемого устройства. Файл-прошивку для МК (расширение .hex), созданный в компиляторе, будем прогонять в симуляторе МК с внешними компонентами и смотреть, что работает, что нет, и как работает. При необходимости будем корректировать исходный текст программы на Си, опять компилировать, и так по кругу до достижения правильной работы устройства. Этот процесс и называется отладкой программы.