Мне всегда было интересно и даже немного завидно, почему системные программисты и те, кто разрабатывает настольные приложения обладают удобными средами, встроенным отладчиком, могут анализировать написанный код на предмет утечек памяти, производительности кода и так далее и почему этого всего почти нет для 8 и 16-битных микроконтроллеров? А ведь эти рабочие лошадки для большинства проектов выгодны по цене и целесообразны по производительности и функционалу. Проект среды разработки Eclipse призван стереть границы применимости среды и позиционирует некий универсал, не хватающие возможности которого можно дополнить плагинами и запуском внешних приложений. О том, как сделать эту среду отладчиком, средством прошивки микроконтроллеров, симулятором контроллера и средством контроля версий мы и расскажем в этой статье. Все это будет сделано по отношению к МК AVR, как самому любимому и популярному МК в рунете в связке с компилятором GCC. Читать полностью »
Автор: Чебаков Денис Игоревич, лицей № 1571, 11 класс, РК-10 абитуриент. В прошлой статье Мы рассказали об очень интересном датчике, принцип работы которого унаследован у всемирно известного прибора - терменвокса. Было решено предоставить возможность любому желающему прототипировать эту штуку и проверить принцип действия. Спустя некоторое время, при небольшом моем участии как консультанта будущий бауманец, а ныне абитуриент, Денис Чебаков, выполнил прототип устройства. Теперь мы можем наглядно посмотреть рабочий вариант конструкции прибора. Существует несколько систем оценки дистанции: различные дальномеры, ультразвуковые датчики, системы машинного зрения. Их недостатками являются высокие требования к вычислительной мощности управляющего устройства (СТЗ), трудность монтирования на роботе заданной конструкции, сложность эксплуатации, необходимость использования на объекте отражателей, дороговизна и т.п. В случае, когда требуется простое, легкое и дешевое устройство, можно использовать систему определения дистанции, основанную на методе пассивной радиочастотной идентификации. Система содержит один опорный генератор электрических колебаний и несколько сенсоров. Сенсор состоит из антенны и генератора. Можно использовать штыревую антенну или лист фольгированного текстолита в качестве антенны. У опорного генератора частота жестко зафиксирована. У сенсорного генератора частота может изменяться, т.к. одна из пластин времязадающего конденсатора подключена к антенне. Емкость изменяется за счет приближения объекта (антенна и объект образуют воздушный конденсатор). Сигналы с опорного и сенсорного генераторов подаются в детектор, который выделяет разностную частоту. По степени изменения разностной частоты можно судить о наличии постороннего предмета вблизи антенны. Читать полностью »
Часто возникает необходимость сбора данных с инкрементальных энкодеров. Энкодер можно рассматривать как датчик, который позволяет измерить пройденный путь, скорость, ускорение. Последнее и предпоследнее более предпочтительно, так как позволяет получить вам векторную величину, имея вектор скорости двух точек робота в каждый момент времени можно построить траекторию робота с очень хорошей точностью. Мы называем этот уровень "Внешняя одометрия". Он представляет из себя 2 энкодера, платы измерения скорости и двухпоточное приложение, выполняющее роль интегратора, на выходе которого мы получаем плоские координаты.
На просторах рунета я не раз сталкивался с проблемами пользователей при создании дешевой системы, определяющей скорость и направление вращения. О том, что необходимо для этого сделать - в этой статье. Читать полностью »
CMake очень мощная система сборки. Она давно известна разработчикам настольных приложений. Её используют такие проекты как OpenCV, KDE. В этой статье рассмотрим, как при помощи CMake собирать проекты под микроконтроллеры AVR. Я пробовал собирать проекты для AVR из под AVRStudio и Eclipse. AVRStudio мне не понравилась как среда разработки. А у Eclipse мне не понравился файл проекта. Я в нём так и не смог сделать некоторые вещи, которые в CMake делаются одной строчкой. Читать полностью »
Автор: Андрей Курниц (kurnits@stim.by). Журнал КиТ
Эта статья продолжает знакомить читателя с созданием программ, ра¬ботающих под управлением FreeRTOS — операционной системы для микроконтроллеров. на этот раз внимание будет уделено этапу отладки приложения: мы рассмотрим возможности FreeRTOS, которые помогают найти трудно выявляемые ошибки в программе, определить узкие места программы и оценить пути ее дальнейшего расширения.
Возможности трассировки
Трассировка позволяет исследовать деятельность ядра FreeRTOS и проследить последовательность и время, когда задачи сменяют друг друга, а также отследить другие события ядра.
Последняя версия FreeRTOS (на момент написания статьи — V7.0.1) поддерживает два способа трассировки выполняющейся программы:
Механизм трассировки с записью в буфер (Legacy Trace Utility).
С использованием макросов трассировки (Trace Hook Macros).
Это очередная статья из цикла, посвященного FreeRTOS — операционной системе для микроконтроллеров. Здесь читатель познакомится с нововведением последних версий FreeRTOS — встроенной реализацией программных таймеров
Что представляет собой программный таймер?
В версии FreeRTOS V7.0.0 по сравнению с предыдущими версиями появилось существенное нововведение — встроенная реализация программных таймеров. Программный таймер (далее по тексту — таймер) во FreeRTOS — это инструмент, позволяющий организовать выполнение подпрограммы в точно заданные моменты времени. Читать полностью »
Автор: Андрей Курниц (kurnits@stim.by). Журнал КиТ
Автор этой статьи продолжает знакомить читателя с созданием программ, работающих под управлением FreeRTOS — операционной системы для микроконтроллеров. На этот раз речь пойдет об альтернативном способе реализации многозадачной среды, когда в программе вместо задач используются сопрограммы. Мы оценим достоинства и недостатки использования сопрограмм.
Что представляет собой сопрограмма?
В предыдущих публикациях мы говорили о FreeRTOS как о многозадачной операционной системе, и в центре нашего внимания находилась задача (task) — базовая единица программы, работающей под управлением FreeRTOS. Речь шла о том, что программа, работающая под управлением FreeRTOS, разбивается на совокупность задач. Задача представляет собой отдельный поток команд процессора и реализуется в виде функции языка Си. Каждая задача отвечает за небольшую часть функциональности всей программы. Каждая задача выполняется независимо от остальных, но взаимодействует с остальными задачами через механизмы межзадачного взаимодействия. Читать полностью »
Введение Автор: Андрей Курниц (kurnits@stim.by). Журнал КиТ
Статья поможет читателям ответить на следующие вопросы:
1) Что означает термин «ресурс»?
2) Когда и почему необходимо управление доступом к ресурсам?
3) Что такое механизм взаимного исключения и способы его реализации?
4) Что такое критическая секция и способы ее реализации во FreeRTOS?
5) Как применять мьютексы для реализации механизма взаимного исключения?
6) Что такое инверсия приоритетов и как наследование приоритетов позволяет уменьшить (но не устранить) ее воздействие?
7) Другие потенциальные проблемы, возникающие при использовании мьютексов.
8 ) Задачи-сторожа— создание и использование.
9) Функция, вызываемая каждый системный квант времени. Читать полностью »
Автор: Андрей Курниц (kurnits@stim.by). Журнал КиТ
Шестая часть статьи посвящена взаимодействию прерываний с остальной частью программы и поможет читателям ответить на следующие вопросы:
1) Какие API-функции и макросы можно использовать внутри обработчиков прерываний?
2) Как реализовать отложенную обработку прерываний?
3) Как создавать и использовать двоичные и счетные семафоры?
4) Как использовать очереди для передачи информации в обработчик прерывания и из него?
5) Каковы особенности обработки вложенных прерываний во FreeRTOS? Читать полностью »