Угу , еще и SSD сразу прикрутить . :biggrin:
Нет не встречал подобное.
Вид для печати
OMAPL137-HT а это чудо где прикупить можно?
http://www.ti.com/product/OMAPL137-HT
Может сделать устройство не только как для эмуляции FDD, но и для более надежного (чем на SD карточке) хранения всего архива коллекции образов дисков?
Можно и не FDD а на IDE шину , STM32 -16бит порты .
В ROM или SPI Flash вшить кучу софта , приткнуть дисплей цветной с тачем - для выбора что загружать .
Подключить блютус или радиоканал для загрузки с ББ .
Причем сие в железе достаточно дешево - см дискавери . Например на F4 там и USB OTG .
Можно то можно, энтузазистов нету. Я хоть и шарю немного в STM и МК вообще, но в железе и кодописательстве на спеки пока полный нуль ...
В STM32 что хорошо?
Они достаточно дешевы - раз.
Имеют кучу ресурсов, причем ресурсы не чета пЫк или AVR .
Шить их весьма просто любым USB-UART шнурком .
Вроде бы достигнуто чтение ( LIST выдает пустой диск на образе с пустого диска ).
Прототип - stm32f4-discovery+STM32F4DIS-BB+самопайная плата с резисторами и шлейфом.
Какие есть спек-утилиты для проверки качества чтения дискет (убедиться, что весь образ нормально читается)?
Успешно протестировал прошивку прототипа на чтение программой TESTPROG от Солон. Никаких ошибок не найдено.
Тестовые образы создавал в MFM формате утилитой HxCFloppyEmulator soft 2.0.20.1.
Грузятся и работают AEON и SONG2 из набора Жан-Франсуа.
Можно поподробней с фото ;)
Первые 5 фото:
1.Феникс + stm32f4discovery + stm32f4dis-bb + самопай
2. Вид самопая - шлейф и резисторы 1к
3. Команда list
4. Чтение всего диска
5. Журнал прототипа эмулятора
Так что Дед Мороз настоящий :v2_dizzy_christmas2:
6. Скорость вращения
7. Общий экран программы
8. Алгоритм работы
9. Журнал при работе TESTPROG
(State: 0 - инициализация, 1-загрузка цилиндра, 2-ожидание, 3-чтение дорожки)
LCх - загружен цилиндр х
M&DS0 - активен Motor и Drive Select0
m&ds0 - неактивен Motor и Drive Select0
Журнал собирается через последовательный порт
Схема переходника прототипа прилагается.
Не слабо. А прошивка тоже будет закрытая?
Tronix, все материалы будут открытые. Закрытость проблемы эмуляции надо прекращать. Только сначала я доделаю запись и снижу тактовую со 168 до 72 МГц (как у stm32f103). Если потянет, то будем делать спектрумистский девайс.
Получены обнадеживающие результаты записи:
образ MFM от Jeff успешно переформатировал в TR-DOS, диск c новым образом читается.
Код существенно переделан. Работает на 72 МГц тактовой. В планах подкорректировать код под переменную длину треков и метод выдачи импульсов RDATA.
Продолжаю тестировать запись, готовлю к подключению блок управления и индикации.
Может немного не в тему, но.. Флопиэмулятор для спектрума, собранный, где (у кого) дешевле всего купить?
Запись протестировал в TR-DOS, Basic, WDC, ADS 3.0, DCU 8.07 и тестовой программой Солон - все форматируется, пишется и читается без сбоев.
Получил плату блока индикации и управления, скоро соберу и покажу.
CP/M не тестировался?
Мне для Кворума :)
Александр Бухаров, эмулируется дисковод, а не ОС. Есть основания полагать, что будет работать.
Александр Бухаров, пишется MFM.
Будет выпущен прототип на stm32f103 (с блоком индикации), а Дискавери был нужен для тестирования только.
Классно. Тоесть можно будет свои "защищенные" дискетки делать?
Зачудесно :)
А GOTEK floppy emulator кто нибудь уже совместно с ZX пробовал использовать?
У них полно разных моделей и на 720 КБ и на 1.2 МБ и на 1.44 МБ
http://gotek.en.ecplaza.net/
На Е-Бае они около 22$ c доставкой продаются.
К Амиге его уже прикрутили:
http://cortexamigafloppydrive.wordpress.com/
Одну модель на 1.44 МБ с тремя LED уже перешил и испытал на Амиге, всё отлично работает.
Теперь хотелось бы прикрутить такой к ZX ... А то никакой самопал дешевле 22$ не получится ...
Из указанной ссылки только схема имеет интерес.
Лучше бы исходник, а не хекс файл )
У меня ни с ТР досом ни с СП/М не заработало.
Покупал как готек так и ипкас. Ни тот ни другой :(
IanPo там схема есть, может прогу под него[эмуль из ссылки] лучше писать?
Сразу масса проблем отпадет с изготовление печатной платы :)
Прилагаю картинки с дисплеем.
Скоро можно будет выбирать образы и грузить.
У меня тоже схема есть. Когда дискавери отлажу, выложу плату и схему нового прототипа на stm32f103.Цитата:
IanPo там схема есть, может прогу под него[эмуль из ссылки] лучше писать?
Самое интересное - это программа :)
Ждемс :):v2_dizzy_vodka4:
У меня есть несколько защищенных дискет... можно будет с них сделать образ на SD карточку так чтобы они были 100% рабочими копиями?
Vitron, снятие образов не реализовано.
Есть только идея снимать образ с реального дисковода, также подключенного к шлейфу вместе с эмулятором. Т.е. эмулятор включает мотор, дрыгает step, dir, side и читает образ MFM прямо с реального дисковода.
Если вы сами снимете образ, можно будет проверить в эмуляторе, но только практически, когда эмулятор будет.
Выбор файлов и вывод ошибок сделал более-менее, доделываю вывод состояния( цилиндр, сторона, чтение-запись и т.п.)
Выкладываю свой проект в открытый доступ.
На данный момент работает форматирование(кроме солоновской проги, в которой виснет и Жан-Франсуазовый эмуль), запись, чтение, выбор файла и индикация (частично). После встраивания индикации в прогу (цилиндр, сторона, состояние, мотор) запись стала глючить почему-то. Поэтому я отключил пока, после выбора файла видно только имя загруженнного файла.
В общем, смотрите, решайте, стоит ли дальше делать плату прототипа (я думаю, стоит), задавайте впоросы. Я попытаюсь описать вкратце принцип работы.
ЗЫ. В СОЛОНовской программе ЧТЕНИЕ ДИСКА работает с возвратом к нулевому треку на каждом цилиндре (с HxC FloppyEmul так не делает). Возможно, причина в слишком долгой загрузке цилиндра. В других программах такого не наблюдал. Выяснилось после включения индикации.
1. Формат записи-чтения - стандартный MFM (в обе стороны конвертируется утилитой от Эмулятора HxC). Эмулируется 80-дорожечный 2-сторонний дисковод.
2. Читается цилиндр (2 трека = 26КБ), пишется потреково (13 КБ).
3. MFM-последовательность чтения генерируется выводом таймера TIM3 - длительность импульса (уровня 0) постоянная, период программируется на ходу в прерывании, исходя из количества 0 перед 1.
4. Запись осуществляется аналогично, замером времени между фронтами WDATA. Частота таймера подобрана так, что измеренный период, деленный на 32 (сдвинутый на 5 вправо), разбивается на 4 возможных значения: 0 - самый первый импульс (от активации WGATE до первого импульса WDATA проходит около 2 мкс), далее 1,2,3 - соответствующие 4,6,8 микроксекундным импульсам (01,001,0001). Все остальные значения на практике не наблюдались и считаются ошибочными.
5. Программа представляет из себя вечный цикл с ветвлением согласно текущему состоянию (смысл названий очевиден: INIT, IDLE, LOADCYL, READTR, WRITETR). Обработчиками прерываний: таймер 3 - чтение, таймер 4 - запись, внешние прерывания от STEP и WGATE. Переход из одного состояние в другое сопровождается перепрограммированием периферии контроллера.
6. Частота контроллера выбрана 72 МГц, чтобы портировать на серию STM32F103. В качестве прототипа используется STM32F4-discovery с доп. платой интерфейсов STM32F4DIS-BB и самодельной платой с подтягивающими резисторами и доп. блоком интерфейса на WH1602 и кнопками.
uint8_t buff[ MAX_TRACK_LEN * 2 ]; главный буфер для заголовка, треков
uint32_t track_lengs[ HXCMFM_NOT * HXCMFM_SD ]; массив длин дорожек (в mfm у Jeff разные длины могут быть)
uint32_t track_offsets[ HXCMFM_NOT * HXCMFM_SD ]; массив смещений начал дорожек
char Image_File_Name[ MAX_PATH_LEN ]; имя загружаемого файла с путем
char CurrDir[ MAX_PATH_LEN ]; текущая директория (выбор файла)
unsigned char TmpBuffer[32];
volatile long int CurrBit; текущий бит
volatile unsigned char ZeroCounter; счетчик кол-ва 0 перед 1
volatile uint32_t CylNumber; текущий цилиндр
uint32_t LoadedCylNumber; текущий загруженный цилиндр
volatile long int CurrBitW, CurrBitWStart; начало и длина записанной дорожки
volatile long int SideW; сторона, на которую идет запись
FE_States CurrState = INIT; текущее состояние
FE_States LastState = NONE; предыдущее состояние (для вывода изменений состояния)
long int TrackDataBase; смещение начала области дорожек
FE_BUTTs ButtonR; нажатые кнопки
long int AllFiles; всего файлов в директории
long int FileIndex; текущий файл
unsigned char fWP; признак WriteProtect
unsigned char Side, LastSide; текущая сторона (для индикации)
void TIM3_Config(void); первоначальная настройка таймера 3
void TIM4_Config(void); первоначальная настройка таймера 4
void GPIO_Config(void); настройка остальных выводов
long int Load_HXCMFM_file(void); загрузка заголовка файла и анализ, формирование массивов длин дорожек и т.п.
long int Load_Cylinder(long int); загрузка цилиндра в buff
long int Save_Track(long int); запись дорожки из buff в файл
void EXTILine10_Config(void); настройка выводов STEP и WGATE
void EXTIButtons_Config(void); настройка выводов кнопок
FE_BUTTs WhatKey(void); ждет нажатия кнопки, результат - нажатая кнопка
long int ReadDir(char * DirPath); считывает содержимое директории
void Error2LCD(unsigned char * ErrorStr); вывод ошибки
void WriteStats(void); вывод текущего состояния при работе
Нет желания засетапить проект где-нибудь на github?
tnt23, не знаю, раньше я туда проекты не выкладывал. К тому же, железо пока только у меня есть. Готовлю плату прототипа, если к ней будет интерес, подумаю про github.
Попробуй сделать адаптацию под схему эмулятора Gotec http://cortexamigafloppydrive.wordpress.com/ (здесь есть схема эмулятора) а потом его уже доработать (добавиь индикатор и карт ридер )
tnt23, почитал про github, можно сделать. Я планировал перейти с IAR 32K kickstart на Eclipse + Sourcery CodeBench Lite Edition, там есть плагин github.
Ну гитхаб тут просто к слову пришёлся, я на нём держу проект драйвера для AmigaOS. Можно и code.google.com, и вообще любую систему контроля версий.
chief, за схему спасибо, но у меня такой железки нет. А отладить без железа нереально. Своя схема у меня в голове уже есть, осталось ее нарисовать.