(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Программируем на С/С++ в Visual Studio под Arduino

Источник: habrahabr

Этот пост поможет начинающим сэкономить несколько часов(дней) для настройки среды Visual Studio для разработки под Arduino на языке С/C++.

 

Преамбула

 Пару месяцев назад увидел у преподавателя некую платку, подключенную к компьютеру. На платке были видны семисегментные индикаторы и несколько светодиодов. Преподаватель разбирался в каком-то коде, платка тем временем живо сигнализировала ему что-то. Меня сразу заинтересовало, чем это он там занимается… Однако, всё, что я смогу узнать у него - это то, что платку зовут отладочной. Путём недолгого гугления выхожу на игрушку под названием "Arduino". Заказываю себе Arduino mega, та что с Atmega1280 (всего $29.99) и через две недели бегу на почту получать заветную игрушку.

Фабула

 Т.к. я являюсь заядлым Windows-разработчиком, привыкшим к среде VS, то я решил сразу отвлечься от родной среды Arduino IDE.

 Итак, нам понадобится:
Собственно, сама среда;
Visual Assist X - опционально, для облегчения разработки. Заменяет собой встроенный IntelliSense встроенный в VS. Еще куча дополнительных опций. Платное;
WinAVR последней версии. Это компилятор программ на С/С++ для "платформы" AVR;
avr-libc. Минимальная реализация стандартной библиотеки С для AVR. Содержит такие полезные функции, как, например, _delay_ms или _delay_us (задержка в милли- и микросекундах);
Avrdude. Желательно свежей версии, универсальный программатор для AVR;
FTDI Virtual Com Port Drivers. Не вдаваясь в подробности, будем называть это "драйверами для Arduino";
AvrStudio - опционально. Имеет встроенный симулятор микроконтроллера, позволяющий пошагово отлаживать программу;
Arduino schematic. Этот pdf-файл понадобится для того, чтобы узнать к каким портам МК подключены выходы Arduino.

 Всё гуглится на раз.

 Итак, приступим. Устанавливаем WinAVR, avr-libc, скачивам Avrdude. Подключаем Arduino к компьтеру и устанавливаем драйвера. Создаём "makefile project" в Visual Studio. Заполняем поля так, как на рисунке ниже.

В месте, куда установился WinAVR в поддиректории sample находится Makefile, который можно использовать для сборки проекта. Копируем себе, в папку созданного makefile project, и изменяем некоторые строки:

MCU = atmega1280

F_CPU = 16000000

FORMAT = ihex

TARGET = ATMEGA-1280-DEV-BOARD

SRC = $(TARGET).C

Первая строчка обозначает тип микроконтроллера. Для Arduino mega это atmega1280;
Вторая строчка задаёт частоту, на которой будет работать наш МК;
Третья строка - формат выходного файла. Лучше оставить intel hex;
Четвёртая - имя вашего проекта;
Пятая - список исходных файлов проекта.

PROGRAMMER_FLAGS = -p m1280 -c arduino -b 57600 -P COM3 -U flash:w:$(TARGET).hex

 Эта строка будет передаваться в качестве параметров для Avrdude.
Опция -p указывает тип девайса, который будем шить;
-с указывает тип программатора. Arduino использует протокол обмена информацией позаимствованный у программатора STK500, поэтому здесь можно смело вписывать stk500. Однако, в новой версии avrdude добавили в качестве программатора Arduino, поэтому с пущей уверенностью вписываем сюда arduino;
Следующая опция указывает на какой скорости будет происходить передача данных. Здесь всегда нужно ставить 57600;
Опция -P указывает порт, к которому подключен программатор;
Последняя опция указывает какую конкретно операцию следует выполнить. Для нас это загрузка в флеш-память микроконтроллера программы.

 Изменяем секцию all примерно так:
all: build program
 Добавляем к списку задачи "program". Это позволит при удачной компиляции автоматически грузить прошивку в МК.

 В принципе, всё готово. Пробуем написать минимальную программу (моргалку светодиодом L). Смотрим в файлик arduino-mega-schematic.pdf и видим, что 13 порт Arduino есть ни что иное, как PB7. Пишем примерно следующую программу:

#include <avr/io.h>

#include <util/delay.h>

 

int main()

{

  DDRB = 0xFF;

  while(true)

  {

    PORTB /= (1 << 7);

    _delay_ms(500);

    PORTB &= ~(1 << 7);

    _delay_ms(500);

  }

  return 0; 

}

 

* This source code was highlighted with Source Code Highlighter.

 Минимальный интерфейс для работы с портами ввода-вывода:

#include "utils.h"

 

class Port

{

public:

  Port(PORT& p) : _p(p) {};

  Port& operator! ();

  Port& operator+= (uint8 b);

  Port& operator-= (uint8 b);

  Port& operator= (Port& p);

  void SetLow();

  void SetHigh();

  PORT& GetValue();

  bool ClearBit(uint8 b);

  bool SetBit(uint8 b);

  void Pulse(uint8 t);

  void PulseBit(uint8 b, uint8 t);

private:

  PORT& _p;

};

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 09.11.2011 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft 365 Business Standard (corporate)
Delphi Professional Named User
Enterprise Connectors (1 Year term)
Microsoft 365 Apps for business (corporate)
Microsoft 365 Business Basic (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
CASE-технологии
Программирование на Microsoft Access
Утиль - лучший бесплатный софт для Windows
Новости мира 3D-ускорителей
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100