Вдруг моя разработка Вам поможет.
Есть у меня друг авторемонтник. Уже очень давно мечтает научиться работать с микроконтроллерами. уже несколько раз брался изучать, но все никак не получалось.
Но вот вдруг он захотел сделать фрезерный станок. Под него попросил сделать STEP-DIR драйвер для управления тремя шаговиками, на одной микросхеме. Эта задача легко решается на (к примеру АТМЕГА8, которую он уже купил). Но написать попросил так, чтобы она была понятна ему. Так сказать в учебных целях. Пришлось в большей степени уделить внимание не на оптимальность функционирования, а именно на разжевывание каждого шага. Программа получилась слишком "раздутой" и чересчур медленной.
Не знаю, насколько успешно я справился с учебной стороной вопроса, но все три движка она успешно крутила.
Кстати, друг так и не удосужился "подсесть" на МК. Нашел себе оправдание, что времени не хватает.
Вкратце, что она делает...
На каждый двигатель есть два входа. DIR- указывет, в какую сторону двигателю крутиться. STEP- сигнал сделать один шаг.
Управляет она двигателем с 4 фазами. Если нету сигналов управления более заданного времени, выставляется сигнал для снижения питания (режим простоя).
Режим простоя реализован для каждого двигателя независимо. Как только приходит сигнал STEP, выключается режим простоя того двигателя, которому нужно шагать.
Поскольку входы STEP работают по прерываниям, а у меги8 внешних прерываний всего 2, то для третьего входа используется вход аналогового компаратора. Второй вход этого компаратора подключен ко внутренней опоре програмно. Прерывание от аналогового компататора используется в качестве третьего сигнала STEP.
Прошу сильно не ругать, если в "учебности" или "правильности" обнаружите недостатки. Ведь не очень просто писать так, чтобы было понятно тому, кто не пробовал МК никогда, и при этом получить эффективный и правильный код.
DD.rar ( 258.46 килобайт )
Кол-во скачиваний: 409Забыл добавить. Это под ИАР.