Подписаться на получение новых статей на почту:

Первая программа на AVR. Настройка и прошивка. Шаг №3

Обновлено 14.02.15. Здравствуйте дорогие друзья. В прошлой статье №2, мы остановились на рассмотрении файла Makefile, который, еще раз повторюсь, является настроечным файлом под контроллер и проект. В этой статье напишем первую программу на AVR — мигание светодиодом, разберемся с какой стороны к этому делу подходить. Итак открываем редактор Notepad. Создаем файл с расширением .c : File-New-C/C++-Save as, перед сохранением указываем название файла с расширением, например: main.c. Не забудьте сохранить в папке, в которой присутствует уже созданный файл Makefile, который мы разобрали в прошлой статье.

1.  Пишем код на Си. Код простой и меняя только лишь настройки портов ввода/вывода DDRх и  PORTх на необходимую букву порта, можем применить его к любому контроллеру.

/************************************************
ПРИМЕР МИГАНИЯ СВЕТОДИОДАМИ
*************************************************/
/* В кавычках заключаются комментарии. Возьмите за правило комментировать каждую строчку, каждое изменение. Так как через время, разобраться в многострочном коде тяжело.*/
#include <avr/io.h>                  /*подключаем библиотеку ввода/вывода*/
#include <util/delay.h>            /*библиотека задержки*/

/*Выше приведенные библиотеки являются стандартными, входят в состав пакета WinAVR*/

int main (void)                       /*Точка входа в программу, главная функция.*/
{
      DDRD = 0xff;            /*все выводы порта D сконфигурировать как выход.0xff – это шестнадцатеричная запись числа 255. Почему так? Потому что порт состоит из 8 ножек. Т.е. порт это байт. Ну и 2 в 8-ой степени = 255. Конфигурировать можете в любой системе исчисления, хоть в двоичной хоть в десятичной или в восьмеричной.   */
      /* Также не забываем писать код с отступами, что бы были видны разветвления кода. Четких правил      нет, обычно каждый пишет по своему, но чаще отступ это один tab  */
      while (1)                                           /*Бесконечный цикл*/
     {
           PORTD = 0xff;                           /* установить «1» на всех линиях порта D , т.е. подаем логическую «1», примерно 5 В. Светодиод начнет светиться. Если по схеме подключен к земле. Подключать можно к любому пину  порта. */
           _delay_ms (250);                    /*Ждем 0.25 сек.    _delay_ms — это макрос из библиотеки delay.h. Здесь берем и подставляем миллисекунды.*/
           PORTD = 0×00;                          /*установить «0» на всех линиях порта D. Светодиод выключится.*/
           _delay_ms (250);           /* Ждем 0.25 сек.*/
     }                                            /*закрывающая скобка бесконечного цикла*/
}                                                /*закрывающая скобка основной программы*/

2.     Все программу написали. Незабываем что название файла, с главной функцией main, (а также тип контроллера и частоту) необходимо указать в настроечном файле. Переходим к компилированию программы. В редакторе Notepad: Tools – Make All. Результат должен быть такой: Process Exit Code: 0, а также в исходной папке должны добавиться файлы ( на рис. слева). Нас интересует файл main.hex (прошивка)который непосредственно “заливается” в контроллер.  

Компилирование в WinAVR

3. Третий этап – программирование. Как упоминалось в предыдущей статье, можно использовать для программирования LPT порт. Так вот для программирования таким способом,на рисунке выше видно, что в редакторе, во вкладке Tools, выбираем Program и заливаем Последовательный интерфейс SPIпрошивочный файл.  Используя программатор USB-ISP, чтобы залить рабочий файл, нам необходимо предусмотреть физический последовательный периферийный интерфейс SPI . Внедряем в плату 10-ти пиновый разъем. На рисунке слева показано соединение с самим программатором. Данный интерфейс используется не только для последовательного программирования, но также и для обмена данными между контролерами и периферийными устройствами. Пример использования данного интерфейса SPI с картой SD.  При подключении к программатору используется всего лишь три провода SCK (тактовый сигнал), MOSI (вход данных), MISO (выход данных).

Используя программатор  AVR-USB нам необходима программа AVRStudio, которую перед заливкой файла необходимо настроить: запускаем ->выбираем Connect to the Selected AVRProgrammer ->в колонке Platform выбираем STK500 (независит от параметра указанного в Makefile) -> в колонке порт выбираем нужный нам порт-> Connected.

Настройка AVRStudio

Если все верно сделано то откроется окошко для работы МК. !!!!Программатор должен поддерживать среду с помощью которой заливаете, если это usb — программатор. Пробуем считать сигнатуру(коды идентификации)(рис. снизу слева), если получилось то все ОК. Если нет то осматриваем соединения.

Сигнатура Программирование AVR

Вроде все просто, но главное не спешить, ведь правильное, а главное качественно спаянный интерфейс сэкономит кучу времени, а это важный показатель. Потому как из- за плохой пайки, может не читаться сигнатура, не выставляться фьюзы, или еще хуже можно заблокировать (залочен) или вообще вывести из строя, так что терпение... После получения сигнаруры переходим на вкладку Program(рис. выше справа), отрываем папку с нашим рабочим файлом и программируем.

Ну и последнее если. Вы хотите попробовать себя, не имея программатора и контроллера. То начинайте работать в Proteus. Открываете ISIS, в закладке Library выбираем Pick Device/Symbol открывается библиотека, выбираем мк и led. Привязываем рабочий файл к контроллеру, кликаем два раза на контроллер (как на рисунке) и в свойствах выбираем рабочий файл. Запускаем и получаем результат- диод периодически мигает. Пример работы с данной программой можно посмотреть напримере пид-регулятор для станка и много др. 

Первая прграммв на AVR в Proteus

Конечно, работая в среде Proteus, нельзя проводить полную отладку конечных устройств. Т.к. на самом деле бывает что написаная программа и настроена в железе, не работает в Proteus и наоборот.

В принципе все. Как говорится начало есть. В следующей статье №4 мы с Вами разберем работу с ЖКИ,рассмотрим документацию, подключим к микроконтроллеру и напишем программу на Си. Экспериментируйте и пробуйте. Всем пока.

Просмотрено 6076 раз.

Я на Google+

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting