Сейчас существует несколько языков высокого уровня на которых можно писать программы для микроконтроллеров AVR. У каждого из них есть свои преимущества и недостатки. О них уже много раз писалось в интернете и вряд ли я смогу рассказать о них что-то новое. Но об одном из этих языков информации практически нет. Для того что-бы устранить этот пробел, я начинаю писать свой учебный курс о языке микропаскаль.

Что мне понравилось в микропаскале:

— Удобный редактор кода
— Огромное количество библиотек на все случаи жизни
— Отличная справка
— Синтаксис языка не взрывает мозг
— Большое количество демонстрационных примеров
— Можно делать ассемблерные вставки в код
— Компилятор генерирует ассемблерный листинг
— Поддерживает все популярные контроллеры AVR
— Безглючность
— Вместе с паскалем устанавливаются разные утилитки вроде рисовалки пользовательских символов для LCD, терминальной программой итд..

Что мне не понравилось в микропаскале

— Нельзя шить прямо из среды разработки атмеловскими программаторами
— Платность
— Некоторые библиотеки занимают много флеша и медленно работают

Что будет в учебном курсе?

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

На кого рассчитан курс?

Курс рассчитан на тех, кто уже имеет хоть небольшое представление о микроконтроллерах. В учебном курсе я не буду объяснять что такое РОН, АЦП, порт итд (но на любые вопросы отвечу в комментариях).

Что будет в нулевой части курса ?

Ничего особо интересного. Краткое знакомство с основными фичами среды разработки. Если есть желание самостоятельно разобраться с изобилием многочисленных окошечек, то дальше можно не читать (но хотя бы посмотреть картинки стоит :-) )

Начало. Краткое знакомство со средой разработки

Компиляторов паскаля для avr не так уж и много. А точнее я мог обнаружить только один. Разработала его компания Mikroelektronika. Эта же компания выпускает отладочные платы, поэтому чуть ли не все демонстрационные примеры заточены под них. Но это вовсе не страшно, так как ничего особенного на их отладочных платах нет. Ничего кроме программатора. Он там какой то специфический и не поддерживается ни каким нормальным софтом вроде AVR Studio. Обидно что напрямую из среды разработки микропаскаля нельзя прошивать ни каким другим программатором. Приходится отдельно запускать прошивающую программу, а это не очень то удобно. Пожалуй это единственный недостаток у среды разработки. Сама среда разработки состоит из великого множества окошечек и кнопочек. Объяснять назначени кнопок вроде «Сохранить», «Открыть» итд я считаю бессмысленным, а вот о некоторых окнах, с которыми придётся часто работать во время разработки,  я сейчас расскажу:

Code Editor

Это то место где непосредственно пишут программу. У редактора кода есть ряд фишек которые меня весьма порадовали:

  • Можно в два клика закомментировать или раскомментировать кусок кода. В комментарии к коду можно вставлять картинки
  • Неизвестные слова подчеркиваются. Это значит что если написать имя несуществующей переменной, порта, функции или еще чего, то редактор кода тут же ткнёт носом в ошибку
  • Есть подсветка синтаксиса
  • Показывает какие параметры можно передать в функцию и их тип. (показывает в виде подсказки когда после имени функции ставим открывающую скобку)

Code Explorer

Ничего особо интересного из себя не представляет. Показывает какие глобальные переменные есть в нашей программе, какие функции, пользовательские типы данных итд. Урезанным вариантом Code Explorer является Routine List. Зачем он нужен я так и не понял.

Project Manager

В виде дерева отображает файлы входящие в состав проекта. Незаменивая вещь когда в проект входят десяток файлов с кодом и надо между ними быстро переключаться.

Project Settings

В этом окне следует указать микроконтроллер для которого разрабатывается программа. Кроме названия МК нужно ввести частоту на которой он работает. Если ее указать не правильно то все задержки будут формироваться не правильно.

Library Manager

Менеджер библиотек. Галками отмечаем те библиотеки которые нужны для проекта. Если отметить все библиотеки а использовать только одну, то на размер hex файла это разумеется ни как не повлияет т.к. туда войдут только те библиотеки которые были задействованы в программе. Поэтому отключать библиотеки имеет смысл только тогда когда мы хотим для своих нужд использовать имена функций которые определены в библиотеках. Например нельзя создать свою функцию с именем ADC_init() пока в менеджере библиотек стоит галка напротив пункта ADC

Statistics

Потрясающее окно статистики. Рассмотрим его подробнее. На первой вкладке «RAM memory usage» можно узреть сколько патмяти занято под переменные. Сразу возникает вопрос, а почему две круговых диаграммы? Все просто. Верхняя диаграмма это задействованная оперативная память, а нижняя — используемые регистры общего назначения.
«Variables» отображает список всех переменных и количество занимаемой памяти в байтах.
«SFR location» — адреса регистров ввода вывода.
«ROM memory usage» — объем занятой флеш памяти
«ROM memory constants» — показывает имена и адреса констант расположеных во флеш памяти контроллера
«Functions» — адреса и размеры функций в текущем проекте
«Functions sorted by Name chart» — показывает в виде диаграммы размер функций. Сортировка по имени функции
«Functions sorted by Size chart» — показывает в виде диаграммы размер функций. Сортировка по возрастанию размера
«Functions sorted by Size address» — показывает как во флеше размещены функции
«Functions tree» — дерево функций показывающе какая функция из какой функции вызывается.
«Summary» — отображает суммарную информацию по использованию памяти

Messages Window

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

Это пожалуй все основные окна которые пригодятся при работе с данным компилятором. Разумеется есть еще куча других, но на начальном этапе изучения будет достаточно и этого.

P.S. ну и сильно не пинайте конечно :-)
Учебных курсов не писал ни когда, но думаю у меня всё получится с вашими подсказками и комментариями которые кстати всегда приветствуются