|
Курс AVR123.nm.ru |
|
||
|
Задача - упражнение 11
Как и чем прошить МК AVR читайте на странице 7 курса !
Цель
задачи: Я
очень подробно и с картинками рассмотрел АЦП ATmega16 описан в задаче 9
Для выполнения задачи
необходимы : - Знать ХОРОШО теоретический материал курса - до стр. 5
Познакомимся поближе с АЦП МК
AT90s8535.
Откройте стр. Data Sheet "Analog to Digital Converter" -
читаем: Feature list:
На следующей 60-й странице ДШ
можно увидеть структурную схему АЦП:
- 31 AGND - "аналоговая земля" - это нижний предел диапазона измерения - 0 вольт. - 32 AREF - на этот вывод мы должны подать напряжение соответствующее максимуму требуемого диапазон измеряемого напряжения. Код такого или большего напряжения будет равен 1023 или 1111111111.
Реклама недорогих радиодеталей почтой:
Итак, если мы подали на вывод AREF напряжение X вольт - то можем измерять напряжения от 0 до 5 вольт с шагом: X /1024 вольт с точностью: ±(X * 2 / 1024) НО!
Напряжения Х вольт и выше
будут
По моему все понятно? Посчитайте на листочке другие варианты -
3)
А если подать 4 вольта ровно? т.е.
соединить вход АЦП с AREF ?
Теперь мы знаем, что должны получить в результате АЦП. Но где этот результат должен
появится? L -
ло -
значит младший. Запишем варианты содержимого
этих регистров для приведенного выше примера расчетов результата
преобразования с учетом точности АЦП:
см. "ADC Data Register - ADCL
and ADCH" на стр. 64 Для перевода чисел
из одной системы исчисления в
Можно использовать периодическое измерение двух эталонных напряжений и затем учитывать полученные значение для сведения ошибки АЦП только к его нелинейности вычислительными средствами.
AVR120: Characterization and Calibration of the ADC on an AVR
Источники опорного
напряжения - "ИОН"
пожалуй начнем с описания схемы подключения МК и обвески для эмулятора: 1) Создайте и
сохраните текстовый файл - например z5_start.txt
- это будет заготовка для файла проекта для
VMLAB. Измеряемое
напряжение мы будем подавать на вход PA0
(ADC0 - вывод 40) МК с движка переменного
резистора. Выводы "переменника"
подсоединим к нулю и к питанию МК.
Обратите внимание ! VMLAB допускает прямое подключение Такое правильное включение сделано в задаче 2
Теперь мы знаем схему устройства и что оно должно делать - значит можно начать создавать управляющую программу для МК. 1) В
папке C:\CVAVR (где у вас должен
находится компилятор CodeVisionAVR)
создайте папку A8535 для файлов
проекта. Для
создания файла проекта нажимайте:
Нам
понадобится как обычно .HEX, но теперь еще
и .COF файл - в нем содержится привязка
прошивки для МК к тексту программы на Си
для симуляторов !
Нажмите ОК. /*
заголовок программы Курс AVR "с нуля" на языке Си - задача 5 avr123.nm.ru */
Проанализируем эту строку программы ...
Далее идет операция: Внимание ! Не рекомендую использовать паузы в обработчике прерывания если вы не контролируете момент возникновения событий вызывающих прерывание и если прерываний более одного а программе ! Подробней
о прерываниях на странице 3
курса.
Bit 7 - ADEN: записали ‘1’ - включили АЦП (догадались? да, да... '0' - выключить АЦП) Bit 6 - ADSC: ‘1’ - запускает АЦ преобразование, а у нас '0' значит преобразование пока не начнется. Bit 5 - ADFR: ‘1’ - переводит АЦП в автоматическую непрерывную работу - в "автономку". У нас Bit 5 = '0' - значит АЦП будет делать каждое, отдельное преобразование по нашей команде. Bit 4
-ADIF: Флаг прерывания - по окончании АЦП
становится ‘1’ и сбрасывается либо
выполнением обработки прерывания, либо
записью в этот бит единицы! Bits 2..0 - ADPS2..ADPS0:
Установка частоты работы АЦП - у нас 110 -
значит коэф. деления 64 - частота работы
АЦП 57,65625 кГц. */
Рекомендуется делать паузу 125 мкС после изменения дифференциального канала оцифровки !
Как мы это сделали?
Проделайте такие операции на бумажке с разными двоичными числами, подумайте как сделать "0" определенный бит?
*/
Все - текст программы на Си написан. Вот он без
комментариев:
4)
Попробуем откомпилировать нашу
программу - нажмите клавиши Shift+F9 Опочки! О'б'шибка! мол нет исходника то в вашем проекте ! Мы
исходник на Си создали и написали и
сохранили, а его еще нужно включить в
состав проекта! Но на ошибках учимся, друзья !
Теперь файл A8535.c в составе проекта - нажмем "ОК". Сделайте: Файл - сохранить все.
Откомпилилось - УРА! выскочило окошко:
Посмотрите
теперь содержимое папки проекта C:\CVAVR\A8535
- вместо двух файлов там теперь целая
куча!
Нам понадобятся всего 3 файла
из полученных в процессе компиляции: Запустите VMLAB. Нужно
создать новый проект step 3 - отмечаем третий пункт - файл A8535.cof step
4 - пишем в верхнем поле название файла
исходного текста на Си A8535__.c cи
нажимаем кнопку справа: "добавить
этот". Жмем
"ОК" Разверните
окно файла проекта ad_test.prj - скелет
проекта готов! Теперь нужно открыть
текстовый файл z5_start.txt который мы
создавали в начале задачи. .MICRO "AT90S8535"
Теперь:
Файл - сохранить все.
Успех! все готово к
прогону программы в эмуляторе - и медаль
даже нам ! Messages - всякие
месаги кидает по ходу эмуляции -
разместите его внизу и сделайте низким и
широким. Code - в этом окне мы увидим наш исходник на Си и движение программы по нему в процессе работы. в меню View можно посмотреть какие еще окна доступны - а для чего они почитать в Help.
3) Эмуляция:
Любит он поругаться - но у нас WDT - сторожевой таймер - не используется - посмотрите файл с ассемблерным листингом программы (он в папке проекта в компиляторе) - там вот такой пунктик есть:
Эмулятор заругался на строчку 3 не учитывая, что написано в
строках 4 и 5 ! ...и эта фича эмулятора называется проверка правильности кода! во как... Давайте разберемся с
нашим ASM кодом:
Пойдем по программе
шагая по инструкциям - для этого есть 2-я кнопка
(правее светофора) "Step into". Есть решение этой проблемы - называется "Точка останова" или "Breakpoints" по аглицки. Щелчком мыши сделаем вот так:
Мы поставили значок
"СТОП" левей той
строки на которой хотим остановится. Но почему же мы не видим этого результата на светодиодах??? Дело в том что мы
остановились по прерыванию АЦП - т.е.
преобразование уже выполнено, а вот
строчка на которой мы остановились еще
не выполнялась - т.е. результат не
отправлен в PORTB - и светодиоды
отображают предыдущий результат или
начальное состояние - а они у нас
погашены в начале программы! Давайте выключим точку останова (щелкните мышкой по значку stop) и запустив программу "светофором" в режим непрерывной работы понаблюдаем как отображается в Осциллографе наши манипуляции потенциометром - одновременно в окне "Peripherals" можно увидеть десятичное и двоичное значения входного напряжения АЦП.
Задача
завершена - программа делает то что
мы хотели.
АЦП очень нужная в хозяйстве штука. Научитесь его применять! И не стесняйтесь это
делать!
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Проекты на микроконтроллерах AVR и PIC
Электронные устройства, Схемы, Прошивки, исходники
Новый!•
Владислав Шаповаловн. Продвинутые радио-часы/будильник с
термометрами на графическом LCD.
Новый!•
Дмитрий Подколзин. Стенд для тестирования компьютерных АТХ
блоков питания.
Новый!•
Одинец Александр Леонидович. Автономное 32-канальное
программируемое светодинамическое устройство с последовательным интерфейсом.
Новый!•
Виталий Петренко, Александр Гаркавец. Цифровой вольтметр
постоянного тока 0…..+100В.
•
Виталий Петренко, Александр Гаркавец. Частотомер - цифровая
шкала КВ, УКВ с ЦАПЧ с восьмиразрядным индикатором 0,01 Гц - 1000 МГц.
•
Мосин Дмитрий. Часы на ATmega8.
•
Габидуллин Ильдар. Регулятор яркости лампы накаливания на
микроконтроллере AT89C2051.
•
Павельчук Александр. Приставка на PIC для проверки телефонных
аппаратов.
•
Ибрагимов Максим Рафикович. Простой VGA/Видео адаптер.
•
Независимая Группа Инженеров Астраханского Государственного Технического
Университета. Черный ящик-2.
•
Красносельский Денис. Прибор для прозвонки многожильных кабелей.
•
Шабров Дмитрий. Комбинированный прибор радиолюбителя.
•
Фурсов Андрей, Мелихов Виктор. Пакетный FFSK-модем (rev.2.0).
•
Протопопов Александр Петрович. Жако - многофункциональный
говорящий выключатель освещения с голосовым управлением..
•
Мирский Владислав. Программа-драйвер для ЖКИ на базе
контроллера HD44780..
•
Новоселов Игорь. Устройство для выделения сигнала точного
времени из радио «Маяк».
•
Бабанин Валерий Борисович. АЦП на стабилитронах (статья).
•
Протопопов Александр. Игровой автомат "Видеослот" с
возможностью замены игр и встроенной защитой.
•
Шабров Дмитрий. Зарядное устройство для малогабаритных
аккумуляторов с индикацией напряжения и тока.
•
Протопопов Александр. Часы с метеостанцией и дистанционным
управлением.
•
Кокунин А. Датчики температуры DS18B20: исследования работы..
•
Борисевич Алексей. Цифровое устройство управления инкубатором.
•
Грицик Олег. Цифровой FM-приемник с электронной регулировкой
громкости и тембра.
•
Шабров Дмитрий. Блок персонального вызова.
•
Александр Петрович Протопопов. Игровой автомат "Столб" с
независимой системой игровых каналов.
•
Александр Петрович Протопопов. Устройство размена купюр для
игровых автоматов.
•
Александр Петрович Протопопов. Многофункциональное устройство
управления домашними приборами.
•
Буров Михаил. Часы-звонок с заменяемыми мелодиями.
•
Красносельский Денис Александрович. Стоп сигнал «Бегущие огни».
Новый!Обновление
проекта Стоп сигнал «Бегущие огни».
•
Шабров Дмитрий. Блок жизнеобеспечения аквариума.
•
Литовченко Алексей. Автономная охранная система на базе ТМ.
•
Широков Игорь Игоревич. Контроллер доступа "Tiny KTM".
•
Шабров Дмитрий. Автомбильный тахометр.
Новый!Обновление
проекта Автомобильный тахометр.
•
Шабров Дмитрий. Автомобильная сигнализация с радиоканалом,
плавающим кодом и домашним комплектом для мониторинга состояния датчиков.
•
Александр Протопопов. Универсальный сенсорный выключатель с
дистанционным управлением.
•
Александр Протопопов. Автоматический контроллер для просмотра
стереоизображения.
•
Александр Протопопов. Евро-АОН "NEO" - конвертор в стандарт
Caller ID (CLIP) для импортных радиотелефонов.
•
Дмитрий Фитисов. Timer on PIC16F628.
•
Александр Протопопов. Игровой автомат с системой "Джек Пот" и
блоком дистанционного управления и контроля по мобильной связи.
•
Владислав Мирский. Часы с цифровой подстройкой хода.
•
Бабанин Валерий Борисович. Интерфейс RS-232 с возможностями SPI
для микроконтроллерных систем
•
Черешнюк Виктор. Регулятор температуры для инкубатора
•
Александр Квашин. Цифровой термометр
Новый!Обновление
проекта Цифровой термометр.
•
Владислав Мирский. Калькулятор
•
Александр Корниленко. 16-канальный логический анализатор "ЛогикАн"
•
Шабронов Андрей Анатольевич. Фотосчетчик продукции транспортера
•
Нарчук Александр. Цифровой 4-х канальный регулятор для усилителя на
TDA7313
•
Кияшко Владимир Анатольевич. Анемометр - измеритель скорости ветра
•
Владислав Мирский. Пианино
•
Юрис Гризанс. Генератор логических уровней
•
Вадим и Кирилл Красновы. Прибор для контроля за работой водителей.
("ЧЕРНЫЙ ЯЩИК")
•
Павел Дичин. Простой четырёхканальный зарядник на микропроцессоре
PIC16F876
•
Александр Протопопов. Интеллектуальная автомобильная система с голосовыми
меню и изменяемыми голосовыми сообщениями, предназначенная для дистанционного
контроля датчиков охраны и других приборов, управления прогревом двигателя и
бортовыми устройствами
•
Александр Протопопов. Программатор для записи голосовых сообщений в
микросхему K9F3208W0A (Samsung)
•
Ридико Леонид Иванович. УМЗЧ ВВ с упрощённой системой управления
•
Пионер. Повышающий преобразователь напряжения на AVR
•
Ридико Леонид Иванович. УМЗЧ ВВ с микроконтроллерной системой управления
•
Ширяев Алексей Евгеньевич. Технический автоответчик
•
Альберт Екимов. Микропроцессорный блок управления стиральной машиной
•
Ридико Леонид Иванович. Контроллер шагового двигателя
•
Александр Протопопов. Коммуникатор — автоматическое устройство для обмена
короткими текстовыми сообщениями
•
Александр Середовский. Таймер для загрузчика сырья в
опытно-технологическую установку по производству антифрикционной присадки "Форум
©"
•
Анисимов Сергей Владимирович. Система сбора информации от удаленных
объектов посредством интерфейса RS485
•
Владимир Попов. Таймер с выводом на TV, коммутацией Video, накоплением
сумм времени и числа запусков
•
Ридико Леонид Иванович. Генератор прямоугольных импульсов на основе AVR
•
Сергей Смирнов. Программное дeкодирование DTMF по принципу АОН на базе
микроконтроллера PIC16F628
•
Виктор Бачул. Определитель номера для цифровых АТС PERFECTA
•
Сергей Фролов. Устройство «ВИДЕОТЕКСТ FRS1.00»
•
Александр Елисеев. Как сделать простой модуль контроллера 10-и
позиционного LED индикатора и IR пульта RC-5 на PIC16F627
•
Михаил Буров. Музыкальный звонок с заменяемыми мелодиями
•
Юрий Сафонов. Универсальный велосипедный путевой прибор на PIC
контроллере
•
Ридико Леонид Иванович. Программатор термометра/термостата DS1821
•
Юрий Горский. Передача отладочной информации из PIC-контроллера через
COM-порт
•
Юрий Сафонов. Бегущая строка на PIC контроллере
•
Игорь Коваль. Конвертер интерфейсов ИРПС -> RS485 с исправлением
однократных ошибок
•
Ридико Леонид Иванович. Применение 7-сегментных ЖКИ – модулей
•
Александр Елисеев. Как сделать простой осциллограф двоичного сигнала на
AVR
•
Александр Корниленко. Книгочей
•
Игорь Ткачук. CompuPIC
•
Александр Протопопов. Система автоматизации технологического оборудования
•
Коновалов В. А. Адаптер двухканального светового шнура
•
Ридико Леонид Иванович. Стабилизатор частоты вращения коллекторного
двигателя
•
Ридико Леонид Иванович, Лапицкий Виктор Петрович. Электронный замок с
ключами iButton
•
Евгений Солошенко. Контроллер двухцветного светового шнура Flexilight
•
Игорь Коваль. Электронные часы с будильником на микроконтроллере
AT90S2313-10PI
•
Сергей Сергеев. Автоматический регистратор — выключатель освещения
•
Андрей Воробьёв. Маршрутный компьютер-тестер для автомобилей ВАЗ
•
Александр Елисеев. Как сделать простой программатор для PIC-ов и AVR-ов
•
Александр Фомин. Программатор для микроконтроллеров AT89C51/52/55
•
Сергей Ростовцев. Простой программатор
•
Ридико Леонид Иванович. Эмулятор ПЗУ — отладчик для MCS-51
•
Михаил Буров. Часы-будильник с ЖК-индикатором
•
Игорь Баранов, Константин Терпогосов. Метеотермометр MT-50
•
Олег Локсеев. Преобразователь и зарядное устройство в одном флаконе
•
Александр Протопопов. Устройство полной защиты ламп освещения
•
Артём Скворцов. 128-канальный аналоговый коммутатор
•
Александр Алехин. Бортовой компьютер М1.5.4. Версия 1.01
•
Ридико Леонид Иванович. Простая система настройки для УКВ ЧМ приёмника
•
Ридико Леонид Иванович. Имитатор touch-memory DS1990A
•
Ридико Леонид Иванович. Автомобильные часы-термометр-вольтметр
•
Ридико Леонид Иванович. Применение кода RC-5
•
Ридико Леонид Иванович. Низкочастотный синусоидальный генератор с шагом
сетки 0,01 Гц
•
Александр Волович. Контроллер графического ЖКИ высокого разрешения
•
Олег Пушкарёв. Приёмник POCSAG кода
•
Александр Елисеев, Станислав Картонович. Как сделать автосигнализацию с
бесконтактными ключами на PIC16C505 с использованием компилятора HI-TECH C 7.85
•
Алексей Кургузов. Многоточечный термометр
•
Олег Пушкарёв. Вывод бегущей строки на ЖКИ дисплей 2х24
•
Александр Протопопов. Сенсорный электронный регулятор громкости
•
Михаил Буров. Музыкальный звонок
•
Виктор Заикин. Двухканальный счётчик импульсов — Data Logger Z43001
•
Игорь Максимов. Универсальная цифровая шкала — частотомер с функцией ЦАПЧ
•
Игорь Максимов. Малогабаритный частотомер-цифровая шкала до 200 МГц с ЖКИ
дисплеем
•
Дмитрий Александрович Лихачёв. 10BASE-2 Ethernet REPEATER (демо-версия)
•
Алексей Чумаков. Внутрисхемный SPI-программатор для Atmel At89S8252 на
LPT порт
•
Леонид Иванович Ридико. Два микроконтроллерных регулятора мощности
•
Александр Алехин. «Индикатор М1.5.4»
•
Леонид Иванович Ридико. Цифровой термометр с датчиками DS1820 или DS1821
•
Леонид Иванович Ридико. Если Вы потеряли Touch Memory...
•
Гуревич Ф.А. Простейшее микропроцессорное устройство ввода-вывода
•
Александр Елисеев. Как сделать считыватель ЖК дисплея
•
Вячеслав Кулаков. Микро-АТС 1х5 и мини-АТС 2х8
•
Александр Протопопов. Игровая приставка для велотренажера
•
Александр Елисеев. Как сделать простой программатор с использованием
DELPHI 5
•
Александр Протопопов. Устройство передачи абонентского номера телефона
•
Александр Елисеев. Как сделать простой радиобрелок с плавающим кодом,
паролем и бегущими огнями
•
Александр Волович. Генератор сигналов произвольной формы
•
Андрей А. Левкин. Устройство «Бегущая строка»
•
Олег Пушкарёв. Часы на базе индикатора HT1610
•
Александр Елисеев. Как сделать простую систему бесконтактной
идентификации
•
Александр Елисеев. Простой АОН для «PANAPHONE»
•
Александр Елисеев. Терморегулятор
•
Вячеслав Кулаков. Кодовый замок для телефонной линии (антипират)
•
Группа разработчиков Центра фотохимии РАН. Иономер И-500
•
Eвгений Гиль. Проигрыватель компакт-дисков на базе дисковода CD-ROM
•
Андрей Левкин. Датчик присутствия людей
|
МикроКонтроллеры
AVR Начинающим
"с
нуля" |