[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Господа, помогите новичку!
Стоит следующая задача: "Управление грейфером"(на ТЭЦ кран с большим
ковшом). Т.е. есть 3 эл. двигателя, 3 концевых датчика
("вперед",Назад","Вверх"), а так же датчик тока (проверяет поднятие
ковша, если да, то закрыть ковш).
Система управления состоит в следующем:
Оператор нажимает, например, кнопку "Вперед" - тележка с ковшом едет
вперед то тех пор, пока не достигнет концевого датчика (обычный
контакт) или же, пока оператор не нажмет кнопку "стоп" или любую
другую.
Аналогично с командой "назад".
Затем, когда требуется зачерпнуть уголь, оператор нажимает вниз,
тележка с ковшом останавливается, и ковш плавно спускается вниз,
загребает уголь и, когда оператор даст команду "вверх", запускается
двигатель начинает поднимать ковш. Датчик тока, естественно,
срабатывает (т.к. ток в обмотке двигателя подъемника возрос) и
микроконтроллер дает команду на закрытие ковша, т.е. на 3-й
двигатель.
Собственно, вот такая задача.
Мое предположительное решение:
Все датчики и кнопки управления посадить на 2 порта, и, объединив их
элементом "ИЛИ" кинуть на вывод микроконтроллера "INT"
В программе организовать цикл до тех пор, пока не поступит сигнал на
INT, затем, после поступления сигнала, передать управление обработчику
прерывания, который в свою очередь опросит порты и установит, что
именно было нажато (какой датчик сработает). Потом, в зависимости от
того что было нажато, например кнопка "вперед" выдать в один из
свободных портов сигнал ШИМ.
Вот тут вопрос, а во время выполнения подпрограммы ШИМ, будут ли
обрабатываться внешние прерывания?
Слабо представляю, как работать (программно) с прерываниями. Ткните примером
или URL. Я думаю, что есть уже подобные готовые решения. Если не тяжело,
поделитесь исходниками на ассемблере. Либо, подскажите, на правильном
ли пути я стою?
Заранее спасибо!
E-mail: info@telesys.ru