Тестирование и отладка кода для МК

Прочитал на лоре недавно как человек тестирует свое устройство на AVR даже не имея самого устройства. Использует simulavr для моделирования самого МК и собственную модель внешней периферии (двигатели, светодиоды, датчики, последовательные интерфейсы и т.п.). Собирается делать автоматические тесты. После этого захотелось улучшить свои методы тестирования и отладки.

У меня все несколько хуже. Тестируется только управляющий код, он включается в состав модели внешних устройств (у меня только двигатели), собирается под x86. Получаю программу которая из входных сигналов и каких-то заданных констант выдает много телеметрии, которую можно смотреть на графиках или пытаться делать автоматический анализ. Но остается много кода который не покрыт тестами, например все обработчики команд CLI. Их приходится отлаживать на живом МК.



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

Синдром идеального решения

Можно было начать сразу делать квадролет, но мне показалось, что контроллеры двигателей настолько важны, что нужно обязательно сделать свои. Первая версия контроллера была на AVR и с самого начала не предполагалась стать конечным вариантом. По хорошему она так и не заработала, а позже было найдено множество недостатков и решено делать новую. Однако к моменту монтажа деталек на новую плату, созрели ещё более новые решения, и развитие программы для второй платы остановилось на тестировании периферии.



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

Отчет о измерении тока

Делюсь некоторыми промежуточными результатами по созданию замены платы управления сервами. Напомню, речь идет не о формирователе ШИМ сигналов для серв, а о замене внутренностей сервы. То есть прямое управление двигателем, чтение положения с резистора, измерение тока. Вот о последнем и напишу.

Это не обзор всех методов измерения тока, а лишь короткое описание конкретного устройства.


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

Генерация синуса

Мне показалось не все знают такие простые способы. Можно генерировать последовательные значения sin(t) без таблиц и каких либо тяжелых вычислений. Суть именно в том, что генерируется последовательность на регулярной сетке по времени, для примера sin(0.1), sin(0.2), и тд. Для этого случая есть простой способ.


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

Адаптивное управление сервомашинкой. Часть 3.

Остались ещё некторые особенности реализации, сама реализация и то, что ещё надо будет сделать. Это последний пост про сервомашинки.


Читать дальше
  • +5
  • 29 августа 2012, 15:06
  • amaora
  • 1

Адаптивное управление сервомашинкой. Часть 2.

Началось все со следующей модели сервы.



Здесь, i — ток двигателя, v — скорость, x — положение, T — период дискретизации, U, R, L — напряжение источника, активное сопротивление двигателя и его индуктивность, К и E — коэффициенты BEMF двигателя, они связаны. Это простая линейная модель.


Читать дальше
  • +2
  • 28 августа 2012, 17:10
  • amaora
  • 1

Адаптивное управление сервомашинкой. Часть 1.

Немного отвлекся от работы над контроллером BLDC чтобы изучить ТУ на более простом примере. Можно считать это продолжением постов про синтез регуляторов. Но на это раз все будет проще.

В этой части расскажу кратко обо всем. Какие возникают проблемы и как их можно решать. Я не обладаю отличным пониманием всей ТУ и могу ошибаться в некоторых местах. Так же полезно смотреть на задачи с разных сторон, если кто хорошо знаком с ЦОС и вам будет, что сказать после прочтения, то жду комментов.



Читать дальше
  • +1
  • 27 августа 2012, 18:46
  • amaora

Весы из одной сервы

Наконец-то осилив умножению двух fixed-point чисел удалось проверить, можно ли с помощью сервы измерять вес. На численной модели я это сделал давно, а теперь я убедился на реальной серве, что это возможно.



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

Замена rc-серво-протокола


Пока всего лишь некоторые мысли о том каким должен быть протокол и интерфейс к сервам и другим контроллерам двигателей. Пишу чтобы послушать критику, предложения по улучшению.



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

Как же постить формулы

Никак не могу побороть этот блогодвиг. Подходящего места куда написать о проблеме тоже не видно.


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