Вход

Просмотр полной версии : О вопросах и проблемах тестирования COM-порта на ATM-turbo 2+ и ATM-turbo 3



Максагор
05.12.2019, 19:55
Камрады, долго думал, в какой из существующих тем про АТМ поднять вопрос. Но потом подумал, что вопрос про COM-порт требует отдельного поста.

После того как решилась проблема запуска прошивок v3.x на контроллере клавиатуры АТМ2+/3 благодаря выявленным причинам существовавших проблем и выпуска Камилем "всеядной" версии v3.2m с учетом выявленных недостатков, появилась возможность тестирования всех режимов контроллера на разных АТМках и, соответственно, возможность сравнения. Ну и мы с Алексеем Исмагиловым продолжили работу по тестированию, теперь уже COM-порта. И вот с чем столкнулись:

Раньше я проверял COM-порт дома в одиночку (соединялся по нульмодему с ноутбуком). Под это дело есть написанная Камилем Каримовым примитивная (только отправка/пример набиваемого на клавиатуре текста) терминалка под OS CP/M (вот она: http://atmturbo.nedopc.com/download/cpm/system/zxterm/zxterm.zip) При возможности настраивать сам COM-порт в контроллере на разную скорость от 1200 до 115200 бод, она в терминалке предустановлена (просто кидается в настройки конкретный байт константы - заменишь его в HEX-редакторе - будет другая настройка скорости) - т.е. программно из всяких "менюшек" из самой терминалки менять ее нельзя. И предустановленная скорость, согласно описанию Камиля, равна 19200 бод. В свое время, проверяя COM-порт, я удивился, что терминалка "завелась" почему-то на скорости 38400 бод. Тогда я подумал, что просто Камиль скинул мне "бинарник" терминалки с другой константой, но в сам код не залез и не проверил (а зря). И на этом временно под грузом иных дел проверку порта прекратили.

А теперь, когда мы начали проверять контроллер совместно с Алексеем на наших двух платах, то оказалось, что на его плате та же самая терминалка (взятая именно с того же самого образа диска - т.е. исключительно тот же бинарник) завелся у него на "православных" 19200 бод. Когда мы дискету с терминалкой вставили на мою АТМку, она опять запустилась на 38400 бод.

Мне стало интересно. И я-таки полез в закрома бинарника, и увидел, что константа правильная, и соответствует настройке на 19200 бод.

Тогда я, меняя константу, изготовил версии бинарников терминалки под все возможные скорости (отражена в названии файлов) и мы по очереди стали их запускать у меня и у Алексея. И получили весьма интересные результат. При этом надо добавить, что у меня стоит контроллер (с соответствующей прошивкой v 3.2m07) м кварцем на 7МГц (берется с платы), а у Алексея - прошивка v3.2m11 и кварц на 11.0592МГц

А результаты следующие.

Настройка терминалки - фактическая скорость работы

1200 бод - 1200 бод (сначала не завелась - работала со скоростью, установленной предыдущей терминалкой, но потом в мануале Камиля оказалась неверная константа - надо не 98dec, а 96dec)
2400 бод - 2400 бод
4800 бод - 4800 бод
9600 бод - 9600 бод
19200 бод - 38400 бод !!!!
38400 бод - 38400 бод
57600 бод - 38400 бод !!!!
115200 бод - 38400 бод !!!!

У Алексея Исмагилова получились несколько иные результаты:

1200 бод - 1200 бод
2400 бод - 2400 бод
4800 бод - 4800 бод
9600 бод - 9600 бод
19200 бод - 19200 бод
38400 бод - ВООБЩЕ НИ НА КАКОЙ СКОРОСТИ НЕ ЗАРАБОТАЛО!
57600 бод - 57600 бод
115200 бод - 57600 бод!!!

Вот такие дела. Ниже выкладываю образ диска (TRD-шник, с файловой системой CP/M внутри) с вариантами терминалки под разную скорость (названия файлов, например ZXT19200.COM - терминалка под 19200 бод. Под 1200 бод запускать вариант ZXT1200B.COM - без буквы "B" упомянутый вариант с неверной константой из мануала Камиля. ВСЕ ОСТАЛЬНЫЕ КОНСТАНТЫ ВЕРНЫЕ!!!. Выход из терминалки обратно в систему - по Ctrl+C)

70875

Просьба всех пользователей реальных ATM-turbo 2+ и ATM-turbo 3 (v8.0), у кого завелась прошивка контроллера одной из версий v3.x записать образ на дискету и протестировать COM-порт на ваших платах на всех доступных скоростях, и о результатах сообщить здесь в комментах примерно в том формате, что привел я. При этом обязательно просьба сообщить также и версию прошивки, версию платы, а также частоту кварца, на котором работает контроллер клавиатуры.

Также прошу Камиля Каримова подключиться к вопросу. Будем все коллективно думать.

С уважением.

Serg6845
06.12.2019, 12:47
Тогда я, меняя константу, изготовил версии бинарников терминалки под все возможные скорости (отражена в названии файлов) и мы по очереди стали их запускать у меня и у Алексея. И получили весьма интересные результат. При этом надо добавить, что у меня стоит контроллер (с соответствующей прошивкой v 3.2m07) м кварцем на 7МГц (берется с платы), а у Алексея - прошивка v3.2m11 и кварц на 11.0592МГц

А результаты следующие.

Настройка терминалки - фактическая скорость работы

1200 бод - 1200 бод (сначала не завелась - работала со скоростью, установленной предыдущей терминалкой, но потом в мануале Камиля оказалась неверная константа - надо не 98dec, а 96dec)
2400 бод - 2400 бод
4800 бод - 4800 бод
9600 бод - 9600 бод
19200 бод - 38400 бод !!!!
38400 бод - 38400 бод
57600 бод - 38400 бод !!!!
115200 бод - 38400 бод !!!!

У Алексея Исмагилова получились несколько иные результаты:

1200 бод - 1200 бод
2400 бод - 2400 бод
4800 бод - 4800 бод
9600 бод - 9600 бод
19200 бод - 19200 бод
38400 бод - ВООБЩЕ НИ НА КАКОЙ СКОРОСТИ НЕ ЗАРАБОТАЛО!
57600 бод - 57600 бод
115200 бод - 57600 бод!!!

Вот такие дела.

С уважением.

Безотносительно к АТМ (у меня его нет) - вспоминается что в древнем внешнем модеме GVC со стандартным 8031 в качестве головы - стоял кварц на 22.118 МГц, и он умел 115200. и тогда я даже читал даташит на 8031 и пришел к выводу что это максимум что можно с него выжать. соответственно на 11059 как раз получится максимум 57600, а на 7 - 36458 - что примерно на 6% отличается от получившихся 38400...
тут надо смотреть даташит на конкретный контроллер, их с тех пор много разных понаделали, в том числе с меньшим делением тактовой частоты.

Максагор
06.12.2019, 13:50
Безотносительно к АТМ (у меня его нет) - вспоминается что в древнем внешнем модеме GVC со стандартным 8031 в качестве головы - стоял кварц на 22.118 МГц, и он умел 115200. и тогда я даже читал даташит на 8031 и пришел к выводу что это максимум что можно с него выжать. соответственно на 11059 как раз получится максимум 57600, а на 7 - 36458 - что примерно на 6% отличается от получившихся 38400...
тут надо смотреть даташит на конкретный контроллер, их с тех пор много разных понаделали, в том числе с меньшим делением тактовой частоты.

Если бы чип именно не тянул, то понятно. Но если посмотреть на тест, то тут другие непонятки. Почему, например, при работе на 7МГц i8031 тянет 9600, тянет 38400 (я на этой частоте по нульмодему успешно байтики передавал), но не хочет включать промежуточные 19200?

А при 11.0592МГц не хочет работать на 38400, но нормально тянет 57600? Поэтому пока не могу однозначно считать, что дело в нехватке частоты...

В общем, ждем комментариев Камиля...

HardWareMan
06.12.2019, 14:06
Так то даже при 38400 бод получается 4267 байт/с по схеме 8N1. Может дело не в скорости интерфейса физической линии, а в скорости CPU который не успевает обработать такой поток данных? В IBM для этого стали добавлять FIFO практически на 16 байт, чтобы не получать слишком высокую частоту прерываний в секунду и успевать делать полезную работу. Всё дело в том, как именно происходит тест? Ну и никто не мешает посмотреть логиком или осликом что там на физической линии твориться то.

Максагор
06.12.2019, 14:28
Так то даже при 38400 бод получается 4267 байт/с по схеме 8N1

У Камиля в контроллере "сидит" схема 8N2, и ее перенастройка программно со стороны пользователя не предусмотрена.


Может дело не в скорости интерфейса физической линии, а в скорости CPU который не успевает обработать такой поток данных?

Опять возникает вопрос - почему процессор успевает обработать данные на скорости 38400, но не успевает на скорости 19200? И в любом случае, если бы режим был выставлен, но процессор не тянул, то просто был бы на входе мусор или потеря данных. А тут четко при выборе режима 19200 контроллер настраивается и работает на 38400. Где-то косяк в коде прошивки...

Поэтому прошу еще раз тут, пользователей АТМ2/3, раздобыть нульмодемный кабель и попробовать сконнектиться с PC и попробовать покидать байтики через терминалки.

Alex.Ismagilov
06.12.2019, 21:52
Сейчас искал протокол-анализатором ту скорость на которой идут посылки для 38400 (программа zxt38400)
На 28800 получилось засинхронизироваться

Максагор
07.12.2019, 05:06
1200 бод - 1200 бод (сначала не завелась - работала со скоростью, установленной предыдущей терминалкой, но потом в мануале Камиля оказалась неверная константа - надо не 98dec, а 96dec)
2400 бод - 2400 бод
4800 бод - 4800 бод
9600 бод - 9600 бод
19200 бод - 38400 бод !!!!
38400 бод - 38400 бод
57600 бод - 38400 бод !!!!
115200 бод - 38400 бод !!!!

У Алексея Исмагилова получились несколько иные результаты:

1200 бод - 1200 бод
2400 бод - 2400 бод
4800 бод - 4800 бод
9600 бод - 9600 бод
19200 бод - 19200 бод
38400 бод - ВООБЩЕ НИ НА КАКОЙ СКОРОСТИ НЕ ЗАРАБОТАЛО! - точнее, заработало на НЕСТАНДАРТНЫХ 28800 бод
57600 бод - 57600 бод
115200 бод - 57600 бод!!!

А вот фрагмент из исходников под i8031 от Камиля:


; таблица настройки скорости RS232
tab_spd:
if ft_07
; Под кварц 7 Мгц
db 1-1+80h ;1 115200 SMOD=1
db 1-1+80h ;2 57600 SMOD=1
db 1-1+80h ;3 38400 SMOD=1
db 1-1+80h ;4(6) 19200 SMOD=1
db 4-1+80h ;5(12) 9600 SMOD=1
db 4-1 ;6(24) 4800 SMOD=0
db 15-1+80h;7(48) 2400 SMOD=1
db 15-1 ;8(98) 1200
endif
if ft_11
; Под кварц 11.0592
db 1-1+80h ;1 115200
db 1-1+80h ;2 57600 SMOD=1
db 1-1 ;3 38400 SMOD=0
db 3-1+80h ;4(6) 19200 SMOD=1
db 3-1 ;5(12) 9600 SMOD=0
db 6-1 ;6(24) 4800
db 12-1 ;7(48) 2400
db 24-1 ;8(98) 1200
endif

А вот полный исходник прошивки:
70951

Кто знает принцип работы архитектуры данных контролеров, вникаем, советуем...

Alex.Ismagilov
07.12.2019, 10:52
Архитектура и команды контроллера:
http://www.gaw.ru/html.cgi/txt/doc/micros/mcs51/index.htm

Про настройку UART:
http://www.gaw.ru/html.cgi/txt/doc/micros/mcs51/arh/usart.htm

Тут расписан регистр SCON:
http://portal.tpu.ru:7777/SHARED/Others/_JU_/Teaching/Tab2/MCS51.pdf

HardWareMan
07.12.2019, 16:03
Основная проблема UART на контроллерах MCS51 в том, что там делитель особый: /6 или /12 (в зависимости от настройки) от кварцевой частоты. Так работает ядро MCS51 и именно поэтому для обеспечения высоких скоростей с малой ошибкой нужен кварц на 11.0592МГц. В принципе, это всё, что нужно знать про UART на платформе MCS51.

PS Я имел в виду частоту модуля UART. Которая Fperiph. А в самом модуле есть ещё "бодгенератор", который суть обычный счетчик вверх с предзагрузкой.

Максагор
07.12.2019, 18:25
; таблица настройки скорости RS232
tab_spd:
if ft_07
; Под кварц 7 Мгц
db 1-1+80h ;1 115200 SMOD=1 (реальная скорость 38400)
db 1-1+80h ;2 57600 SMOD=1 (реальная скорость 38400)
db 1-1+80h ;3 38400 SMOD=1
db 1-1+80h ;4(6) 19200 SMOD=1 (реальная скорость 38400)
db 4-1+80h ;5(12) 9600 SMOD=1
db 4-1 ;6(24) 4800 SMOD=0
db 15-1+80h;7(48) 2400 SMOD=1
db 15-1 ;8(98) 1200 SMOD=0
endif
if ft_11
; Под кварц 11.0592
db 1-1+80h ;1 115200 SMOD=1 (реальная скорость 57600)
db 1-1+80h ;2 57600 SMOD=1
db 1-1 ;3 38400 SMOD=0 (реальная скорость 28800)
db 3-1+80h ;4(6) 19200 SMOD=1
db 3-1 ;5(12) 9600 SMOD=0
db 6-1 ;6(24) 4800 SMOD=0
db 12-1 ;7(48) 2400 SMOD=0
db 24-1 ;8(98) 1200 SMOD=0
endif

Подозреваю, что таблица должна выглядеть так:


; таблица настройки скорости RS232
tab_spd:
if ft_07
; Под кварц 7 Мгц
db 1-1+80h ;1 115200 SMOD=1 (реальная скорость 38400)
db 1-1+80h ;2 57600 SMOD=1 (реальная скорость 38400)
db 1-1+80h ;3 38400 SMOD=1
db 1-1 ;4(6) 19200 SMOD=0
db 4-1+80h ;5(12) 9600 SMOD=1
db 4-1 ;6(24) 4800 SMOD=0
db 15-1+80h;7(48) 2400 SMOD=1
db 15-1 ;8(98) 1200 SMOD=0
endif
if ft_11
; Под кварц 11.0592
db 1-1+80h ;1 115200 SMOD=1 (реальная скорость 57600)
db 1-1+80h ;2 57600 SMOD=1
db 2-1+80h ;3 38400 SMOD=1
db 3-1+80h ;4(6) 19200 SMOD=1
db 3-1 ;5(12) 9600 SMOD=0
db 6-1 ;6(24) 4800 SMOD=0
db 12-1 ;7(48) 2400 SMOD=0
db 24-1 ;8(98) 1200 SMOD=0
endif

При этом, судя по всему, максимальная скорость при 7МГц таки действительно 38400 бод (все, что выше, судя по таблице, просто выдают ту же скорость), а при 11.0592МГц - максимально 57600 бод. Если, конечно, нет таких конструкций как "0-1" или "0-1+80h". Ждем комментариев от знатоков данным контроллеров...

Но пока не знаю как проверить. Камиль молчит (Ау!!!), а настроенного компилятора (и навыков с ним обращения) под контроллеры данного типа у меня никогда не водилось...

HardWareMan
07.12.2019, 20:55
Я нагуглил кальк примитивный (http://andrew1955.ucoz.ru/load/raschet_bitrejta_dlja_uart_msc51/1-1-0-6), для UARTа MCS51. Он довольно точно отражает всю суть. Поиграйтесь. Галка "Удвоенная скорость" это наверное и есть то самое +80h, я уже лет 8 не прикасался к MCS51.

caro
07.12.2019, 23:51
Давно я этим занимался, подзабыл уже.
Пришлось вспоминать и заново расчитать константы.
Действительно есть несколько ошибок и неточностей.
Правильно будет так:

;================================================= ==
org 7B8h
; таблица настройки скорости RS232
; N = (Fosc/192)/Baud SMOD=1
; N = (Fosc/384)/Baud SMOD=0
tab_spd:
if ft_07
; Под кварц 7 Мгц (с ошибкой назначения скорости)
; N
db 1-1+80h ;1 36458(115200) SMOD=1
db 1-1+80h ;2 36458(57600) SMOD=1
db 1-1+80h ;3 36458(38400) SMOD=1
db 1-1 ;4(6) 18229(19200) SMOD=0
db 4-1+80h ;5(12) 9114(9600) SMOD=1
db 4-1 ;6(24) 4557(4800) SMOD=0
db 15-1+80h;7(48) 2430(2400) SMOD=1
db 15-1 ;8(98) 1215(1200) SMOD=0
endif
if ft_11
; Под кварц 11.0592 (точная установка скорости)
; N
db 1-1+80h ;1 57600(115200) SMOD=1
db 1-1+80h ;2 57600 SMOD=1
db 1-1 ;3 28800 SMOD=0
db 3-1+80h ;4(6) 19200 SMOD=1
db 3-1 ;5(12) 9600 SMOD=0
db 6-1 ;6(24) 4800 SMOD=0
db 12-1 ;7(48) 2400 SMOD=0
db 24-1 ;8(98) 1200 SMOD=0
endif
;----------------------------------------------


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

Исправленный исходник и прошивки для двух частот во вложении.
70954

Максагор
08.12.2019, 04:33
Давно я этим занимался, подзабыл уже.
Пришлось вспоминать и заново расчитать константы.
Действительно есть несколько ошибок и неточностей.
Правильно будет так:

Спасибо, Камиль!

Я как раз смотрел частоты через программку, ссылку на которую дал HardWareMan (огромное ему спасибо!)

Действительно лучше использовать кварц 11.0592 - там хоть значения "попадают в яблочко". Правда, жаль, что не тянет 115200 бод. Но не это главное. Плоховато то, что вместо штатных для многих терминалок 38400 бод, для которых нужно дробное (а значит и невозможное) значение константы 1.5-1+80h или 0.75-1 тут выходит установить только 28800 бод.

Можно было бы попробовать кварц на 22.118МГц, как пишет Serg6845:



вспоминается что в древнем внешнем модеме GVC со стандартным 8031 в качестве головы - стоял кварц на 22.118 МГц, и он умел 115200

И тогда значения будут:


; Под кварц 22.118
db 1-1+80h ;1 115200 SMOD=1
db 2-1+80h ;2 57600 SMOD=1
db 3-1+80h ;3 38400 SMOD=1
db 6-1+80h ;4(6) 19200 SMOD=1
db 6-1 ;5(12) 9600 SMOD=0
db 12-1 ;6(24) 4800 SMOD=0
db 24-1 ;7(48) 2400 SMOD=0
db 48-1 ;8(96) 1200 SMOD=0

Правда, Камиль, как ты сам пишешь в мануале,


Увеличивать тактовую частоту выше 14 Мгц не
рекомендуется, так как при этом не гарантируется
надежное чтение кода клавиатуры, выдаваемое на шину
Спектрума от контроллера в его цикле записи (слишком
коротким оказывается сигнал /VWR).

Возможно. Но тогда возникает два вопроса "а что если?" - один к тебе, Камиль:

1. Учитывая, что сигнал /VWR (на плате АТМ или сигнал /WR на контроллере i8051 - уточнение для тех, кто незнаком со схемотехникой АТМ) формируется программно по команде (а не устанавливается автоматически как в Z80 при выполнении определенных команд), возможно ли программное кдлинение данного сигнала, примерно по такой схеме:

a) Включение сигнала /VWR
b) Цикл задержки (типа NOP в цикле)
c) Выполнение основных задуманных функций и операций
d) Выключение сигнала /VER
e) Опционально (т.е. если требуется) - возможный еще один цикл задержки для гарантированного прохождения выключения сигнала

Это возможно? Если да, предлагаю попробовать (как я понял, там еще константы часиков пересчитать надо)...

2. Вопрос к хорошо шарящим в схемотехнике, паянию и проч. Возможно ли, раз уж сигнал /VWR при тактовой частоте over 22МГц оказывается коротким, его "искусственно" удлинить на плате, например, подбором конденсаторов?

caro
08.12.2019, 06:26
Не надо никаких конденсаторов.
В заголовке исходника прямо указано, что можно удлинить /VWR, использовав прямое управление этим сигналом в МК.
Для этого достаточно флаг en_movx сбросить в 0.
А частоту тактирования увеличить до 22.118 во всех отношениях полезно.

Максагор
08.12.2019, 09:06
Не надо никаких конденсаторов.
В заголовке исходника прямо указано, что можно удлинить /VWR, использовав прямое управление этим сигналом в МК.
Для этого достаточно флаг en_movx сбросить в 0.
А частоту тактирования увеличить до 22.118 во всех отношениях полезно.

Камиль, Давай тогда попробуем и так. Можешь пересчитать константы прошивки (задержки RS-232, часы, /VWR) под 22МГц? Вообще надо было раньше. Но просто я не разбираюсь вданном контроллере, и просто воспринимал фразу из твоего мануала о нерекомендации увеличивать частоту свыше 14МГц как данность.

P.S. Не копался еще в прошивке на предмет внедрения программного триггера блокирования/разблокирования контроллера для устойчивой работы с магнитофоном?

caro
08.12.2019, 14:35
Камиль, Давай тогда попробуем и так. Можешь пересчитать константы прошивки (задержки RS-232, часы, /VWR) под 22МГц? Вообще надо было раньше. Но просто я не разбираюсь вданном контроллере, и просто воспринимал фразу из твоего мануала о нерекомендации увеличивать частоту свыше 14МГц как данность.

P.S. Не копался еще в прошивке на предмет внедрения программного триггера блокирования/разблокирования контроллера для устойчивой работы с магнитофоном?Нет ещё.

Прошивка для частоты тактирования 22.1184
70956

Исходник прилагается. Длительность /VWR увеличена.

Alex.Ismagilov
08.12.2019, 15:45
Камиль, а вопрос сбоку (если он уместен и корректен): есть исходник прошивки - чем именно Ты его компилируешь ?
Я имею ввиду среду разработки и ее настройки.
Какой именно компилятор?
Может есть готововая сборка ? или инструкция по настройке того же эклипса, как вариант?

caro
09.12.2019, 06:47
ASM51.EXE + любой редактор всё что нужно для работы.
Правда запускать приходится в DOS-BOX

Alex.Ismagilov
09.12.2019, 12:34
Протестировал сегодня 3.2m2
Кварц 11.0592МГц
ATM PC
1200 = 1200
2400 = 2400
4800 = 4800
9600 = 9600
19200 = 19200
38400 = 28800
57600 = 57600
115200 = 57600

Alex.Ismagilov
09.12.2019, 15:11
Нашел в закормах кварц на 22.118
впаял/прошил - просто ничего не работает (после сброса черный экран)
Контроллер AT89C51 (Частота на кварце есть 22.118МГц)
прошил обратно 3.2m2 - включилось, но на этой частоте клавиатура быстро и глючно работает.

Максагор
09.12.2019, 15:50
Протестировал сегодня 3.2m2
Кварц 11.0592МГц
ATM PC
1200 = 1200
2400 = 2400
4800 = 4800
9600 = 9600
19200 = 19200
38400 = 28800
57600 = 57600
115200 = 57600

Да, я посмотрел - исходя из устройства делителя частоты, на скорости в 11.0592 МГц скорости 38400 и 115200 просто невозможны, так как требуют дробных значений байтов (а вот на 22.118МГц возможны все значения). А на скорости в 7МГц невозможны скорости выше 38400 (да и там значения возможных скоростей будут неточными).

В общем, так как версия прошивки (в т.ч. на какой частоте она работает) может определяться из программы пользователя, надо будет при разработке терминалки и прочего ПО предусмотреть самонастройку меню выбора скорости, чтобы можно было выбирать опции только из реально "хардварно" доступных значений... Примерно так:


Скорость 7МГЦ 11.0592МГц 22.118МГЦ
============================
1200 да да да
2400 да да да
4800 да да да
9600 да да да
19200 да да да
28800 X да X
38400 да X да
57600 X да да
115200 X X да


Нашел в закормах кварц на 22.118
впаял/прошил - просто ничего не работает (после сброса черный экран)
Контроллер AT89C51 (Частота на кварце есть 22.118МГц)
прошил обратно 3.2m2 - включилось, но на этой частоте клавиатура быстро и глючно работает.

А вот тут явно где-то косяк. Раз старая прошивка на 22МГц завелась (глюки с клавой на ней естественны).

Alex.Ismagilov
09.12.2019, 16:07
А вот тут явно где-то косяк. Раз старая прошивка на 22МГц завелась (глюки с клавой на ней естественны).
там скорость автоповтора кнопок была раза в 2 больше (когда в BIOS заходил)
и потом с CP/M не смог выбрать диск B:
печатал "B:" а он мне "B;" (на шифт не реагировал получается)

caro
09.12.2019, 19:50
К сожалению я не могу сам тестировать прошивки поскольку у меня нет АТМ-ки.
Поэтому могу только корректировать изменения опираясь на ваши замечания.

Максагор
09.12.2019, 21:15
К сожалению я не могу сам тестировать прошивки поскольку у меня нет АТМ-ки.
Поэтому могу только корректировать изменения опираясь на ваши замечания.

Правильно ли я понимаю, что вся суть изменений в прошивке под 22МГц - это пересчет констант COM-порта и таймера (что само по себе не должно сказаться непосредственно на работе с клавиатурой), а также включение удлинения сигнала /VWR, а больше ничего не изменилось? Если так, то что ТЕОРЕТИЧЕСКИ может пойти не так? Возможно ли удлинить сигнал не переключением режима, а, допустим вставкой программных задержек (типа серии NOP в цикле)? Раз не пошел нынешний вариант, давайте экспериментировать. Может, например, не проходить сигнал сброса, так ка стал коротким? Или еще что?

Максагор
13.12.2019, 04:29
Всем:

Если по каким-то соображениям вам ставить 11.0592МГц "неправославно, то можно поставить отдельно (на ножки 18-19 контроллера) кварц на 7.3728МГц (такие в продаже есть и не дефицит). Такие кварцы обеспечат ТОЧНУЮ скорость COM-порта до 37600 бод включительно (но, возможно, в текущей прошивке под 7МГц будут чуток спешить часы - если не так, возможно Камиль прокомментриует). Но, конечно, лучше 11.0592МГц - дает скорость до 57600 бод. Единственный недостаток - вместо 37600 имеем 28800 бод. Поэтому да, идеально - 22.1184МГц, там получим все "честные" скорости вплоть до 115200 бод, однако:


Нет ещё.

Прошивка для частоты тактирования 22.1184
at32m22n.zip

Исходник прилагается. Длительность /VWR увеличена.

Я посмотрел - в архиве исходника нет и в помине. А сама прошивка представлена ТЕКСТОВЫМ HEX-дампом - может быть она "криво" у Алексея Исмагилова прошилась и поэтому не "взлетела"?
Камиль, можно посмотреть сами исходники и получить "честный" бинарник прошивки? Вдруг все заведется?

caro
14.12.2019, 08:30
Я посмотрел - в архиве исходника нет и в помине. А сама прошивка представлена ТЕКСТОВЫМ HEX-дампом - может быть она "криво" у Алексея Исмагилова прошилась и поэтому не "взлетела"?Прошу прощения, исходник забыл включить.
Во вложении исходник вместе с ассемблером.

Камиль, можно посмотреть сами исходники и получить "честный" бинарник прошивки? Вдруг все заведется?HEX-файл ничем не хуже бинарника и программаторы его понимают.
71012

HardWareMan
14.12.2019, 08:53
HEX-файл ничем не хуже бинарника и программаторы его понимают.
Он даже лучше, так как в нём прописаны регионы и есть какой-никакой контроль целостности данных.

Alex.Ismagilov
16.12.2019, 13:45
Я посмотрел - в архиве исходника нет и в помине. А сама прошивка представлена ТЕКСТОВЫМ HEX-дампом - может быть она "криво" у Алексея Исмагилова прошилась и поэтому не "взлетела"?
Сегодня еще раз перепрошил контроллер - не взлетала.
Просто черный экран после сброса, и все.
Микроконтроллер AT89C51, Кварц 22.1184МГЦ

caro
16.12.2019, 18:38
Сегодня еще раз перепрошил контроллер - не взлетала.
Просто черный экран после сброса, и все.
Микроконтроллер AT89C51, Кварц 22.1184МГЦСтранно.
Придется собрать контроллер и проверить самому.

Максагор
16.12.2019, 19:02
Странно.
Придется собрать контроллер и проверить самому.

Камиль, а у тебя же он вроде раньше был - ты же на нем в свое время прошивки v2.2 и выше отлаживал. Разобрал?

caro
16.12.2019, 19:13
Камиль, а у тебя же он вроде раньше был - ты же на нем в свое время прошивки v2.2 и выше отлаживал.Давно это было.

Разобрал?Увы.

Alex.Ismagilov
16.12.2019, 19:38
Камиль, может куда точечно/адресно посмотреть осциллом ?

caro
16.12.2019, 20:24
Камиль, может куда точечно/адресно посмотреть осциллом ?Я бы посмотрел цепи RESET, WAIT, RDKBD.

Alex.Ismagilov
24.12.2019, 10:17
Если контроллер работает (по выбору ПЗУ): W_ON=0, при сбросе W_ON=1, после сброса W_ON=0. при этом ничего не работает, черный экран
Если контроллер НЕ работает(по выбору ПЗУ): W_ON=0, при сбросе W_ON=1 И ПОСЛЕ СБРОСА ОН ОСТАЕТСЯ W_ON=1