hd44780 0 24 февраля, 2014 Опубликовано 24 февраля, 2014 · Жалоба Сейчас пользуюсь драйвером немца - http://mikrocontroller.bplaced.net/word ... age_id=744 Один "странный" косяк я исправил - если мышь не понимает команду 0xF2 (идентификация мыши) он тупо вываливается с ошибкой, хотя весь дальнейший алгоритм прекрасно понимает оба типа мыши (стандартная и Intellimouse). Но обнаружилась странная вещь - на старых мышах он работает, а на большинстве новых - нет. Есть 2 мыши Logitech RX250, одна белая, 2-я чёрная. Белая работает достаточно стабильно, хоть и не без приколов, Чёрная - труп трупом. Кроме фэн-шуя в голову ничего не приходит.. Уже 3 дня читаю разные мануалы, примеры кода под авры и прочее - по фиг. Если надо, дам все ссылки и свой код. Всё чего удалось добиться - команды нормально передаются в мышь. На драйвере немца мышь вообще не генерит синхронизацию. Он вначале притягивает к земле только данные, а синхру - нет. Дальше странности - многие команды дают либо код ошибки 0xFC, либо какой-то недокументированный код - 0xF8. Даже команда сброса 0xFF корректно отрабатывает только один раз, в ответ на все остальные летит некий бред типа 0xF8. Вопрос - кто-нибудь работал с мышей, каковы результаты и есть ли у кого нормальный драйвер? Спасибо. PS. Все мыши рабочие. Проверены в компе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 3 24 февраля, 2014 Опубликовано 24 февраля, 2014 · Жалоба нынче все PS2-мыши это совмещенные с USB. То есть по сигналам от хоста понимают что им работать в режиме USB или PS/2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 25 февраля, 2014 Опубликовано 25 февраля, 2014 · Жалоба Не скажите. Я пытался подключать 2 свои USB мыши к компу через переходник на PS/2 - не работают. Logitech RX250 не в счёт, она изначально с двойным интерфейсом. Так что, это, по-моему - "территория заблуждений" :) . Да даже если б и работало, подключить её к USB хосту я не могу, у меня там флэшка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 25 февраля, 2014 Опубликовано 25 февраля, 2014 · Жалоба не к усб надо подключать, а с мышой договорится что она к пс/2 подключается. А как это делать хрен знает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 123 25 февраля, 2014 Опубликовано 25 февраля, 2014 · Жалоба Работал с мышами когда-то очень давно, все забыл. либо код ошибки 0xFC, либо какой-то недокументированный код - 0xF8. Код 0xF8 очень похож на 0xFC сдвинутый на один бит влево. Возможно какая-то проблема в синхронизации? Не по тому фронту читаете? Дребезг на фронтах захватываете? В общем я бы вывел принимаемый бит на свободную ногу порта, зарядил в цикле команду сброса и осциллографом сравнивал все три сигнала (такт, данные и принятые данные) с учебником. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 25 февраля, 2014 Опубликовано 25 февраля, 2014 · Жалоба не к усб надо подключать, а с мышой договорится что она к пс/2 подключается. А как это делать хрен знает Я пытаюсь работать с мышами, которые изначально имеют PS2 разъём. А что из себя представляют те или иные переходники - пока что совершенно не волнует. 4 провода в них там или какая-то микросхема, переделывающая USB в PS2 - по идее всё равно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 3 25 февраля, 2014 Опубликовано 25 февраля, 2014 · Жалоба Я пытаюсь работать с мышами, которые изначально имеют PS2 разъём в порядке бреда предложу посмотреть частоту синхроимпульса при работе от компа. то есть интерфейс SD-карт тоже синхронный, но по иннициализации нужно ведь работать на 200кГц Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 25 февраля, 2014 Опубликовано 25 февраля, 2014 · Жалоба Код 0xF8 очень похож на 0xFC сдвинутый на один бит влево. Возможно какая-то проблема в синхронизации? Не по тому фронту читаете? Дребезг на фронтах захватываете? В общем я бы вывел принимаемый бит на свободную ногу порта, зарядил в цикле команду сброса и осциллографом сравнивал все три сигнала (такт, данные и принятые данные) с учебником. Прерывание одно и то же, программа одна и та же. // 0xFF - Сброс - 3 раза st = P_PS2_Mouse_Send ( PS2_MOUSE_CMD_RESET ); P_PS2_Mouse_Timeout_RX ( 50000 ); // checks PS2_MOUSE_VAR.receive_code P_PS2_Mouse_Timeout_RX ( 50000 ); P_PS2_Mouse_Timeout_RX ( 50000 ); st = P_PS2_Mouse_Send ( PS2_MOUSE_CMD_RESET ); P_PS2_Mouse_Timeout_RX ( 50000 ); P_PS2_Mouse_Timeout_RX ( 50000 ); P_PS2_Mouse_Timeout_RX ( 50000 ); st = P_PS2_Mouse_Send ( PS2_MOUSE_CMD_RESET ); P_PS2_Mouse_Timeout_RX ( 50000 ); P_PS2_Mouse_Timeout_RX ( 50000 ); P_PS2_Mouse_Timeout_RX ( 50000 ); PS2_MOUSE_VAR.receive_code - принятый из мыши байт. Первый раз там 0xFA - это правильно. 2 и 3-й - бред. Проверю, может где-то у немца какие-то флажки не сбрасываются ... Кстати, проверил его оригинальный драйвер на работающей мыше - инициализация проходит только один раз. Далее лезет тот самый 0xF8. в порядке бреда предложу посмотреть частоту синхроимпульса при работе от компа. Можно .. Когда исчерпаю другие варианты - проверю .. Придётся спаять некий "переходник" для доступа к контактам. А кстати, DATA и CLK подтягивать резюками к +5в надо? У меня сейчас не подтянуто. Идут непосредственно на процессор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 123 25 февраля, 2014 Опубликовано 25 февраля, 2014 · Жалоба Кстати, проверил его оригинальный драйвер на работающей мыше - инициализация проходит только один раз. Далее лезет тот самый 0xF8. Значит в этом драйвере ошибка. Надо разобраться как работает интерфейс и найти ее. Возможно на этапе изучения описания интерфейса отпадет вопрос "нужны ли подтяжки". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 3 25 февраля, 2014 Опубликовано 25 февраля, 2014 · Жалоба А кстати, DATA и CLK подтягивать резюками к +5в надо? У меня сейчас не подтянуто. Идут непосредственно на процессор. ну я ставил 10 ком ADD: вот по ссылке тоже указано о необходимости ставить pullup Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 25 февраля, 2014 Опубликовано 25 февраля, 2014 · Жалоба ADD: вот по ссылке тоже указано о необходимости ставить pullup Спасибо. Вечером постараюсь добавить их. Тогда отпишусь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба Pull-upы в +5в не помогли :( Придётся колупаться в протоколе :) ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 28 февраля, 2014 Опубликовано 28 февраля, 2014 · Жалоба На 95% работает. Инициализация всех мышей проходит нормально, координаты считываются и прочее. Единственная проблема на текущий момент - какие-то баги с определением типа мыши. Есть команда 0xF2 - Get Id - считать типа мыши. Здесь написано, что ответ мыши - 2 байта - подтверждение 0xFA и код типа. А вот здесь утверждается, что ответ - один байт - код типа. Бардак натуральный. Не инициализируется только старая PS2 мыша. Она без колеса, т.е. Standard mouse. Команду 0xF2 она не понимает. С ней ещё не возился. Тут тоже вопрос - как она должна себя вести? Игнорировать команду вообще? Слать ошибку 0xFC? Может она и глючит на этой 0xF2. По ходу выяснил, что заявление о том, что по умолчанию в мыше включён потоковый режим - мягко говоря, неправда. На старых мышах это так. А новые мыши без явной подачи команды 0xEA - включить потоковый режим просто ни фига не шлют. Проверено. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 123 28 февраля, 2014 Опубликовано 28 февраля, 2014 · Жалоба Не, ну так не честно... Проблема-то в чем была? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 28 февраля, 2014 Опубликовано 28 февраля, 2014 · Жалоба Да в принципе всё просто. Основной баг немца -для инициации обмена с мышью надо дрыгать и DATA и CLK. Он дрыгал только DATA. А это далеко не на всех мышах пашет. Чтение неверных кодов из мыши были связаны с "самогенерацией" прерывания по CLK при его дёргании. При этом, естественно, сбивались управляющие переменные и последующий приём байта проходил неверно. Когда выключил прерывания перед ногодрыгом, бред мгновенно исчез. Проблема сейчас одна - 0xF2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться