Позволяет ли mega 2560 одновременное независимое управление 8-ю 8-битными шимами с частотой не менее 1кГц? Если нет, то почему и с какой частотой это возможно? Может ли процессор жить своей жизнью, слушая какие-то еще датчики, считая что-то, управляя чем-то еще, и попутно время от времени (допустим раз в 0,1сек) изменять скважность шима в восьми каналах, работающих с частотой 1кГц или выше? Спрашиваю, потому, что спец, которого я об этом спрашивал, сомневается.
Да, это возможно. Микроконтроллер работает на частоте 16 МГц, следовательно счётчик PWM пробегает 256 значений (8 бит то есть) с частотой 16 000 000 / 256 = 62500 Гц. В случае fast PWM, когда счётчик сбрасывается когда доходит до потолка, 62,5 КГц — максимум, который вы можете получить. В случае phase-correct PWM, когда при достижении потолка счётчик начинает считать обратно до нуля, максимум — это 62,5 / 2 = 31,25 КГц. Некоторые пины на Arduino управляются таймерами на fast PWM, некоторые phase-correct PWM. Вы можете понизить частоту, настроив 3 младших бита регистра TCRxB на ATmega, где X — номер таймера. На официальной вики есть примеры. Имейте в виду, что функции delay, millis, microseconds, библиотека Servo и некоторые другие предполагают, что их таймеры трогать не будут. Поэтому если вы понизите частоту они будут работать некорректно. А по поводу параллельности и вызова чего-либо каждые 0,1 сек — это возможно. Вам нужно воспользоваться аппаратными прерываниями по таймеру.
Открыт тендер на реализацию 8-канального ШИМ-а за деньги. Может быть здесь есть кто-то, кто может мне помочь. 2012.04.24 ТЗ на 8-битное ШИМ-управление http://goo.gl/xXJFG Надеюсь, это не противоречит правилам форума
Ну раз 16 мегагерцовый МК не способен выдать 8 каналов шим с частотой 1кГц, остается только одно: аппаратный ШИМ на 8ми 556 таймерах, скважность будет управляться 8мью цифровыми потенциометрами. Вместо потенциометров можно использовать переменные резисторы, управляемые сервоприводами.
Дык как же невозможно, если возможно?! На ATmega2560 4 аппаратных таймера. На каждом таймере по 3 компаратора. Итого 4×3 = 12 аппаратных ШИМ-каналов с максимальной частотой 31,25 КГц при phase-correct PWM.
По даташиту меги вроде как получается, что у каждой пары-тройки каналов частоты будут совпадать, но может отличаться скважность, а при одинаковой скважности гарантированно будет совпадать еще и фаза. Т.е. управление 8 ШИМ каналами не полностью независимое. Так получается?
Всё верно. То есть совсем-совсем независимое возможно для 4-х каналов. Но действительно ли существуют прикладные сценарии, когда это важно?! Автор пояснит?
8 килогерцовых 8-битных фазонезависимых шимов на 16мегагерцовом risc-контроллере можно сделать без аппаратной поддержки вообще. Если "в лоб", то "в притык", конечно. Но можно. Соответственно, чем больше операций будет переложено на аппаратуру, тем больше будет свободных тактов. Или можно уменьшить точность ШИМ, не всегда 8бит приниципиально отличается от 7-ти или 6-ти.
Есть 8 ШИМ-управляемых микросхем, которыми нужно управлять. Частота ШИМ - не менее 1кГц. Желаемая точность 1% - удовлетворительно, 0,5% - хорошо. 8 бит - это точность 1/256 или 0,4%, то есть хорошо. Да, управление должно быть независимым.