Статьи

Мигающий светодиод


 

"Hello World!" в железе - это мигающий светодиод. Запускай свой Atmel Studio / Eclipse и действуй: создай проект С, назови его, выбери директорию. Выбери свой микроконтроллер.


 Мы будем использовать Arduino UNO R3. У нее стоит Atmega328P, выбираем его. Жми ОК, вот что должно было получиться:



Разберемся немного в синтаксисе.
Зеленым шрифтом обозначен комментарий, он не компилируется и пишется для себя или для удобства сторонних разработчиков, которым придется иметь дело с твоим кодом. Все что заключено в конструкцию /* является комментарием */.
//еще однострочный комментарий
//можно оставить с помощью
//двойного символа "/"
Функция #include подключает к нашей программе сторонний файл: код или библиотеку. Конкретно в данном случае подключена библиотека для управления портами ввода/вывода (input/output).
int main(void) {} - это блок основной программы, внутри происходит то, что будет делать сам микроконтроллер, вся остальная мишура - настройка, инициализация и прочее, за одним исключением, но это чуть позже.
while(1) {} - бесконечный цикл, в нем пишется код, который должен выполнятся постоянно, снова и снова.

Предлагаю, для твоей мотивации, сначала сделаем мигающий светодиод без пояснений, а потом я все расскажу. Напиши следующий код:

Я писал ручками, и ты не поленишься. Теперь это дело надо скомпилировать в меню сверху: 

Все должно было получиться! Теперь у нас есть скомпилированный .hex файл, и его надо залить в Arduino. Подключаем Arduino к компьютеру, устанавливаем на нее драйверы, если не сделали этого ранее. Если все-таки не сделали, то делаем так: качаем среду разработки Arduino IDE, распаковываем ее, заходим в диспетчер устройств, там у тебя будет желтым знаком вопроса показываться неизвестное устройство, жми правой кнопкой - Обновить драйверы - вручную -  указывай адрес, куда распаковал Arduino IDE: Arduino-ver-os/Arduino-ver/drivers и будет все хорошо.

 

Запускай Arduino Uploader, указывай путь, где лежит твой hex-файл. Не знаешь где? Он лежит в директории, куда ты сохранял проект (а я просил запомнить), и там в корне проекта есть папка "debug", в ней.

Теперь выбери COM-порт, к которому подключена Arduino (можешь посмотреть в диспетчере устройств, хотя нынче к компьютеру больше одного виртуального COM не подключают) и тип микроконтроллера. Там выбор не густой. 

 

Если ты в торопях нажмешь кнопку Upload, то скорее всего будешь разочарован. По-умолчанию скорость прошивки стоит 19200 baud, а надо поставить 115200 (в нижней текстовой рамке), вот так:

Все должно работать. С одной стороны ты и сам должен попробовать поиграться с задержками, включать другие ножки, поуправлять другими портами. Вот тебе небольшая шпаргалка о том, как писать программы. Самое главное здесь, пожалуй, в структуре программы, последовательности ее написания.

 

 

Ты уже понял, что для настройки порта на вход или выход используется DDRX, а чтобы выдать что-то с порта используется PORTX, так вот, когда порт стоит на вход, чтобы узнать подали ли на ножку "плюс" или "минус" используется PINX и знак сравнения "==". Замечу: "=" - это присваивание, как "int i=a;", а "==" это - сравнение: "if (PINB==0x00) {}".

Подтяжки на резисторы. На всех Arduino подтяжка портов сделана на "плюс", в связи с чем в программе для Arduino всегда указывай:
PORTX=0xFF;
DDRX=0x00;
К слову, лучше на вход или на выход назначать весь порт, а не по одной ножке, но зависит от ситуации. И важный нюанс: PINX.N (где N номер ножки) равен "0", когда некая "кнопка" нажата, и "1", когда нет. При этом некую "кнопку" другим концом нужно припаивать к "минусу".

И касательно того почему PORB.5: он подключен к "digital pin 13", а он в свою очередь к светодиоду, находящемуся на плате Arduino Uno R3.

Вот мы и сделали мигающий светодиод!


Нет комментариев

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