Автор |
Сообщение |
|
Дата: 19 Фев 2014 06:46:01 · Поправил: darkstar (19 Фев 2014 15:17:55)
#
Так.
Похоже, что описание команд интерфейса не соответствует реальному их выполнению.
Разбор веду по ПЗУ Конкурса.
Эхо-сигнал отсылается сразу же после его получения.
Т.е. последовательность такая:
- микросхема контроллера ИРПС приняла байт и выставила IRQ3;
- процессор отвлёкся на прерывание 270 и перешёл по вектору 002 266;
- сохранили в стек регистры R0, R1, R2, R3;
- прочитали принятые данные из контроллера ИРПС;
- выделили младший байт (т.к. проц 16-разрядный, и соответственно, читает 16-разрядное слово);
- проверили регистр состояния контроллера ИРПС,
если не было ошибок стопа, то
- передаём эхо-сигнал (отсылаем байт обратно в ИРПС).
И только потом начинается обработка принятого байта...
Если в любое время принят байт 10 <ПС>, то производится очистка принимаемой информации.
Это команда на приём новой команды.
Любая команда не может быть длиннее 10 байт.
Если принято более 10 байт с момента поступления команды <ПС>,
то производится очистка ранее принятой информации и завершение подпрограммы.
Первый байт команды должен быть <ПС> (код 0х0А).
Второй байт команды - латинская буква (код от 0х41 до 0x5А) или символ <&> (код 0х26).
Уточнение по второму байту: из латинских букв доступны <C>, <D>, <E>, <F>, <G>, <H>, <I>, <J>, <K>, <L>, <O>, <R>, <Y>, <Z>.
Символ <&> эквивалентен <Z>, т.к. в процессе проверки правильности формата принятой команды код <&> заменяется на <Z>.
|
|
Дата: 19 Фев 2014 15:16:00 · Поправил: darkstar (19 Фев 2014 15:28:30)
#
Кстати, в части работы с ИРПС, прошивки весьма разные.
Прошивка Конкурса (была записана в микрухах 89 года выпуска) на установку частоты реагировала парой-тройкой байт.
Почти то же и у второй прошивки, что была в микрухах 1991 года.
А вот прошивка hs_19 (с микрух какого года считана - неизвестно) возвращает обратно установленную частоту, и свои режимы.
Теперь понятно, почему в ТО протокол так туманно описан.
Просто разработчики сами плохо представляли, что и как должно работать.
В результате первые версии прошивок с ИРПС работали плохо, а последующие должны были сохранять совместимость с предыдущими... ну в общем - как всегда...
И толку в быстром 30-миллисекундном синтезе, если управление не может обрабатывать команды быстрее чем за 300 мс?
Думается мне, что надо как минимум выставлять байт эха только после успешного выполнения команды.
А при сбое отправлять байт, закодированный как "сбой".
Предварительно, текущая схема работы выглядит так:
- приём <ПС>,
- эхо <ПС>, ожидание байта команды,
- приём команды, эхо команды,
- приём данных, эхо на каждый байт данных,
- ожидание <ВК>,
- приём <ВК>, эхо <ВК>,
- проверка правильности формата,
- поиск подпрограммы по байту команды,
- выполнение подпрограммы.
|
Реклама Google
|
|
|
Дата: 19 Фев 2014 15:48:38
#
darkstar
Почти то же и у второй прошивки, что была в микрухах 1991 года.
А вот прошивка hs_19 (с микрух какого года считана - неизвестно) возвращает обратно установленную частоту, и свои режимы.
Дело не в дате выпуска мс. Они вполне могут быть и 85-87г.в. Дело, скорее в дате выпуска устройств.
Мои датированы 91-92 годами. Предыдущие и последующие ревизии могут отличаться.
|
|
Дата: 19 Фев 2014 16:55:04 · Поправил: darkstar (19 Фев 2014 17:48:13)
#
Понятно, но обычно в девайсы ставят новые микросхемы.
Раз стоят РФ-ки 91 года, значит прошивка уж точно не позднее 1991 :)
А вот в РФ 89 года выпуска вполне может помещаться более древняя версия.
По командам установки частоты ИРПС-а планирую вырулить на подпрограммы установки частоты (хотя кое-какие наработки уже есть).
А там и до синтеза недалеко :)
По микрухам: крайний срок 20 марта, до этого времени не дают диспут открыть...
буду ждать...
может пока какой-нить ультрафиолетовый стиратель соорудить?
|
|
Дата: 19 Фев 2014 16:58:04 · Поправил: hs_19 (19 Фев 2014 17:00:37)
#
darkstar
Понятно, но обычно в девайсы ставят новые микросхемы.
До махровой "катастройки", в принципе, так и было.
Разброс по датам выпуска элементов в одном изделии в пределах одного года.
Потом такая сборная солянка началась.
Формуляр, или, если есть маркировка на шильдике, с названием.
|
|
Дата: 19 Фев 2014 17:43:57 · Поправил: darkstar (19 Фев 2014 17:50:02)
#
Есть мысль выкинуть штатный протокол обмена и вписать базовый протокол ICOM-а.
Он реально проще и быстрее.
Да и проблем с совместимостью с SDR-овскими программами не будет :)
В любом случае, сначала надо принять команду, потом попытаться выполнить, и уж если не получиться - прислать в ответ ошибку.
Такое впечатление, будто взяли готовый модуль-подпрограмму ИРПСа, и вкорячили в основной код.
Оптимизация там и не ночевала...
|
|
Дата: 19 Фев 2014 19:34:20 · Поправил: hs_19 (19 Фев 2014 19:35:19)
#
darkstar
Такое впечатление, будто взяли готовый модуль-подпрограмму ИРПСа, и вкорячили в основной код.
Оптимизация там и не ночевала...
А смысл? Денег же дали... За успешное решение.
Меня тоже несколько вымораживает то обстоятельство, что синтез, даже по нынешним меркам шустрый, а управление через задницу...
|
|
Дата: 20 Фев 2014 04:02:32 · Поправил: darkstar (20 Фев 2014 05:50:34)
#
Ещё раз посмотрел команды CI-V. Что-то тоже много байт пересылается в пустую :)
Короче говоря, надо убрать подтверждение каждого принятого байта (эхо).
Отправка эха при написании программы управления тоже попила много крови - в многозадачной системе Windows иногда случалось так, что какой-нибудь байт задерживался в передаче (то ли поток тормозился, то ли контроллер откладывал передачу на потом). В результате байт передавался уже за пределами цикла передачи и принимался программой как начало новой команды. На что отсылалось эхо. И программа входила в цикл. Помогла только установка задержек в 5 мс. Но это опять же необоснованные тормоза...
Вместо этого надо ввести новую команду. Например, <A> :)
И если команда принята успешно, то по завершении всех операций РПУ отсылает <A>, подтверждая готовность принять новые данные.
Так будет минимум вдвое быстрее.
Плюс ещё пододвинуть код сдвига частоты по шагам (10-100-1000 Гц) в самое начало алгоритма, ибо это будут самые часто используемые команды (сканирование). Они должны выполняться быстрее всего.
Затем пойдёт установка частоты. А потом уже всё остальное.
Во, нашёл-таки таблицу кодировки символов. Это КОИ-7, набор Н2 |
|
Дата: 21 Фев 2014 00:18:35
#
Денег же дали...
Это в 92 то? В это время остались только те, кому год-два до пенсии, да и эти потом ушли.
Денег тогда платили столько, что только на дорогу хватало, да на поесть маленько...
Так что оптимизировать там наверняка есть что, и результаты могут обрадовать.
|
|
Дата: 21 Фев 2014 04:13:09
#
Ещё раз по скорости.
Обмен идёт 9600 бит/сек.
В пакете один стартовый бит, восемь информационных бит, и два стоповых бита. Итого 11 бит.
Значит, фактически пересылается 9600/11 = 872 байта в секунду.
Другими словами, на пересылку одного байта уходит 1/872 = 1,15 мс времени.
Команда установки частоты: <ПС><F><2><9><9><9><9><9><9><ВК> = 10 байт.
Учитывая эхо = 20 байт.
20 байт пройдут по ИРПС за 23 мс.
Так что теоретически, существующий протокол позволяет реализовать потенциал 30-мс синтезатора.
Вроде всё правильно посчитал :)
|
|
Дата: 21 Фев 2014 04:20:44 · Поправил: darkstar (21 Фев 2014 04:52:47)
#
Подойдём с другой стороны.
Процессор К1801ВМ1 на частоте 5 МГц имеет производительность 500.000 простых регистровых операций.
То есть, одна регистровая операция выполняется за 10 тактов.
У нас тактовая частота = 1,536 МГц (0,65 мкс). Значит 10 тактов это 10/1536000 = 6,5 мкс.
Получается, что процессор за время передачи одного байта по ИРПС (1,15 мс) успеет выполнить (1,15*1000/6,5) = 177 простых операций.
Вроде как этого должно хватать для принятия и обработки одного байта.
Тогда вопрос - почему эта хреновина не работает на такой частоте?
Может быть обращения к регистрам блоков занимают много времени?
Но этих обращений немного.
Может сам контроллер ИРПС (1002ХЛ1) тормозно работает?
Или прерывание долго обрабатывается?
Мерил интервалы при работе программы Конкурса.
Время между отправкой команды <ПС> и её эхом - 63 мс.
В остальном, задержка между отправленным байтом и его эхом варьируется от 47 до 94 мс.
Полный цикл отправки команды на установку частоты занимает 875 мс.
Но тут влияют задержки, установленные со стороны управляющей программы.
На своей программе я передавал частоту каждые 300 мс и кое-как это работало (но на прошивке hs_19)
Сильно мешает информация, идущая уже после приёма команды.
В прошивке Конкурса это выглядит так:
устанавливаем частоту (эхо не пишу) <ПС><F><0><4><1><2><3><4><5><ВК>
затем пауза на 172 мс
и вот такой обмен, инициатором которого является Бригантина, после которого РПУ вылетает в ошибку:
РПУ: <ПС>
программа: <ПС>
РПУ: <F>
программа: <F>
РПУ: <ПС><ПС> (без паузы)
программа: <ПС>
РПУ: <ПС>
программа: <ПС>
РПУ: <R>
программа: <R>
РПУ: <ПС><ПС> (без паузы)
программа: <ПС>
Сам я был бы удовлетворён, если бы удавалось устанавливать любую частоту за 100...200 мс.
|
|
Дата: 21 Фев 2014 07:45:45 · Поправил: darkstar (21 Фев 2014 07:50:37)
#
И ещё.
Я после включения РПУ ставил задержку на отображение приветствия.
Число циклов поставил "от балды" (1024 малых, 365 больших), зато померил время (вручную, секундомером) - 5,4 сек.
В малом цикле две команды, в большом - 4. В результате проц выполнил ((1024*2)+4)*365 = 748 980 команд за 5,4 секунды.
Команды довольно простые: MOV, DEC, BEQ, BNE, BR.
Значит, скорость выполнения команд 138 700 команд в секунду или 7,2 мкс на команду.
Выше по ТТХ должно получаться 6,5 мкс, так что со скоростью выполнения простых команд более-менее разобрались.
|
|
Дата: 22 Фев 2014 18:31:49 · Поправил: darkstar (22 Фев 2014 19:09:47)
#
Сегодня ещё раз прогнал свою прогу с Бригантиной.
На 300 мс сканирование косячит. На 500 мс норм.
Вот так выглядит обмен по ИРПС при установке частоты (прошивка hs_19):
отправлен байт: 10 = 0x0A <ПС>
принято эхо: 10 = 0x0A [ПС]
отправлен байт: 70 = 0x46 <F>
принято эхо: 70 = 0x46 [F]
отправлен байт: 48 = 0x30 <0>
принято эхо: 48 = 0x30 [0]
отправлен байт: 53 = 0x35 <5>
принято эхо: 53 = 0x35 [5]
отправлен байт: 53 = 0x35 <5>
принято эхо: 53 = 0x35 [5]
отправлен байт: 52 = 0x34 <4>
принято эхо: 52 = 0x34 [4]
отправлен байт: 55 = 0x37 <7>
принято эхо: 55 = 0x37 [7]
отправлен байт: 49 = 0x31 <1>
принято эхо: 49 = 0x31 [1]
отправлен байт: 55 = 0x37 <7>
принято эхо: 55 = 0x37 [7]
отправлен байт: 13 = 0x0D <ВК>
принято эхо: 13 = 0x0D [ВК]
****************
принят байт: 10 [ПС]
передано эхо: 10
принят байт: 70 [F]
передано эхо: 70
принят байт: 48 [0]
передано эхо: 48
принят байт: 53 [5]
передано эхо: 53
принят байт: 53 [5]
передано эхо: 53
принят байт: 52 [4]
передано эхо: 52
принят байт: 55 [7]
передано эхо: 55
принят байт: 49 [1]
передано эхо: 49
принят байт: 55 [7]
передано эхо: 55
принят байт: 13 [ВК]
передано эхо: 13
принят байт: 10 [ПС]
передано эхо: 10
принят байт: 82 [R]
передано эхо: 82
принят байт: 49 [1]
передано эхо: 49
принят байт: 13 [ВК]
передано эхо: 13
Вот программа.
Разбил на две части, т.к. не проходит лимит.
Расширение ех1 переименовать на ехе, т.к. ругается антивирус.
На момент запуска программы, наличие СОМ-порта обязательно (или его виртуального образа через USB).
Проверял только на ХР. Работает с платой, выложенной тут ранее.
http://www.radioscanner.ru/uploader/2014/22_02_2014.part1.zip
http://www.radioscanner.ru/uploader/2014/22_02_2014.part2.zip |
|
Дата: 11 Мар 2014 20:08:58
#
Как успехи?
|
|
Дата: 17 Мар 2014 06:51:16 · Поправил: darkstar (17 Мар 2014 06:58:50)
#
Почта потеряла мои ЭРПЗУшки.
Написал китайцам - выслали ещё раз.
Без практического и быстрого изменения кода "Бригантины" не будет толку в остальных телодвижениях.
Пока что составляю блок-схемы подпрограмм. Всего их примерно 240 штук :)
Из них готово 55.
Тут выкладывать их не позволяет ограничение по объёму файлов. На сторонний ресурс заливать желания нет - раздача прикроется и не соберёшь.
В программу управления написал ещё разных функций и плюшек - мигает, как разноцветная ёлка.
Но всё портит обрыв связи при ответе РПУ.
Сейчас у меня переезд, так что пока всё в замороженном виде... Через недельку-другую посмотрим.
|
|
Дата: 17 Мар 2014 11:29:20
#
darkstar
> На сторонний ресурс заливать желания нет - раздача прикроется и не соберёшь.
Dropbox дает до 3Гб бесплатно.
|
|
Дата: 17 Мар 2014 18:09:59
#
|
|
Дата: 17 Мар 2014 19:54:12 · Поправил: hs_19 (17 Мар 2014 19:56:28)
#
18432
может быть удобнее и надёжнее использовать Гугл Документы
Кстати да. Хорошая штука. С учетом местных особенностей, разумеется... Я про екзешники.
|
|
Дата: 18 Мар 2014 04:20:22 · Поправил: darkstar (18 Мар 2014 04:46:09)
#
|
|
Дата: 08 Апр 2014 16:55:09
#
А какие антенны используются с Бригантиной?
|
|
Дата: 14 Апр 2014 07:36:39 · Поправил: darkstar (14 Апр 2014 07:36:56)
#
К сожалению сейчас я только что переехал.
Бригантина стоит в кладовке.
Антенн никаких нет...
Микросхемы так и не пришли...
|
|
Дата: 21 Апр 2014 06:26:14
#
Ура! пришли микросхемы!
В скором времени проведу эксперименты.
|
|
Дата: 22 Апр 2014 12:34:31
#
Ждем продолжения!
|
|
Дата: 23 Апр 2014 10:31:21 · Поправил: darkstar (23 Апр 2014 15:55:09)
#
Вот думается мне насчёт РПЗУ-шек Х28С256:
У меня микросхемы 32К х 8бит каждая. Их две штуки. Вместе = 32К х 16 бит.
Адресных линий на микросхемах - от А0 до А14.
В вычислителе стоят К573РФ4А: 8К х 8бит, две = 8К х 16 бит.
Адресных линий - от А0 до А12.
Есть мысль подключить к Х28С256 недостающие две линии :)
Поскольку нулевой провод адресной шины микропроцессора в определении адреса ОЗУ/ПЗУ не участвует (в любом случае читается полное 16-битное слово), то Х28С256 сразу перекроет весь доступный диапазон адресов процессора К1801ВМ1. Все 64 Кбайта.
Единственно, нужно подправить схему селектора адресов, чтобы ПЗУ не включалось при обращении к ОЗУ и регистрам.
За вычетом этих областей получим две рабочие области ПЗУ:
- 000 000 ... 057 777 = 24 Кбайта,
- 120 000 ... 177 757 = 24 Кбайта.
итого: 48 Кбайт ПЗУ (как у первого Спектрума) - можно написать вполне приличные программы.
Сейчас доступно только 16 Кбайт ПЗУ...
|
|
Дата: 23 Апр 2014 10:37:31
#
Вот вы мне скажите - зачем нужны Бригантины, если есть Icom - Yaesu - AOR и все прочие?
Кроме шуток. Экономия денег? Лучше принимает? Желание повозиться с паяльником? Ностальгия по годам работы/службы? Особый такой "ламповый" фетишизм? Вот правда интересно :)
|
|
Дата: 23 Апр 2014 15:47:49
#
Да, Icom есть, и не один :) Kenwood тоже есть, а вот Yeasu принципиально не держу :)
Но в технологическом плане они не доставляют удовольствия...
Так же можно спросить - зачем Icom, когда есть сотовая связь и интернет?
Экономии уж точно никакой :) По поводу "лучше принимает" ... не знаю, сильные станции вроде одинаково идут, а слабые особо не слушал...
Таки да, желание повозиться с паяльником!
Определённый технологический фетишизм тоже присутствует :) По этой же причине держу Р-160, Лазурь, Р-140, Р-155, Р-250М...
|
|
Дата: 23 Апр 2014 16:06:09
#
darkstar
Все понял, спасибо за ответ :)
|
|
Дата: 23 Апр 2014 17:32:52 · Поправил: darkstar (23 Апр 2014 17:41:24)
#
Да и ещё допишу:
если бы это был один голый вычислитель на К1801ВМ1, то и нахрен он кому нужен! Обычная ДВК-шка первых выпусков.
Но тут к нему подключено столько периферийных устройств!!!
И всеми ими можно программно управлять!
Это, блин, как робот на ножках :)
P.S.
Прошил для проверки две микросхемы ЭРПЗУ.
Прошились на удивление быстро и без проблем.
Теперь надо подключить Бригантину к питанию, вывести кабель ИРПС, и подготовить модуль вычислителя.
|
|
Дата: 23 Апр 2014 20:03:58 · Поправил: hs_19 (23 Апр 2014 20:05:39)
#
Olenevod
Способы и средства получения удовольствия от хобби у всех разные.
Свежекупленный 7700 меньше радует, чем отремонтированный 309а.
Или, скажем, поднятая из руин поворотка п-10 порадует в разы больше, чем новая еса Г-2800.
У меня так.
|
|
Дата: 02 Май 2014 15:18:18 · Поправил: hs_19 (02 Май 2014 19:36:16)
#
darkstar
Катастрофически не хватает медленного ару на нбп (она, напомню,
у меня сделана путем замены фильтра в режиме j7 на 6й кнопке)
Дикий дискомфорт.
Для информации:
Ремонтный модуль от 170го подходит к Бригантине как "родной",
шланг ремонтный подходит от "Прыжка".(Жесткий только очень, неудобно)
Вот вч кабельные сборки - малость дебильные, - не подходят ни от чего...
Не сказать, что автомат Калашникова, но, тем не менее - вполне все удобно.
(Разумеется, если знаешь, что делаешь)))
|
Реклама Google |
|