Курс "Программирование МК AVR на Си" — различия между версиями

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
Строка 1: Строка 1:
{{AttentionBlock|НЕ ИСПОЛЬЗУЙТЕ В AVRStudio В ПУТИ К ПРОЕКТУ РУССКИЕ БУКВЫ, ИНАЧЕ БУДУТ КАК МИНИМУМ ПРОБЛЕМЫ С Makefile'ом ПРИ ПОПЫТКЕ СКОМПИЛИРОВАТЬ ПРОЕКТ.}}
+
Содержание:
 
+
# Часть 1: Готовим рабочее место
На этой странице мы укажем все необходимое, чтобы быстро начать разработку прошивок для МК "AVR"
+
## [[Урок 1.1: Устанавливаем и проверяем компилятор]];
 
+
## [[Урок 1.2: Выбираем и закупаем\собираем программатор]];
== Софт для разработки прошивок - WinAVR+AVRStudio4 ==
+
## [[Урок 1.3: Собираем минимальный набор железа - МК + обвязка]];
В качестве основного инструмента выбираем связку AVRStudio + WinAVR .
+
# Часть 2: Базовые функции ввода-вывода
 
+
## [[Урок 2.1: Мигаем светодиодом]];
=== Порядок скачки и установки ===
+
## [[Урок 2.2: Зажигаем светодиод при нажатии кнопки]];
 
+
## [[Урок 2.3: Читаем с помощью АЦП уровень напряжения]];
# Установка AVRStudio;
+
# Часть 3: Использование таймеров, ШИМ и прерываний
## Скачать последнюю версию AVRStudio (~90Mb) с сайта: [http://www.atmel.ru/Software/Software.htm www.atmel.ru];
+
## [[Урок 3.1: Мигаем светодиодом с использованием таймера]];
## Запустить исполняемый файл, дождаться окончания установки отвечая по пути на все вопросы;
+
## [[Урок 3.2: Плавно мигаем светодиодом с использованием ШИМ]];
# Установка WinAVR;
+
## [[Урок 3.3: Обрабатываем внешние сигналы с помощью прерываний]];
## Скачать последнюю версию WinAVR с сайта: [http://winavr.sourceforge.net/ winavr.sourceforge.net];[http://sourceforge.net/project/showfiles.php?group_id=68108 SF download page];
+
# Часть 4: Использование протоколов взаимодействия с другими модулями
## Запустить исполняемый файл, дождаться окончания установки отвечая по пути на все вопросы;
+
## [[Урок 4.1: Работаем с UART'ом (делаем конвертер уровней и соединяемся с ПК)]];
# Запустить среду разработки AVRStudio и загрузить в неё тестовый проект, скомпилировать и убедиться, что всё ок.
+
## [[Урок 4.2: Работаем с I2C микросхемой памяти]];
 
+
## [[Урок 4.3: Работаем с SPI микросхемой памяти]];
=== Тестовый проект PORTB_LED_FLASH ===
+
# Часть 5: Использование памяти
Моргаем светодиодами на порту B
+
## [[Урок 5.1: Расширение памяти МК внешней микросхемой]];
 
+
## [[Урок 5.2: Работаем с EEPROM-памятью]];
'''main.c''':
 
<source lang="c">#include <avr/io.h>
 
#include <util/delay.h>
 
#include <inttypes.h>
 
 
 
int main(void)
 
{
 
char i;
 
DDRB = 0xFF;
 
PORTB = 0x00;
 
 
 
while(1)
 
{
 
_delay_ms(250);
 
PORTB = 0xFF;
 
_delay_ms(250);
 
PORTB = 0x00;
 
}
 
return 0;
 
}
 
</source>
 
 
 
Для сборки проекта используется утилита make<ref>[http://www.linux.org.ru/books/GNU/Gmake.htm Эффективное использование GNU make]</ref>.
 
Она выполняет правила, записанные в файле '''Makefile'''. Его можно написать вручную, а можно воспользоваться программой из состава WinAVR. [[Пример make-файла для тестового проекта PORTB_LED_FLASH]].
 
 
 
== Софт для симуляции выполнения прошивок на МК - VMLAB ==
 
В качестве основного пакета для эмуляции МК "AVR" был выбран VMLAB.
 
 
 
=== Порядок скачки и установки ===
 
Здесь будет описан порядок установки и проверки симулятора.
 
 
 
 
 
=== Тестовый проект (мигаем светодиодами) ===
 
Здесь будет описан порядок запуска тестового проекта.
 
 
 
 
 
== Программатор для прошивки МК ==
 
Здесь не существует варианта, который мы могли бы рекоммендовать однозначно. Диапазон решений сильно отличается по цене, надежности и трудозатратам которые нужно вложить в программатор, если делать его самому. Основные три варианта приведены ниже, выбрать из них предстоит вам самим:
 
 
 
{| class="standard"
 
!Вариант решения
 
!Внешний вид
 
!Комментарий
 
!Приблизительная стоимость
 
!Где взять
 
|-
 
|Самодельный программатор "5 проводков" для LPT-порта
 
|[[Изображение:AVRProgrammerLPT-5wires_small.jpg]]
 
|Может "сжечь" LPT-порт на материнской плате;
 
 
 
Самый дешевый и быстрый вариант;
 
|от 3$
 
|[[Сборка программатора "5 проводков"|Собрать самому]]
 
|-
 
|Самодельный программатор с буфером для LPT-порта
 
|[[Изображение:AVRProgrammerLPT-buffered_small.jpg]]
 
|Менее быстрый, зато более надежный вариант;
 
|от 7$
 
|[[Сборка программатора для LPT порта с буфером|Собрать самому]]
 
|-
 
|Готовый программатор AVR910 для COM-порта
 
|[[Изображение:AVRProgrammerCOM-AVR910_small.jpg]]
 
|Очень надежный вариант
 
|от 25$
 
|Купить в радиотоварах
 
|}
 
 
 
 
 
== Минимальное железо кроме программатора нужное для экспериментов ==
 
В этом разделе мы расскажем что вам будет нужно, чтобы начать разработку прошивок для МК AVR и как всё это собрать воедино и запустить тестовый проект.
 
 
 
=== Минимальный рекомендуемый набор для разработки устройств на МК ===
 
В минимальном рекомендуемом варианте, кроме программатора, вам потребуются комплектующие общей стоимостью порядка 20$:
 
{| class="standard"
 
!Название
 
!Внешний вид
 
!Приблизительная стоимость
 
!Где взять
 
|-
 
|Адаптер питания 220V AC => 5V DC
 
|[[Изображение:AcDc5V_small.jpg]]
 
|от 4$
 
 
 
Часто уже есть, например от USB-хабов D-Link
 
|Купить в радиотоварах
 
|-
 
|Макетная плата для работы без пайки
 
|[[Изображение:SolderlessBreadboard_small.jpg]]
 
|от 10$
 
|Купить в радиотоварах
 
|-
 
|Микроконтроллер AVR ATMega16 в DIP-корпусе
 
|[[Изображение:ATMega16DIP_small.jpg]]
 
|~5$
 
|Купить в радиотоварах
 
|-
 
|Резисторы 0.25Вт, 1 кОм, 10 кОм, 100 Ом по 5 штук каждого
 
|[[Изображение:Resistors_small.jpg]]
 
|~0.5$
 
|Купить в радиотоварах
 
|-
 
|Конденсатор 16В 0.1мкФ - 3шт
 
|[[Изображение:Capacitor_small.jpg]]
 
|~0.5$
 
|Купить в радиотоварах
 
|}
 
 
 
=== Правила подключения к МК питания и других обязательных элементов обвязки ===
 
Здесь будет сказано как подключить к МК питание, ресет и т.п.
 
 
 
=== Тестовый проект на МК (мигаем светодиодами) ===
 
Здесь будет рассмотрен тестовый проект мигающий светодиодами.
 
 
 
== См. также ==
 
<references />
 

Версия 15:34, 30 июля 2008

Содержание:

  1. Часть 1: Готовим рабочее место
    1. Урок 1.1: Устанавливаем и проверяем компилятор;
    2. Урок 1.2: Выбираем и закупаем\собираем программатор;
    3. Урок 1.3: Собираем минимальный набор железа - МК + обвязка;
  2. Часть 2: Базовые функции ввода-вывода
    1. Урок 2.1: Мигаем светодиодом;
    2. Урок 2.2: Зажигаем светодиод при нажатии кнопки;
    3. Урок 2.3: Читаем с помощью АЦП уровень напряжения;
  3. Часть 3: Использование таймеров, ШИМ и прерываний
    1. Урок 3.1: Мигаем светодиодом с использованием таймера;
    2. Урок 3.2: Плавно мигаем светодиодом с использованием ШИМ;
    3. Урок 3.3: Обрабатываем внешние сигналы с помощью прерываний;
  4. Часть 4: Использование протоколов взаимодействия с другими модулями
    1. Урок 4.1: Работаем с UART'ом (делаем конвертер уровней и соединяемся с ПК);
    2. Урок 4.2: Работаем с I2C микросхемой памяти;
    3. Урок 4.3: Работаем с SPI микросхемой памяти;
  5. Часть 5: Использование памяти
    1. Урок 5.1: Расширение памяти МК внешней микросхемой;
    2. Урок 5.2: Работаем с EEPROM-памятью;