PDA

Просмотр полной версии : Мышь к Специалисту



zx_
01.12.2014, 14:10
Мышь к Специалисту, публикация в М-К 2-94, И. Иванов

zx_
01.12.2014, 15:59
Центроникс к Специалисту, Д.Федотов, М-К 5-94

barsik
02.03.2018, 12:41
По поводу схемы из первого поста. Речь о подключении мыши, а схема приведена такая же как нужна для подключения джойстика.

Чтобы такая схема работала, нужен контроллер на КМОП Z80, который принимает от мыши последовательные посылки со скоростью 1200 бод, конвертирует их в соответствующие сигналы от джойстика и выдаёт их в ППА в виде параллельного кода. Видимо такой интерфейс выбрали, чтобы избежать вторжений на основной плате.

Такая концепция выгодна тем, что не имея мыши, вместо неё можно подключить джойстик, который у многих пользователей сохранился от ZX-Spectrum.

А неудачна такая схема потому, что мышь выдаёт численное значение смещения по координатам, а данный интерфейс передаёт лишь информацию о смещении мыши на одну позицию. Потому, чтобы полноценно проэмулировать мышь в такой концепции, нужны или апп.прерывания от мыши, или дополнительные сигналы для квиттирования приёма.

Тогда например, при сдвиге мыши влево на 15 кликов, контроллер должен проэмитировать 15 нажатий (импульсов) по биту "влево". Если не использовать квиттирование, то темп выдачи импульсов из контроллера мыши придётся сделать очень низким (чтобы процессор не пропустил их) и вряд-ли получится качественное программное обслуживание перемещений мыши.

Потому полноценная эмуляция сигналов мыши таким параллельным интерфейсом получится лишь при использовании апп.прерываний по поступлению сигнала от мыши (тогда можно сильно сократить период импульсов от мыши).

Если прерываний нет, то можно использовать обслуживание мыши за счёт контроля флага от мыши. Процессор КР580 выполняет программу GUI, но периодически (много раз в секунду), контроллирует флаг запроса на обслуживание мыши. Это легко сделать, т.к все программы постоянно и много раз в секунду вызывают подпрограмму F81B (C81B), которая проверяет клавиатуру. Несложно дополнить эту подпрограмму F81B несколькими командами для чтения из ППА флага от мыши.

Тогда, КР580 обнаружив флаг запроса на обслуживание мыши, выдаёт в контроллер мыши сигнал, что готов к приёму. После чего контроллер мыши начинает выдавать импульсы с очень коротким периодом, передавая всю информацию о движении мыши и нажатии кнопок. По прекращению поступления импульсов в ППА, процессор убирает свой сигнал готовности и возвращается в программу пользователя. При этом сама передача сигналов отнимает у процессора очень мало процессорного времени и от мыши поступает вся необходимая информация.

Тратить целый ППА для приёма 8-ми битов невыгодно. Достаточно регистра с третьим состоянием, типа ИР22. А в качестве сигнала готовности к приёму от мыши можно использовать сигнал записи на магнитофон. Если совместимость с джойстиком не волнует, то для ускорения информацию от мыши выгодно кодировать иначе. 3 бита кодируют 8 направлений, 4 бита величину смещения в этом направлении, а 8-й бит служит для передачи нажатий кнопки мыши. Можно также кодировать величину смещения мыши длительностью импульса по соответствующему биту.

Преимущество такого решения в том, что не требуется включение в ядро дополнительных БИС, доработки основной платы минимальны (или их нет) и контроллер мыши на Z80 или Atmega проще, чем ставить ВВ51 с формирователем тактов и как-то аппаратно решать проблему имплементации мыши в программное обеспечение компьютера без прерываний. Посылки со скоростью 1200 бод процессор Z80 на такте 4 МГЦ вполне может принять программно.