roboforum.ru

Технический форум по робототехнике.
Текущее время: 18 фев 2025, 18:21

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Съезжает софтовый ШИМ на железе для шестинога(Мега32, 8МГц)
СообщениеДобавлено: 02 июн 2013, 14:22 
Не в сети

Зарегистрирован: 09 авг 2011, 17:15
Сообщения: 104
Откуда: Волжский
Делаю софт для управления шестиногом. Столкнулся с проблемой. Мега32, встроенный резонатор на 8МГц. Отлаживал в Proteus, все работает как надо. Заливаю в железо - получаю фигню.
Софт основан на командной оболочке от _YS_. Сам код софтового ШИМ на сервы взял у DiHalt, переделал под 18 серв. По команде инициализации серв выставляет их в среднее положение, все ок. Если после этого дать команду на поворот одной любой сервы - остальные упираются в крайнее положение. Такое впечатление, что контроллер не успевает задать остальным сервам положение. В протеусе при этом на эмуляции поворачивается только заданная серва. Остальные стоят как и должны.
Главный вопрос - а чего это оно?
Действо происходит в cmd_func.c
Функции:
Servo_add - установка сервы N в положение Pos.
Дальше массив длительностей ШИМ сортируется и выставляется флаг обновления для прерывания.
Прерывание на Timer1_COMPA должно выводить ШИМ на заданные порты. В нем отслеживается состояние конечного автомата. Изначально все порты сбрасываются в исходное состояние(лог 1 на выходе). Дальше для каждого порта по маске задержек выключается соотв бит. Когда автомат переберет все различающиеся по задержке положения - он выставляет задержку 20мс и уходит в новый цикл.
Так вот. Если все сервы стоят в одном положении(стартовом) - ничего в железе не дергается. Руками отворачиваем серву - она сопротивляется и возвращается в то же положение. Если любую серву повернуть(становится два состояния серв - все в центре кроме одной) - сервы сходят с ума и поворачиваются в крайнее положение. В протеусе есть дребезг только в том случае, когда одна серва повернута чуть-чуть(186 у всех, 185-184 у одной, например).
Комменты в процедуре обработки прерывания могут не отражать действительность, т.к. считал задержки от частоты чипа и не правил комменты.

Помогите, пожалуйста, запустить... А то стоит игрушка, а я не пойму, что ей мешает бегать.


Вложения:
Комментарий к файлу: проект в AVRStudio5 с HEX
AVRShell.zip [72.85 КиБ]
Скачиваний: 0
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO