Микроконтролеры AVR с нуля на языке Си - Курс для начинающих


Микроконтролеры AVR "с нуля" на языке Си - Курс для начинающих


AVR раз, два, три... бай-ру   это просто!

Курс  Начинающим:   МикроКонтроллеры 
AVR "с нуля" на языке Си

-3-

От слов к делу... 



Необходимо скачать бесплатный софт разработчика.

он будет одинаковым у всех участников курса - на нем будем разрабатывать программу для МК и эмулировать ее работу. 

1. Си компилятор ICC AVR фирмы - Imagecraft

(ICCAVR DEMO VERSION будет работать 45 дней без ограничения функций!)


Что говорит о нем производитель МК AVR:

"Atmel is happy to have C Compiler support provided by ImageCraft for the AVR Flash Microcontroller Family. 

Customer feedback on the ICCtiny and ICCAVR compilers indicates that they are high quality tools with excellent performance and code density

ImageCraft serves a market need by providing a low-priced C compiler solution for the AVR Microcontroller."

Jim Panfil  Director, Microcontroller Products
    Atmel Corporation

Не вдаваясь в тонкости английского языка переведу пару первых слов:

"ATMEL счастлив... 

ну и дальше в том же духе...

Atmel - подсказывает как начать работать с этим компилятором Си для AVR в документе: 

AN AVR031 "Getting Started with ImageCraft C for AVR"

 

 

2. Набирающий популярность - действительно БЕСПЛАТНЫЙ компилятор Си для AVR:  

GCC  реинкарнированый в виде WinAVR

Главное! Это единственный компилятор позволяющий из эмулятора VMLAB (об эмуляторе позже расскажу) управлять компиляцией, отладкой с движением по исходному коду на Си, редактированием кода на Си, перекомпиляцией проекта после внесения правок. 

Т.е. вы устанавливаете WinAVR в директорию "по умолчанию"  C:\WinAVR  и больше с ним не общаетесь! 

Все делается автоматически из эмулятора VMLAB версии 3.9 и старше, от написания кода на Си и до окончательной отладки! 

Вам нужно скачать только файл:  

WinAVR-20030913-bin-install.exe

 ~19 Mb и инсталлировать WinAVR.


AVR раз, два, три... бай-ру   это просто!

Курс  Начинающим:   МикроКонтроллеры 
AVR "с нуля" на языке Си

-2-


Мы будем работать с семейством МК AVR фирмы Atmel  

Я предлагаю вам начать с AVR еще и по причине наличия простого программного эмулятора который мне очень понравился своей функциональностью - надеюсь он понравится и вам. 

Психологическим тормозом к освоению чего-то нового часто является необходимость потратить деньги на покупку оборудования, компонентов и прочего, не зная наверняка получится ли что-то полезное в результате. 

Программный эмулятор позволит вам проделать весь цикл разработки устройства - от идеи до осциллограмм работающего устройства на МК с внешними компонентами и внешними сигналами - потратив лишь деньги на связь с интернет и собственное время (уверен не зря!).

Подробней о софт-эмуляторе AVR расскажу далее.

Итак МК AVR - недорогие, доступные, много функциональные приборы не требующие для разработки практически никакого оборудования кроме бесплатно скачиваемого программного обеспечения. 

Вот ознакомительная статья о AVR'ах: 

"Знакомьтесь, господа: AVR!" 
автор - Игорь Кривченко. 

На сайте ATMEL.RU есть еще много действительно полезных материалов для начинающих!



Посмотрите и сохраните 
таблицу всех AVR
 
с основными параметрами.  

По этой таблице удобно выбирать МК подходящий для вашего проекта!



Как мы будем учиться?  

- Скачиваем необходимый софт и документацию.

- Ставим задачу - конкретное устройство. 

- Описываем его функции и связи с внешним миром. 

- Продумываем алгоритм работы и параллельно  Рисуем электрическую схему устройства

- Записываем алгоритм на языке Си 

- Компилируем в файл "прошивки" 

- Тестируем "прошивку" на софт-Эмуляторе 

- Отлаживаем - т.е. вносим поправки в исходник на Си и снова компилируем и снова тестируем - так до победного конца... 


AVR раз, два, три... бай-ру   это просто!

Курс  Начинающим:   МикроКонтроллеры 
AVR "с нуля" на языке Си

-6-

Задачи курса  

отдельные задачи - отдельные но взаимосвязанные шаги - каждый с конкретной целью! 

Начнем с AT90s2313 (Atmel - тоже предлагал для старта именно его!)  

AT90s2313  20-и выводная "рабочая лошадка" при частоте 10 МГц выполняет почти 10 млн. инструкций в секунду (ну может 5 реально...)  - стоит примерно 3 $ в розницу.

Скачайте дкументацию на МК AT90s2313 

Удобно иметь ее в распечатанном виде! Обязательно распечатать стр.85 "Register Summary" - это ключ ко всему документу! Перечень регистров МК с кратким описанием + номера страниц с подробностями.

 

 

Задача 01

знакомство с компилятором Си, написание и компиляция рабочей программы.

Задача 02  

знакомство с эмулятором МК AVR на примере файла-прошивки полученной в задаче 01 - содержит упражнения! 

Мигаем светодиодами, измеряем длительность сигналов на экране виртуального осцилографа (окно scope) изучаем глюки эмулятора и учимся жить с ними...

Задача 03  

пишем программу для AT90s2313 измеряющую 50 раз в секунду частоту входного сигнала и отсылающую полученные данные по rs232 (например на COM порт ПК).  

Учимся генерировать-создавать Си код инициализации переферии МК с помощью программы  "Application Builder" входящей в состав компилятора ImageCraft   

(кстати и в других компиляторах есть аналогичные мастера-визады)

 

Задача 04 

разработаем программу для измерения частоты сигнала простого емкостного датчика нагрузки. 

МК будет измерять период входного сигнала и отправляет результат в виде четырехзначного десятичного числа по протоколу rs232 на последовательный порт ПК.
 

Задача 05 

Аналоговый сигнал преобразуем в Цифровой код при помощи 10 битного АЦП встроеного (там целых 8 каналов!) в МК  AT90s8535.


AVR раз, два, три... бай-ру   это просто!

Курс  Начинающим:   МикроКонтроллеры 
AVR "с нуля" на языке Си

-7-

 

Чем "прошить"  AVR ?

отлаженную программу нужно "зашить" в МК - это можно сделать прямо из компилятора, а можно воспользоваться отдельной программой.  

посмотрите страничку программатора для AVR AVReAl - там есть схемы адаптеров  

Советую сделать адаптер
от STK200  - это адаптер программирования платы разработчика которую производила сама компания ATMEL. к МК должно быть подключено питание! 

С таким адаптером можно программировать прямо из компилятора!

Программы узнают Atmel'овский адаптер по перемычкам на кабеле параллельного порта к которому он подключается - должны быть соединены выводы: 2 с 12  и  3  с 11. 



...самый простой вариант адаптера: пять поводков (лучше всеже резисторы от 33 до 100 ом - береженого бог бережет) соединяющих линии параллельного порта ПК и AVR согласно таблице (я проверил - работает): 

вывод LPT Сигнал AVR
6 (D4) /RESET
7 (D5) MOSI
8 (D6) SCK
10 (ACK) MISO
5 (D3) XTAL1
18..25 (GND) GND

AVReAl и вперед - только +5 вольт питания на AVR подавайте от внешнего источника и программирование пройдет на ура! 

Можно использовать батарейку на 6 вольт с 2 диодами последовательно для понижения напряжения... можно три батарейки по 1,5 вольт последовательно соединить, а можно +5 вольт взять с вывода 1 гейм порта компьютера.

Советую -  не поленитесь:  спаяйте адаптер STK200 на микросхеме буфере - так как LPT порт компьютера более нежен чем COM - соответственно его можно спалить проще...

Отличный бесплатный софт для программирования всего - www.Ic-prog.com - тоже есть схемы адаптеров. Может программировать: AVR, PIC, микросхемы с интерфейсом i2c.

 

Назад              Дальше...

 




AVR раз, два, три... бай-ру   это просто!

Курс  Начинающим:   МикроКонтроллеры 
AVR "с нуля" на языке Си

-8-

Дополнительные материалы:

ВАЖНО: Методика работы с ЛЮБЫМИ электронными компонентами такова:

С сайта производителя или дистрибьютора-дилера скачиваете: 

- DataSheet - основной документ по компоненту.

- Errata - описание известных уже ошибок компонента.

- Ищите обязательно: Application Notes иди Design Notes - это примеры применения компонента, советы и наставления - учитесь на чужих ошибках, своих еще успеете наделать!

- Ищите и жадно читаете FAQ по продукту!

Все это для AVR можно найти на сайтах: 

- ATMEL.com 
- ATMEL.ru  

и обязательно AvrFreaks.net  

там надо бесплатно зарегистрироваться, а потом использовать его содержимое: примеры как работать с программами которые мы используем в нашем курсе, ~150 проектов на AVR с исходниками, схемами  т.е. то что доктор прописал - ЗДЕСЬ ТАБЛИЦА AVR'ов и LINK'и на документацию)

 


Platan.ru  Рускоязычный сайт с морем информации по любым электронным  компонентам 

там же: цены, DataSheet и заказы р-деталей почтой по России. Можете бесплатно заказать CD-ROM'ы с документацией ведущих производителей компонентов.

 

Интересный AVR сайт: Sin-bad.narod.ru с информацией по AVR для начинающих и русским описанием архитектуры этих МК, приемы программирования, документация.

В разделе "AVR документация" рекомендую пункты 5,6,9,10,13  - это переводы фирменых атмеловских Application Notes ссылка на оригинал которых находится ниже по тексту. 

Советую скачать и прочитать внимательно: 

"серия из 11 статей по МК опубликованых в журнале "СхемоТехника" под общем названием: Микроконтроллеры? Это же просто! - подробно рассказывается о том что же такое микроконтроллер и как с ним работать"  
автор А. Фрунзе - много пишет для начинающих в различных журналах - в низу страницы.

 

 

 

Пожалуйста скачайте AVR 8-Bit RISC - Application Notes все! 


AVR раз, два, три... бай-ру   это просто!

Курс  Начинающим:   МикроКонтроллеры 
AVR "с нуля" на языке Си

-9-


  PIC от MicroChip.com  

Если вы хотите использовать самые популярные среди электронщиков любителей МК - PIC'и - то рекомендую вам такой набор ресурсов:

PIC на русском для начинающих - автор Дмитрий Саликов.

Всю фирменую документацию по PIC перевели на русский язык на сайте Microchip.ru - там же можно заказать ПИКи (095)963-9601.

Закзать бесплатно! МК PIC  можно в фирме Тритон - приготовьте описание вашего проекта! 

от производителя PIC-ов, примерно 600 примеров применения с теорией схемами и кодом программ: All Application Notes


Начинающему PIC'оману от классика жанра:  David Tait's PIC Links На самом деле это не линки, а бесценные для старта материалы. Их можно скачать одним архивом 5 Мб - очень удобно.

Peter Anderson's PIC Page  - супер!   не только о ПИКах но и по связи ПК с внешним миром.

THE PIC COURSE  
без комментариев! из названия все понятно...

Rentron.com - много готовых заготовок-кубиков из которых можно сложить свое устройство!      

FAQ - два сборника ответов на вопросы по Си для PIC - один лучше другого

HT-PICC - Компилятор Си (пожалуй лучший) для PIC и классная инструкция.

Компилятор Си для PIC - PicAntIDE - недорогой от Павла Баранова с эмуляцией некоторой обвязки и примерами применения.  Новая версия 5.3 называется по другому.

Ну и наконец: Программировать PIC (т.е. заливать в МК то, что вы наваяете) советую вот этим (я его использую и для i2c приборов): JDM PIC Programmer - там схема, рисунок платы (не забудьте, на плате есть 2 перемычки! - но они плохо видны). и его фотки.

Софт для программирования рекомендую с Ic-prog.com - проверено мной.

 


Назад        Дальше... 

будет вам и дальше, с течением времени...

Ося Бендер (про задаток).  

 





AVR раз, два, три... бай-ру   это просто!

Курс  Начинающим:   МикроКонтроллеры 
AVR "с нуля" на языке Си

- задача 01 -

Цель задачи:  

1) получить основные навыки работы с компилятором Си для МК AVR от компании ImageCraft.

2) получить файл work.hex - это "прошивка" готовая для загрузки в МК или для проверки работы на эмуляторе.   

Задание составлено на основе Application Note AVR031 "Getting Started with ImageCraft C for AVR"  компании Atmel - в котором рассказывается как начать работать с этим компилятором (этот документ находится и в папке где установлен компилятор).



Для работы над задачей необходимы:

- Установленый в директорию по умолчанию (C:\ICC) компилятор ImageCraft 

- Data Sheet на МК AVR AT90s2313

- Скачаные AVR 8-Bit RISC - Application Notes

Открываем указанный выше .pdf 

Features

• How to Open a New Project
• Description of Option Settings
• Writing and Compiling the C Code
• How to Load the Executable File into the
STK200 Starter Kit

Мы выполним 3 первых пункта, 4 пункт - прошивка МК установленого в плату разработчика, вы почитайте но делать его пока не будем. 

1) Как создать новый проект в компиляторе:

проделайте путь описанный в документе по созданию проекта  - при этом выберите папку для проекта "c:\icc\work", тогда:  

- файл исходного текста Си будет называться work.с (создается в п. 3)

- файл поекта  - work.prj

- файл результат компиляции - work.hex 


2) Описание установок компилятора

Прочитайте и сделайте (не нужно менять "Paths" в разделе "Settings in Project>Options")

3) Написание и компиляция кода программы на Си

После создания проекта WORK и и установки опций компилятора можно приступить к написанию текста программы.

Предлагается простая программка инкрементирующая (значит - увеличивающая на единицу) значение в порте B (PORTB) МК, к выводам которого подключены 8 светодиодов (eight LEDs).


AVR раз, два, три... бай-ру   это просто!

Курс  Начинающим:   МикроКонтроллеры 
AVR "с нуля" на языке Си

- задача 02 -

 Цель задачи:  

1) получить основные навыки работы с програмным эмулятором Visual Micro Lab для AVR от компании Advanced Micro Tools.

2) ознакомиться со способом  текстового описания схемы эмулируемого устройства - "обвески" МК.  

Внешние компоненты, подключенные к выводам МК описываются на SPICE подомном языке реализованным компанией Advanced Micro Tools в изучаемом эмуляторе.

3) проверить работу файла "прошивки" work.hex полученного в Задаче 01 - на соответствие тому, что мы ожидали при написании исходного текста на языке Си. 

  
Задание составлено на основе исходного кода Си - программы из Application Note AVR031 "Getting Started with ImageCraft C for AVR" компании Atmel.  



Для задачи 02 необходимо:

- Установленый в директорию по умолчанию (C:\VMLAB) программный эмулятор МК AVR -  Visual Micro Lab

- распечатаный по-статейно ХЕЛП эмулятора (или хотябы скомпилированый в один файл) - это очень облегчит освоение эмулятора. 

- предварительно нужно изучить 6 примеров (step01_06) из папки C:\VMLAB\tutorial - запустить эмулятор и открыть: "проект - открыть проект" - файлы .prj  Посмотрите как происходит эмуляция работы МК. 

Очень советую:  распечатать соответствующие небольшие текстовые файлы-описания проектов step01.prj - step06.prj  и  "сшить" их скотчем в книжку с распечатанным Хелпом - это УДОБНО! 

Эти распечатки будут вашим кратким справочником по Эмулятору.

- Файл work.hex - полученый в Задаче 01 

- свободное время и желание.

 

Кстати, о птичках...

Эмулятор v3.9 может работать с компилятором Си - GCC WinAVR используя настоящую "обратную связь" - т.е. Вы можете видеть как программа "шагает" по исходному тексту программы на Си. 


AVR раз, два, три... бай-ру   это просто!

Курс  Начинающим:   МикроКонтроллеры 
AVR "с нуля" на языке Си

- задача 03 -

Цель задачи 03:  

1) Создать программу для МК AT90s2313 измеряющую 50 раз в секунду частоту сигнала подаваемого на "ножку" МК и отсылающую полученные данные по rs232 (например на COM порт ПК)  

2) проверить работу программы на эмуляторе Visual Micro Lab

3) научиться генерировать Си код инициализации периферии МК с помощью программы-мастера  "Application Builder" входящей в состав компилятора ImageCraft   

 
Для выполнения задачи необходимо:

- Установленный компилятор ImageCraft 

- Установленный программный эмулятор Visual Micro Lab

- Data Sheet на МК AVR AT90s2313 

- свободное время и желание.

 

Давайте зададим диапазон частот входного сигнала от 500 до 2000 Гц (в дальнейшем он может быть изменен вами по желанию).

Напрямую МК может измерять временные интервалы - т.е. мерить мы будем период сигнала - у нас он лежит в  пределах от 500 мкС до 2000 мкС

Будем использовать для хранения результата каждого измерения два байта - т.е. диапазон чисел от 0 до 65535.

Результаты будут выводится в окно "терминал" контрольной панели эмулятора - старший байт (HB), затем младший (LB). 

Окно "терминал" эмулирует работу COM порта ПК.

Результат каждого измерения будет выводиться в новой строке.

 

- сохраните файлы задачи 01 из папки work - затем очистите ее.

- Запускаем компилятор ICC

- нажмите предпоследнюю иконку "Application Builder" - этот удобный инструмент позволяет создать Си код для конфигурирования МК под нашу задачу.

Прочитайте раздел Хелп ICC 
по "Application Builder"


- в секции CPU установите 2313, а в комментариях: "Измерение частоты сигнала с выводом на rs232"

- перейдем в секцию Timer0 

поставьте галочку использовать Timer0


AVR раз, два, три... бай-ру   это просто!

Курс  Начинающим:   МикроКонтроллеры 
AVR "с нуля" на языке Си

- задача 04 -

 

Задача № 04

Цель задачи:

Разработать программу для измерения частоты сигнала ёмкостного датчика нагрузки: МК должен сохранять результат в памяти и отправлять на последовательный порт ПК.


Для выполнения задания необходимо:

- Компилятор Си для AVR ImageCraft 

- Программный эмулятор для AVR Visual Micro Lab

- Data Sheet на МК AVR AT90s2313 

- свободное время и желание.



Вступление...

Ёмкостной датчик - это устройство которое под действием нагрузки изменяет свою емкость, которая является частью времязадающей цепи генератора электрических колебаний. Вот частоту сигнала с этого генератора нам и нужно померить.

Вот один из вариантов конструкции емкостного датчика нагрузки из двух металлических пластин с воздушным зазором

Я предлагаю такую конструкцию датчика:


Это металлический плоский ящик-опора на который действует измеряемая нагрузка. 

Металлический верх ящика является упругим элементом датчика и одновременно обкладкой измерительного конденсатора соединенной с общим проводом электрической схемы устройства - так достигается экранировка устройства от внешних электромагнитных полей. 

К верху ящика, с низу приклеена по краям, с зазором, металлическая пластина - вторая обкладка конденсатора - она остается плоской не зависимо от нагрузки. 

При нагружении ящика его верх деформируется и зазор между пластинами уменьшается - соответственно емкость конденсатора увеличивается. 

Значит уменьшается частота генератора  частото-задающая RC цепь которого состоит из этого конденсатора и дополнительного резистора. 

Частота делится делителем на 128 и передается на устройство фиксации. 

Электрическая часть датчика собрана на двух микросхемах по схеме:


Устройство питается от напряжения 5-15 вольт и выдает почти прямоугольный сигнал на выходе.

Содержание раздела