Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование микроконтроллеров AVR. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
вания в окошке появляются названия видов прерываний: Timer1 Overflow, Input Capture, Соmpare A Match, Соmpare B Match. В этом
случае выбираем прерывание, которое называется Comp are A Match (при совпадении с А). Записываем метку в указанном поле. После этого нужное прерывание будет включено.
• Поля Value и Inp. Capture оставляем без изменений. Данные поля
служат для установки начальных значений счетного регистра и содержи­мого регистра захвата.
• Поля под общим названием Comp позволяют выставить значения,
записываемые в регистры совпадения А и В. Будем использовать ре­гистр А. Запишем в поле А: значение рассчитанного коэффициента деле­ния (186A). Здесь разрешается запись только в шестнадцатеричном фор­мате. Проверяем по содержимому в окне Timer Period результат и пра­вильный ход расчетов при программировании интервала времени.
После описанных установок окно настройки таймера должно выглядеть
так, как показано на рис. 3.6. На этом настройка таймера ТС1 завершается.

3.1.3. Настройка параметров АЦП

Затем программируем АЦП. Для этого открываем вкладку Analog to
Digital Converter, как показано на рис. 3.7.
Выставляем «галочки» в трех окошках вкла­дки, где разрешаем работу 8-разрядного АЦП с использованием прерывания. Для исключения влияния помех при работе АЦП можно включить режим Noise Canceler (Подавление шума).
Для достижения наибольшей точности
преобразования АЦП необходимо, чтобы его частота преобразования соответствовала
51
Рис. 3.7. Настройка
параметров АЦП
диапазону 50–200 кГц. Это устанавливается во вкладке Clock за счет из- менения коэффициента деления предделителя.
Если требуется проводить измерения с поочередной сменой входных каналов нужно установить «галочку» в окошке Automatically Scan Inputs.

3.1.4. Настройка параметров ЖКИ

В последнюю очередь программиру-
ется жидкокристаллический индикатор, который подключается к порту D, как по­казано на рис. 3.8.
Запускается этот процесс установкой
«галочки» в окошке Enable Alphanumeric
Рис. 3.8. Настройка
параметров ЖКИ
LCD Support. Поскольку используемый в нашем случае ЖК-дисплей выполнен на базе контроллера HD44780, то выбираем этот тип в окошке Controller Type. В ре­зультате выполненные настройки для данной программы можно считать завер­шенными. В конце программирования требуется сохранить значения параметров с помощью меню мастера File / Save.
Воспользуемся еще одним полезным
свойством мастера-построителя. Откроем вкладку Project Information (рис. 3.9). В поле Project Name рекомендуется
Рис. 3.9. Занесение
информации для заголовка
занести название проекта, а в поле Ver-
sion – номер версии программы. В поле Date устанавливаем дату разработки про-
граммы.
52
В полях Author и Company указываем имя автора и название фирмы.
В поле Comments: помещаем подробные комментарии. Вся эта информа­ция регистрируется в заголовке составленной программы.

3.2. ГЕНЕРАЦИИ ПРОГРАММЫ

После установки всех параметров переходим непосредственно к про-
цессу генерации программы. С этой целью выбираем в меню мастера Program пункт Generate, Save and Exit. Запуск процесса генера- ции начнется с запроса имени файла составленной программы. При этом откроется диалог сохранения файла, в котором сначала требуется создать каталог, где будет размещен этот проект, а затем указать имя файла данной программы. Затем программа трижды запросит имена ге­нерируемых файлов (одинаковые) и путь к каталогу, где они будут со­хранены. Имена файлов и путь к каталогу должны содержать только английские буквы. После создания шаблона требуется дополнить его кодами, содержащими вычислительные и логические процедуры, и со­хранить конечный текст программы. В результате этих действий в создан­ный на жестком диске каталог запишется файл готовой программы на языке С со стандартным расширением .с, которое будет присвоено авто­матически.
Однако процесс генерации проекта на этом не заканчивается. Сразу
после записи файла готовой программы откроется новый диалог, который запросит имя для файла проекта. Этот файл предназначен для хранения параметров созданного проекта.
Кроме типа применяемого микроконтроллера и тактовой частоты за­дающего генератора, в файл проекта записывается для хранения вспомо­гательная информация о наличии и расположении точек останова, закла­док и т. д.
53
Имя файла проекта удобнее оставить таким же, как и имя готовой
программы. Файлу проекта автоматически присваивается расширение
.prj.
После регистрации файла проекта диалог записи файла откроется
в третий раз. Будет снова предложено выбрать имя для файла данных по­строителя. В этот файл будут записаны текущие значения всех парамет­ров, мастера, т. е. значения всех управляющих элементов со всех его вкла­док: и те, которые были изменены в процессе настройки, и те, которые остались без изменений (по умолчанию).
Эти данные могут понадобиться, если потребуется заново пересоздать
проект. Сохранив файл данных построителя, можно в любой момент вос­становить значения всех его элементов, по возможности отредактировать их и создать новый проект. Файлу данных построителя нужно присвоить то же самое имя, что обоим предыдущим. Новый файл получит расшире­ние .cwp (Code Wizard Project).
После того как и третий файл будет записан, процесс генерации про­екта завершится. На экране появятся два новых окна. В первом окне от­кроется содержимое файла с расширением «.с». Второе окно – это файл комментариев. Сюда можно записать, а затем сохранить на диске любые замечания по программе. Листинг (текст) программы, полученный с по­мощью мастера-построителя (Code Wizard AVR), дополнится англоязыч­ными комментариями, созданными автоматически в процессе генерации программы.
Для компиляции программы необходимо выбрать команду меню Project /Compile (F9). Результаты компиляции выводятся в окно Information, а в окне Navigator в дереве проекта появятся синие ветви. Проходя мышкой по значкам, можно перемещаться по заголовкам проце­дур и именам глобальных переменных, что очень удобно при работе осо­бенно с большим проектом.
54
Ветвь дерева с ошибками Errors выделяется красным цветом. Список
ошибок также выводится в окне Messages внизу экрана. Чтобы исправить ошибку, нужно щелкнуть мышкой по листу дерева. Соответствующая строка программы выделится серым цветом, а рядом с ней появится кур­сор для ввода.
После компиляции будут созданы файлы с расширениями:
.asm (файл Ассемблера), .mар (адреса ОЗУ расположения глобальных переменных), .vec (список векторов прерываний), .inc (файл определений).
В случае успешной компиляции выводится сообщение об отсутствии
ошибок. В окне Navigator ветвь сообщений об ошибках пропадает, а спи­сок файлов пополняется файлом filename _.с – копией исходного файла на языке С. При окончательной сборке проекта и получении файлов для от­ладки и программирования микроконтроллера нужно выбрать в меню ко­манду Project/Make (Shift + F9). Появится окно Information, в котором будет сообщение о создании дополнительных файлов с расширениями .rоm (программирование Flash-памяти МК – программа в формате «адрес : слово»), .еер (программирование EEPROM), .lst (листинг программы), .err (аналог содержимого окна Information), .obj (объектный файл) и .cof (сим- вольный файл для отладки в среде AVR Studio).
Работа с Code Vision AVR при положительном результате на этом
может быть закончена или при отрицательном результате продолжена по крайней мере до того момента, когда все ошибки, найденные при отладке, будут исправлены.
55

4. ПРИМЕНЕНИЕ МИКРОКОНТРОЛЛЕРОВ AVR ПРИ РАЗРАБОТКЕ ИЗМЕРИТЕЛЬНЫХ СИСТЕМ

В данном учебном пособии рассмотрены примеры проектов разрабо­ток систем измерения напряжений, токов, мощностей, скоростей враще­ния и т. п., поэтому к ним предъявляются повышенные требования по из­мерению временных промежутков. Вследствие этого, с целью уменьше­ния погрешности измерения времени, а как следствие, и всех других из­меряемых параметров, все схемы проектов будут снабжены внешним кварцевым резонатором. В качестве базовой микросхемы для всех приве­денных в учебном пособии примеров использован микроконтроллер AVR фирмы Atmel ATmega8. Рассматриваемые в пособие примеры могут быть использованы в качестве практических заданий при изучении дисциплин по применению микроконтроллеров в процессах измерения напряжений, токов, мощностей и других неэлектрических величин, а также в цепях управления исполнительными устройствами различных электрических аппаратов.
4.1. ПОДГОТОВКА ПРОГРАММЫ
ДЛЯ ИЗМЕРЕНИЯ ПОСТОЯННОГО НАПРЯЖЕНИЯ
Микроконтроллеры AVR обладают способностью измерять напряже­ния одной полярности с помощью встроенного аналого-цифрового преоб­разователя (АЦП) последовательного приближения. АЦП может работать как в 8-, так и в 10-разрядном режиме. Максимальное напряжение на вхо­де АЦП не должно превышать эталонное напряжение питания АЦП, кото­рое подается на вход AREF и обычно равно напряжению питания микро­контроллера. Если измеряемое напряжение выше, то, чтобы обеспечить это условие, нужно применить делитель напряжения (рис. 4.1).
56
В качестве первого примера рассмотрим схему измерения напряже-
GB1
-
+
R
1
R
2
U
R2
2
R
U
АБ max
U
2
R
U
АБ max
U
2
R
U
ния стартерной аккумуляторной батареи с максимальным значением напряжения U
АБmax
= 14,4 В.
Рис. 4.1. Схема для расчета
делителя напряжений
При расчете сопротивления делителя напряжения требуется учиты-
вать, что ток делителя должен быть в пределах 10 мА, тогда при макси­мальном значении напряжения на входе делителя, равном 14,4 В суммар­ное сопротивление делителя будет равно (R1+R2) = 1440 Ом. Соблюдая условие, при котором напряжение на входе, например ADC0 АЦП, долж­но быть меньше или равно напряжению питания АЦП
≤ 5 В, составим
следующее соотношение:
= 14,4 В – (R1+R2) = 1440 Ом;
= 5 В – R2 = 500 Ом.
В результате расчета получим R2 = 500 Ом, выбираем из ряда Е24
ближайшее большее: R2 = 510 Ом. Затем из этого же соотношения нахо­дим величину сопротивления R1:
= 14,4 В – (R1+R2) = 1468,8 Ом;
= 5 В – R2 = 510 Ом.
Получим R1+R2 =1468,8 Ом, тогда R1 = 1468,8 – 510 = 958,8 Ом.
57
Из стандартного ряда Е24 выбираем сопротивление R1 = 1000 Ом.
АБ max
U
АБ max
U
2
R
U
2
R
U
2
АБmax
14,4
c _ u 2,97 .
4,86
R
U
U
= = =
дить 10 раз в секунду, а результат для вывода на ЖКИ должен быть р
Проверяем, какое напряжение будет подано на вход АЦП при макси­мальном значении напряжения
= 14,4 В из прежнего соотношения:
= 14,4 В – (R1+R2) = 1510 Ом;
= х – R2 = 510 Ом.
Получим
= 4,86 В < 5 В, что и требуется по условию.
На основании этого расчета вычисляем калибровочный коэффициент по напряжению c_u, который нужно будет занести в код программы, управляющей вычислениями:
Описание работы программы. Блок-схемы алгоритмов
Структура программы, в которой необходимо проводить непрерыв­ные измерения, должна быть построена по принципу бесконечного цикла с использованием прерываний, инициируемых таймером и АЦП. Таймер требуется для запуска АЦП через равные промежутки времени, например через 100 мс, чтобы провести не менее 10 измерений за контрольный пе­риод времени 1 с. перед выводом информации на жидкокристаллический индикатор (ЖКИ). Блок-схема алгоритма основной программы представ­лена на рис. 4.2.
При такой постановке задачи измерения (отсчеты) нужно произво-
а-
вен среднеарифметическому значению суммы 10 измерений. При такто­вой частоте процессора, равной, например, 4 МГц, промежутки времени 100 мс можно отсчитывать с помощью таймера/счетчика ТС1 с предде­лителем 64.
58
НАЧАЛО
Инициализация портов,
таймеров, АЦП, ЖКИ
Подсоединение библиотек.
Определение глоб. переменных.
Ввод исходных данных
Разрешение прерываний
Нет
Да
Прерывание произошло?
Тогда период следования импульсов на входе таймера/счетчика ТС1
равен 4 МГц / 64 = 62,5 кГц (Т = 1/62,5 кГц = 16 мкс), а коэффициент пе­ресчета КП = 100 мс /16 мкс = 6250. Требуемый интервал времени можно реализовать в режиме OVERFLOW, тогда код для реинициализации будет равен 65536 – 6250 = 59286 в десятичной системе счисления, а код в шестнадцатеричной системе – Е796.
Блок-схема алгоритма п/программы обработки прерывания таймера
ТС1 представлена на рис. 4.3.
Длительность интервала времени в 1 с, равную сумме 10 периодов по
100 мс, потребуется отсчитывать в программе.
Рис. 4.2. Блок-схема алгоритма
основной программы
59
НАЧАЛО
Реинициализация
стартового значения
таймера/
счетчика ТС
1
Запуск АЦП
через каждые
100
мс
ВОЗВРАТ
Рис. 4.3. Блок-схема алгоритма п/программы
обработки прерывания таймера ТС1
В приведенном примере АЦП используется в 8-разрядном режиме с выравниванием результата по левому краю, вследствие чего он считы­вается из старшего байта ADCH в переменную adc_data. После этого итоговый результат накапливается в течение 10 периодов в перемен­ной Um, а затем вычисляется среднее арифметическое значение напряже­ния, которое записывается в переменную Us. Полученные после вычисле­ний данные через 1 с выводятся на ЖКИ. Содержимое переменной Us, участвующей в процессе, в конце каждого цикла (через 1 с) должно обну­ляться.
Блок-схема алгоритма п/программы обработки прерывания АЦП при измерении напряжения аккумуляторной батареи представлена на рис. 4.4.
После создания шаблона программы его требуется дополнить кодами, содержащими вычислительные и логические процедуры, необходимые для получения результата.
В этих кодах обычно назначаются имена как глобальных, так и ло­кальных переменных и их определения, а также присутствует фрагмент п/программы обработки прерывания АЦП.
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]