Накапчурил разных дисков лог.анализатором, на частоте 4МГц, и могу сказать, что задача в целом нетривиальная. Если это _хороший_ диск с постоянной скоростью - все более менее ОК, и то тайминги в 4/6/8мс могут варьироваться. Но диски у которых скорость неравномерна в течение одного оборота - просто нераспознаваемы такими вот константными значениями, которые захардкодены у Роба Смита.
Есть 2 варианта:
- добавить первый проход в ходе которого определять статистику по таймингам (есть диск на котором вместо 4мс пик значений гуляют от 3 до 5мс), и выстроить скоростной "график" для захвата. А потом уже читать поток с учётом плавающих скоростей. Проблемы бы не было если бы оперативной памяти хватало на оборот (хотя бы в уплотнённом виде). 50 тысяч для DD плотности и 100 тысяч доменов для HD. 2Кб оперативной памяти хватит только для статистики или скоростных параметров. RAW данные таймингов отдавать потоком невозможно даже через скоростной режим UART (даже 2мбита едва ли хватит). 4 бита на значение - недостаточно для качественной постобработки - но это уже 1мбит по UART для обычного DD диска. 6 бит - уже более-менее норм, но это полтора мегабита, и про процент ошибок при пересылке не надо забывать. И HD диски такое вообще не потянет.
- забить на ардуино, и работать с тем же ESP32 (с конвертацией уровней). 520кб оперативы за глаза хватит чтобы без проблем капчурить поток, хоть сразу несколько оборотов, и потом отдавать с любой скоростью эти RAW данные.
Вот ещё сел заморочился. http://cowlark.com/fluxengine/index.html




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
