Съезжает софтовый ШИМ на железе для шестинога(Мега32, 8МГц)

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Съезжает софтовый ШИМ на железе для шестинога(Мега32, 8МГц)

Сообщение mikkey finn » 02 июн 2013, 14:22

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

Помогите, пожалуйста, запустить... А то стоит игрушка, а я не пойму, что ей мешает бегать.
Вложения
AVRShell.zip
проект в AVRStudio5 с HEX
(72.85 КиБ) Скачиваний: 0
mikkey finn
 
Сообщения: 104
Зарегистрирован: 09 авг 2011, 17:15
Откуда: Волжский

Вернуться в Микроконтроллеры

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

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

cron