Урок №2. Первая программа "Hello World" и прошивка платы

Здравствуйте друзья. В этом уроке я расскажу как написать нашу первую программу и загрузить её в микроконтроллер ATMega128 нашей платы OpenM128.

Суть нашей программы заключается в циклическом выводе значений 0 или 1 в PORTA нашего микроконтроллера. На выходе получим мигающие светодиоды подключенные к PORTA.

Если Вам не знакома среда разработки с которой мы начнём работать советую сначала прочитать "Урок №2 - Создание нового проекта AVR Studio 6".

Ну раз уж Вы уже ознакомлены и знаете как все устроено в среде разработки, то создаём новый проект GCC и назовём его "OpenM128_Step_by_Step/2.Hello_World". И не забудем указать, что пишем программу для микроконтроллера ATMega128.

 

Отлично, проект мы создали и настроили.

Теперь нам нужно указать программе на какой тактовой частоте работает наш микроконтроллер. В своих примерах я буду использовать частоту 8Mhz от внутреннего генератора. Первым делом определяем идентификатор F_CPU равный 8000000 тактов в секунду.

Данное определение подскажет встроенным библиотекам типа "delay.h" какая частота работы нашего микроконтроллера и данная библиотека начнёт правильно рассчитывать необходимую нам паузу в миллисекундах. Но об этом чуть позже.

Далее нам необходимо инициализировать PORTA микроконтроллера на Выход данных. Это достигается командой "DDRA = 0xFF;". В данном случае DDRA это регистр вывода PORTA, а 0xFF это значние равное 11111111 и говорит регистру, что все ноги PORTA будут работать как выход.

Отлично PORTA настроен на вывод данных. На всякий случай очищаем значение в PORTA приравнивая ему 0x00.

Чтобы светодиоды начали хоть как то моргать, нам необходимо начать записывать данные в PORTA, что мы и делаем следующей командой "PORTA = ~PORTA". Присваиваем PORTA его инвертированное состояние, тоесть если PORTA = 0 то PORTA присвоится 1 или наоборот.

По идее мы написали программу, и можем её загрузить в микроконтроллер и запустить плату. Но сразу хочу сказать, что результатом нашей программы будет некорректная картина, потому что все светодиоды будут гореть. На самом деле они будут очень быстро мигать так как частота тактирования нашего микроконтроллера очень большая и наш глаз просто не увидит что светодиод на самом деле моргает. Для того, чтобы наш глаз мог воспринимать реальную картину нам нужно добавить задержку или другими словами паузу в нашу программу. Как раз для этого мы и подключали библиотеку "util/delay.h" которая написана для отработки паузы в программе. В нашей программе используем функцию "_delay_ms(1000)", что будет равно паузе в 1 секунду.

И так мы написали все необходимое, чтобы порадоваться нашей первой программе для нашего первого устройства на ATMega128. Финальный листинг программы "Hello World" вы можете увидеть ниже.

Компилируем наш проект в 2 клика мыши и 1 комбинацией клавиш CTRL+F7.

Переходим к этапу прошивки нашей платы.

Для этого нам потребуется несколько вещей:

  

  1. Программатор FTBBUSBASP v2.0 или AVR ISP
  2. Программа для прошивки микроконтроллера FTBB [ 144 Кб ]
  3. Специализированные файлы для настройки платы FTBB OpenM128 Files [ 1 Кб ]
  4. Откомпилированный файл прошивки в формате Hex [ 1 Кб ]

Надеюсь все перечисленные вещи у нас под рукой и мы можем приступить к прошивке нашей платы. Распаковываем программу для прошивки в директорию "X:/FTBB_Prog", а так же в эту же директорию распаковываем специальный файлы для платы и файл прошивки. В папке должны присутствовать все файлы как на на изображении ниже.

Так программу мы подготовили. Вторым этапом нам необходимо подключить Программатор к плате. В моём случае это USBASP и я подключаю его родным шнурком к порту ISP10 на плате. После этого подключаю программатор к порту USB моего компьютера.

Первым делом мне необходимо проверить правильно ли определился программатор в системе и видим ли мы микроконтроллер на плате. Для этого я специально сделал исполняемый файл который передаёт программе программирования инструкцию для считывания сигнатуры микроконтроллера.

Запускаем файл "OpenM128_Check_Board.cmd" и при успешном считывании видим следующие сообщения программы.

Как видно на изображении микроконтроллер сообщил нашему программатору свой Device Signature. Отлично связка программатора и платы работает, можно приступать к прошивке основной программы.

Для прошивки программы в память микроконтроллера я создал файл "OpenM128_Flashing.cmd" который передаёт инструкции программе программатору на прошивку микроконтроллера файлом "OpenM128.hex" который находится в той же папке.

На изображении видно, что процесс загрузки и верификации прошивки прошёл успешно и без ошибок.

Теперь наша плата должна ожить и мигать светодиодами подключенными к PORTA нашей платы.

 

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

Если Ваша плата не проснулась или ведётся неадекватно прошу сообщить мне об этом в комментариях и я постараюсь Вам помочь.

Спасибо за внимание.

Традиционно, советы и вопросы в оставляйте в комментариях...

[ Предыдущий урок: Ознакомление с платой OpenM128 ] [ Оглавление ] [ Следующий урок: Работа с кнопками и джойстиком ]



Комментарии 0
[ Написать ]