Программка для управления роботом через UART

Всем привет.
Давным-давно, года три назад, я прочитал серию статей на хабре «Строим гусеничного Bluetooth-робота с камерой». Мне тут же захотелось сделать похожую дистанционно управляемую тележку на гусеницах, буду далее называть ее робот, так короче и моднее =) В топике речь пойдет о написанной мной программе для управления подобными роботами с клавиатуры, надеюсь она пригодится кому-то еще.


Читать дальше

Марсоход2 + Matlab/Simulink

В образовательных целях сделал себе подарок на ДР: купил платку Марсоход2. Познакомился с верилогом, даже решил одну небольшую задачку на нем. Но в универе нам расхвалили матлаб и показали как генерировать прошивку для ПЛИС прямиком по модели из Simulink. Показали теоретически, т.к. никаких отладочных плат в живую нет. Но тема больно уж интересная, поэтому было решено подружить матлаб с имеющимся марсоходом, что вроде как получилось. Под катом «как поморгать светодиодами из Matlab» со скриншотами

Читать дальше
  • +12
  • 03 ноября 2014, 12:20
  • kest
  • 1

Управление сервомашинкой из Cubieboard2

Продолжая тему разработки модулей ядра сегодня посмотрим на использование таймеров и прерываний. Это пожалуй 2 наиболее специфичные функции, которые умеет микроконтроллер и обычно недоступны при разработке классического приложения для ОС Linux(да и Windows тоже), а при работе с внешними устройствами эти функции очень нужны. В качестве примера — управление сервомашинкой и кино в жанре «прибытие поезда».

Читать дальше
  • +12
  • 08 августа 2014, 23:42
  • kest

Hello World для ядра Linux на Cubieboard2

Одноплатники упорно продолжают входить в нашу жизнь. Кто-то использует их как медиацентры, кто-то как умные роутеры, кто-то как компы.
Тематика ресурса обуславивает необходимость попытаться применить имеющийся одноплатник как очень жирный микроконтроллер, на котором можно реализовать кучу всего интересного. В сторону подобного применения движение тоже есть, тот же RaspberyPI в SO-DIMM.
Но у обычного RaspberryPI

Читать дальше
  • +15
  • 03 августа 2014, 11:17
  • kest

Подключаем 4 АЦП к Cubieboard по SPI

Как уже говорилось, модуль ядра — лучший путь для подключения специфического оборудования и использования его в собственном ПО. Продолжая тему программирования модулей ядра, сегодня решим уже реальную задачу: научимся инициализировать регистры ввода-вывода, использовать их и создадим интерфейс модуля.

Читать дальше
  • +14
  • 03 августа 2014, 11:21
  • kest

Какая частота для FreeRTOS оптимальна?

FreeRTOS и частота переключенияКогда я начал работать со FreeRTOS, я уперся в следующую магическую строчку в FreeRTOSConfig.h:
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
Это частота переключения между задачами.
Почему 1000? А почему не 10000 или 100? А если у меня STM32F4, настроенный на 168 MHz? Я могу выбрать другую, большую частоту? Ответы были какие-то туманные. Самый адекватный: «если будет слишком часто переключаться, то планировщик задач будет потреблять слишком много временного ресурса». Слишком много — это сколько? Решил разобраться. Под катом — ответ на вопрос «какая частота подходит для данной ситуации?».

UPD: существенное исправление: добавил количество потоков, изменились результаты!


Читать дальше
  • +4
  • 28 июля 2014, 16:47
  • PICC

AVRASM: Диспетчер задач RTOS 2.0 (псевдо кооперативная ОС)

AVR
Отрефакторил код «Диспетчера задач RTOS» (псевдо кооперативной ОС), оптимизировал и универсализировал, добавил новые фичи, декларировал чёткое API, и опубликовал на GitHub… Фактически, весь код был переписан сызнова, по прототипу DI HALTа.

Operating system placement


Читать дальше

AVRASM: Библиотека процедур для интеллектуальной обработки ВВОДА в МК: событий от Кнопок и Энкодеров (часть 2: порядок внедрения и использования)

AVR
Большинству микроконтроллерных устройств требуется поддерживать интерфейс с пользователем-человеком: для вывода используются светодиоды или дисплеи, а для ввода — обычно, традиционные Кнопки и Энкодеры.
Данная реализация «Библиотеки процедур для интеллектуальной обработки ВВОДА» написана на языке ассемблера, для компилятора AVRASM. Соответственно, она предназначена для разработки программных прошивок (firmware) на языке ассемблер, для микроконтроллеров Atmel AVR (8-bit).



Читать дальше

AVRASM: Библиотека процедур для интеллектуальной обработки ВВОДА в МК: событий от Кнопок и Энкодеров (часть 1: авторская методика и реализация)

AVR
Микроконтроллерное устройство может работать исключительно в автономном режиме: получать сигналы с датчиков, и выдавать управляющие импульсы, иногда оно ещё взаимодействует с ЭВМ или другими микроконтроллерами… Но большинству микроконтроллерных устройств требуется поддерживать интерфейс с пользователем-человеком: для вывода используются светодиоды или дисплеи, а для ввода — традиционные Кнопки и Энкодеры, редко используются и другие экзотические устройства ввода
В данной работе будут рассматриваться только традиционные инструменты ввода: «цифровые Кнопки / Клавиатуры» и «инкрементальные Энкодеры», поскольку именно они используются почти всегда.

Содержание:


Читать дальше

AVRASM: Библиотека базовых Макроопределений "MACROBASELIB.INC"

AVR
Библиотека «базовых Макроопределений», расширяющая стандартный набор ассемблерных инструкций микроконтроллеров Atmel AVR (8-bit AVR Instruction Set), и рекомендующая парадигму программирования: с хранением «модели прикладных данных» в ОЗУ и использованием нескольких «временных регистров»…


Читать дальше