Задача -
упражнение 2
Книги и
учебники по микроконтроллерам AVR
там
Как
и чем прошить МК AVR
читайте на странице 7
курса !
Цель
задачи:
1) получить основные навыки
работы с симулятором МК AVR - VMLAB
2)
ознакомиться со способом текстового
описания схемы симулируемого устройства
- обвязки, обвески МК - значит того что к
нему подключено. Внешние компоненты, подключенные к
выводам МК описываются текстом на SPICE подомном
языке.
3) проверить работу файла "прошивки"
z1.hex полученного в Задаче
01 - на соответствие тому, что мы
ожидали при написании исходного текста
программы на языке Си.
|
|
|
|
Поиск
по материалам Краткого курса AVR
1)
Используйте поиск Windows в папке где
сохраните курс, для того чтобы найти
нужную вам информацию.
Для
этого кликните правой кнопкой мыши (ПКМ)
по папке где сохранен у вас курс и
выбирете "найти..." в
открывшимся диалоге поиска введите
интересующее вас слово во второе
поле.
Например:
вы вводите слово "прерывания" и
запускаете поиск, в результате
получите список файлов в которых
найдено это слово.
Открывайте эти
файлы и вводите слово "прерывания"
в поиск по тексту файла - через меню "Правка"
- "Найти на этой странице".
2) Вы
можете воспользоваться поиском
GOOGLE по краткому курсу - пожалуйста
добавьте эту ссылку
в "избранное" и пользуйтесь. |
|
|
|
|
Для
выполнения задачи необходимы :
- Установленный
в директорию по умолчанию (C:\VMLAB)
программный эмулятор электроники,
симулятор МК AVR - VMLAB
- Visual
Micro Lab
- предварительно нужно изучить-попробовать
6 примеров (step01_06) из папки C:\VMLAB\tutorial -
запустить симулятор и открыть:
"проект
-> открыть проект" - файлы .prj
Посмотрите как происходит эмуляция
работы электронного
устройства
содержащего МК.
Я
очень подробно и с картинками рассмотрел симуляцию
программы в VMLAB в задаче 3.
- желательно
иметь распечатанный постатейно Help
симулятора (или хотя бы скомпилированный
в один файл) - это очень облегчит его освоение.
- Файлы полученные в Задаче
01
- свободное
время и желание.
|
|
|
|
Очень
советую: распечатать
соответствующие небольшие текстовые
файлы-описания проектов step01.prj
- step06.prj
и
"сшить" их в книжку (желательно
с распечатанным Хелпом) -
это очень
УДОБНО!
Эти распечатки будут
вашим кратким справочником по VMLABМ
|
|
|
|
|
Работаем
...
Файл проекта в эмуляторе Visual
Micro Lab - это обычный тестовый файл но
с расширением .prj -
поэтому можно создать его в любом текстовом
редакторе не запуская пока сам
симулятор. 1)
Откройте текстовый редактор - Windows'овский
notepad например - и
кликните меню
"файл" -> "сохранить как"
-> перейдите в папку C:\CVAVR\z1
в которой мы работали в Задаче
01 -> наберите осмысленное имя
файла: z2_vm
-> нажмите "Сохранить"
2) Теперь мы
должны наполнить этот файл содержанием.
Содержание буду писать на бледно желтом
фоне:
|
;
Комментарии в VMLAB пишутся ТОЛЬКО в
одну
; строчку после точки с запятой.
; Пожалуйста комментируйте свои
проекты !
; Не ленитесь. потом спасибо скажете...
; Вот
пример заголовочного комментария:
; Файл-проект для симуляции
по задаче 2
; МК как бы "прошит" файлом - z1.hex
; полученным в задаче 1
; http://proavr.narod.ru/z1.htm
;
; После включения МК - НЕгорящие
; светодиоды показывают в двоичном
; виде числа от 0 до 255.
; (практически начиная с "1"), и далее
; опять с нуля и так по кругу...
;
; светодиоды подключены к
порту_А МК
.MICRO "ATmega16" ; симулируемый МК
.TOOLCHAIN "GENERIC"
.TARGET "z1.hex" ; что "прошито" в МК
.COFF "z1.cof" ; смотри задачу 1
.SOURCE "z1__.c" ; смотри задачу 1
.POWER VDD=5 VSS=0 ; Питание +5 вольт
; VSS это GND МК - "общий"
провод схемы
; относительно него
измеряются напряжения.
.CLOCK 4meg ; частота кварца 4 МГц
; точнее это частот
тактирования МК
; ////// ===================
///////
; Ввод схемы устройства по задаче 1
; нам достаточно описать пункт ж)
; 8 светодиодов подключаются "черточками"
; на изображении диодов на схемах
; к ножкам МК с 33 до 40.
; остальные пункты схемы считаются
; симулятором существующими.
; === Первый светодиод
D1 VDD D1_NODE
; Св. диод D1 подключить к VDD (это +5 в)
; и к узлу D1_NODE (я дал произвольное
; но
осмысленное название)
R1 D1_NODE PA0 560
; резистор R1 подключить к узлу D1_NODE
; и к выводу PA0 МК
; номинал резистора 560 Ом
; =========================================
; остальные 7 светодиодов подкл. аналогично
D2 VDD D2_NODE
R2 D2_NODE PA1 560
D3 VDD D3_NODE
R3 D3_NODE PA2 560
D4 VDD D4_NODE
R4 D4_NODE PA3 560
D5 VDD D5_NODE
R5 D5_NODE PA4 560
D6 VDD D6_NODE
R6 D6_NODE PA5 560
D7 VDD D7_NODE
R7 D7_NODE PA6 560
D8 VDD D8_NODE
R8 D8_NODE PA7 560
; =========================================
; Сигналы на ножках PA0 PA1 PA2
; будем наблюдать
; в окне виртуального
; осцилографа - "Scope"
.PLOT V(PA0) V(PA1) V(PA2)
; Рисовать графики напряжения
; в перечисленных узлах схемы
|
3)
Теперь скопируйте текст с желтого фона и
вставьте в открытый текстовый файл и
сохраните результат: "файл"
-> "сохранить" Опять
откройте меню
"файл" -> "сохранить как"
-> Вы
увидите что наш файл z2_vm
имеет расширение .txt - измените
его на .prj Всё
! Теперь у нас есть файл
описания проекта для VMLAB - он в
папке
C:\CVAVR\z1\z2_vm.prj
|
|
|
|
Как
записывать подключение к МК других
электронных компонентов ищите и
смотрите :
- в Help симулятора
- раздел Hardware components
- в примерах симулятора:
файлы .prj
в папках AVR_demo
и tutorial
- в других задачах курса с VMLAB
Как
ПРАВИЛЬНО подключать к МК
реальные
электронные компоненты ищите и смотрите
:
там где
сказано на стр. 1 курса !
- в
ДатаШитах на компоненты и на МК,
- в АпНоутах
- в проектах
более опытных электронщиков.
Не
изобретайте велосипед!
... если ваша цель - ехать.
|
|
|
|
|
Идем
дальше...
4)
Запустите VMLAB и откройте созданный
проект:
Project >
Open Project
Перейдите
в папку задачи 1 C:\CVAVR\z1\
и выберите
файл z2_vm.prj проекта
для VMLAB
5) Через меню View - откройте два
компонента:
SCOPE - это виртуальный
запоминающий осциллограф
симулятора
Control Panel - это
панель на которой содержатся нужные нам
светодиоды и
многое другое но пока
нам не нужное. Через
меню Window - откройте (обычно
оно открывается сразу при открытии
проекта) окно Code -
в этом окне вы увидите текст
симулируемой программы. В
нашем случае -
в окне Code будет полный текст нашей
программы на Си.
|
|
|
|
Вы
сможете видеть как программа движется
по исходному коду на Си по ходу
симуляции !
Это
исключительно удобно.
Такую
возможность нам дало включение в
проект
ссылок на файлы .cof
и .c
в
VMLAB вы можете симулировать и
ассемблерные программы и просто
прошивки - файлы .hex
(см. в примерах симулятора)
Симуляция
прошивки может пригодится когда
вы хотите проверить прежде чем
повторить чье-то устройство - а
исходники программы не публикуются
автором - выложена лишь прошивка.
|
|
|
|
|
Обратите
внимание на окно Messages - в нем
появляются
служебные сообщения симулятора по ходу
работы - сделайте его небольшим и
разместите где-то внизу экрана.
Сворачивать
его совсем бесполезно - так как
каждое служебное сообщение будет
разворачивать его на весь экран!
виртуальный
запоминающий осциллограф
симулятора
6) В меню Project запустите Re-Build all
... В
окне Messages должно появиться
сообщение
об успехе и что все готово к запуску.
Кроме того на панели инструментов
загорится зеленый светофор
- это кнопка которой можно запускать
симуляцию. Нажатие
зеленого
светофора
эквивалентно подаче "1" на вывод RESET
МК при включенном питании, но еще не
выполнявшем программу. В
окне Scope появились три графика
для сигналов которые мы будем наблюдать.
Установите масштаб по вертикали 2 вольта
на деление, а по горизонтали 50 мС В
окне Сode появилось серое поле
слева и зеленые квадратики напротив
исполняемых строк кода программы на Си -
кликнув по такому квадратику мы можем поставить
точку останова программы. подробнее см.
задачу 8. Разместите
3 окна и
Control Panel на экране
компьютера так чтобы видеть их все.
7) Нажмите "светофор"
для запуска симуляции программы.
Программа запустится и остановиться - в
окне Messages
появится сообщение.
Это симулятор сообщает свое мнение "как
бы сделал он делал" - плюем
на
него и опять нажимаем на "светофор" Симулятор
опять останавливается и сообщает что
произошел сброс от "сторожевого
таймера МК" - мы не указали симулятору
что не используем его вот он и сечет... Опять нажимаем на "светофор"
- теперь программа будет работать
непрерывно, пока
мы ее не остановим.
ПОЧТОЙ по России
!
Программаторы
USB AVR PIC ARM 8051,
прошивание микроконтроллеров AVR PIC LPC ARM 8051 на заказ,
изготовление "любительских" печатных плат по
ЛУТ
технологии,
сборка
электронных наборов - Мастер
Кит и других,
закупка для вас радио деталей
электронных компонентов в "Тэрраэлектроника"
+ добавлю резисторы и конденсаторы + отправка почтой,
изготовление
электронных устройств для вас на заказ
не дорого по вашим схемам
или
разработаю сам, другие
услуги для радио
электронщиков любителей,
для
мастеровых людей и хоббийщиков
RC
моделистов и
для строящих
Роботов,
компоненты для самодельных станков с ЧПУ.
На сайте - "МК
ПОЧТОЙ народ РУ"
|
Программатор для AVR на USB

Собран и проверен -
стоит всего 500 рублей
в
Москве, а по России пересылка почтой всего
100 рублей.
В подарок к программатору вы бесплатно получаете
дополнительный микроконтроллер
ATmega8 -16PU и уникальный
DVD с материалами по электронике и
библиотекой КНИГ !
Микроконтроллер ATmega8
прошитый для этого программатора
можно приобрести отдельно за 120 рублей
+
схема и и рисунок платы.
Программатор позволяет питать ваше
устройство от USB.
Скачать документацию на программатор.
Обращайтесь к
Семенову
Михаилу. |
|
|
Электронные компоненты
ПОЧТОЙ
из
"Тэрраэлектроника"
- мои услуги - это 350
рублей для заказов до 1500 руб. оплаты в Тэрру, 450
руб. для заказов на сумму 1500-3000 рублей и
650 рублей для заказов
стоимостью более 3000 рублей. После получения денег
я выкупаю ваш заказ в "Тэрраэлектроника"
или получаю если его оплатили вы
сами и отправляю его вам почтой.
Укомплектую резисторами и конденсаторами. |
|
|
Программатор
отладчик
для всех микроконтроллеров PIC
на USB -
PICkit2
Полный аналог собран
мной и проверен в работе
- только корпус прямоугольный
без закруглений а разъемы такие же, кнопка
КРАСНАЯ,
все функции фирменного - всего
899 руб.
Микроконтроллер PIC18F2550 прошитый для
самостоятельного изготовления
программатора
PICkit2
можно приобрести отдельно за 239
рублей
+
схема и и рисунок платы.
Прочитайте подробно о
PICkit2
и о его возможностях.
Средняя цена фирменного - 1550
рублей ! |
|
Программаторы изготовлены качественно, надежно,
высылаются полностью собранные, протестированные и
готовые к
работе. К программаторам получаемым по почте приложен
бесплатно
DVD
диск с драйверами для
программаторов, ПО для разработки программ для
AVR PIC ARM 8051
и огромным количеством документации от производителей МК и
множеством книг по микроконтроллерам и электронике на русском языке,
учебными материалами для начинающих.
Вы можете приобрести уникальный
DVD
всего за
199
рублей с пересылкой по России.
Скачайте
содержание этого DVD
и ознакомьтесь.
|
Прошивка, программирование
микроконтроллеров AVR PIC ARM
8051 LPC
на заказ
вашими прошивками. Вы
присылаете прошивку - я проверяю,
что файл читается программатором и сообщаю вам номер
счета, вы переводите деньги, я покупаю нужный
МК, прошиваю и отправляю вам.
Цена услуги со стоимостью услуги по покупке МК
25 рублей
при прошивке 21 микроконтроллера и более
35
рублей за 11-20 МК
45 рублей за 5-10 МК
65 рублей за 2-4 МК
80 рублей за 1 МК
Для популярных AVR
ATmega8
ATmega16 ATmega169
ATtiny2313 AT90s2313
ATtiny13 и популярных
PIC16F84 PIC18F452 PIC18F2550
PIC18c508 PIC16F628 PIC24FJ64GA002 dsPIC30F2010
dsPIC30F2020 dsPIC30F2012
стоимость прошивки одного МК
- 60 рублей.
|
|
Цены
могут уменьшаться при комбинации ЛЮБЫХ услуг
например
получение различных компонентов в
"Тэрраэлектроника" + прошивка AVR PIC из
этой закупки естественно будет стоить дешевле.
Есть прошивки ко многим конструкторам наборам МастерКит
и других производителей - стоимость таких прошивок подлежит
отдельной оплате. Спрашивайте какие прошивки вам нужны.
6) Я могу купить вам наборы электронные МастерКит и других
производителей - собрать и настроить и отправить вам, цена услуги от
500 рублей.
7) Изготовление печатных плат по лазерно утюжной технологии - ЛУТ -
по вашим рисункам для печати на лазерном принтере.
8) Изготовить, спаять нужную вам схему, электронное устройство.
9) Разработать нужное вам устройство по КОНКРЕТНОМУ техническому
заданию.
10) Разработать новую прошивку для любых электронных устройств или
наборов МастерКит и аналогичных.
|
Пусть
программа симулирует а вы понаблюдайте
за
тем что происходит в указанных выше
окнах.
Во
первых не горит светодиод D1 (это ножка МК
PA0), а остальные светодиоды горят - т.е.
как я и говорил практически мы видим
счет от 1.
Ноль мы
не увидим, так как он существует очень
короткое время в начале программы, ведь
в нашей программе мы делаем паузу ПОСЛЕ
инкремента PORTA.
Но запоминающий
осциллограф - SCOPE - позволяет нам
остановить программу и посмотреть
каковы были напряжения в начале ее
работы ! 8) Остановите
симуляцию -
щелкнув красный
восьмиугольник Перезапустите
МК - кликнув по
кнопке с круговой темно-синей
стрелкой. Вы как бы отключаете
и затем снова подаете питание на МК но
создаете "0" на ножке RESET МК - значит
программа не стартует!
Снова
запустите симуляцию, кликнув светофор и
затем кликнув еще 2 раза, дайте
поработать 100 - 150 мС. И
опять остановите
щелкнув красный
восьмиугольник Теперь
разверните окно SCOPE
и установите
разрешение по времени - 1 мкС
Затем движком горизонтальной прокрутки
переместитесь к началу осциллограмм
сигналов на ножках PA0_3 и в момент
соответствующий 2.1 мС от начала
симуляции вы сможете увидеть что все три
сигнала имели уровень лог. "0" Т.е.
в точности по нашему алгоритму был
момент когда все светодиоды горели и
счет НЕгорящими светодиодами начался
именно с НУЛЯ ! Давайте
измерим как долго был этот "ноль".
|
|
|
|
Для
измерения временного промежутка в
окне SCOPE
симулятора VMLAB нужно
установить вертикальные курсоры
1 и 2 на границах измеряемого
интервала и в поле Cursor
delta time появится значение
времени между двумя курсорами.
Знайте
!
Данные
графиков симуляции в VMLAB между
вертикальными метками вы можете
сохранить в цифровом виде в файл,
кнопкой "Export".
Т.е. вы
можете в другой программе сделать
детальный анализ данных симуляции
или построить графики в нужном
масштабе.
|
|
|
|
|
Спасибо
за совет! Попробую...
Я
ставлю 100 нС шаг по времени и затем
кликаю в кружочке курсора 1 и ставлю
вертикальный курсор на спаде сигнала на
PA0. Далее кликаю в кружке курсора 2 и
ставлю его правее, на фронте (переход
из "0" в "1") сигнала.
Как
и было обещано в
окне Cursor delta time
показалось время: 2.2
мкС - вот столько горели все светодиоды
после
старта программы МК. Дальше
... 9)
Восстановите прежний размер окна SCOPE
и установите шаг по времени 20 мС нажмите
снова "светофор"
для продолжения симуляции программы.
Понаблюдайте за
окнами SCOPE и Code
и за светодиодами.
Видите
...
|
|
|
|
В окне Code
при симуляции возникают и растут
желтые полосы подсвечивающие
строки исполняемой программы.
Длины
этих подсветок пропорциональны
времени
которое программа выполняет код
этих строк.
|
|
|
|
|
Светодиоды
переключаются себе не спеша ...
А в окне SCOPE мы
видим осциллограммы сигналов соответствующие
светодиодам D1_3
Напоминаю:
сигнал "0" - светодиод ГОРИТ
сигнал "1" - светодиод не ГОРИТ. Естественно
наиболее часто меняется сигнал на ноге
PA0 - это ж младший бит в регистре PORTA - вот
он инвертируется при каждом инкременте
значения в порте_А. Логично
по времени между изменениями PA0
определить реальную величину паузы
отрабатываемой нашей программой
зашитой в МК. Как
измерить время я описал чуть выше! Делайте
так же.
|
|
|
|
Удобно
поставить курсоры
предварительно
при существующем масштабе времени.
Затем с
помощью клика по Zoom in увеличить
максимально
место установки курсора 2 и
поставить его точней.
Опять
вернуться к прежнему масштабу и с
помощью
Zoom in увеличить максимально место
установки
курсора 1 и откорректировать его
положение.
При
измерении коротких повторяющихся
интервалов можно мерить время
сразу нескольких, а результат
поделить затем на число таких
интервалов между измерительными
курсорами.
|
|
|
|
|
Я
измерил время 4 промежутков между
изменениями
сигнала на PA0 - оно составило 262.1 мС После
деления на 4 получаем что уровень на PA0
меняется каждые 65525 мкС - это очень
близко к рассчитанному нами в задаче 1 и
ожидаемому периоду 65,536 мС.
Как точно подогнать временные
промежутки отрабатываемые МК читайте в задаче 6
Думаю
мы вправе сделать вывод что
МК работает в
соответствии с ТЗ, алгоритмом
и с исходной программой
на Си.
Цель
задачи достигнута !
Пожалуйста
не ленитесь -
выполните:
Задание по
Задачам 01 и 02
Измените
программу на Си так, чтобы двоичный код
показывали горящие светодиоды, а
видимый счет начинался с нуля - т.е. при
запуске программы все светодиоды были
бы выключены 65 мс.
поверьте,
это не сложно но полезно сделать!
|
|
|
|
Для
изменения Си кода программы просто
запустите компилятор CodeVisionAVR (VMLAB
выключать не нужно!)
и внесите нужные изменения, затем
откомпилируйте проект.
Затем
перейдите в VMLAB сделайте глубокий
рестарт и затем ReBuid all
Все!
Изменения внесены и все
опять
готово к симуляции.
Таким
образом компилятор и симулятор
работают одновременно в одной папке
проекта и не мешают
а помогают друг другу.
|
|
|
|
|
Если не
получается, подумай:
1. Можешь ли ты нарисовать на бумаге
схему, как подключены
светодиоды к МК (это
текстом описано выше).
2. Если да, то понял ли ты что нужно чтобы
светодиод загорелся?
3. Понял ли ты как происходит изменение:
светодиод горит - не горит?
4. Подумай что надо сделать МК, что бы
горящий светодиод потух?
5. Если понял, то как программно это можно
сделать для одного св.диода ?
Посмотри в руководстве Си
для МК какие
операции
помогут это сделать.
Выпиши на бумагу подходящие - нужно
точно понимать что они делают.
6. Теперь подумай как это сделать для
всех св. диодов сразу.
Решений может быть несколько, а
достаточно и
одного - оно поразительно просто!
Файлы
проекта к задаче 2 вы можете
скачать одним архивом z2.rar
Дальше ->
Задача 3
Вы
можете не читать, а прослушать курс
с помощью программ читалок !
Например - Говорилка
или Digalo.
|