Магнитофонный интерфейс для PC
Moderator: Shaos
-
- Retired
- Posts: 1328
- Joined: 25 Jul 2011 00:14
- Location: WWW
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
Загляни сюда. Там у каждого формата свои разметки и контрольки, а считать то хочется без ошибок. Сливать со спеца в комп - это лишняя ступень, хотя в принципе, сам Спец у меня есть и он рабочий.MC68k wrote:а, тогда ок.
ну а почему реалом нельзя сдампить ленту, а блоки сохранить как файлы? переименовывать все автоматом может не получиться.
Last edited by HardWareMan on 05 Jan 2014 07:12, edited 1 time in total.
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Я сразу увидел, что глубоко ты этот вопрос не изучал, хотя и вроде как программёрHardWareMan wrote:ОК, а теперь, мистер эмуляторщик, напиши прожку, которая под многозадачностью будет нормально отмерять временные интервалы (312мкс для 2400 и 625мкс для 1200) и не терять битики. Впрочем, под DOS это тоже довольно-таки проблематично, но более вероятно, если управлять прерываниями. Или ты думаешь, что я не изучал данный вопрос настолько глубоко? Я, между прочим, делал выгружалку под DOS, которая все делала верно за счет таймера (сбивая часы DOS лол).
на Дельфи... Ну ты посещай иногда ваше "Королевство Дельфи"...

Один ум - хорошо, но даже если он хардварный - много умов всё равно лучше.

На моей памяти вопрос измерения точных временных интервалов в многозадачном
режиме люди порешали совсем не вчера, мистер жестяньщик...
И предложили даже не единственное решение...

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

Это то, что я в совокупности увидел. Конкретного - просто ничего.
Ни схем, ни программ... я бы и шел себе мимо, если бы ты не упоминал меня всуе...
Но я-таки пойду себе мимо, раз уж тебя не пускают в 0 кольцо защиты, где работают
драйверы устройств, то я не вижу дальнейших причин для продолжения этого разговора.
iLavr
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
Драйвера работают в 1 кольце, вообще-то. В 0 работает обработчик исключений. Но в 9х, которые ты так любишь, да, 1 и 2 кольцо не используются: 0 для обработчика и драйверов, и 3 для всего остального. Да и кому нужен драйвер, вешающий процессор (или даже одно его ядро) на 100%. Пытайся еще.Lavr wrote:Но я-таки пойду себе мимо, раз уж тебя не пускают в 0 кольцо защиты, где работают драйверы устройств, то я не вижу дальнейших причин для продолжения этого разговора.
Last edited by HardWareMan on 05 Jan 2014 07:15, edited 1 time in total.
-
- Retired
- Posts: 1328
- Joined: 25 Jul 2011 00:14
- Location: WWW
эээ... ну можно было бы запилить для спеца прогу-дампер с поддержкой всех форматов и контрольных сумм.(это я так подталкиваю допилить поддержку SD-card)HardWareMan wrote:Загляни сюда. Там у каждого формата свои разметки и контрольки, а считать то хочется без ошибок. Сливать со спеца в комп - это лишняя ступень, хотя в принципе, сам Спец у меня есть и он рабочий.MC68k wrote:а, тогда ок.
ну а почему реалом нельзя сдампить ленту, а блоки сохранить как файлы? переименовывать все автоматом может не получиться.
я помню, что первоначально идея была таскать девайс, а значит "project complete".
безумный вариант - заломать китайский MP3 плеер, который на разновидности Z80. там и накопитель встроенный и вход микрофона есть.
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Плохому танцору - вечно что-то мешает... то Lavr, то DOS, то Венда, то кольца не те...HardWareMan wrote:Драйвера работают в 1 кольце, вообще-то. В 0 работает обработчик исключений. Но в 9х, которые ты так любишь, да, 1 и 2 кольцо не используются: 0 для обработчика и драйверов, и 3 для всего остального. Да и кому нужен драйвер, вешающий процессор (или даже одно его ядро) на 100%. Пытайся еще.

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

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

Так вот сбой "Гнусмаса" я потом нашел на логическом анализаторе.
Что касается характеристик - то это типичные магнитофонные сигналы "Специалиста", или ты
думаешь я изобретал другие?
Я не делал из этой читалки никакой отдельной помпы, поскольку таких программ, как мне
казалось, достаточно, тем более, что и я сильно не оригинальничал, а во многом советовался с
Витей Пыхониным, чтобы не наступать на грабли, которые другие люди нашли и обошли...
Другое дело, что я свою программу предложил для оригинального применения - читать сигнал
из сотового, как из маленького диктофончика и реализовал возможность выдавать
сигнал магнитофонной записи из мидлет-вариантов "Спецтрумов" и "Специалистов".
Ну это на словах, а теперь смотрим, что на деле:HardWareMan wrote:Лавр не мешает, как это не странно звучит.Lavr wrote:Плохому танцору - вечно что-то мешает... то Lavr, то DOS, то Венда, то кольца не те...
HardWareMan wrote:Пока одни эмулируют руками, другие занимаются реальными вещами.
А я слова критики не сказал, лишь отчекрыжил твой ЛУТ, как оффтоп.HardWareMan wrote:Ничего не изменилось со времени критики Лаврентия.
А многим другим - удалось, хотя они и не делали из этого фурора... Но значит тебе - что-то помешало?HardWareMan wrote:Поначалу я, конечно, использовал звуковую плату... . Однако, из-за специфики сигнала и еще некоторых факторов так и не удалось добиться надежного чтения.

И это может быть...HardWareMan wrote:Не хватило терпения.

А много других людей делали такие штуки по DOS, успешно и не сбивая часов - примеровHardWareMan wrote:Я, между прочим, делал выгружалку под DOS, которая все делала верно за счет таймера (сбивая часы DOS лол).
для того-же "Спецтрума" - навалом. Значит тебе DOS мешала?
Тут тебе уж точно Вынь-Хрюша мешала... Или моя 9х - старушечка поперёк дороги встала?HardWareMan wrote:Драйвера работают в 1 кольце, вообще-то. В 0 работает обработчик исключений. Но в 9х, которые ты так любишь, да, 1 и 2 кольцо не используются: 0 для обработчика и драйверов, и 3 для всего остального.

А я и говорю - любой другой вариант, кроме твоего собственного, тебя никак не удовлетворит!HardWareMan wrote:Да и кому нужен драйвер, вешающий процессор (или даже одно его ядро) на 100%.

И нафиг бы мне оно сплющилось? Тролля никгда не удовлетворить желудочно...HardWareMan wrote:Пытайся еще.

iLavr
-
- Retired
- Posts: 1328
- Joined: 25 Jul 2011 00:14
- Location: WWW
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
Текстовые редакторы используют двухтональный раккорд. Можно, конечно, добавить алгоритм определения таких раккордов.MC68k wrote:а разве по пилот-тону нельзя определить скорость?Этот проект на полпути, ага. Единственное - это ручной выбор формата и скорости. Тем не менее, он работает.
Оставь. Собака лает - караван идет.MC68k wrote:ололо! еда! набигаем!
Last edited by HardWareMan on 05 Jan 2014 07:12, edited 1 time in total.
-
- Retired
- Posts: 1328
- Joined: 25 Jul 2011 00:14
- Location: WWW
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
Я же давал ссылку:MC68k wrote:а, вон оно что.HardWareMan wrote:Текстовые редакторы используют двухтональный раккорд. Можно, конечно, добавить алгоритм определения таких раккордов.
А по манчестеру, чередование 0 и 1 дает нам чистый тон, равный половине несущей частоты (0AAH звучит так же, как и 55Н, но по исходникам выгружается именно 0ААН). Пожалуй, ты прав, устройство данной ветки работает как задумывалось, а я все же переключусь на оригинальную железку. Буду пилить поддержку SD.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Н.
Last edited by HardWareMan on 05 Jan 2014 07:13, edited 1 time in total.
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
Ища порядок бит памяти для Ориона нашел вот такой безмозглый убердевайс в Радио ¹6 за 1990 год.

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

Идея основана на том, что одновибратор после запуска нельзя перезапустить, поэтому, выделенные фронты автоматически синхронизируют одновибратор так, как надо. Думаю, это тоже интересно.
Некоторое время назад я так же рассчитал еще один способ декодирования манчестера. Суть его заключается в том, чтобы измерять время между перепадами. А логика заключается в следующем:
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.