-= Александр =- писал(а):У мя есть наброски многозадачности, правда операционкой это назвать язык не повернется, но 3 двигателя она обрабатывает независимо. Пишется под мой станок.
Под движки могу предложить схему многоканального програмного ШИМа.
Нужен один таймер и массив значений, характеризующих мощность для каждого двигателя. Получается так:
Заводим счетчик переполнений таймера (этот счетчик тоже будет переполняться).
При каждом переполнении таймера делаем примерно следующее:
Если значение счетчика переполнений больше значения мощности того или иного двигателя - отключаем двигатель, если меньше - включаем.
У меня по такой схеме паралельно работает два двигателя. При этом контроллер в фоне может заниматься вообще совершенно другими делами.
Достоинство - теоретически количество двигателей, которые работают параллельно зависит только от быстродействия контроллера и его ресурсов (управляющих выводов).
Самый очевидный недостаток - это низкочастотность ШИМа. До нескольких килогерц всего. У меня же вообще около 25 герц стоит.
Но мне хватает ::: )
Чтоже касается паралельности задач работающих с переферией - тут очень сильно помогают прерывания. В AVR почти каждому событию от переферии соответствует какое-нибудь прерывание.