Просмотр полной версии : О запуске разных прошивок на контроллере PC-клавиатуры в ATM2+ (v7.xx) и ATM3 (v8.x)
Максагор
15.11.2019, 01:39
Так, камрады, важная весть. Как мы знаем, на данный момент существует много проблем и вопросов с запуском разных версий прошивок на контроллере клавиатуры ATM-turbo 2+ (v7.xx) и ATM-turbo 3 (v8.x). На сегодня стабильно удалось заставить работать только прошивки версий v2.1/v2.2, а прошивки v3.0/3.1 и v3.0m/3.1m (где самое "вкусное" - поддержка COM-порта) почему-то у подавляющего большинства отказывается запускаться. Хотя у меня на ATM-turbo 2+ она пошла нормально. До сих пор было непонятно, где зацепка - ну не работали прошивки и все ту.
Сегодня с Александром Исмагиловым удалось в одной мастерской подключить рядышком мой АТМ(7.10), с работающей прошивкой v3.1 и его АТМ(7.18) c неработающей и провести эксперименты. И, кажется, ПРИЧИНА НАЙДЕНА:
В отличие от "всеядной" прошивки v2.2 под 3.х необходимо ставить контроллер совместимый не с i8051, а с i8052 - отличие между ними - в размере внутреннего ОЗУ. В i8051 его объем 128 байт, а в i8052 - 256 байт и более. Судя по всему, новой прошивке от Камиля просто не хватает (под стек? Под что-то еще?) места в ОЗУ, вместо перехода на адрес 128dec происходит переход на 0dec, а там - сигнал сброса. В итоге компьютер уходит в циклический ресет (по крайней мере так я понял объяснения Александра Исмагилова - если что-то не так, прошу его здесь поправить и уточнить). Ну а мне, видимо, по чистой случайности попал в руки именно расширенный вариант.
Но данная информация требуется в проверке на практике. Поэтому просьба всех АТМщиков здесь на форуме, у кого есть возможность, подключиться к проверке. В общем, у кого не идет прошивка v3.x, внимательно смотрим характеристики микросхемы контроллера, и если на ней 128 байт ОЗУ, сообщаем тут и меняем на более продвинутую, прошиваем и рапортуем о результатах запуска АТМ здесь в теме. Особенно просьба подключиться к этому Камиля Каримова и ZORELа. Жду откликов.
P.S. И да, необходимость вот этой доработки, убирающей "шумы" не отменяется:
http://atmturbo.nedopc.com/dev_kbd.htm
NEO SPECTRUMAN
15.11.2019, 05:53
Судя по всему
А что мешает допилить прошивку с учетом?
Без типично железятнеческого подхода
"припаять сверху вторым этажом и повесить тумблер"
Должен признать, что все эксперименты я проводил с МК AT89C52 с обьемом ОЗУ 256 байт,
но указатель стека устанавливается на адрес 128-8, то есть под стек выделено 8 байт,
что должно хватить для работы системы с МК 8051:
;--------------------------------
org 128-8-16
; Bufer KBD
buf_kbd: ds 8 ;Буфер клавиатуры
; Буфер часов
tics: ds 1 ;50 тиков в секунду
b_time: ds 3 ;секунды,минуты,часы
b_date: ds 4 ;день,месяц,год,столетие
b_stek: ds 8 ;стек -> вверх
;_________________________________________
Проверю с 8051, хотя пока не могу понять в чем здесь проблема.
NEO SPECTRUMAN
15.11.2019, 06:35
но указатель стека устанавливается на адрес 128-8,
а зачем размещать его впритык?
если попробовать сдвинуть поближе?
...там указатель стека точно декрементится до записи? (что за микроконтроллер?)
а то последний адрес как бы 127
а зачем размещать его впритык?
если попробовать сдвинуть поближе?Можно, но при этом уменьшится буфер для чтения по RS232.
А его глубину желательно сделать как можно больше.
...там указатель стека точно декрементится до записи?
а то последний адрес как бы 127В семействе i8051 стек заполняется вверх, при выполнении PUSH и CALL
сперва производится инкремент адреса, затем запись в стек, соответственно при POP и RET сперва производится
чтение, затем декремент адреса.
Для 8051 при этом получается глубина стека 7 байт, адреса: 121..127
Может действительно при работе в прерываниях происходит переполнение стека.
Cкорректируйте исходник, увеличив стек до 16 байт и попробуйте с новой прошивкой:
len_bwr equ 8
buf_wr: ds len_bwr ;буфер передачи
;
len_brd equ 54-8 ;Длина буфера приема
len_ird equ 50-8 ;длина буфера для INT (если разрешен)
buf_rd: ds len_brd ;буфер приема
ds 0
;--------------------------------
org 120-16-16
; Bufer KBD
buf_kbd: ds 8 ;Буфер клавиатуры
; Буфер часов
tics: ds 1 ;50 тиков в секунду
b_time: ds 3 ;секунды,минуты,часы
b_date: ds 4 ;день,месяц,год,столетие
b_stek: ds 16 ;стек -> вверх
;_________________________________________
Во вложении две прошивки версии 3.2m на разные частоты работы контроллера с увеличенной до 16 байт глубиной стека.
Проверяйте.
70668
Исходник в архиве.
Alex.Ismagilov
15.11.2019, 13:01
caro, спасибо за быстрый фикс :)
Записал на AT89C51 - работает, не улетает в сброс
Записал на ПЗУ M2716 + КР1816ВЕ31 - тоже работает
Записал на AT89C52 - работает (как и работала на нем 3.1 прошивка)
Кварц у меня 11.0592МГц.
Получается - эту проблему пофиксили :)
- - - Добавлено - - -
Максагор, спасибо за наводку в сторону i8052, без нее я бы еще долго перепахивал плату :)
Максагор
15.11.2019, 13:37
Можно, но при этом уменьшится буфер для чтения по RS232.
А его глубину желательно сделать как можно больше.
А что если выпустить специальную версию прошивки под контроллеры с ОЗУ в 256 байт, чтобы буфер под RS-232 был - ого-го? Просто укажем это в спецификациях версии, а кому надо, соответствующий контроллер и поставит...
А что если выпустить специальную версию прошивки под контроллеры с ОЗУ в 256 байт, чтобы буфер под RS-232 был - ого-го? Просто укажем это в спецификациях версии, а кому надо, соответствующий контроллер и поставит...Да, я об этом уже подумал.
Версия будет одна, я просто в зависимости от обьема ОЗУ конкретного контроллера буду менять обьем буфера.
Максагор
15.11.2019, 13:44
Да, я об этом уже подумал.
Версия будет одна, я просто в зависимости от обьема ОЗУ конкретного контроллера буду менять обьем буфера.
В смысле - программа контроллера будет самонастраиваться при старте в зависимости от обнаруженного типа микросхемы контроллера?
В смысле - контроллер будет самонастраиваться при старте в зависимости от обнаруженного типа микросхемы контроллера?Да.
На версии АТМ 3.0 проверено, работает! Также работоспособность сохраняется и без резисторной сборки на шине данных контроллера, которую мы прилепили в свое время от безысходности в поисках проблемы.
Максагор
15.11.2019, 22:42
На версии АТМ 3.0 проверено, работает! Также работоспособность сохраняется и без резисторной сборки на шине данных контроллера, которую мы прилепили в свое время от безысходности в поисках проблемы.
Без резисторной сборки работает, да. Но может быть мусор время от времени.У меня так часы лагали - вроде секунды идут нормально, а плтом внезапно ррраз, и чушь выдают. После припайки резистора, все это прекратилось. Так что настаиваю, лишним не будет.
Тоже проверио на своей ATM 8.0 c AT89C51 11мгц прошивка 3.2 и резиторами подтяжки, работает.
Rechlin1975
20.11.2019, 06:53
На версии АТМ 3.0 проверено, работает! Также работоспособность сохраняется и без резисторной сборки на шине данных контроллера, которую мы прилепили в свое время от безысходности в поисках проблемы.
А что работает? Конкретику в студию! А то "УРА ЗАРАБОТАЛО!" и тишина! :v2_dizzy_punk:
А что работает? Конкретику в студию! А то "УРА ЗАРАБОТАЛО!" и тишина! :v2_dizzy_punk:
Прочитай тута:
https://zx-pk.ru/threads/31077-o-zapuske-raznykh-proshivok-na-kontrollere-pc-klaviatury-v-atm2-(v7-xx)-i-atm3-(v8-x).html?p=1034616&viewfull=1#post1034616
Новая прошивка контроллера клавиатуры, с возможностью передачи данных по COM порту (только для АТМ версии 3.0)
Максагор
20.11.2019, 15:17
Новая прошивка контроллера клавиатуры, с возможностью передачи данных по COM порту (только для АТМ версии 3.0)
Нет-нет. Это универсальная прошивка и для ATM-turbo 3, и для ATM-turbo 2+. Это версия самой прошивки v3.2
Alex.Ismagilov
20.11.2019, 15:47
Мы тут с Максагор дальше копали тему с клавиатурой на предмет чтобы при наличии АТ-клавы можно было читать с ленты (пока калибровал ЦАП/АЦП).
Пробовал делать в железе:
1. Подключаю стандартную 4-кнопочную клавиатуру.
2. Подключаю АТ клавиатуру. Микроконтролелр установлен
3. Убираю Турбо в BIOS-е
4. Захожу в BASIC-48 запускаю чтение с ленты (LOAD ""), включаю магнитофон с программой.
5. Ничего не читается, пилот-тон не схватывает. Как и ожидалось, в-общем-то, ибо WAIT
Немного меняю схему - у микроконтроллера отгибаю ноги 13 (!KEYRD) и 8 (W_ON)
Пробовал по отдельности 13 или 8 - или вообще не запускается комп, или не читает с ленты.
делаю все то же само что и выше.
АТ-клавиатура, не реагирует (само собой)
ТУРБО - отключено
с мех-клавиатуры запускаю чтение с ленты (LOAD ""), включаю магнитофон с программой - нормально читается программа :)
Соотв есть мысль/вопрос к Камилю (CARO), можно ли сделать такую софтовую доработку:
Вариант доработки прошивки контроллера клавиатуры в АТМ Турбо 2+ для возможности временного чтения с ленты:
1. В прошивке сделать HotKey, по которому микроконтроллер будет изолировать пины 13 и 8 на необходимое время.
2. Сделать это триггером - хоткей нажал, микроконтроллер перестал реагировать на (!KEYRD) и генерить (W_ON),
еще раз хоткей нажал - вернулись в обычное рабочее состояние
3. Сделать индикацию этого ражима - включение или мигание светодиодов на клавиатре (они должны вроде управляться микроконтроллером)
4. Помнить это состояние либо до нажатия хоткея, либо до пропадания питания.
Сам на асме увы не смогу такое дописать в исходнике.
Можно склохозить это в железе - повесить или сдвоенный переключатель, или одинарный + 2 элементах 2И и антидребезг, но софтово выглядит элегантнее.
70717
Alex.Ismagilov
20.11.2019, 21:06
Попробовал сейчас собрать схему живьем на 2 элементах 2И (выше).
Отключение и включение обратно сигнала (!KEYRD) вешает комп, АТ-клавиатура обратно к работе не возвращается. Почему ?
Максагор
20.11.2019, 22:35
4. Помнить это состояние либо до нажатия хоткея, либо до пропадания питания.
Добавлю - либо до сигнала RESET как по аппаратной кнопке, так и по Ctrl+Alt+Del на контроллере...
Попробовал сейчас собрать схему живьем на 2 элементах 2И (выше).
Отключение и включение обратно сигнала (!KEYRD) вешает комп, АТ-клавиатура обратно к работе не возвращается. Почему ?Для начала неправильно выполнена блокировка.
/KEYRD имеет активный низкий уровень и надо использовать для блокировки элемент ИЛИ (ЛЛ1).
К тому же если я правильно помню /KEYRD идет еще и на тригер формирующий сгнал /WAIT.
Если блокировать оба этих входа, то не нужно блокировать сигнал с вывода 8 MK.
Сейчас еще раз посмотрел описание ATM и прошивку.
Сигнал VE1, который поступает с системного регистра #FF77 (6-ой бит) 1-ым уровнем блокирует работу контроллера клавиатуры.
--------------
Если аппаратно блокировать контроллер, то достаточно одного элемента ИЛИ (ЛЛ1), включенного в разрыв между выводом 2 D50 (TM9) и выводом 14 D99 (1816VE31).
------
D50.2 -----| 1 |
| |
BLK -----| |------- D99.14
------
BLK=0 разрешает работу контроллера, =1 - запрещает.
Alex.Ismagilov
22.11.2019, 11:21
caro, спасибо. Вечером соберу схему - напишу результаты
Максагор
22.11.2019, 17:37
BLK=0 разрешает работу контроллера, =1 - запрещает.
А если просто безо всякого элемента "или" подать +5v(прямо или через резистор) на D99.14? А то очень не хочется бутерброды из микросхем на плату вешать... Поэтому и был вопрос о возможности сделать программный триггер в прошивке самого контроллера клавиатуры...
А если просто безо всякого элемента "или" подать +5v(прямо или через резистор) на D99.14? А то очень не хочется бутерброды из микросхем на плату вешать... Можно конечно, тем более что вопрос был в том, как простым образом проверить работу с магнитофоном при заблокированной клавиатуре. И это не предполагает включения доработки в окончательную схему.
Поэтому и был вопрос о возможности сделать программный триггер в прошивке самого контроллера клавиатуры...Предыдущее не отменяет необходимость сделать доработку прошивки для блокировки контроллера с самой клавиатуры.
Alex.Ismagilov
22.11.2019, 19:21
Если аппаратно блокировать контроллер, то достаточно одного элемента ИЛИ (ЛЛ1), включенного в разрыв между выводом 2 D50 (TM9) и выводом 14 D99 (1816VE31).
Спасибо, получилось:
включил комп с только АТ-клавиатурой
зашел в BIOS, отключил TURBO
перешел в BASIC-48
запустил LOAD""
переключил кнопочку
включил магнитофон
пилот-тон подхватился, все считалось
отключил кнопочку
набрал RUN на АТ-клавиатуре
программка запустилась
ничего не зависло
Вот по такой схеме сделал:
70731
Конденсатор для антидребезга?
Alex.Ismagilov
25.11.2019, 09:40
Да, чтобы не шуршали контакты
Отправлено с моего PRO 5 через Tapatalk
Так как я не любитель городить мгтф и тумблеры, то взял последнюю версию прошивки и добавил в нее отключение и включение клавиатуры горячими клавишами. Единственно нормально проверить не могу. Из минусов эта прошивка работает только на 8952 и требует кварц 11 мегагерц который. Если есть тут кто живой и может проверить буду рад )
Alexey_Mikhaylov
04.12.2023, 19:39
Добрый день!
В копилку: прошивка 4.0 на AT89S52 c кварцем 11 МГц завелась, но глючит. В TR-DOS вдруг залипают клавиши. В NedoOS сразу после загрузки NedoNavigatora начинает дергать клавишами и печатать всякую ерунду. Пробовал переключать на 7MГц с платы - бесполезно. Думал проблема с чем-то другим, но вернул контроллер AT89C51 c версией 3.2m и все глюки прекратились. И в 4.0 у меня не заработала блокировка по комбинации ctrl+alt+home от слова совсем.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot