Как стать автором
Обновить

Lazarus-AVR, №1. Программирование микроконтроллеров AVR в IDE Lazarus

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров8.2K

Микроконтроллеры: AVR (ATmega328p); Среда программирования IDE Lazarus (кросс-платформенный 32x) (ОС: Windows 64x).

Вот появилось желание написать небольшой проектик для себя с применением микроконтроллера. В CodeVisionAVR команды не подсвечиваются по Ctrl+Пробел, да и Си что-то начал забывать, вспоминать - лень... Конечно, вспомнить Си - это 10-30 минут, но лень... Поэтому, было решено начать проект в родной IDE Lazarus, она же кросс-компилируемая! Правда, понять, как включить avr в Lazarus, чтоб компилировался hex-файл ушло 3 дня :), поэтому пишу здесь, чтоб другие не мучались, а сразу пользовались.


Использование кросс-компиляции было основано на этой статье, в дальнейшем выкинуто всё лишнее (с моей точки зрения). Показываю как это заработало у меня.

Итак, для программирования микроконтроллеров (avr, arm и др.) на Lazarus необходимо скачать дополнительные ppu-файлы и другие вспомогательные модули. Это можно сделать несколькими способами:

Настройка целевой платформы в IDE Lazarus

1. Для настройки целевой платформы, для которого будет генериться hex-файл, необходимо указать ОС на которой будет выполняться код - embedded; семейство процессоров - avr и целевой процессор (субархитектура) - avr5, совместимы с теми, которые используются GCC (например, ATmega328p относится к avr5):

Hidden text

2. А так же выбрать конкретный процессор для программирования в "Параметры пользователя":

Hidden text

3. Для компиляции проекта нужно указать путь к компилятору. Открываем Параметры проекта --> Команды компилятора--> Команда --> C:\fpcupdeluxe\fpc\bin\i386-win32\ppcrossavr.exe:

Hidden text

4. Для того, чтобы Lazarus мог найти компилятор и дополнительные файлы необходимо один раз указать пути. Это можно сделать поправив в блокноте файл Lazarus "c:\lazarus\fpc\3.2.2\bin\i386-win32\fpc.cfg" (в конце файла):

Hidden text

Примерный перечень путей:

#IFDEF EMBEDDED
#IFDEF CPUAVR
-FDC:\fpcupdeluxe\cross\bin\avr-embedded
-XPavr-embedded-
-FlC:\fpcupdeluxe\cross\lib\avr-embedded$fpcsubarch\

-Fuc:\fpcupdeluxe\fpc\bin\i386-win32
-FuC:\fpcupdeluxe\fpc\units\avr-embedded$fpcsubarch
-FuC:\fpcupdeluxe\fpc\units\avr-embedded$fpcsubarch*
-FuC:\fpcupdeluxe\fpc\units\avr-embedded$fpcsubarch\rtl
-FuC:\fpcupdeluxe\fpcsrc\rtl\units\avr-embedded

-Fic:\fpcupdeluxe\fpcsrc\rtl\inc
#ENDIF CPUAVR
#ENDIF EMBEDDED

  1. Включить исходники в настройках "Каталог исходного кода FPC" из fpcupdeluxe:

Hidden text


Тестирование

program Timers;
{$mode objfpc}{$H-}{Z1}
{$goto on}

uses
  uInterrupts, delay;

//=== Entry point =============================================================  

begin
 DDRC := $FF; 		// настраиваем все линии порта C на вывод
 //PORTC := $00;		// выводим лог. 0 на все линии порта C

  //=== Main loop =========================================
  while True do
  begin
        PORTC := $FF;		// выводим лог. 1 на все линии порта C
        delay_ms(1000);	    // задержка 1000 мс = 1 с
        PORTC := $00;	    // выводим лог. 0 на все линии порта C
        delay_ms(1000);	        // задержка 1000 мс = 1 с
  end;//Main loop
end. 

Процедуру задержки можно взять с ресурса: https://github.com/ccrause/fpc-avr

Компиляция Ctrl+F9 заняла 0,1 сек в результате чего появились 3 файла: hex, bin и elf. Загружаем hex-файл в модель и видим, что прошивка работает:

(не равномерность мигания из-за подтормаживания компа)
(не равномерность мигания из-за подтормаживания компа)

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

Теги:
Хабы:
Всего голосов 35: ↑35 и ↓0+35
Комментарии23

Публикации

Истории

Работа

Ближайшие события

Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург