В таблице векторов все неиспользуемые прерывания закрыл командами RETI, но еще раз проверю, благодарю за напоминание. К стати, вот еще один прикол, который удалось устранить методом тыка. В цикле интерполяции (вычисление очередных координат перемещения) для задания направления использовал три младших бита R25, соответственно для координат X, Y, Z. Зашиваю и проверяю. Y и Z все нормально, а X отрабатыват только в одну сторону. Бадался около недели. Перепроверил все подпрограммы и прерывания, использующие - никаких конфликтов. В конце концов переставил флаг направления для X с нулевого на третий бит того же R25, и О чудо! Все заработало. Понимаю, что чудес не бывает, но... Причем потом по старым копиям сравнивал, это не ошибка, в старой копии было именно SBRS R25,0. И опять таки, в симуляторе все работало четко. Я не в коем случае не качу бочку на AVR, наоборот, из тех 8 бит МК о которых я имею представление - это лучшая на мой взгляд архитектура, но вот когда неделями паришся над подобными проблемами... Должно же быть им какое-то логическое объяснение? Кривизна рук и головы естественно не исключается :-).
|