Страница 1 из 1

Выдача импульсов на порты AtMega128

Добавлено: Чт апр 24, 2008 21:31:37
Radio_Master
Доброго времени суток. Посоветуйте способы одновременной выдачи разных импульсов на ноги мк(у них должена менятся длина импульса). Т.е. как програмно можно реализовать сразу24 разных шима,с возможностью изменять параметры каждого по отдельности. Это мне нужно для управления рулевыми машинками(они же servo машинки). Мк: atMega128.
Зараннее огромное спасибо.

Добавлено: Пт апр 25, 2008 05:04:27
Artem333
Программно я запускал таймер, в котором находились счётчики каналов, данные которых использовались основной прогой для вывода импульсов. Вот, к примеру, http://www.radiokot.ru/konkurs/02/
тут 48 каналов

Добавлено: Пт апр 25, 2008 07:52:26
ARV
одновременно больше 8 выводов (принадлежащих общему порту) невозможно изменять, хоть вывернись наизнанку

Добавлено: Пт апр 25, 2008 07:59:36
Artem333
Не думаю, что речь идёт о мегагерцах. А так меняй по очереди все имеющиеся порты, ещё можно и мультиплексировать.

Добавлено: Пт апр 25, 2008 10:55:50
Radio_Master
Artem333 писал(а):Не думаю, что речь идёт о мегагерцах. А так меняй по очереди все имеющиеся порты, ещё можно и мультиплексировать.
А мультиплексировать это как?
Суть управления servo машинкой заключается в том, что при изменении длины сигнала(частота остается преждней) меняется угол поворота якоря. А мне нужно таким образом управлять 24-мя servo машинками,причем они должны управлятся по отдельности(двигаться одновременно но на разные углы). А за пример спасибо,но я программирую на си,асм не знаю((

Добавлено: Пт апр 25, 2008 12:51:29
Artem333
вообще у 128 меги и без этого портов достаточно. Делай программный ШИМ на свободные порты. А при мультиплексировании на на каждый канал отводится только 1/n часть времени (n- число каналов), поэтому импульсы будут всегда, только разной длительности.

Добавлено: Пт апр 25, 2008 13:43:28
tych
Radio_Master писал(а):мне нужно таким образом управлять 24-мя servo машинками
Вот на 32 сервы с исходниками и с графической оболочкой для программирования последовательности движения.
http://www.roboforum.ru/viewtopic.php?f=2&t=3987

Добавлено: Пт апр 25, 2008 15:01:31
Radio_Master
Artem333 писал(а):вообще у 128 меги и без этого портов достаточно. Делай программный ШИМ на свободные порты. А при мультиплексировании на на каждый канал отводится только 1/n часть времени (n- число каналов), поэтому импульсы будут всегда, только разной длительности.
А подскажи,пожалуйсто,как можно реализовать много ШИМов програмно на си. Программы при этом будет полностью занята?

Добавлено: Пт апр 25, 2008 15:07:29
tych
Radio_Master писал(а):как можно реализовать много ШИМов програмно на си.
Паузами и их комбинированием.
Radio_Master писал(а): Программы при этом будет полностью занята?


Процессор будет постоянно занят.

Нужно делать програмно-аппаратно - на таймерах и прерываних. Пример с исходниками на Си в посте выше.

Добавлено: Пт апр 25, 2008 17:20:09
Radio_Master
Всем огромное спасибо.
Я сделал вывод:
Напешу библиотеку для управления серво машинками(для codeVisionAvr).А в ней сделаю програмные шимы для каждой машинки.
Если будут вопросы обращусь.

Добавлено: Пт апр 25, 2008 18:02:56
tych
ARV писал(а):одновременно больше 8 выводов (принадлежащих общему порту) невозможно изменять, хоть вывернись наизнанку
Ну 2-4 такта при 16 МГц наверно можно ЧЕЛОВЕКУ считать мгновенно.

И не только человеку - для модельных СЕРВО - это ПРАКТИЧЕСКИ мгновенно !

Добавлено: Пт май 09, 2008 03:26:16
katmai
а не тыкнет ли кто-нить меня носом в код управления просто одной сервой для меги 16?
мне нужно чтобы она брала данные из регистра АЦП и преобразовывала в положение стандартной сервы