Курс AVR123.nm.ru


Electronic Banner Exchange (ElBE)
 


 

 
         
 

 

Задача - упражнение  2

 

 

поиск   GOOGLE   по 
Краткому Курсу AVR

 

Книги и учебники по микроконтроллерам  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.

 

 

 

 

 

 

Хостинг от uCoz