Рабочее место разработки прошивок для МК AVR — различия между версиями

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
м
(Тестовый проект PORTB_LED_FLASH)
 
(не показаны 23 промежуточные версии 3 участников)
Строка 1: Строка 1:
 +
{{AttentionBlock|НЕ ИСПОЛЬЗУЙТЕ В AVRStudio В ПУТИ К ПРОЕКТУ РУССКИЕ БУКВЫ, ИНАЧЕ БУДУТ КАК МИНИМУМ ПРОБЛЕМЫ С Makefile'ом ПРИ ПОПЫТКЕ СКОМПИЛИРОВАТЬ ПРОЕКТ.}}
 +
 +
 
{{Robo-stub}}
 
{{Robo-stub}}
  
 
На этой странице мы укажем все необходимое, чтобы быстро начать разработку прошивок для МК "AVR"
 
На этой странице мы укажем все необходимое, чтобы быстро начать разработку прошивок для МК "AVR"
  
 +
== Софт для разработки прошивок - WinAVR+AVRStudio4 ==
 +
В качестве основного инструмента выбираем связку AVRStudio + WinAVR .
 +
 +
=== Порядок скачивания и установки ===
 +
 +
# Установка AVRStudio;
 +
## Скачать последнюю версию AVRStudio (~90Mb) с сайта: [http://www.atmel.ru/Software/Software.htm www.atmel.ru];
 +
## Запустить исполняемый файл, дождаться окончания установки отвечая по пути на все вопросы;
 +
# Установка WinAVR;
 +
## Скачать последнюю версию WinAVR с сайта: [http://winavr.sourceforge.net/ winavr.sourceforge.net];[http://sourceforge.net/project/showfiles.php?group_id=68108 SF download page];
 +
## Запустить исполняемый файл, дождаться окончания установки, отвечая по пути на все вопросы;
 +
# Запустить среду разработки AVRStudio и загрузить в неё тестовый проект, скомпилировать и убедиться, что всё ок.
  
== Софт для разработки прошивок - WinAVR ==
+
'''Настройка проекта WinAVR в картинках''' [http://avr123.nm.ru/04.htm]
В качестве основного инструмента выбираем WinAVR.
 
  
=== Порядок скачки и установки ===
+
=== Тестовый проект PORTB_LED_FLASH ===
 +
Моргаем светодиодами подключенными через резисторы 300-560 Ом к PORTB. 
  
# Скачать последнюю версию с сайта: [http://winavr.sourceforge.net/ winavr.sourceforge.net] [http://sourceforge.net/project/showfiles.php?group_id=68108 SF download page];
+
'''Кратко язык Си для AVR''' и он-лайн книга "Язык программирования Си" Брайан В. Керниган, Деннис М. Ритчи [http://avr123.nm.ru/05.htm]
# Запустить файл;
 
# Дождаться окончания установки отвечая по пути на все вопросы;
 
# Запустить среду разработки и загрузить в неё тестовый проект, скомпилировать и убедиться, что всё ок.
 
  
=== Тестовый проект (мигаем светодиодами) ===
+
'''Устройство AVR''' и даташит на русском языке [http://avr123.nm.ru/02.htm]
Моргаем светодиодами на порту B
 
  
 
'''main.c''':
 
'''main.c''':
<source lang="c">/**
+
<source lang="c">#include <avr/io.h>
* \version main.cpp, v 0.0.1 5/11/2007 12:31 vovan
 
*/
 
 
 
/**
 
*/
 
#include <avr/io.h>
 
 
#include <util/delay.h>
 
#include <util/delay.h>
 
#include <inttypes.h>
 
#include <inttypes.h>
  
/**
 
* main()
 
*/
 
 
int main(void)
 
int main(void)
 
{
 
{
 
char i;
 
char i;
DDRB = 0xFF;
+
DDRB = 0xFF; // сделать все выводы PORTB выходами
PORTB = 0x00;
+
PORTB = 0x00; // вывести "0" на все ножки PORTB
  
 
while(1)
 
while(1)
 
{
 
{
for(i = 0; i < 100; i++)
+
_delay_ms(250); // пауза 250 милиСек
_delay_ms(10);
+
PORTB = 0xFF;   // вывести "1" на все ножки PORTB
PORTB = 0xFF;
+
_delay_ms(250);
for(i = 0; i < 100; i++)
+
PORTB = 0x00;   // вывести "0" на все ножки PORTB
_delay_ms(10);
 
PORTB = 0x00;
 
 
}
 
}
 
return 0;
 
return 0;
Строка 51: Строка 51:
  
 
Для сборки проекта используется утилита make<ref>[http://www.linux.org.ru/books/GNU/Gmake.htm Эффективное использование GNU make]</ref>.
 
Для сборки проекта используется утилита make<ref>[http://www.linux.org.ru/books/GNU/Gmake.htm Эффективное использование GNU make]</ref>.
Она выполняет правила, записанные в файле '''Makefile'''.
+
Она выполняет правила, записанные в файле '''Makefile'''. Его можно написать вручную, а можно воспользоваться программой '''MFile''' из состава WinAVR вот так [http://avr123.nm.ru/04.htm]. [[Пример make-файла для тестового проекта PORTB_LED_FLASH]].
Его можно написать вручную, а можно воспользоваться программой из состава WinAVR
 
 
 
Ниже пример '''Makefile''' для сборки тестового проекта:
 
 
 
'''Makefile''':
 
<source lang="bash">
 
target := main
 
f_cpu := 14745600UL
 
mcu := atmega32
 
src_dirs := .
 
cc := avr-g++
 
objcpy := avr-objcopy
 
cflags := -Wall -g -O2 -DF_CPU=$(f_cpu) -mmcu=$(mcu)
 
lflags := -Wl -g -mmcu=$(mcu)
 
cclog := compile.log
 
doxylog := doxy.log
 
programmer := uisp -dprog=abb -dlpt=/dev/parport0 --erase --upload --verify if=./$(addsuffix .hex,$(target))
 
size := avr-size
 
xmlconf := project.xml
 
 
 
 
 
#- do not need to edit -------------------------------------------------------------------------------
 
rm := rm -rf
 
doxygen := doxygen
 
VPATH := $(src_dirs)
 
search := $(addsuffix /*.cpp,$(src_dirs))
 
ELFSIZE := $(size) --mcu=$(mcu) --format=avr $(addsuffix .elf,$(target))
 
 
 
#-----------------------------------------------------------------------------------------------------
 
all: elf hex eep rmlogifclean size
 
 
 
#- create elf file -----------------------------------------------------------------------------------
 
elf: $(addsuffix .elf,$(target))
 
 
 
$(addsuffix .elf,$(target)): $(notdir $(patsubst %.cpp,%.o, $(wildcard $(search))))
 
$(cc) $(lflags) $^ -o $(addsuffix .elf,$(target)) 2>>$(cclog)
 
 
 
#- create hex file -----------------------------------------------------------------------------------
 
hex: $(addsuffix .hex,$(target))
 
 
 
$(addsuffix .hex,$(target)): elf
 
$(objcpy) -R.eeprom -O ihex $(addsuffix .elf,$(target)) $(addsuffix .hex,$(target)) 2>>$(cclog)
 
 
 
#- create eep file -----------------------------------------------------------------------------------
 
eep: $(addsuffix .eep,$(target))
 
 
 
$(addsuffix .eep,$(target)): elf
 
-$(objcpy) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
 
--change-section-lma .eeprom=0 --no-change-warnings -O ihex \
 
$(addsuffix .elf,$(target)) $(addsuffix .eep,$(target)) 2>>$(cclog)
 
 
 
 
 
#- create coff file ----------------------------------------------------------------------------------
 
coffconv := $(objcpy) --debugging --change-section-address .data-0x800000 \
 
--change-section-address .bss-0x800000 \
 
--change-section-address .noinit-0x800000 \
 
--change-section-address .eeprom-0x810000
 
 
 
coff: elf
 
$(coffconv) -O coff-avr $(addsuffix .elf,$(target)) $(addsuffix .cof,$(target)) 2>>$(cclog)
 
extcoff: elf
 
$(coffconv) -O coff-ext-avr $(addsuffix .elf,$(target)) $(addsuffix .cof,$(target)) 2>>$(cclog)
 
 
 
#- create o file -------------------------------------------------------------------------------------
 
%.o: %.cpp
 
$(cc) $(cflags) $(addprefix -I,$(src_dirs)) -MD -c  $< 2>>$(cclog)
 
 
 
#- create doxygen documentation ----------------------------------------------------------------------
 
dox:
 
$(rm) $(doxylog)
 
$(cog) Doxyfile
 
$(doxygen) 2>> $(doxylog)
 
 
 
#- create program chip -------------------------------------------------------------------------------
 
program:
 
$(programmer)
 
 
 
#- see size of program (WIN only) --------------------------------------------------------------------
 
size:
 
if [ `echo ${OS} | grep "win" -i` ]; then echo; $(ELFSIZE); fi
 
 
 
#- clean garbage -------------------------------------------------------------------------------------
 
garbage:
 
$(rm) $(wildcard *.d) $(wildcard *.o) $(cclog) $(doxylog) $(wildcard *.DBK) $(wildcard *.PWI)
 
rmlogifclean:
 
if [ `du $(cclog) | cut -f1 ` -eq '0' ]; then echo rm log; $(rm) $(cclog); fi
 
if [ `du $(doxylog) | cut -f1 ` -eq '0' ]; then echo rm log; $(rm) $(doxylog); fi
 
 
#- clean and deep clean ------------------------------------------------------------------------------
 
clean:
 
$(rm) $(addsuffix .elf,$(target)) $(addsuffix .hex,$(target)) $(wildcard *.d) $(wildcard *.o) \
 
$(wildcard *.hex) $(cclog) $(doxylog) $(wildcard *.DBK) $(wildcard *.PWI)
 
deepclean:
 
$(rm) $(addsuffix .elf,$(target)) $(addsuffix .hex,$(target)) $(wildcard *.d) $(wildcard *.o) \
 
$(wildcard *.hex) $(cclog) $(doxylog) doc $(wildcard *.DBK) $(wildcard *.PWI)
 
$(cog) -x
 
 
 
#-----------------------------------------------------------------------------------------------------
 
include $(wildcard *.d)
 
</source>
 
  
 
== Софт для симуляции выполнения прошивок на МК - VMLAB ==
 
== Софт для симуляции выполнения прошивок на МК - VMLAB ==
В качестве основного пакета для эмуляции МК "AVR" был выбран VMLAB.
+
В качестве основного пакета для эмуляции МК "AVR" был выбран VMLAB [http://avr123.nm.ru].  
  
=== Порядок скачки и установки ===
+
Рекомендуется скачать и использовать мощнейший симулятор электроники и множества микроконтроллеров - PROTEUS [http://oProteus.narod.ru] -это средство сквозного проектирования - от идеи до файлов с результатами работы устройства и файлов для изготовления платы.  
Здесь будет описан порядок установки и проверки симулятора.
 
  
 +
=== Порядок скачивания и установки ===
 +
По-шаговая инструкция как скачать, установить и проверить работу VMLAB [http://avr123.nm.ru].
 +
Подробное описание симуляции AVR в VMLAB [http://avr123.nm.ru/z3.htm].
  
 
=== Тестовый проект (мигаем светодиодами) ===
 
=== Тестовый проект (мигаем светодиодами) ===
Здесь будет описан порядок запуска тестового проекта.
+
Переключение светодиодов в VMLAB [http://avr123.nm.ru/z2.htm].
 
 
  
 
== Программатор для прошивки МК ==
 
== Программатор для прошивки МК ==
Здесь не существует варианта, который мы могли бы рекоммендовать однозначно. Диапазон решений сильно отличается по цене, надежности и трудозатратам которые нужно вложить в программатор, если делать его самому. Основные три варианта приведены ниже, выбрать из них предстоит вам самим:
+
Здесь не существует варианта, который мы могли бы рекомендовать однозначно. Диапазон решений сильно отличается по цене, надежности и трудозатратам, которые нужно вложить в программатор, если делать его самому. Основные три варианта приведены ниже, выбрать из них предстоит вам самим:
  
 
{| class="standard"
 
{| class="standard"
Строка 195: Строка 96:
 
|}
 
|}
  
 +
== Минимальное "железо" кроме программатора нужное для экспериментов ==
 +
В этом разделе мы расскажем что вам будет нужно, чтобы начать разработку прошивок для МК AVR и как всё это собрать воедино и запустить тестовый проект.
  
== Минимальное железо кроме программатора нужное для экспериментов ==
+
Пока вы не уверены в своих силах и не имеете нужных компонентов - вы можете проверять работу ваших программ в VMALB и PROTEUS - вы не сожгете ни одного компонента ! И это +
В этом разделе мы расскажем что вам будет нужно, чтобы начать разработку прошивок для МК AVR и как всё это собрать воедино и запустить тестовый проект.
 
  
 
=== Минимальный рекомендуемый набор для разработки устройств на МК ===
 
=== Минимальный рекомендуемый набор для разработки устройств на МК ===
Строка 207: Строка 109:
 
!Где взять
 
!Где взять
 
|-
 
|-
|Адаптер питания 220V AC => 5V DC
+
|Адаптер питания стабилизированный 220V AC => 5V DC
 
|[[Изображение:AcDc5V_small.jpg]]
 
|[[Изображение:AcDc5V_small.jpg]]
 
|от 4$
 
|от 4$
Строка 216: Строка 118:
 
|Макетная плата для работы без пайки
 
|Макетная плата для работы без пайки
 
|[[Изображение:SolderlessBreadboard_small.jpg]]
 
|[[Изображение:SolderlessBreadboard_small.jpg]]
|от 10$
+
|от 5$
 
|Купить в радиотоварах
 
|Купить в радиотоварах
 
|-
 
|-
Строка 229: Строка 131:
 
|Купить в радиотоварах
 
|Купить в радиотоварах
 
|-
 
|-
|Конденсатор 16В 0.1мкФ - 3шт
+
|Конденсатор 0.1мкФ - 3шт
 
|[[Изображение:Capacitor_small.jpg]]
 
|[[Изображение:Capacitor_small.jpg]]
 
|~0.5$
 
|~0.5$
Строка 236: Строка 138:
  
 
=== Правила подключения к МК питания и других обязательных элементов обвязки ===
 
=== Правила подключения к МК питания и других обязательных элементов обвязки ===
Здесь будет сказано как подключить к МК питание, ресет и т.п.
+
Как подключить к МК питание, ресет и т.п. [http://avr123.nm.ru/07.htm] и другие компоненты на примере фирменной платы [http://avr123.nm.ru/01.htm] электропривода. Куски схем и номиналы компонентов подключаемых к AVR берите из апноутов - примеров применения компонента от производителя.
  
 
=== Тестовый проект на МК (мигаем светодиодами) ===
 
=== Тестовый проект на МК (мигаем светодиодами) ===
Здесь будет рассмотрен тестовый проект мигающий светодиодами.
+
тестовый проект написан в WinAVR и мигающий светодиодами в PROTEUS. [http://avr123.nm.ru/04.htm]
  
 
== См. также ==
 
== См. также ==
 
<references />
 
<references />

Текущая версия на 18:11, 2 ноября 2008

Внимание!
Внимание!

НЕ ИСПОЛЬЗУЙТЕ В AVRStudio В ПУТИ К ПРОЕКТУ РУССКИЕ БУКВЫ, ИНАЧЕ БУДУТ КАК МИНИМУМ ПРОБЛЕМЫ С Makefile'ом ПРИ ПОПЫТКЕ СКОМПИЛИРОВАТЬ ПРОЕКТ.





На этой странице мы укажем все необходимое, чтобы быстро начать разработку прошивок для МК "AVR"

Софт для разработки прошивок - WinAVR+AVRStudio4

В качестве основного инструмента выбираем связку AVRStudio + WinAVR .

Порядок скачивания и установки

  1. Установка AVRStudio;
    1. Скачать последнюю версию AVRStudio (~90Mb) с сайта: www.atmel.ru;
    2. Запустить исполняемый файл, дождаться окончания установки отвечая по пути на все вопросы;
  2. Установка WinAVR;
    1. Скачать последнюю версию WinAVR с сайта: winavr.sourceforge.net;SF download page;
    2. Запустить исполняемый файл, дождаться окончания установки, отвечая по пути на все вопросы;
  3. Запустить среду разработки AVRStudio и загрузить в неё тестовый проект, скомпилировать и убедиться, что всё ок.

Настройка проекта WinAVR в картинках [1]

Тестовый проект PORTB_LED_FLASH

Моргаем светодиодами подключенными через резисторы 300-560 Ом к PORTB.

Кратко язык Си для AVR и он-лайн книга "Язык программирования Си" Брайан В. Керниган, Деннис М. Ритчи [2]

Устройство AVR и даташит на русском языке [3]

main.c: <source lang="c">#include <avr/io.h>

  1. include <util/delay.h>
  2. include <inttypes.h>

int main(void) { char i; DDRB = 0xFF; // сделать все выводы PORTB выходами PORTB = 0x00; // вывести "0" на все ножки PORTB

while(1) { _delay_ms(250); // пауза 250 милиСек PORTB = 0xFF; // вывести "1" на все ножки PORTB _delay_ms(250); PORTB = 0x00; // вывести "0" на все ножки PORTB } return 0; } </source>

Для сборки проекта используется утилита make[1]. Она выполняет правила, записанные в файле Makefile. Его можно написать вручную, а можно воспользоваться программой MFile из состава WinAVR вот так [4]. Пример make-файла для тестового проекта PORTB_LED_FLASH.

Софт для симуляции выполнения прошивок на МК - VMLAB

В качестве основного пакета для эмуляции МК "AVR" был выбран VMLAB [5].

Рекомендуется скачать и использовать мощнейший симулятор электроники и множества микроконтроллеров - PROTEUS [6] -это средство сквозного проектирования - от идеи до файлов с результатами работы устройства и файлов для изготовления платы.

Порядок скачивания и установки

По-шаговая инструкция как скачать, установить и проверить работу VMLAB [7]. Подробное описание симуляции AVR в VMLAB [8].

Тестовый проект (мигаем светодиодами)

Переключение светодиодов в VMLAB [9].

Программатор для прошивки МК

Здесь не существует варианта, который мы могли бы рекомендовать однозначно. Диапазон решений сильно отличается по цене, надежности и трудозатратам, которые нужно вложить в программатор, если делать его самому. Основные три варианта приведены ниже, выбрать из них предстоит вам самим:

Вариант решения Внешний вид Комментарий Приблизительная стоимость Где взять
Самодельный программатор "5 проводков" для LPT-порта AVRProgrammerLPT-5wires small.jpg Может "сжечь" LPT-порт на материнской плате;

Самый дешевый и быстрый вариант;

от 3$ Собрать самому
Самодельный программатор с буфером для LPT-порта AVRProgrammerLPT-buffered small.jpg Менее быстрый, зато более надежный вариант; от 7$ Собрать самому
Готовый программатор AVR910 для COM-порта Файл:AVRProgrammerCOM-AVR910 small.jpg Очень надежный вариант от 25$ Купить в радиотоварах

Минимальное "железо" кроме программатора нужное для экспериментов

В этом разделе мы расскажем что вам будет нужно, чтобы начать разработку прошивок для МК AVR и как всё это собрать воедино и запустить тестовый проект.

Пока вы не уверены в своих силах и не имеете нужных компонентов - вы можете проверять работу ваших программ в VMALB и PROTEUS - вы не сожгете ни одного компонента ! И это +

Минимальный рекомендуемый набор для разработки устройств на МК

В минимальном рекомендуемом варианте, кроме программатора, вам потребуются комплектующие общей стоимостью порядка 20$:

Название Внешний вид Приблизительная стоимость Где взять
Адаптер питания стабилизированный 220V AC => 5V DC AcDc5V small.jpg от 4$

Часто уже есть, например от USB-хабов D-Link

Купить в радиотоварах
Макетная плата для работы без пайки SolderlessBreadboard small.jpg от 5$ Купить в радиотоварах
Микроконтроллер AVR ATMega16 в DIP-корпусе ATMega16DIP small.jpg ~5$ Купить в радиотоварах
Резисторы 0.25Вт, 1 кОм, 10 кОм, 100 Ом по 5 штук каждого Resistors small.jpg ~0.5$ Купить в радиотоварах
Конденсатор 0.1мкФ - 3шт Capacitor small.jpg ~0.5$ Купить в радиотоварах

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

Как подключить к МК питание, ресет и т.п. [10] и другие компоненты на примере фирменной платы [11] электропривода. Куски схем и номиналы компонентов подключаемых к AVR берите из апноутов - примеров применения компонента от производителя.

Тестовый проект на МК (мигаем светодиодами)

тестовый проект написан в WinAVR и мигающий светодиодами в PROTEUS. [12]

См. также