Управление турелью HSFW от Edmund Optics
May. 11th, 2016 07:24 pmПоявилось у нашей лаборатории желание создать фотометр для Zeiss-1000 с минимумом разработок железа/софта и т.п. Одной из частей фотометра будут две турели High Speed Filter Wheel. Как обычно, железо огороженное. В отличие от предшественника Intelligent Filter Wheel (у которого вполне нормальный последовательный интерфейс с описанным в документации протоколе), у этой железяки только мастдайнутый установщик и никакой документации о протоколах!
При подключении к компьютеру железяка создает устройство /dev/hidrawX. На основе примера работы с этими устройствами из ядра я попытался определить, как же им управлять. И, в принципе, основные вещи реализовал (установка в "дом", установка на заданную позицию), но без понятия, как реализовать сброс (в отличие от usbdevfs эмуляторов последовательных портов здесь простым ioctl'ом перезапустить соединение не вышло). А сброс очень важно реализовать, т.к. любая проблема в протоколе вызывает "глухоту" контроллера: он перестает реагировать на управляющие команды.
Кстати, в опытах выяснил интересную вещь: если в первую десятку регистров hidraw под ведром 3.12 писать ненулевые данные, ядро (случайным образом, кстати: можно десяток раз так сделать без последствий, а можно с первого раза попасть) уходит в глубокий kernel panic, перезагрузка после которого чревата десятиминутным fsck'ом (это еще хорошо, что у меня один винт и небольшой)!
( Протокол )
Вот таким жутким велосипедостроением приходится порой заниматься, потому как разработчики железяки закрысили описать протокол (заодно передаю привет Canon'овцам)! То ли еще будет с ПЗС…
Пока вендокомпьютер был свободен, я поставил софт управления турелью и попытался проанализировать трафик сниффером.
( Регистры изменения положения турели )
Я вспомнил, что у меня есть вендокомпьютер для работы с Шаком-Гартманном (да, каюсь: я уже 6 лет не могу собраться, и написать нормальное ПО без огораживания). С его помощью была проделана оставшаяся работа.
( Регистры работы с EEPROM и сброса )
Все, как только напишу полноценную управлялку, создам новую тему.
При подключении к компьютеру железяка создает устройство /dev/hidrawX. На основе примера работы с этими устройствами из ядра я попытался определить, как же им управлять. И, в принципе, основные вещи реализовал (установка в "дом", установка на заданную позицию), но без понятия, как реализовать сброс (в отличие от usbdevfs эмуляторов последовательных портов здесь простым ioctl'ом перезапустить соединение не вышло). А сброс очень важно реализовать, т.к. любая проблема в протоколе вызывает "глухоту" контроллера: он перестает реагировать на управляющие команды.
( Протокол )
Вот таким жутким велосипедостроением приходится порой заниматься, потому как разработчики железяки закрысили описать протокол (заодно передаю привет Canon'овцам)! То ли еще будет с ПЗС…
UPD
Пока вендокомпьютер был свободен, я поставил софт управления турелью и попытался проанализировать трафик сниффером.
( Регистры изменения положения турели )
UPD-2
Я вспомнил, что у меня есть вендокомпьютер для работы с Шаком-Гартманном (да, каюсь: я уже 6 лет не могу собраться, и написать нормальное ПО без огораживания). С его помощью была проделана оставшаяся работа.
( Регистры работы с EEPROM и сброса )
Все, как только напишу полноценную управлялку, создам новую тему.