Я нагуглил кальк примитивный, для UARTа MCS51. Он довольно точно отражает всю суть. Поиграйтесь. Галка "Удвоенная скорость" это наверное и есть то самое +80h, я уже лет 8 не прикасался к MCS51.
Я нагуглил кальк примитивный, для UARTа MCS51. Он довольно точно отражает всю суть. Поиграйтесь. Галка "Удвоенная скорость" это наверное и есть то самое +80h, я уже лет 8 не прикасался к MCS51.
Максагор(07.12.2019)
Давно я этим занимался, подзабыл уже.
Пришлось вспоминать и заново расчитать константы.
Действительно есть несколько ошибок и неточностей.
Правильно будет так:
- - - Добавлено - - -Код:;=================================================== 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 ;----------------------------------------------
Исправленный исходник и прошивки для двух частот во вложении.
at32m2.zip
Alex.Ismagilov(09.12.2019), Максагор(08.12.2019)
Спасибо, Камиль!
Я как раз смотрел частоты через программку, ссылку на которую дал HardWareMan (огромное ему спасибо!)
Действительно лучше использовать кварц 11.0592 - там хоть значения "попадают в яблочко". Правда, жаль, что не тянет 115200 бод. Но не это главное. Плоховато то, что вместо штатных для многих терминалок 38400 бод, для которых нужно дробное (а значит и невозможное) значение константы 1.5-1+80h или 0.75-1 тут выходит установить только 28800 бод.
Можно было бы попробовать кварц на 22.118МГц, как пишет Serg6845:
И тогда значения будут:
Правда, Камиль, как ты сам пишешь в мануале,Код:; Под кварц 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МГц оказывается коротким, его "искусственно" удлинить на плате, например, подбором конденсаторов?
Последний раз редактировалось Максагор; 08.12.2019 в 04:35.
Максагор, NedoPC group
ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
[ZX rulezzz 4reva!!!]
http://atmturbo.nedopc.com
http://vk.com/atmturbo
http://maksagor.livejournal.com
http://moskprf.ru
[СССР][Коммунизм][КПРФ] ну [ZX], естественно...
Не надо никаких конденсаторов.
В заголовке исходника прямо указано, что можно удлинить /VWR, использовав прямое управление этим сигналом в МК.
Для этого достаточно флаг en_movx сбросить в 0.
А частоту тактирования увеличить до 22.118 во всех отношениях полезно.
Максагор(08.12.2019)
Камиль, Давай тогда попробуем и так. Можешь пересчитать константы прошивки (задержки RS-232, часы, /VWR) под 22МГц? Вообще надо было раньше. Но просто я не разбираюсь вданном контроллере, и просто воспринимал фразу из твоего мануала о нерекомендации увеличивать частоту свыше 14МГц как данность.
P.S. Не копался еще в прошивке на предмет внедрения программного триггера блокирования/разблокирования контроллера для устойчивой работы с магнитофоном?
Последний раз редактировалось Максагор; 08.12.2019 в 09:15.
Максагор, NedoPC group
ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
[ZX rulezzz 4reva!!!]
http://atmturbo.nedopc.com
http://vk.com/atmturbo
http://maksagor.livejournal.com
http://moskprf.ru
[СССР][Коммунизм][КПРФ] ну [ZX], естественно...
Нет ещё.
Прошивка для частоты тактирования 22.1184
at32m22n.zip
Исходник прилагается. Длительность /VWR увеличена.
Максагор(08.12.2019)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Камиль, а вопрос сбоку (если он уместен и корректен): есть исходник прошивки - чем именно Ты его компилируешь ?
Я имею ввиду среду разработки и ее настройки.
Какой именно компилятор?
Может есть готововая сборка ? или инструкция по настройке того же эклипса, как вариант?
ASM51.EXE + любой редактор всё что нужно для работы.
Правда запускать приходится в DOS-BOX
Протестировал сегодня 3.2m2
Кварц 11.0592МГц
ATM PC
1200 = 1200
2400 = 2400
4800 = 4800
9600 = 9600
19200 = 19200
38400 = 28800
57600 = 57600
115200 = 57600
Нашел в закормах кварц на 22.118
впаял/прошил - просто ничего не работает (после сброса черный экран)
Контроллер AT89C51 (Частота на кварце есть 22.118МГц)
прошил обратно 3.2m2 - включилось, но на этой частоте клавиатура быстро и глючно работает.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)