User Tag List

Страница 19 из 54 ПерваяПервая ... 151617181920212223 ... ПоследняяПоследняя
Показано с 181 по 190 из 538

Тема: Планирую сделать FDD эмулятор на Atmega8

  1. #181

    Регистрация
    19.06.2014
    Адрес
    г. Харьков, Украина
    Сообщений
    731
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от EvgenRU Посмотреть сообщение
    PS3: к сожалению, запись пока что сделать не получается, попробовал, но никак... непонятные данные считываются с флопика да и мороки с этим много, так что девайс будет RO
    а в чем загвоздка?

  2. #181
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #182

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от s_kosorev Посмотреть сообщение
    а в чем загвоздка?
    Ну, я делал как, поставил Write Gate на прерывание INT1, по Fallen Edge он выключал TX, включал RX (одновременно), в векторе USART_RX_vect принимал данные, по кейсам смотрел, фигня какая-то получалась, потом сделал получение 512 байт в буфер и вывод их при чтении секторов, в итоге там оказалась фигня какая-то, местами похожая на правду, местами нет. Я так понял, там шлется дорожка целиком после прихода сигнала на WG? Насколько точно получится синхронизироваться в Master SPI по битам? Получится ли считать данные так, чтобы было удобно из мини-таблицы раскодировать?

  4. #183

    Регистрация
    19.06.2014
    Адрес
    г. Харьков, Украина
    Сообщений
    731
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от EvgenRU Посмотреть сообщение
    там шлется дорожка целиком после прихода сигнала на WG? Насколько точно получится синхронизироваться в Master SPI по битам?
    Мне кажется проще за другое устройство зацепиться, по WG включать обработчик прерывания на WData, обработчик должен реагировать на фрон к примеру, в обработчике перезапускать таймер, в общем получится поток замеров между импулсами, его уже вторым потоок анализировать или к примеру кидать быстро во временный файл на SD, и при смене дорожки анализировать, вытягивать mfm разметку итд и писать в образ

    - - - Добавлено - - -

    После того как был отправлен маркер, если появился WG передачу прерывать и запускать второй обработчик, который замеряет растояние между импулсями

    - - - Добавлено - - -

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

    - - - Добавлено - - -

    О! самый четки вариант как мне кажется такой

    Работаем в обычном режиме, посамтривая на WG, если он активируется, то программно синхронизируемся, подстраивая фазу таймера под источник, после этого таймер заставляем генерировать клок для SPI, который переключаем в slave
    получается и прерывания не часто и словить фазу правильную можно, можно даже таймер подстраивать в теории

  5. #184

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо, завтра попробую, но не уверен что получится, хотя, в примере на http://firmware.altervista.org/Data%...20Decoding.htm вроде получилось по таймеру

    - - - Добавлено - - -

    Расчехлил я лог анализатор и решил посмотреть, что же там за сигнал идет с WRITE DATA и WRITE GATE, увиденное меня несколько озадачило... я надеялся увидеть что-то похожее на READ DATA, а там....

    Это запись дорожки в которой во всех секторах нули в Real Commander
    Нажмите на изображение для увеличения. 

Название:	write1.jpg 
Просмотров:	1598 
Размер:	48.5 Кб 
ID:	56772
    Это подробности сигнала при записи дорожки
    Нажмите на изображение для увеличения. 

Название:	write3.jpg 
Просмотров:	1602 
Размер:	24.4 Кб 
ID:	56771

    Это запись с помощью команды SAVE "k" в тырдосе
    Нажмите на изображение для увеличения. 

Название:	write2.jpg 
Просмотров:	1594 
Размер:	51.8 Кб 
ID:	56769

    Как видите... сигнал существенно отличается... Что там передается - непонятно, есть ли там заголовки и поля не пойму, может там данные в чистом виде?

    Судя по внешнему виду сигнал кодируется так
    Пульс (HIGH) на 42нс, потом LOW на 4, 6, 8 мкс, но есть местами и 101 (все по 42 нс), а есть большие промежутки, больше чем 8 мкс.
    В самом начале дорожки вообще какие-то непонятные сигналы.

    PS: почитал еще информацию по контроллеру http://www.defence-force.org/computi...-datasheet.pdf
    там есть 2 вида команд записи, запись дорожки и запись сектора.


    ------------------------

    UPD: кажется разобрался
    Вот запись 1 дорожки в Real Commander
    Нажмите на изображение для увеличения. 

Название:	write4.jpg 
Просмотров:	1582 
Размер:	50.8 Кб 
ID:	56773
    В предыдущем случае писалась 0 дорожка, а для нее RC использует 9 секторов, поэтому 9 записей было, а тут 16, всё норм.

    Т.е. запись происходит записью секторов (Команда Write Sector контролера).
    Сектора пишутся прям в область данных сектора.

    Команда Write Track используется только при форматировании.

    Т.е. схема такая
    После отправки заголовка сектора проверяем Write Gate, если он LOW, то
    1) отключаем передачу, запускаем чтение
    2) ждем пока принимаемый байт равен нулю
    3) пропускаем 8 принятых байт
    4) получаем данные сектора (256 байт сектора = 512 байт MFM)
    5) получаем CRC (2 байта = 4 байта MFM)
    6) проверяем CRC
    7) записываем 2 сектора старый и новый на SD, если CRC совпали

    шаги 5,6 можно опустить для простоты
    ------------------------

    UPD3: Снял диаграму на 1MHz, вроде похоже на правду
    Нажмите на изображение для увеличения. 

Название:	write6.jpg 
Просмотров:	1531 
Размер:	56.1 Кб 
ID:	56775
    т.е. пропускаем 12 байт, пропускаем маркер и читаем данные с CRC
    Последний раз редактировалось EvgenRU; 10.04.2016 в 12:46.

  6. #185

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всё-таки решил я окончательно, что не буду делать запись, очень сложно и почти нереально на ардуине. Чтения более чем достаточно, чтобы закинуть кучу образов на флешку и играться с ними :-D

    В последнем обновлении поменял пины местами, чтобы удобно было подключаться к кабелю дисковода, использую теперь PCINT2 вместо INT0.

    Картинка, как всё это дело подключать так же закинута на гитхаб, но и тут приложу на всякий.

    Нажмите на изображение для увеличения. 

Название:	Connection_diagram.jpg 
Просмотров:	1685 
Размер:	61.8 Кб 
ID:	56785

  7. #186

    Регистрация
    27.11.2010
    Адрес
    Пенза
    Сообщений
    332
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А дисплей куда подключать?

  8. #187

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от kox Посмотреть сообщение
    А дисплей куда подключать?
    Дисплей пока что никуда, я еще думаю над ним пока что на карту кидается default.trd и с ним идет работа. Но, в целом, пинов еще достаточно и для дисплея и для кнопок.

    PS: пока что свободные пины - PB1, PC0-PC5, итого 7 штук.


    PS2: всё еще есть некоторые проблемы, связанные с переключением сторон в процессе чтения дорожки, надеюсь удастся окончательно побороть с новым подходом к чтению сектора.
    Последний раз редактировалось EvgenRU; 12.04.2016 в 20:20.

  9. #188

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Итак, товарищи, есть проблема с переключением сторон, как я уже говорил, сторона может измениться для любого сектора дорожки, и это факт!
    Таким образом, нужно хранить в памяти сектор одновременно для двух сторон, т.е. под это дело придется использовать целый 1К памяти!!! + грузить 1К с флешки после отправки двух секторов. Буду пытаться провернуть эту операцию, так что ожидайте. Тот вариант, что есть сейчас, работает, но не для всех файлов, т.е. попадаются такие, которые расположены в середине дорожки и они могут не грузиться.

  10. #189

    Регистрация
    12.03.2016
    Адрес
    г. Нижний Новгород
    Сообщений
    28
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Что если в момент смены стороны, заставить подождать контроллер дисковода (как будто не читается или более культурно),
    а в это время подготовить данные для дугой стороны, такие ситуации видимо не часто происходят и не сильно замедлят в реале.

  11. #190

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AlexNN Посмотреть сообщение
    Что если в момент смены стороны, заставить подождать контроллер дисковода (как будто не читается или более культурно),
    а в это время подготовить данные для дугой стороны, такие ситуации видимо не часто происходят и не сильно замедлят в реале.
    К сожалению, это именно текущий вариант, практика показала, что смена стороны может происходить довольно часто, видимо турбоформат сказывается или еще что.

    Так что секторы обеих сторон должны быть в памяти на случай смены стороны. Я уже, в принципе, этот вариант сделал, он работает, осталось допилить и дооптимизировать, надеюсь завтра-послезавтра выложу на гитхаб. Но памяти осталось примерно 200 байт )

Страница 19 из 54 ПерваяПервая ... 151617181920212223 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 24
    Последнее: 08.12.2012, 19:00
  2. Тестер транзисторов на ATmega8
    от ILoveSpeccy в разделе Творчество
    Ответов: 10
    Последнее: 19.05.2011, 15:03
  3. Ответов: 0
    Последнее: 31.01.2007, 18:18

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •