Магнитофонный интерфейс для PC

Печатные платы, программируемая логика, разработка и изготовление аппаратуры

Moderator: Shaos

User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

а, тогда ок.

ну а почему реалом нельзя сдампить ленту, а блоки сохранить как файлы? переименовывать все автоматом может не получиться.
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

MC68k wrote:а, тогда ок.

ну а почему реалом нельзя сдампить ленту, а блоки сохранить как файлы? переименовывать все автоматом может не получиться.
Загляни сюда. Там у каждого формата свои разметки и контрольки, а считать то хочется без ошибок. Сливать со спеца в комп - это лишняя ступень, хотя в принципе, сам Спец у меня есть и он рабочий.
Last edited by HardWareMan on 05 Jan 2014 07:12, edited 1 time in total.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

HardWareMan wrote:ОК, а теперь, мистер эмуляторщик, напиши прожку, которая под многозадачностью будет нормально отмерять временные интервалы (312мкс для 2400 и 625мкс для 1200) и не терять битики. Впрочем, под DOS это тоже довольно-таки проблематично, но более вероятно, если управлять прерываниями. Или ты думаешь, что я не изучал данный вопрос настолько глубоко? Я, между прочим, делал выгружалку под DOS, которая все делала верно за счет таймера (сбивая часы DOS лол).
Я сразу увидел, что глубоко ты этот вопрос не изучал, хотя и вроде как программёр
на Дельфи... Ну ты посещай иногда ваше "Королевство Дельфи"... :wink:

Один ум - хорошо, но даже если он хардварный - много умов всё равно лучше. :wink:
На моей памяти вопрос измерения точных временных интервалов в многозадачном
режиме люди порешали совсем не вчера, мистер жестяньщик...
И предложили даже не единственное решение... :-?
Да и таймером можно покомандывать, между прочим, совсем не сбивая часы DOS.
Так-то! :3



PS. Вот чего я, грешен, не изучал, поскольку нужды пока не было, но есть информация,
что на современных двухядерных процах проблема решается ещё проще.
Но это - только где-то слышал мимоходом, не поручусь...
iLavr
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Lavr wrote:Один ум - хорошо, но даже если он хардварный - много умов всё равно лучше. :wink: На моей памяти вопрос измерения точных временных интервалов в многозадачном режиме люди порешали совсем не вчера, мистер жестяньщик... И предложили даже не единственное решение... :-?
Много текста и все не по делу. Впрочем, как обычно. Приводи конкретные варианты или проходи мимо. (с) Даже глубокий гуглеж выдает однозначный результат: никак. Только через команду RDTSC, которая должна крутиться в реалтаймовом приоритете (желательно в 0 кольце, но кто тебя туда пустит под виндами?), нагружая на 100% процессор. И измерять надо, кстати, не просто произвольные отрезки времени, а привязываясь конкретно к перепаду, приходящему с ленты вообще в любой произвольный момент времени. Вот, читани к примеру:
Имхо нереально. Нужен проц реального времени. А здесь суперскалярный процессор, у него задача совсем другая. Выполнить, как можно больше инструкций за квант времени. И все под это заточено, кешь, очередь, предвыборка, не последовательное выполнение команд, а помере готовности операндов. Вобщем все для многозадачности, где время не критично для отдельных команд, главное - быстрый общий результат.
Вернее, если сильно упереться, для одной конфигурации наверное можно добиться, более менее стабильного результата. Но новая конфигурация и делай все по новой. Без спец контроллера с процессором реального времени, мне думается тяжело реализовать.
если нужна очень большая точность. то реально собрать девайс на микроконтроллере который будет вешаться скажем на COM порт и вызывать прерывание в зависимости от полученных данных из порта. а там уже обработчик прерывания со всеми вытекающими последствиями...
Lavr wrote:Да и таймером можно покомандывать, между прочим, совсем не сбивая часы DOS. Так-то! :3
Касаемо часов DOS: можно вызывать ее прерывание через требуемый интервал времени, эмулируя медленный таймер, но ее подпрограмма занимала слишком много тактов, что сбивала программу, которая должна была работать на 286 @16МГц.
Last edited by HardWareMan on 05 Jan 2014 07:12, edited 1 time in total.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

HardWareMan wrote:Много текста и все не по делу. Впрочем, как обычно. Приводи конкретные варианты или проходи мимо. (с)
А у тебя топик не по делу:"я, Хардвермен - крутой железячник с вот таким шворцем
(пруф.пик), а Лавр - жалкий эмуляторщик
"... :lol:

Это то, что я в совокупности увидел. Конкретного - просто ничего.
Ни схем, ни программ... я бы и шел себе мимо, если бы ты не упоминал меня всуе...

Но я-таки пойду себе мимо, раз уж тебя не пускают в 0 кольцо защиты, где работают
драйверы устройств, то я не вижу дальнейших причин для продолжения этого разговора.
iLavr
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Lavr wrote:Но я-таки пойду себе мимо, раз уж тебя не пускают в 0 кольцо защиты, где работают драйверы устройств, то я не вижу дальнейших причин для продолжения этого разговора.
Драйвера работают в 1 кольце, вообще-то. В 0 работает обработчик исключений. Но в 9х, которые ты так любишь, да, 1 и 2 кольцо не используются: 0 для обработчика и драйверов, и 3 для всего остального. Да и кому нужен драйвер, вешающий процессор (или даже одно его ядро) на 100%. Пытайся еще.
Last edited by HardWareMan on 05 Jan 2014 07:15, edited 1 time in total.
User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

HardWareMan wrote:
MC68k wrote:а, тогда ок.

ну а почему реалом нельзя сдампить ленту, а блоки сохранить как файлы? переименовывать все автоматом может не получиться.
Загляни сюда. Там у каждого формата свои разметки и контрольки, а считать то хочется без ошибок. Сливать со спеца в комп - это лишняя ступень, хотя в принципе, сам Спец у меня есть и он рабочий.
эээ... ну можно было бы запилить для спеца прогу-дампер с поддержкой всех форматов и контрольных сумм.(это я так подталкиваю допилить поддержку SD-card)
я помню, что первоначально идея была таскать девайс, а значит "project complete".
безумный вариант - заломать китайский MP3 плеер, который на разновидности Z80. там и накопитель встроенный и вход микрофона есть.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

HardWareMan wrote:Драйвера работают в 1 кольце, вообще-то. В 0 работает обработчик исключений. Но в 9х, которые ты так любишь, да, 1 и 2 кольцо не используются: 0 для обработчика и драйверов, и 3 для всего остального. Да и кому нужен драйвер, вешающий процессор (или даже одно его ядро) на 100%. Пытайся еще.
Плохому танцору - вечно что-то мешает... то Lavr, то DOS, то Венда, то кольца не те... :wink:

Что-то читал я магнитофонный сигнал - безо всяких контроллеров и не делал из этого
ни открытий ни проблем...

Image

Lavr wrote:...но есть информация,
что на современных двухядерных процах проблема решается ещё проще.
Действительно, информация есть, и она следующая: Real Time eXtension
iLavr
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

MC68k wrote:эээ... ну можно было бы запилить для спеца прогу-дампер с поддержкой всех форматов и контрольных сумм.(это я так подталкиваю допилить поддержку SD-card)
Этот проект на полпути, ага. Единственное - это ручной выбор формата и скорости. Тем не менее, он работает.
MC68k wrote:я помню, что первоначально идея была таскать девайс, а значит "project complete".
Собственно, да.
Lavr wrote:Плохому танцору - вечно что-то мешает... то Lavr, то DOS, то Венда, то кольца не те... :wink:
Лавр не мешает, как это не странно звучит.
Lavr wrote:Что-то читал я магнитофонный сигнал - безо всяких контроллеров и не делал из этого
ни открытий ни проблем...
Ну, во первых, мы так и не узнали теххарактеристики сигнала - может ты на 32бода пищал на своей 9х. Во вторых, так и смущает:
Тут выяснилась некоторая подляна от "Гнусмаса" - длинный файл он, змей, выдаёт с каким-то аппаратным сбоем...
А может этот вовсе и не гнусмас, а как раз другое (то, что ты указал в первом предложении этого поста)?
Lavr wrote:Действительно, информация есть, и она следующая: Real Time eXtension
Знаю, что ты сразу прицепишься к словам, но скажу: а теперь покажи то же самое, но бесплатное и для моего ноута (iPIII 500MHz).
Last edited by HardWareMan on 05 Jan 2014 07:12, edited 1 time in total.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

HardWareMan wrote:
Lavr wrote:Действительно, информация есть, и она следующая: Real Time eXtension
Знаю, что ты сразу прицепишься к словам, но скажу: а теперь покажи то же самое, но бесплатное и для моего ноута (iPIII 500MHz).
Да я не цепляюсь к словам, это ты что-то взялся цепляться ко мне, как собачка, которой
на хвост наступили...
Я не обязан показывать тебе бесплатное ПО для твоего ноута, поскольку ты мальчик взрослый,
уже женатый и слово гугель знаешь... Не изображай из себя тут девочку-институтку...
А во-вторых, что бы я тебе не показал, ты точно будешь недоволен, потому что ты один тут -
"Дон-Кихот", а все стальные, мягко говоря, "погулять вышли"...
HardWareMan wrote:
Lavr wrote:Что-то читал я магнитофонный сигнал - безо всяких контроллеров и не делал из этого
ни открытий ни проблем...
Ну, во первых, мы так и не узнали теххарактеристики сигнала - может ты на 32бода пищал на своей 9х. Во вторых, так и смущает:
Тут выяснилась некоторая подляна от "Гнусмаса" - длинный файл он, змей, выдаёт с каким-то аппаратным сбоем...
А может этот вовсе и не гнусмас, а как раз другое (то, что ты указал в первом предложении этого поста)?
Да нет, это как раз "Гнусмас", потому что с магнитофона и уж тем более с самого "Специалиста"
никаких проблем не было...
И если считать сам "Специалист" - машиной реального времени, тем более, что и протоколы -
его оригинальные, то он и обнаружил, что "Гнусмас" даёт сбой.
Я же говорю выше, что ты здесь единственный "Дон-Кихот", остальные, значит, "глубоко
поисследовать проблему
" - ну никак без тебя не способны... :-?
Так вот сбой "Гнусмаса" я потом нашел на логическом анализаторе.

Что касается характеристик - то это типичные магнитофонные сигналы "Специалиста", или ты
думаешь я изобретал другие?

Я не делал из этой читалки никакой отдельной помпы, поскольку таких программ, как мне
казалось, достаточно, тем более, что и я сильно не оригинальничал, а во многом советовался с
Витей Пыхониным, чтобы не наступать на грабли, которые другие люди нашли и обошли...

Другое дело, что я свою программу предложил для оригинального применения - читать сигнал
из сотового, как из маленького диктофончика и реализовал возможность выдавать
сигнал магнитофонной записи из мидлет-вариантов "Спецтрумов" и "Специалистов".
HardWareMan wrote:
Lavr wrote:Плохому танцору - вечно что-то мешает... то Lavr, то DOS, то Венда, то кольца не те... :wink:
Лавр не мешает, как это не странно звучит.
Ну это на словах, а теперь смотрим, что на деле:
HardWareMan wrote:Пока одни эмулируют руками, другие занимаются реальными вещами.
HardWareMan wrote:Ничего не изменилось со времени критики Лаврентия.
А я слова критики не сказал, лишь отчекрыжил твой ЛУТ, как оффтоп.
HardWareMan wrote:Поначалу я, конечно, использовал звуковую плату... . Однако, из-за специфики сигнала и еще некоторых факторов так и не удалось добиться надежного чтения.
А многим другим - удалось, хотя они и не делали из этого фурора... Но значит тебе - что-то помешало? :wink:
HardWareMan wrote:Не хватило терпения.
И это может быть... 8)
HardWareMan wrote:Я, между прочим, делал выгружалку под DOS, которая все делала верно за счет таймера (сбивая часы DOS лол).
А много других людей делали такие штуки по DOS, успешно и не сбивая часов - примеров
для того-же "Спецтрума" - навалом. Значит тебе DOS мешала?
HardWareMan wrote:Драйвера работают в 1 кольце, вообще-то. В 0 работает обработчик исключений. Но в 9х, которые ты так любишь, да, 1 и 2 кольцо не используются: 0 для обработчика и драйверов, и 3 для всего остального.
Тут тебе уж точно Вынь-Хрюша мешала... Или моя - старушечка поперёк дороги встала? :wink:
HardWareMan wrote:Да и кому нужен драйвер, вешающий процессор (или даже одно его ядро) на 100%.
А я и говорю - любой другой вариант, кроме твоего собственного, тебя никак не удовлетворит! :wink:
HardWareMan wrote:Пытайся еще.
И нафиг бы мне оно сплющилось? Тролля никгда не удовлетворить желудочно... :lol:
iLavr
User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

ололо! еда! набигаем! :lol:
Этот проект на полпути, ага. Единственное - это ручной выбор формата и скорости. Тем не менее, он работает.
а разве по пилот-тону нельзя определить скорость?
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

MC68k wrote:
Этот проект на полпути, ага. Единственное - это ручной выбор формата и скорости. Тем не менее, он работает.
а разве по пилот-тону нельзя определить скорость?
Текстовые редакторы используют двухтональный раккорд. Можно, конечно, добавить алгоритм определения таких раккордов.
MC68k wrote:ололо! еда! набигаем! :lol:
Оставь. Собака лает - караван идет.
Last edited by HardWareMan on 05 Jan 2014 07:12, edited 1 time in total.
User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

HardWareMan wrote:Текстовые редакторы используют двухтональный раккорд. Можно, конечно, добавить алгоритм определения таких раккордов.
а, вон оно что.
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

MC68k wrote:
HardWareMan wrote:Текстовые редакторы используют двухтональный раккорд. Можно, конечно, добавить алгоритм определения таких раккордов.
а, вон оно что.
Я же давал ссылку:
HardWareMan wrote: 1. Блок кодов:
***
Раккорд - 512 байт 00H.

2. Блок кодов с именем (монитор):
***
Раккорд перед именем - 512 байт 00Н, между именем и блоком кодов - 256 байт 00Н.

3. Бейсик "Практик":
***
Раккорд - 256 байт ААН и 256 байт 00Н. Между именем и листингом - 256 байт 00Н.

4. Редактор текстов "Практик" (и "Микрон" тоже, ЕМНИП):
***
Раккорд - 128 байт ААН, 128 байт 00Н, 128 байт ААН, 128 байт 00Н. Между именем и текстом - 256 байт 00Н.
А по манчестеру, чередование 0 и 1 дает нам чистый тон, равный половине несущей частоты (0AAH звучит так же, как и 55Н, но по исходникам выгружается именно 0ААН). Пожалуй, ты прав, устройство данной ветки работает как задумывалось, а я все же переключусь на оригинальную железку. Буду пилить поддержку SD.
Last edited by HardWareMan on 05 Jan 2014 07:13, edited 1 time in total.
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Ища порядок бит памяти для Ориона нашел вот такой безмозглый убердевайс в Радио ¹6 за 1990 год.
Image
Идея основана на том, что одновибратор после запуска нельзя перезапустить, поэтому, выделенные фронты автоматически синхронизируют одновибратор так, как надо. Думаю, это тоже интересно.

Некоторое время назад я так же рассчитал еще один способ декодирования манчестера. Суть его заключается в том, чтобы измерять время между перепадами. А логика заключается в следующем:
1. Начальное состояние исходного бита = 0.
2. Есть константа времени, равная как раз 3/4 времени передачи бита. Как у обычного метода.
3. Если время интервала между перепадами короче константы - считаем интервал. Когда набирается 2 интервала - записываем старое значение исходного бита в регистр приема и сбрасываем счетчик. Т.е., маленькие интервалы считаем попарно. Правильный манчестер другого не позволяет.
4. Если интервал длиннее константы, то инвертируем исходное состояние бита и записываем его сразу в регистр.

Соль в том, что код всегда будет прямым, по раккорду можно будет измерять на константу чтения, а синхросигналом считать следующую последовательность: первый длинный сигнал после серии коротких + первый байт равен синхробайту. И при этом не будет мешать двухтональный раккорд. Я уже делал программку и она работает. Учитывая, что у контроллеров есть прерывание по перепаду - для них вообще это будет не сложно.

Code: Select all

Сигнал   ____----____----____--------____----____----________----____--------____----________----
         ----____----____----________----____----____--------____----________----____--------____
Перепады |   |   |   |   |   |       |   |   |   |   |       |   |   |       |   |   |       |
Анализ     s   s   s   s   s     l    s0  s1  s0  s1     l    s0  s1     l    s0  s1      l   s0
Первичная синхронизация    s=>l
Сдвиг          0       0         1        1        1     0         0     1         1      0
Вторичная синхронизация (E6H)    1        1        1     0         0     1         1      0
Как-то так. Я понял, что основная проблема это именно в преобразовании аналога в цифру, т.е. начальный компаратор. После подключения компаратора из устройства из первого поста к звукокарте все ранее написанные программы стали работать стабильно.
Last edited by HardWareMan on 05 Jan 2014 07:13, edited 1 time in total.