ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
13 июля
496068
vitalyn (12.03.2014 09:36, просмотров: 2538)
Надо убрать паузы между пачками Имеется сервопривод. Управление этим сервоприводом осуществляется с микроконтроллера AT91SAM7A3. Выходные сигналы STEP/DIR. В SAM7A3 есть удобная связка таймеров-счётчиков. Один TC занимается генерацией импульсов заданной длительности с заданным периодом (по компаратору A устанавливаем выход в 1, по компаратору С опускаем выход в 0 и обнуляем счётчик), а второй TC считает количество сгенерированных импульсов (по спаду на выходе первого). Когда нужное количество импульсов выдано - вызывается прерывание (плюс можно остановить выдачу импульсов первым TC). На линейном участке движения всё шоколадно, а вот с разгоном и торможением есть проблема. Разгон и торможение я режу на пачки длительностью примерно 1 мс. В пачке период и, естественно, частота импульсов постоянны. Пока отрабатывается текущая пачка - считаю параметры для следующей пачки в соответствии с заданными параметрами ускорения и формы S-кривой. Так вот, когда пачка отработалась, генерация импульсов прекращается и вызывается прерывание. Пока в прерывание войдём (а процессору есть, чем ещё заниматься), плюс пока в прерывании сделаем, что надо, возникают довольно неприятные паузы между пачками (порядка 70 мкс). Проблема в том, что их заметно. Вопрос - научите, как правильно надо работать с таймерами, чтобы с минимальными побочными последствиями убрать паузы между пачками?