Jarik65535 чётко сказал, что отмена незавершёнки не предусмотрена. Программно сбросить контроллер в начальное состояние невозможно. Сигнал INIT на шине также его не сбросит. Уж если контроллер начал приём или передачу пакета, то не вернётся в начальное состояние до завершения работы. Поэтому полезно иметь в CSR не только бит READY ( 0200 ), но и бит DONE ( 0400 ), устанавливаемый контроллером в фазе ожидания кода команды.
- - - Добавлено - - -
Я понимаю ситуацию так. Допустим, у контроллера есть команда "СООБЩИТЬ КОЛИЧЕСТВО ОБРАЗОВ НА КАРТЕ", в ответ на которую он помещает в регистр DATA соответствующее число. После записи кода этой команды в регистр данных - контроллер снимает биты READY и DONE, пересчитывает образы на карте, устанавливает бит READY и ожидает чтения регистра данных, чтобы передать количество образов. Если в этот момент попытаться записать в регистр данных код новой команды, то контроллер никак не отреагирует, потому что для завершения цикла выполнения команды ему надо передать клиенту все слова пакета. И хотя пакет в данном случае состоит всего из одного слова - контроллер не перейдёт в начальное состояние, пока это слово не передаст.




Ответить с цитированием