PDA

Просмотр полной версии : Схема и прошивка контроллера AT PC-Keyb на AT90S2313 Камиля Каримова



fan
11.02.2005, 23:09
Не стесняйтесь, выкладывайте!!! :D
И для мыша тоже!

Схема и прошивка контроллера на ATTiny2313 от caro. (http://zx.pk.ru/showpost.php?p=85027&postcount=297)

CHRV
12.02.2005, 11:22
Не стесняйтесь, выкладывайте!!! :D
И для мыша тоже!
ВОобщето Камиль присутствует на форуме и если посчитает нужным то выложит!

fan
12.02.2005, 15:50
2 caro

Благодарствую!!! Не знал под каким вы тут ником, а то бы давно достал :D

Насчёт мыша - я имел ввиду схему (с прошивкой) на той же AT90S2313,
PS/2 -> Kempston Mouse Adapter v2.0
(c) 1999-2000 Studio STALL (Eugene Stahov)
(c) 2003 Kamil Karimov E-mail: ***@list.ru

В беседе о Profi проплывала (fido7.zx.spectrum). Впринципе для мышиного варианта у меня есть схема и прошивка. Но вдруг с того времени произошли каки либо изменения. Если возможно, то выложите и мышиный вариант.

fan
26.02.2005, 13:56
Камиль Каримов! Аааа-Уууу!!!

Общественность всё ещё жаждит получить прошивку для мыша (в данных вами линках в других ветка обнаруживается только схема).

Аааа-Уууу!!!
Ааа-Ууу!!!
А-У!!!

fan
28.02.2005, 04:22
Благодарствую!

spensor
23.03.2005, 09:10
Предлагаю интересующимся ознакомится с протоколами PS/2-мышей фирмы Ligitech (M,M+,M++,MZ,MZ+,MZ++). Источник информации уже недоступен, так что информация представляет повышенную ценность.

CHRV
23.03.2005, 09:40
Предлагаю интересующимся ознакомится с протоколами PS/2-мышей фирмы Ligitech (M,M+,M++,MZ,MZ+,MZ++). Источник информации уже недоступен, так что информация представляет повышенную ценность.
Спасибо, глянем!

axor
23.03.2005, 20:14
Не стесняйтесь, выкладывайте!!! :D
И для мыша тоже!

А чего выкладывать? Я, например, себе заказал такой контроллер у Камиля. Сейчас сижу и радуюсь. Раскладку клавиш поменял под себя. Спасибо автору за такой гибкий и универсальный контроллер!

Покупайте у автора готовые контроллеры и не мучайтесь. Стоит не дорого, качество заводское.

Ronin
28.03.2005, 16:20
Покупайте у автора готовые контроллеры и не мучайтесь. Стоит не дорого, качество заводское.

Карим, так сколько сие чудо стоит :)
и кстати, какова задержка при опросе клавиатуры (я смотрю туда wait заведен) ?

Prusak
28.03.2005, 16:36
Длительность WAIT при нажатии клавиш порядка 3 мксек

Интересно, а при использовании этого контроллера некоторые программы при нажатии клавиш тоже притормаживают, как при использовании других контроллеров AT-клавиатуры (у меня безымянный на микропроцессоре 8031 с WAIT)?

CHRV
28.03.2005, 16:52
Интересно, а при использовании этого контроллера некоторые программы при нажатии клавиш тоже притормаживают, как при использовании других контроллеров AT-клавиатуры (у меня безымянный на микропроцессоре 8031 с WAIT)?
На 8031 длительность WAIT гораздо больше. Можно сделать вообще без задержки, но не за 250р :) (например матрица из регистров и сумматоры упакованные в альтеру).

Prusak
28.03.2005, 16:55
Насколько мне известно, торможение при использовании клавиатуры связано с особенностями опроса самой клавиатуры в программе. При нормально сделанном опросе все работает без "тормозов".

caro
28.03.2005, 16:55
Интересно, а при использовании этого контроллера некоторые программы при нажатии клавиш тоже притормаживают, как при использовании других контроллеров AT-клавиатуры (у меня безымянный на микропроцессоре 8031 с WAIT)?Я тут собрал для эксперимента контроллер клавиатуры от ATM Turbo
тоже на 80С31 (1816ВЕ31), правда я использовал AT89C52,
но это не меняет дела - одно семейство MSC51.
Померил длительность WAIT при тактовой частоте 11.0592 МГц (в мксек).
Вот результаты: Клавиша не нажата/Клавиша нажата
Прошивка XT (версия 1.06): 50/130
Прошивка AT (версия 2.2): 36/58
Контроллер на AT90S2313: 0/3

Prusak
28.03.2005, 16:59
Контроллер на AT90S2313: 0/3

А реально при эксплуатации было замечено "подвисание" или "торможение" программ?

caro
28.03.2005, 17:02
А реально при эксплуатации было замечено "подвисание" или "торможение" программ?Нет не замечал.
Действительно, как ты заметил, торможение возникает при
интенсивном опросе порта клавиатуры.
Если сделать опрос по прерываниям, торможение не будет так заметно
даже с контроллерами на MSC51.

CHRV
28.03.2005, 17:07
Насколько мне известно, торможение при использовании клавиатуры связано с особенностями опроса самой клавиатуры в программе. При нормально сделанном опросе все работает без "тормозов".
Задержка, зависит от того за сколько тактов успеет посчитать и выдать нужный результат контроллер... От типа и скорости АТ клавиатуры никак не зависит.
Дело в том что результат зависит от того какие линии механической клавиатуры спека сканируются, поэтому результат нужно вычислять. Результат можно вычислить заранее и держать ввиде таблицы - тогда задержка равна только выдачи из таблицы нужного значения. А если клавиши не нажаты, то можно аппаратно флаг выставить (на ножку контроллера), чтобы в этом случае WAIT не выдавался. Кажется так и сделано у Камиля :) .
Да видимо если обработчик клавы сидит в прерывании, то скорость обработки не сильно влияется на программу.

Prusak
28.03.2005, 17:13
Нет, зависит от того за сколько тактов успеет посчитать и выдать нужный результат контроллер... От типа и скорости АТ клавиатуры никак не зависит.

Тогда должно подтормаживать на любой программе, а в реальности это наблюдается только на некоторых программах.

CHRV
28.03.2005, 17:16
Насколько мне известно, торможение при использовании клавиатуры связано с особенностями опроса самой клавиатуры в программе. При нормально сделанном опросе все работает без "тормозов".
Извините немножко некорректно ответил, потом поправил :smile: .
Надеюсь из моего ответа теперь все понятно :wink: .

Prusak
28.03.2005, 17:23
Вопросы по схеме:

1) Сигнал /PFE - это выборка порта #FE с активным низким уровнем?
2) Сигнал /RESET - выходной, эмулирует сброс по Ctrl+Alt+Del?
3) Может быть имеет смысл сделать возможность сброса самого контроллера на случай подвисания оного (теоретически такая вероятность может быть) заведением кнопки на вывод 1 (-RES) микрокотроллера с одной стороны и на общий провод с другой?

caro
28.03.2005, 17:29
1) Сигнал /PFE - это выборка порта #FE с активным низким уровнем? Да.

2) Сигнал /RESET - выходной, эмулирует сброс по Ctrl+Alt+Del?Не стал я городить такую логику.
/RESET длительностью 10 мс. выдается при нажатии на Print Screen.

3) Может быть имеет смысл сделать возможность сброса самого контроллера на случай подвисания оного (теоретически такая вероятность может быть) заведением кнопки на вывод 1 (-RES) микрокотроллера с одной стороны и на общий провод с другой?Может :) Только тогда и в IBM-ской клавиатуре надо поставить кнопку Сброса,
она тоже сделана на микроконтроллере и тоже может "теоретически" зависнуть :) .

Spectre
28.03.2005, 18:07
Торможение появляется если часто опрашивать клавиатуру:


LOOP LD A,n
IN A,(#FE)
RRA
JR C,LOOP


Контроллер на время опроса генерит WAIT, а поскольку опрос непрерывный, то и WAIT генерится постоянно и прога тормозит. Чтобы бороться с этим нужно опрашивать реже, например так:


LOOP HALT
LD A,n
IN A,(#FE)
RRA
JR C,LOOP


Если я правильно понял Caro, его новый контроллер не генерит WAIT когда кнопки не нажаты? Тогда торможения при частом опросе не будет (конечно если кнопки не жать).

jtn
28.03.2005, 19:30
да, spectre правильный пример привел, только забыл написать, что на прерываниях играется музыка:) т.е. при опросе без halt прерывание может проскочить - музыку будет коматозить

fan
29.03.2005, 02:13
Без вейтовый вариант -
http://www.speccy.org/trastero/cosas/droy/imar3/imar3_e.htm

caro
29.03.2005, 08:54
Без вейтовый вариант -
http://www.speccy.org/trastero/cosas/droy/imar3/imar3_e.htmИмеет проблемы, которых нет в моем (см. Known problems).

Ronin
29.03.2005, 11:47
1) Меня Камиль зовут :) .
2) Стоит 250 р. с пересылкой по России.
3) Длительность WAIT при нажатии клавиш порядка 3 мксек (тактовая чаcтота контроллера 10 МГц).
При не нажатых клавишах WAIT не формируется.

1) дико извиняюсь :)
2) обязательно закажу!
3) это ж 10.5 тактов Z80 или 21 пиксель экрана ;) браво!

по другим контроллерам - юзал раньше Nemo-ий XT контроллер (i8048 7мгц кажется) - почти тот же что Profi, при ненажатых клавишах задержка строк 1-3, на нажатых раза в два дольше (точно не замерял, и вообще забыл :) ). проблем с "подвисаниями" типа как на скорповском контроллере вроде как не было (может я только "правильные" проги запускаю ;) )

lvd
29.03.2005, 12:24
Имеет проблемы, которых нет в моем (см. Known problems).

Вообще-то автор не додумал самую малость! Надо было не шифратор на A8-A15 ставить, а сразу все A8-A15 завести на ОЗУшку! И всё было бы тип-топ! =)))

caro
31.03.2005, 07:52
Вообще-то автор не додумал самую малость! Надо было не шифратор на A8-A15 ставить, а сразу все A8-A15 завести на ОЗУшку! И всё было бы тип-топ! =)))Ну не все так просто.
Придется добавить еще один мультиплексор на входе ОЗУ,
но и тогда у PICа в данной схеме не хватит ног для адресации
(вместо 3 ног надо будеть заводить все 8, а свободных 5 у него нет).
Придется ставить что-нибудь типа PIC16F876 (28 ног).

lvd
31.03.2005, 10:49
Ну не все так просто.
Придется добавить еще один мультиплексор на входе ОЗУ,
но и тогда у PICа в данной схеме не хватит ног для адресации
(вместо 3 ног надо будеть заводить все 8, а свободных 5 у него нет).
Придется ставить что-нибудь типа PIC16F876 (28 ног).

Это уже мелочи и 'пикоманство'. =) Я об общем принципе. Я бы, например, вообще AT90s8151 всунул бы, с шиной, и к ней озушку.

caro
31.03.2005, 11:32
Это уже мелочи и 'пикоманство'. =) Я об общем принципе. Я бы, например, вообще AT90s8151 всунул бы, с шиной, и к ней озушку.Наверное имелся ввиду AT90S8515 (теперь ATMEGA8515).
Так без мультиплексора адреса сканирования все равно не обойтись (для организации двухпортового ОЗУ).
И все это ради того, что бы исключить при опросе нажатых клавиш /WAIT длительностью 3 мксек. (11 тактов Z80)?
Кстати если в контроллере использовать ATTiny2313 c кварцем на 20 МГц., длительность /WAIT падает до 1.5 Мкс., а это уже пренебрежимо мало.

Prusak
31.03.2005, 13:20
А сигнал /NMI в контроллере введен в качестве задела на будущее или реально используется? Если реально, то при каких условиях контроллер генерирует немаскируемое прерывание?

caro
31.03.2005, 13:34
А сигнал /NMI в контроллере введен в качестве задела на будущее или реально используется? Если реально, то при каких условиях контроллер генерирует немаскируемое прерывание?В Кворумах сигнал /NMI реально используется для формирования соответствующего сигнала Z80.
Причем в ПЗУ предусмотрена процедура проверки наличия в теневом ОЗУ по адресу 0x66 команды JMP (0xC3).
Это позволяет перенаправить NMI на пользовательскую процедуру обработки этого прерывания.
Предваряя вопрос о том как это используется, скажу, да используется активно, но описывать слишком долго.

Prusak
31.03.2005, 13:41
Предваряя вопрос о том как это используется, скажу, да используется активно, но описывать слишком долго.

Значит на компьютере с подключенным контролером клавиатуры обязательно должно стоять перешитое ПЗУ? И я так понял, что при работе контроллер постоянно генерирует NMI?

caro
31.03.2005, 13:52
Значит на компьютере с подключенным контролером клавиатуры обязательно должно стоять перешитое ПЗУ? И я так понял, что при работе контроллер постоянно генерирует NMI?Импульс /NMI формируется при нажатии клавиши F12, тоесть по запросу пользователя, например для вызова фоновой задачи из ОЗУ, или встроенного в ПЗУ монитора.
А контроллеру не зачем щелкать /NMI :)
И если в ПЗУ нормальной обработки NMI не предусмотрено, то и не надо этот выход контроллера подключать к Z80.

lvd
01.04.2005, 14:09
Наверное имелся ввиду AT90S8515 (теперь ATMEGA8515).

Угу, очепятался.



Так без мультиплексора адреса сканирования все равно не обойтись (для организации двухпортового ОЗУ).
И все это ради того, что бы исключить при опросе нажатых клавиш /WAIT длительностью 3 мксек. (11 тактов Z80)?

Ну я и говорю - ортодокс я такой (в теории пока :)).



Кстати если в контроллере использовать ATTiny2313 c кварцем на 20 МГц., длительность /WAIT падает до 1.5 Мкс., а это уже пренебрежимо мало.

Мало - не мало, а /WAIT как-то ещё в спек зафигачить надо. А так - на клавиатурный вход подался и всё =)

caro
01.04.2005, 14:18
... /WAIT как-то ещё в спек зафигачить надо. А так - на клавиатурный вход подался и всё =)Да, это серьезный аргумент, теперь все понятно ;)

Doctor Max
06.04.2005, 12:14
Хотелось бы контроллер клавы и мыши с поддержкой колеса на одной плате. Такое бывает?

caro
06.04.2005, 12:21
Хотелось бы контроллер клавы и мыши с поддержкой колеса на одной плате. Такое бывает?Схема есть. Но говорят надо еще и модем. Вот и думаю что делать :)

CHRV
06.04.2005, 12:28
Схема есть. Но говорят надо еще и модем. Вот и думаю что делать :)
Опрос потенциальных покупателей показал что нужно именно три в одном Ps/2 keyb, Ps/2 mouse, RS-232. Ну если не получится так не получится :)

caro
06.04.2005, 12:48
Опрос потенциальных покупателей показал что нужно именно три в одном Ps/2 keyb, Ps/2 mouse, RS-232. Ну если не получится так не получится :)Ну почему не получится, ты же знаешь что уже есть рабочий макет на ATMEGA8515. Для меня проблема в том, что первый вариант легко вписывается в ATTiny2313 и отказываться от такого оптимального по структуре контроллера у меня рука не поднимается. А на 8515 остается еще масса ресурсов, которые грех не использовать. А это означает, что надо дать возможность пользователю гибко их использовать, тоесть дать возможность легко перешивать его ПО. Но в этом случае при любой ошибке система может стать неработоспособной (клавиатура то висит не нем же).
Вопрос ко всем, кто что по этому поводу думает?

CHRV
06.04.2005, 12:51
Ну почему не получится, ты же знаешь что уже есть рабочий макет на ATMEGA8515. Для меня проблема в том, что первый вариант легко вписывается в ATTiny2313 и отказываться от такого оптимального по структуре контроллера у меня рука не поднимается. А на 8515 остается еще масса ресурсов, которые грех не использовать. А это означает, что надо дать возможность пользователю гибко их использовать, тоесть дать возможность легко перешивать его ПО. Но в этом случае при любой ошибке система может стать неработоспособной (клавиатура то висит не нем же).
Вопрос ко всем, кто что по этому поводу думает?
А вообще это ход - перешивать непосредственно контроллер не вынимая. Я лично считаю - очень полезная фича. А от ошибок никто не гарантирован, в конце концов сходить к другу с программатором или в сервис центр не проблема.
МОжет подумать что еще можно реализовать дополнительно? Предлагайте....

Doctor Max
06.04.2005, 12:54
Схема есть. Но говорят надо еще и модем. Вот и думаю что делать :)
Я считаю, что модем не нужен. Какой смысл? А вот Com-порт не помешало бы... В общем, хочу плату!!! 8-)

CHRV
06.04.2005, 12:56
Я считаю, что модем не нужен. Какой смысл? А вот Com-порт не помешало бы... В общем, хочу плату!!! 8-)
Дык разговор не о модеме, а о RS232 к которому модем или кабель для соединения с ПЦ можно кинуть! :smile:

Doctor Max
06.04.2005, 12:57
А вообще это ход - перешивать непосредственно контроллер не вынимая. Я лично считаю - очень полезная фича. А от ошибок никто не гарантирован, в конце концов сходить к другу с программатором или в сервис центр не проблема.
МОжет подумать что еще можно реализовать дополнительно? Предлагайте....

А программно реализовать 512ви1 можно? Нехило было бы!
А то я тут Профи лишился, хочу Пентагон самостоятельно до этого уровня доработать ;)
ЗЫЖ Кста, посылочка должна скоро прийти к тебе. сегодня отправил.

caro
06.04.2005, 12:58
А вообще это ход - перешивать непосредственно контроллер не вынимая. Я лично считаю - очень полезная фича.У АТМЕЛа как ты знаешь это реализуется легко.

А от ошибок никто не гарантирован, в конце концов сходить к другу с программатором или в сервис центр не проблема.Желательно быть автономным. Думаю тут со мной многие согласятся.

МОжет подумать что еще можно реализовать дополнительно? Предлагайте....Без проблем:
1) Часы реального времени;
2) Математический сопроцессор;
3) АЦП/ЦАП.

Doctor Max
06.04.2005, 12:58
Дык разговор не о модеме, а о RS232 к которому модем или кабель для соединения с ПЦ можно кинуть! :smile:
Тогда НУЖНО!

spensor
06.04.2005, 13:43
Вопрос к caro - а реально контроллер 2 PS/2 устройств и RS-232 зарелизить на 51 кристалле или тактов не хватит? В принципе? тогда вместо дорогой AVR, можно использовать AT89S53, тоже с перепрограммированием в системе.

caro
06.04.2005, 13:51
Вопрос к caro - а реально контроллер 2 PS/2 устройств и RS-232 зарелизить на 51 кристалле или тактов не хватит? В принципе? тогда вместо дорогой AVR, можно использовать AT89S53, тоже с перепрограммированием в системе.Запросто - см. контроллер встроенный в ATM.
Я его собрал ввиде отдельного модуля на AT89C52 и подключил к своему Кворуму.
Единственный минус - при той же тактовой частоте все задержки (длительность /WAIT) больше на порядок, а так работает.

CHRV
06.04.2005, 13:59
У АТМЕЛа как ты знаешь это реализуется легко.
Желательно быть автономным. Думаю тут со мной многие согласятся.
НУ это да, но клавиши то отьедут в случае неудачи! Т.е. надо механику получается про запас держать :smile: .


Без проблем:
1) Часы реального времени;
2) Математический сопроцессор;
3) АЦП/ЦАП.
1,3 это дело, а вот 2 честно говоря не очень понимаю как будет выглядеть!

caro
06.04.2005, 14:08
НУ это да, но клавиши то отьедут в случае неудачи! Т.е. надо механику получается про запас держать :smile: .Об этом я и говорю - контроллер клавиатуры должен быть стационарным. Ну а если с ним еще и мышка умещается, так это совсем хорошо.

1,3 это дело, а вот 2 честно говоря не очень понимаю как будет выглядеть!Записал два байта - получил слово, равное произведению. Это в простейшем случае.
На Атмеле и с плавающей точкой шустрее будет работать.
Передал два числа, проверил готовность - получил результат.

Ronin
07.04.2005, 12:22
ну, раз такая пьянка пошла, я тоже хочу все в куче ;)
сначала хотел просто мышу+клаву, рс232 както не особо нужен, хотя не помешает. посмотрел что 8515 стоит почти как 2313 старая - значит на ней и надо делать новый контроллер. доп.-ые ресурсы можно наверстать в будущем при совершенствовании прошивки, раз уж возможность прошивки будет. Для тех кто боится остатся без клавы варианты 1) не трогать :) или 2) сложить в бутовую область (и защитить) [сорри если бред ляпнул - 8515 мельком просмотрел] часть кода с опросом клавиатуры.
часики - это тоже хорошо (сам об том же както думал, на кой черт нам эта ВИ1 когда куча микроконтроллеров вокруг)
АЦП - полезно иногда.
ЦАП - ну неужто его ШИМ вместо ковокса можно заставить работать ;)
мат. сопроц - эээ, так и до ARMов недалеко ;)))))))))))))
ацп/цап, мат-сопроц. - некритично, оставить на будущее.

итого по минимуму (че там забыл еще)
1. мыша пс/2
2. клава пс/2
3. рс232ц - вот только с уровнями с этими блин возится...
4. часы реального времени + еепром

CHRV
07.04.2005, 12:28
итого по минимуму (че там забыл еще)
1. мыша пс/2
2. клава пс/2
3. рс232ц - вот только с уровнями с этими блин возится...
4. часы реального времени + еепром
Поддерживаю!
А какие проблемы с уровнями? ILX232 от "интеграла" и порядок, ну или доргущая MAX232 :)!

Ronin
07.04.2005, 13:10
А какие проблемы с уровнями? ILX232 от "интеграла" и порядок, ну или доргущая MAX23
а, все это возня с преобразователями или дорогущая макс323 ;) (при том что блин все равно в ТТЛ обычно конвертится тут же, елки палки, стандарт понимаешь) а что, интеграловская - аналог макса ? и скоко стоит примерна ?

caro
07.04.2005, 13:23
а что, интеграловская - аналог макса ? и скоко стоит примерна ?У нас в Промэлектронике:
ILX232D - Интерфейс RS-232 2пер, 2пр, 120кБит/сек Uп=2В...6В, -40...+85
Цена 1 шт. - 19.12 руб.
10 шт. - 17.39 руб.
100 шт. - 16.53 руб.
В тех случаях, когда используется трехпроводное подключение по RS232 удобней всего на плате преобразователь вообще не разводить, а ставить его либо в разрыв плата - выходной разьем, либо использовать стандартные кабели от сотовых телефонов со встроенными в разьем преобразователями уровня.

Ronin
07.04.2005, 13:34
У нас в Промэлектронике:
ILX232D - Интерфейс RS-232 2пер, 2пр, 120кБит/сек Uп=2В...6В, -40...+85
Цена 1 шт. - 19.12 руб.
10 шт. - 17.39 руб.
100 шт. - 16.53 руб

рулез


либо использовать стандартные кабели от сотовых телефонов со встроенными в разьем преобразователями уровня.

именно так я и делаю.

CHRV
07.04.2005, 15:12
В тех случаях, когда используется трехпроводное подключение по RS232 удобней всего на плате преобразователь вообще не разводить, а ставить его либо в разрыв плата - выходной разьем, либо использовать стандартные кабели от сотовых телефонов со встроенными в разьем преобразователями уровня.
Хотя бы местечко под нее оставить надо, а если площадь жалко то хотя бы для SOIC.

jtn
12.04.2005, 21:17
...еще бы софт для прошивания на реале.

Costa
12.04.2005, 23:12
сам об том же както думал, на кой черт нам эта ВИ1 когда куча микроконтроллеров вокруг
Не ну объясните мне кто нибудь,ну как можно RTC на микроконтроллере сделать?
То ли я от жизни отстал совсем то ли бред полный.

lvd
13.04.2005, 07:11
Не ну объясните мне кто нибудь,ну как можно RTC на микроконтроллере сделать?
То ли я от жизни отстал совсем то ли бред полный.

Теоретически - запросто =) Есть контроллеры с 32768Гц осциллятором, к которому цепляется одноимённый кварц, сам контрольник кладётся в слиип, а таймер считает. Как насчитает 2 секунды, так прерывание, контрольник просыпается, апдейтит время и снова дохнет =)

Costa
13.04.2005, 09:16
Теоретически - запросто =) Есть контроллеры с 32768Гц осциллятором, к которому цепляется одноимённый кварц, сам контрольник кладётся в слиип, а таймер считает. Как насчитает 2 секунды, так прерывание, контрольник просыпается, апдейтит время и снова дохнет =)
Да это понятно,но как в указаном 8515 то сделать?
какое у него потребление в режиме idle? вроде тока в нём таймер считает.
как быть с поддержкой питания(батарейка) или современные МК обходятся
без них?

caro
13.04.2005, 09:25
Да это понятно,но как в указаном 8515 то сделать?В 8515 нет отдельного таймера для часов реального времени.
Поэтому для реализации часов реального времени в схеме
ZX_Multi_Card (http://zx.pk.ru/attachment.php?attachmentid=477)
стоит автономный таймер с резервной батарейкой.

Costa
13.04.2005, 09:31
стоит автономный таймер с резервной батарейкой.
Спасибо,это я и хотел выяснить.

dosikus
17.04.2005, 17:45
У меня вопрос к Камилю :
Реально ли изготовить все железо Спектрума (кроме процессора и памяти), а не только контролера клавиатуры на микроконтроллере(ах)?
И ссылка в тему http://kazus.ru/modules.php?name=Forums&file=viewtopic&t=1852&postdays=0&postorder=asc&start=0
Здесь есть инструмент в помощь разработчикам устройств на микро
PROTEUS 673 PRO.

dosikus
17.04.2005, 17:50
Теоретически - запросто =) Есть контроллеры с 32768Гц осциллятором, к которому цепляется одноимённый кварц, сам контрольник кладётся в слиип, а таймер считает. Как насчитает 2 секунды, так прерывание, контрольник просыпается, апдейтит время и снова дохнет =)
Это все есть в PIC16F876A.Называется TMR1. :)

lvd
17.04.2005, 19:06
Это все есть в PIC16F876A.Называется TMR1. :)
Гы, а я, по-твоему, о чём говорил?

Ronin
17.04.2005, 21:35
да все, каюсь, глупость сказал, криво и вообще не получится.
просто вот про такие пики я подумал, когда увидел цену на RTC в несколько баксов. однако потом и дешевле нашел, так что RTC отдельным быть.

caro
18.04.2005, 07:51
Реально ли изготовить все железо Спектрума (кроме процессора и памяти), а не только контролера клавиатуры на микроконтроллере(ах)?Конеч� �о реально.
Не реально, что кто-то будет этим заниматься ради спортивного интереса.

Ronin
18.04.2005, 10:43
Реально ли изготовить все железо Спектрума (кроме процессора и памяти)

Спектрум вообще-то состоит из Z80, ROM, RAM, AY, ВГ93, схем управления ими, видеоконтроллера, и парой портов типа клавиатур да бордюрных магнитофонов. эмулировать AY/ВГ93 и тем более видеоконтроллер микроконтроллером - весьма сомнительно, тут только ПЛМ может что-то сделать, и то пихать туда AY и ВГшку смысла нет (пример с ПЛМ - GMX). а все остальное - это клавиатура/мыши - и делает сабжевый контроллер.

lvd
18.04.2005, 12:10
Спектрум вообще-то состоит из Z80, ROM, RAM, AY, ВГ93, схем управления ими, видеоконтроллера, и парой портов типа клавиатур да бордюрных магнитофонов. эмулировать AY/ВГ93 и тем более видеоконтроллер микроконтроллером - весьма сомнительно, тут только ПЛМ может что-то сделать,

Нифига не сомнительно. Думаешь, за 80 тактов атмега2313 не успеет 1 такт АУка сэмулить и в свои 3 ПВМа выдать? =)
С вг примерно то же самое. Единственное - за шиной следить придётся ещё 1 атмегой и по к.-л. последовательному порту в другую загонять данные.

alexfreed
18.10.2005, 10:08
Нет спора - на 2313 очень хорошее решение. Но наверное можно слегка улучшить
быстродействие. Посмотрел прошивку: по прерыванию проверяются все биты адреса по одному. Это 2 такта на бит итого 16.
Допустим у нас есть 256 байт RAM (Mega 8 etc.) Заранее пропишем ответ во все 256
адресов. Тогда по прерыванию вытаскиваем ответ и отдаем. Похоже что и SREG можно не сохранять. Так что можно и без WAIT вписаться, наверное.
Кажется мега48 шустрая.

IN R26, PORT_ADDR
LD tmp, X+
OUT PORT_DATA, tmp

PORT_DATA может быть отдельным, чтобы вход/вых не переключать.
Может даже
OUT DDRX, tmp
изображая открытый коллектор? Или 6-й бит переключает буффер.

caro
18.10.2005, 10:57
Нет спора - на 2313 очень хорошее решение. Но наверное можно слегка улучшить
быстродействие. Посмотрел прошивку: по прерыванию проверяются все биты адреса по одному. Это 2 такта на бит итого 16.При тактовой 16 Мгц (для ATtiny2313 до 20 Мгц) это 1 мксек.
За это время Z80 даже одну команду не успевает выполнить.
Мне кажется заниматься дальнейшей оптимизацией можно только ради самого процесса :)

alexfreed
18.10.2005, 14:40
При тактовой 16 Мгц (для ATtiny2313 до 20 Мгц) это 1 мксек.
За это время Z80 даже одну команду не успевает выполнить.
Мне кажется заниматься дальнейшей оптимизацией можно только ради самого процесса :)

Камиль, я же не критикую. Развиваю тему.

Если 1 мкс, то наверное мое решение и правда не требует WAIT. На цикле
I/O всегда есть 280*2 нс до того как данные защелкиваются.
Мне 1 мкс не жалко, но решение когда не надо WAIT заводить проще.

Что до "ради процесса" там мы все тут (как я думаю) занимаемся именно этим.

caro
24.10.2005, 17:22
IN R26, PORT_ADDR
LD tmp, X+
OUT PORT_DATA, tmp

Попробовал на ATMega8515 при тактовой 16 Мгц.


INT_0: ;2..3 такта
in XL,PINA ;2 адрес сканирования
ld temp,X ;2 скан-код из ОЗУ
out PORTC,temp ;2 выдать в порт
reti

Получается минимально 8..9 тактов на ответ, то есть больше 500 нс.
К сожалению это много - без WAIT не обойтись.

alexfreed
25.10.2005, 01:02
Попробовал на ATMega8515 при тактовой 16 Мгц.
Получается минимально 8..9 тактов на ответ, то есть больше 500 нс.
К сожалению это много - без WAIT не обойтись.

Да, чуть-чуть не хватает. Т.е. если взять Mега 48 (20 МГц) должно пройти.
А тем более оверклокнуть слегка.

Конечно все это стоит делать если еще придумать для Атмела работу, а то
много места в памяти остается :)

Предложения уже были. Еще идеи: RS232 interface. А может удастся
прикинуться 1793 а данные брать с CF? Без переписывания TRDOS...

ILoveSpeccy
01.06.2007, 08:47
Очень нужна схема и прошивка...
Поделитесь люди добрые... :rolleyes:
Ато вся работа остановилась... клавиатуры нима...
А кроме пары PICов и AT90S2313 под рукой ничего нету :(
...

KingOfEvil
01.06.2007, 09:06
Очень нужна схема и прошивка...
Поделитесь люди добрые... :rolleyes:
Ато вся работа остановилась... клавиатуры нима...
А кроме пары PICов и AT90S2313 под рукой ничего нету :(
...

а 1878ВЕ1, разумеется, тоже нема?

caro
01.06.2007, 16:09
Очень нужна схема и прошивка...
Поделитесь люди добрые... :rolleyes:
Ато вся работа остановилась... клавиатуры нима...
А кроме пары PICов и AT90S2313 под рукой ничего нету :(
...Давно лежит здесь на форуме: http://zx.pk.ru/attachment.php?attachmentid=4993&d=1176184745

ILoveSpeccy
01.06.2007, 16:22
Давно лежит здесь на форуме: http://zx.pk.ru/attachment.php?attachmentid=4993&d=1176184745

Спасибо...
Всю ночь лазил по форуму, а не нашел :v2_frown:

Или плохо искал.... или хорошо спрятали :v2_tong:

caro
01.06.2007, 16:49
Всю ночь лазил по форуму, а не нашел :v2_frown:

Или плохо искал.... или хорошо спрятали :v2_tong:Будут вопросы, отвечу.

spensor
05.06.2007, 17:29
Caro, подскажите, а перестроить прошивку от ATTiny2313 или ATMega8515 под ATMega8 не пробывали? Оставить там только контроллер клавиатуры и мыши. Корпус покомпактнее и поудобнее будет.

caro
05.06.2007, 18:46
Caro, подскажите, а перестроить прошивку от ATTiny2313 или ATMega8515 под ATMega8 не пробывали? Оставить там только контроллер клавиатуры и мыши. Корпус покомпактнее и поудобнее будет.Прикидывал, сделать можно без проблем.
Только кому это теперь надо? :)

Syntal
06.06.2007, 09:40
Caro, а не могли бы Вы поделиться сырцами самой прошивки? Хочется пересобрать проект под имеющиеся ATMega88.

icebear
06.06.2007, 12:17
Caro, а не могли бы Вы поделиться сырцами самой прошивки? Хочется пересобрать проект под имеющиеся ATMega88.

Имхо, лучше не надо, что бы не появились различные недо-, супер- и перепрошивки. В том смысле, что держать лучше все в руках одного человека/организации.

spensor
06.06.2007, 13:04
Прикидывал, сделать можно без проблем.
Только кому это теперь надо?
Да мне вот надо, конструктив такой на доработке, что широкий DIP40 там не разместить, не говоря про PLCC, а вот узенький DIP28 в самый раз. В принципе и 2313 подошла бы, но увы там только клавиатура.

caro
06.06.2007, 13:22
Да мне вот надо, конструктив такой на доработке, что широкий DIP40 там не разместить, не говоря про PLCC, а вот узенький DIP28 в самый раз. В принципе и 2313 подошла бы, но увы там только клавиатура.Вариант контроллера на ATTiny2313 c поддержкой и клавиатуры и мышки
я уже кидал как то в форум. Только прошивку не доделал, за не востребованностью.

Syntal
06.06.2007, 15:00
Имхо, лучше не надо, что бы не появились различные недо-, супер- и перепрошивки. В том смысле, что держать лучше все в руках одного человека/организации.
Придётся тогда как в спековские времена - хакать, дизассемблировать, переделывать под себя, реализовывать на имеющемся железе. Так будет даже интереснее!!! Ладно, шучу я, всё равно времени как обычно не найдётся.:(

spensor
06.06.2007, 16:39
Вариант контроллера на ATTiny2313 c поддержкой и клавиатуры и мышки
я уже кидал как то в форум. Только прошивку не доделал, за не востребованностью.
А прошивка сырая или просто не рабочая?
Хотя все равно склоняюсь к Mega8(88) - доработки прошивки под базовый кристалл (8515) было бы относительно несложно портировать и под эту вариацию. Но, естественно, это доступно только автору, поскольку одно дело в исходнике корректировать, а другое в дизасме.

caro
06.06.2007, 17:03
А прошивка сырая или просто не рабочая?
Сырая, не проверенная на железе.

Хотя все равно склоняюсь к Mega8(88) - доработки прошивки под базовый кристалл (8515) было бы относительно несложно портировать и под эту вариацию.У Mega8(88) не очень удобно распределение ножек по портам - один полноценный 8-ми битный порт,
но поскольку именно на нем закреплены основные сигналы прерываний использовать
его как порт связи с шиной Z80 не получается.
Так что простыми способами перенести прошивку из Mega8515 в Mega8(88) не получается.

Добавлено через 2 минуты

Придётся тогда как в спековские времена - хакать, дизассемблировать, переделывать под себя, реализовывать на имеющемся железе. Так будет даже интереснее!!!Проще просто сесть и написать новую прошивку. Даже лучше может получится.
KingOfEvil вон за 4 дня склепал прошивку под свой Z-контроллер.

Syntal
06.06.2007, 17:28
Проще просто сесть и написать новую прошивку. Даже лучше может получится.
KingOfEvil вон за 4 дня склепал прошивку под свой Z-контроллер.
Писал я с год назад клавиатурного шпиона аж под Tiny13 с Atmelовской флэш-памятью по SPI, с анализом даже интересующих логинов. В принципе работало, с глюками правда (куда ж без них). Только вот прикол - админа дали раньше, чем железка помогла.
Анти-офтоп: Caro, а можно поинтересоваться изначально прошивка писалась на асме или на Си?

caro
06.06.2007, 17:43
.... а можно поинтересоваться изначально прошивка писалась на асме или на Си?На асме.

ILoveSpeccy
06.06.2007, 18:26
Проще просто сесть и написать новую прошивку. Даже лучше может получится.

Я вот уже несколько дней пытаюсь контроллер клавиатуры замутить :)
Подумал, и решил всетаки сам...
Заодно и контроллеры подучить (точнее начать изучать) может получится.
Пока результатов нима.
Но меня интересует вот что:

* если одновременно нажато 2 или более кнопки, каким образом это проще распознать?
* что делать с автоповтором, который в РС-клавиатуре? Как он работает? Просто передает несколько раз код нажатия клавиши и только при отпускании передает код, что кнопка отпущена? (нигде доку найти не мог на ету тему...) Может есть пара ссылок?

caro
07.06.2007, 08:49
* если одновременно нажато 2 или более кнопки, каким образом это проще распознать?Судя по описаниям контроллеров клавиатур (я имею ввиду встроенных в клавиатуры),
они допускают обработку не более 6 одновременно нажатых клавиш.
Поэтому в памяти внешнего контроллера организуется буфер на 6 скан-кодов.
Каждая нажатая клавиша вызывает выдачу в интерфейс своего скан-кода (некоторые больше одного).
Даже если нажато одновременно несколько клавиш, их скан-коды будут выданы в линию один за другим,
в порядке опроса матрицы клавиатуры встроенным контроллером.
Принятые скан-коды помещаются в буфер внешнего контроллера.
При отпускании клавиши, в начале выдается служебный байт (0xF0) - признак отпускания, затем сам скан-код этой клавиши.
При этом из буфера удаляется код отпущенной клавиши.


* что делать с автоповтором, который в РС-клавиатуре? Как он работает? Просто передает несколько раз код нажатия клавиши и только при отпускании передает код, что кнопка отпущена?При удержании клавиши начинается цикл автоповтора, при котором в линию передается один и тот же код нажатой клавиши.
Принятый код надо просто сравнить с тем что уже лежит в буфере, и при совпадении просто игнорировать.
Есть правда еще один вариант и лично я им пользуюсь.
Надо переключить клавиатуру в режим scan code 3, при котором каждой нажатой клавише соответсвует один уникальный скан-код, а также установить режим работы Make/Break запрещающий автоповтор кода:

ldi data,0xf0 ;Select Alt_Scan
rcall trans_ack ;передать
ldi data,0x03 ;Alt_Scan = 3
rcall trans_ack ;передать
;
ldi data,0xf8 ;Select All Make/Break
rcall trans_ack ;передать

spensor
07.06.2007, 11:33
У Mega8(88) не очень удобно распределение ножек по портам - один полноценный 8-ми битный порт,
но поскольку именно на нем закреплены основные сигналы прерываний использовать
его как порт связи с шиной Z80 не получается.
Так что простыми способами перенести прошивку из Mega8515 в Mega8(88) не получается.
Может конечно и ошибаюсь, но можно и второй порт под порт данных заюзать - PB, а осциллятор использовать внутренний. Ведь контроллеры в самих клавах/мышах не обладают большой стабильностью частоты. В то же время внутренний осциллятор Меги, в принципе обладает приемлимой стабильностью частоты. Кроме того, хоть и не так хорошо как в базе (8515), но и в Меге8 можно реализовать COM-порт; проблемы только будут с пересчетом коэффициентов для таймеров, и отклонением этих частот от стандартных, но это не очень существенно, IMHO.

caro
07.06.2007, 11:57
Может конечно и ошибаюсь, но можно и второй порт под порт данных заюзать - PB,Длительность WAIT увеличится.

а осциллятор использовать внутренний. Ведь контроллеры в самих клавах/мышах не обладают большой стабильностью частоты. В то же время внутренний осциллятор Меги, в принципе обладает приемлимой стабильностью частоты.Да, стабильность при работе с клавиатурой и мышкой вполне премлемая.
Только вот частота 8 Мгц, а для Mega8(88) можно ставить внешний до 20 МГц.

Кроме того, хоть и не так хорошо как в базе (8515), но и в Меге8 можно реализовать COM-порт; проблемы только будут с пересчетом коэффициентов для таймеров, и отклонением этих частот от стандартных, но это не очень существенно, IMHO.
COM-порт при тактовой частоте 8 Мгц с приемлемой точностью может работать со скоростью не выше 9600 бод.

Реализовать можно все что хочется, только какими усилиями.
При таких потребностях в периферии проще уж ставить и контроллер соответсвующий.

spensor
07.06.2007, 12:30
Длительность WAIT увеличится.
В смысле? Из-за порта что-ли?.. Или из-за осциллятора?


Да, стабильность при работе с клавиатурой и мышкой вполне премлемая.
Только вот частота 8 Мгц, а для Mega8(88) можно ставить внешний до 20 МГц.
Ну тут как говорится, выбирается меньшая из зол. С WAIT как нибудь пережить можно.

COM-порт при тактовой частоте 8 Мгц с приемлемой точностью может работать со скоростью не выше 9600 бод.
Ну хоть как нибудь. Хотя COM в принципе это пока штука невостребованная, в отличии от клавиатур/мышей. Главное конструктив и поддержка производителя;)

При таких потребностях в периферии проще уж ставить и контроллер соответсвующий.
Ну для абсолютного счастья в самый раз ARM9 подойдет, с OTG USB2.0 на борту, но как говорится "это фантастика";)

caro
07.06.2007, 13:10
В смысле? Из-за порта что-ли?.. Биты придется раскидать по двум портам и выдавать их за два приема.
Вот и времени больше тратится.
А /WAIT при работе с клавиатурой многим не нравится :)
COM-порт я считаю крайне необходимая штука, и то что пока не востребован, это временное явление.
Скорость работы порта желательно как можно больше (115200), тогда и толк от него будет максимальный.
Времени пока нет, а то бы давно написал утилиту для загрузки в Спектрум Z80 и SNA-файлов по COM-порту ZXMC.

spensor
07.06.2007, 16:30
Биты придется раскидать по двум портам и выдавать их за два приема.
Вот и времени больше тратится.
Еще раз. Если отказаться от внешнего резонатора, и порт PB использовать как порт данных, то все же сходится??? WAIT остается прежним?
Разбитие данных на два ниббла это уже и задержки по времени, и внешний регистр для хранения этих данных. В общем не катит.

А /WAIT при работе с клавиатурой многим не нравится
Ну это уже кому с крыльями, а кому и с перламутровыми пуговоцами:) Я пока про конструктив-корпус DIP28 говорю.

COM-порт я считаю крайне необходимая штука, и то что пока не востребован, это временное явление.
Скорость работы порта желательно как можно больше (115200), тогда и толк от него будет максимальный.
Времени пока нет, а то бы давно написал утилиту для загрузки в Спектрум Z80 и SNA-файлов по COM-порту ZXMC.
Ну в общем-то да, отрицать не смею. Но абсолютно необходимым элементом все-таки остается клавиатура с мышью. Насколько реально реализовать такую версию прошивки? И какая погрешность скорости передачи будет для COM-порта на максимальной частоте, действительно ли в допуск не вписываемся? И еще, ради благого дела остается вариант с внешним тактовым сигналом для таймера (T0/PD4 или T1/PD5, уж не знаю какой таймер предделителем для COMа идет).

Sonic
07.06.2007, 17:27
COM-порт должен быть точным.
В свое время я проводил эксперимент на Профике по подключению внешнего модема Inpro IDC-1914BXL в ZX-режиме. Модем не реагировал на команды, тупо посылая эхом все, что в него вводится. Причиной было несоответствие задающих частот мастер-генератора (того что тактирует CPU, видео и все остальное, в том числе и ВВ51). При переключении видеорежима частота меняется, это хорошо заметно на AY (начинает по-другому играть). А константы для делителя и ВИ53 я из CP/M-овского драйвера содрал.
Такое же поведение у модема наблюдалось, если я на PC выставлял не шибко стандартную скорость (типа 12000 bps, некоторые терминалки это позволяют). Как известно, модемы распознают скорость порта автоматически, так вот, у этой модели определение правильно срабатывало только на стандартных скоростях.

spensor
07.06.2007, 17:38
На RS-232 есть допуски по отклонению скорости, не помню, где-то 1-5%. Сама линия связи нестабильна, и как правило возникают фазовые сдвиги. Вот собственно по этой причине и есть допуски на скорость, и потолок в 115,2Кб/с. Если можно вписаться с точностью в половину допуска, то вариант жизнеспособен.

DVS
07.06.2007, 20:26
На RS-232 есть допуски по отклонению скорости, не помню, где-то 1-5%. Сама линия связи нестабильна, и как правило возникают фазовые сдвиги. Вот собственно по этой причине и есть допуски на скорость, и потолок в 115,2Кб/с. Если можно вписаться с точностью в половину допуска, то вариант жизнеспособен.

:v2_conf2::v2_conf2::v2_conf2:

Может я что-то не понимаю в схемном решении caro, но времянку USART разворачивает микроконтроллер, а если глянуть PDF-ку, то можно увидеть, что на частоте кварца 11.0592МГц ошибка 0% (ну вобще-то ошибкой кварца определяется). И действительно если 115200 умножить на 96(целое число, в которое входит делитель), то получим частоту кварца. А для загрузки делителя используются свои регистры UBRR.

caro
07.06.2007, 21:34
Может я что-то не понимаю в схемном решении caro, но времянку USART разворачивает микроконтроллер, а если глянуть PDF-ку, то можно увидеть, что на частоте кварца 11.0592МГц ошибка 0% (ну вобще-то ошибкой кварца определяется). И действительно если 115200 умножить на 96(целое число, в которое входит делитель), то получим частоту кварца. А для загрузки делителя используются свои регистры UBRR.С ZXMC как раз никаких проблем нет, при тактировании соответствующим кварцем никаких ошибок и не будет.
Предлагают использовать внутренний генератор Mega8(88) на 8 МГц для того что бы освободить ножки контроллера.
В этом случае точной частоты тактирования на скоростях выше 9600 не добится.
А точность тактирования не должна быть ниже 3%.

Spir0
18.10.2008, 14:05
Давно сюда никто не писал, но попробую :) Вообщем собрал себе контроллер на ATTINY2313 по последней схеме которая в архиве (с двумя буферами на входе/выходе), попытался это дело подключить к Ленинграду-2 и ... дуля с маком, точнее сам контроллер запустился. RESET, NMI работают. При нажатии на кнопки светодиод моргает, но никак не реагирует сам комп, точнее если нажать с SHIFT, то на некоторые кнопки реагирует, но неправильно, к примеру если нажать на SHIFT+f то на экране выводится r.
Есть два подозрения - на Ленинграде-2 есть свой сигнал WAIT, как его согласовать с WAIT с контроллера, и собвственно почему может так работать контроллер как описано выше ?

caro
18.10.2008, 15:18
...почему может так работать контроллер как описано выше ?1) Надеюсь FUSES для ATTiny2313 установлены как надо?
2) Внимательно проверь подключение шин адреса и данных.
3) Сигнал /WAIT на входе Z80 (24 нога) просто подтяни к +5 В резистором на 2 КОм
и подавай в эту точку сигналы /WAIT от всех источников через диоды, анодом к процессору.

PS. Если всё правильно сделать, работает на любом Спектруме без проблем. Проверено неоднократно.

Spir0
18.10.2008, 15:52
1) Надеюсь FUSES для ATTiny2313 установлены как надо?
2) Внимательно проверь подключение шин адреса и данных.
3) Сигнал /WAIT на входе Z80 (24 нога) просто подтяни к +5 В резистором на 2 КОм
и подавай в эту точку сигналы /WAIT от всех источников через диоды, анодом к процессору.



1). FUSES выставил как было написано в одном из постов на форуме - внешний ген, сброс от уровня напряжения и т.д. , судя по тому что клава инициализируется и получает данные, то мк работает исправно
2). Шины все прозвонил, до платы доходят нормально
3). А вот тут может и косяк - в схеме основной /WAIT формируется на триггере, ну прям на ногу Z80 с контроллера и подал, получается надо в разрыв /WAIT от триггера тоже диод поставить ?

caro
18.10.2008, 16:18
... в схеме основной /WAIT формируется на триггере, ну прям на ногу Z80 с контроллера и подал, получается надо в разрыв /WAIT от триггера тоже диод поставить ?Непременно, иначе WAIT от контроллера просто блокируется.
И про резистор подтяжки не забудь. Можно поставить от 1.5 до 3 КОм.

Spir0
18.10.2008, 18:18
caro <- волшебник :)

впаял в разрыв родного /WAIT диод и все заработало !!! вот фото чуда :)

9331

savelij
18.10.2008, 19:26
А мне вот интересно, просмотрел всю тему. А где собственно саму схему и прошивку этого чуда сейчас нарыть? Хочу такую маленькую для Профика собрать.

Добавлено через 1 час 35 минут
Нда. Тоже проглядел схему. Нашел эту AT90S2313 с буквами 10PI, 10SI, 4PI, 4SI. Какую нужно брать, что ближе к схеме?

Spir0
18.10.2008, 21:06
savelij, а вот она родимая http://zx.pk.ru/showpost.php?p=90462&postcount=76

Есть еще подробное описание в Абзаце №25, но там более ранняя версия (без буфера на шину данных и еще без некоторых мелочей). Бери которая 10PI - она на 10МГц (там по схеме такой кварц) и в DIP-корпусе. SI - в SOIC

p.s. с контроллером перестало входить после сброса в TRDOS, сразу в Basic 48 вываливается (для входа в тырдос приходится набирать randomize usr 15616 :v2_conf2: ), без контроллера сразу после сброса в TRDOS. Есть у кого то как правильно должны быть раскиданы прошивки в ПЗУ , у меня сейчас в 64к ПЗУ - Profi ROM | TRDOS | ZX Shell | Basic48

caro
18.10.2008, 21:17
Нашел эту AT90S2313 с буквами 10PI, 10SI, 4PI, 4SI. Какую нужно брать, что ближе к схеме?Сейчас проще купить ATTiny2313, которая может работать с частотой до 20 Мгц.
Единственное отличие от AT90S2313, требуется правильно запрограммировать дополнительные биты конфигурации - FUSES.
Длительность /WAIT становится пренебрежимо малой, около 1.5 мксек.

savelij
18.10.2008, 21:21
Сейчас проще купить ATTiny2313, которая может работать с частотой до 20 Мгц.
Единственное отличие от AT90S2313, требуется правильно запрограммировать дополнительные биты конфигурации - FUSES.
Длительность /WAIT становится пренебрежимо малой, около 1.5 мксек.

Опять же вопрос с какими буквами брать есть 20PU, 20SI, 20SU, 10PU, 10SI, 10SU. И чем кстати шить и чем к пц подключать?

caro
18.10.2008, 21:26
Опять же вопрос с какими буквами брать есть 20PU, 20SI, 20SU, 10PU, 10SI, 10SU. И чем кстати шить и чем к пц подключать?Цифра означает максимальную тактовую частоту,
буква P и S соответственно тип корпуса DIP или SOIC,
U - версия корпуса буз свинца, I - индустриальное исполнение.
Из упомянутых тобой, рекомендую взять 20PU.
Шить простейшим 5-ти проводным кабелем по SPI c LPT-порта IBM-ки.
Программатор называется UNIPROF. Думаю поиском найдёшь где его скачать.
В хелпе к нему и схема кабеля нарисована.

savelij
18.10.2008, 21:29
Цифра означает максимальную тактовую частоту,
буква P и S соответственно тип корпуса DIP или SOIC,
U - версия корпуса буз свинца, I - индустриальное исполнение.
Из упомянутых тобой, рекомендую взять 20PU.

Так с этим понятно. А переточить для Профи вместо родного ХТ контроллера это как-нибудь можно? По схеме Профи с контроллера должно выходить 6 бит данных.

caro
18.10.2008, 21:34
Так с этим понятно. А переточить для Профи вместо родного ХТ контроллера это как-нибудь можно? По схеме Профи с контроллера должно выходить 6 бит данных.В контроллере предусмотрено выводить дополнительные биты данных.
Предусмотрена также настройка раскладки под свои предпочтения.
К сожалению у меня нет информации о том, как используется 6-ой бит в контроллере Профи.
Можешь сам это сделать.

PS. Кстати для Профи схему контроллера можно сильно упростить, оставив только МК и один элемент ИЛИ (ЛЛ1).
Придется правда немного на самой схеме Профи покурочить.
Я в своём экземпляре Профи так и сделал.

savelij
18.10.2008, 21:48
В контроллере предусмотрено выводить дополнительные биты данных.
Предусмотрена также настройка раскладки под свои предпочтения.
К сожалению у меня нет информации о том, как используется 6-ой бит в контроллере Профи.
Можешь сам это сделать.

То ли где проглядел, то ли что. А где про изменение раскладки именно для этой схемы/прошивки? Абзац 25 тож посмотрел, ну в принципе попробую разобраться как к Профику правильно прицепить. Если что здесь подспрошу.

Добавлено через 4 минуты
А по выводам этот ATTiny2313 совпадает? Плату разведу, просто по корпусу в Игле что ставить в проект. И прошивка для него подойдет?

Добавлено через 8 минут

PS. Кстати для Профи схему контроллера можно сильно упростить, оставив только МК и один элемент ИЛИ (ЛЛ1).
Придется правда немного на самой схеме Профи покурочить.
Я в своём экземпляре Профи так и сделал.

И как это выглядит? Схемно, плизззз....

Spir0
18.10.2008, 22:07
А по выводам этот ATTiny2313 совпадает? Плату разведу, просто по корпусу в Игле что ставить в проект. И прошивка для него подойдет?

Они один в один с s2313 ;) Ну разве что названия выводов немного отличаются, и функции, но для данного проекта это не существенно, я поставил ATTINY2313 и прошил FUSES.
Кстати, если надо у меня есть готовая схема и плата в Eagle 5.2

caro
18.10.2008, 22:09
А по выводам этот ATTiny2313 совпадает?Естественно

И как это выглядит? Схемно, плизззз....Вот так: http://zx.pk.ru/showpost.php?p=166505&postcount=1

savelij
18.10.2008, 22:10
Они один в один с s2313 ;) Ну разве что названия выводов немного отличаются, и функции, но для данного проекта это не существенно, я поставил ATTINY2313 и прошил FUSES.
Кстати, если надо у меня есть готовая схема и плата в Eagle 5.2

Я для начала попробую под SOIC развести. Но если не жалко поделись. Не знаю тока, у мну версия Игл 5.0.

Добавлено через 7 минут

Естественно
Вот так:

А разъемы Х4,Х5 надписи сбоку это что? И к чему разъемы запаралелены?

Spir0
18.10.2008, 22:20
Вот :)

9334

caro
18.10.2008, 22:25
А разъемы Х4,Х5 надписи сбоку это что? И к чему разъемы запаралелены?Схема сделана с учетом разводки панелек для подключения клавиатуры в разных версиях Профи.
У Профи версий 3 и 4 панелька под 16 контактов, а в Профи 5-ой версии 20.

savelij
18.10.2008, 22:27
Вот :)

9334

Круть однослойная. Интересно под SOIC у мну получится?

Добавлено через 2 минуты

Схема сделана с учетом разводки панелек для подключения клавиатуры в разных версиях Профи.
У Профи версий 3 и 4 панелька под 16 контактов, а в Профи 5-ой версии 20.

Ну для начала попробую для 3 и 4.

Добавлено через 3 минуты
2Spir0: а где в игле разъемы пополамные искать, в каком разделе?

Добавлено через 9 минут
2caro: а наличие светодиода обязательно? А то я смотрю и по схеме есть и на плате стоит. Вроде плата внутри будет и он ни к чему.

caro
18.10.2008, 22:51
а наличие светодиода обязательно? А то я смотрю и по схеме есть и на плате стоит. Вроде плата внутри будет и он ни к чему.Стоит он копейки, но очень удобен, поскольку сразу видно, работает контроллер или нет.
Каждое нажатие на клавиши зажигает светодиод, что показывает правильность приема скан-кода клавиатуры.

Spir0
18.10.2008, 22:51
2Spir0: а где в игле разъемы пополамные искать, в каком разделе?

Если ты имеешь ввиду ps/2 то я брал в con-yamaichi :)

savelij
18.10.2008, 22:54
Стоит он копейки, но очень удобен, поскольку сразу видно, работает контроллер или нет.
Каждое нажатие на клавиши зажигает светодиод, что показывает правильность приема скан-кода клавиатуры.

Да дело не в цене, место занимает. А насчет работает/не работает я подумаю. :)

Добавлено через 1 минуту

Если ты имеешь ввиду ps/2 то я брал в con-yamaichi :)

Ага учту. Все время теряюсь в ихних библиотеках. В 4 версии они поменьше были.

caro
24.11.2008, 21:41
Разобрался наконец с особенностями контроллера XT-клавиатуры для Профи.
Для этого в начале попробовал дизассемблировать его прошивку, но поскольку IDA
не понимает коды MSC-48, это оказалось слишком трудоемким, да и код там такой, что "черт ногу сломит".
Дизассемлировал тест XT-клавиатуры, зашитый в ПЗУ Профи, это оказалось значительно проще.
В результате оказалось, что для расширенных клавиш используется префиксная линия,
которая сканируется адресом A14 процессора и подается на вход D5 порта клавиатуры.
В тестовой таблице клавиатуры Профи, которая выскакивает на экран при нажатой любой клавиши во время РЕСЕТа, этот бит называется 6-м.
Вот как выглядит привязка дополнительных клавиш:


Esc CS+<1>

F1 <A>+b6
F2 <B>+b6
F3 <C>+b6
F4 <D>+b6
F5 <E>+b6
F6 <F>+b6
F7 <G>+b6
F8 <H>+b6
F9 <I>+b6
F10 <J>+b6

F11 SS+<Q>
F12 SS+<W>

Ins <O>+b6
Home <K>+b6
Page Up <M>+b6
Del <P>+b6
End <L>+b6
Page Down <N>+b6

Tab CS+<I>
Caps Lock SS+CS
Shift SS
Ctrl CS
Alt левый SS+<ENTER>
ALt прав. SS+<SPACE>

В соответствии с этим написал прошивку для контроллера на ATTiny2313,
которая полностью эмулирует контроллер Профи.
Встроенный тест XT-клавиатуры Профи это подтверждает :)

savelij
24.11.2008, 22:43
Разобрался наконец с особенностями контроллера XT-клавиатуры для Профи.
Для этого в начале попробовал дизассемблировать его прошивку, но поскольку IDA
не понимает коды MSC-48, это оказалось слишком трудоемким, да и код там такой, что "черт ногу сломит".
Дизассемлировал тест XT-клавиатуры, зашитый в ПЗУ Профи, это оказалось значительно проще.
В результате оказалось, что для расширенных клавиш используется префиксная линия,
которая сканируется адресом A14 процессора и подается на вход D5 порта клавиатуры.
В тестовой таблице клавиатуры Профи, которая выскакивает на экран при нажатой любой клавиши во время РЕСЕТа, этот бит называется 6-м.
Вот как выглядит привязка дополнительных клавиш:


Esc CS+<1>

F1 <A>+b6
F2 <B>+b6
F3 <C>+b6
F4 <D>+b6
F5 <E>+b6
F6 <F>+b6
F7 <G>+b6
F8 <H>+b6
F9 <I>+b6
F10 <J>+b6

F11 SS+<Q>
F12 SS+<W>

Ins <O>+b6
Home <K>+b6
Page Up <M>+b6
Del <P>+b6
End <L>+b6
Page Down <N>+b6

Tab CS+<I>
Caps Lock SS+CS
Shift SS
Ctrl CS
Alt левый SS+<ENTER>
ALt прав. SS+<SPACE>

В соответствии с этим написал прошивку для контроллера на ATTiny2313,
которая полностью эмулирует контроллер Профи.
Встроенный тест XT-клавиатуры Профи это подтверждает :)
Схема осталась без изменений? Надо собрать попробовать. Контроллерную микруху прикупил.

Добавлено через 5 минут
Блин. Посмотрел схему. А с кварцом пролетаю.:( На 10 МГц нет. Искать придется. Есть только 8 и 12 ближайшие.

Добавлено через 13 минут
Гмм, нашел по сусекам кварц на 11,0592 Мгц. Можно будет прошивку под такой изменить? Или частота кварца значения не имеет?

caro
25.11.2008, 06:03
Схема осталась без изменений?Схему решил немного изменить, для того, что бы ничего не переделывать на плате самого Профи.
Подправленную схему выложу чуть позже.


А с кварцом пролетаю.:( На 10 МГц нет. Искать придется. Есть только 8 и 12 ближайшие.
Гмм, нашел по сусекам кварц на 11,0592 Мгц. Можно будет прошивку под такой изменить? Или частота кварца значения не имеет?В принципе частота кварца важна только для уменьшения
длительности /WAIT, чем выше, тем меньше тормозит контроллер.
ATTiny2313-20 может работать с кварцем до 20 Мгц.
Причем /WAIT формируется только при нажатых клавишах.
В самом простом варианте можно установить режим работы МК со встроенным генератором на 8 Мгц.

savelij
25.11.2008, 16:23
Схему решил немного изменить, для того, что бы ничего не переделывать на плате самого Профи.
Подправленную схему выложу чуть позже.

В принципе частота кварца важна только для уменьшения
длительности /WAIT, чем выше, тем меньше тормозит контроллер.
ATTiny2313-20 может работать с кварцем до 20 Мгц.
Причем /WAIT формируется только при нажатых клавишах.
В самом простом варианте можно установить режим работы МК со встроенным генератором на 8 Мгц.

Жду с нетерпением схему и прошивку, плату отрисую. Кварцы есть 8, 11.0592, 16 МГц, вроде где-то на 12 были. За другими придется ехать. Под какой-нибудь из этих, если возможно.

Egal
01.12.2008, 09:34
так это, коллеги, а где можно схему то скачнуть?
caro, буду признателен за линк откуда забрать можно.

caro
01.12.2008, 10:18
так это, коллеги, а где можно схему то скачнуть?
http://zx.pk.ru/showpost.php?p=166505&postcount=1

Egal
01.12.2008, 15:52
http://zx.pk.ru/showpost.php?p=166505&postcount=1

я его к обычному п128 прикручу или нужно будет чтото дорабатывать?

caro
01.12.2008, 16:01
я его к обычному п128 прикручу или нужно будет чтото дорабатывать?Нет, этот контроллер сделан с учетом особенностей схемы Профи.
К Пентагону цепляется контроллер: http://zx.pk.ru/attachment.php?attachmentid=4993&d=1176184745
Лежит здесь: http://zx.pk.ru/showpost.php?p=85027&postcount=297

dosikus
23.02.2009, 15:36
А где найти схему и прошивку ориинального XT-контроллера PROFI.

molodcov_alex
23.02.2009, 15:56
dosikus, вотЪ (http://zx.pk.ru/showpost.php?p=129465&postcount=678)

Sergey
19.01.2010, 20:15
Доброго здравия!

Хочу использовать пентагоновский контроллер на Скорпионе. В связи с этим несколько вопросов:
1. надо что-либо менять в схеме? (подключение /NMI, /RESET etc)
2. откуда взять сигнал /PFE?
3. хочу использовать ATtyni2313 на 20 МГц. - нужно ли и в каких местах изменить прошивку (значения для задержек)?
4. при разводке платы из данных оставил только биты 0 - 4, - не повлияет ли это на работоспособность?


Заранее спасибо.

caro
20.01.2010, 12:15
Хочу использовать пентагоновский контроллер на Скорпионе. В связи с этим несколько вопросов:
1. надо что-либо менять в схеме? (подключение /NMI, /RESET etc)Нет менять ничего не надо.


2. откуда взять сигнал /PFE?Это строб выборки порта клавиатуры.
В Скорпионе к сожалению нет такого явно-адресуемого сигнала.
Нужен дополнительный элемент типа ЛЛ1, для формирования нужного строба.


3. хочу использовать ATtyni2313 на 20 МГц. - нужно ли и в каких местах изменить прошивку (значения для задержек)?Прошивки сделаны с расчетом на максимальную тактовую 20 МГц.


4. при разводке платы из данных оставил только биты 0 - 4, - не повлияет ли это на работоспособность?Не повлияет.

Sergey
20.01.2010, 15:51
Благодарю за исчерпывающие ответы.

Mirazh
14.06.2010, 20:56
как я понимаю, что бы появилась генерация на кварце (20МГц) нужно прошить контроллер. а у меня почему то генерация не появляется ((( может какой нить бит не установил? или еще что?

Ewgeny7
14.06.2010, 21:56
может какой нить бит не установил?
фузы CKSEL поставь на внешний кварц. По умолчанию там внутренний генератор, притом - со включенным делителем на 8...
Конденсаторы на кварц навесил?

Mirazh
14.06.2010, 22:03
фузы CKSEL поставь на внешний кварц
знать бы как ((


Конденсаторы на кварц навесил?
да.
еще 0,1 по питанию и резистор на ресет. все.
программка ponyprog2000 - биты вот так стоят:

Ewgeny7
14.06.2010, 22:09
программка ponyprog2000 - биты вот так стоят:
У Пони насколько помню - все биты "наоборот". У тебя как раз включен делитель CKDIV8 и установлены CKSEL на внутренний генератор, как я и думал :)
Сбрось (сними птички) со всех битов CKSEL и CKDIV8. Получишь работу от внешнего кварца более 8Мгц, без деления частоты. Что и требуется.

Mirazh
14.06.2010, 22:14
Сбрось (сними птички) со всех битов CKSEL и CKDIV
порядок. есть генерация на кварце!!!
при подключении клавиатуры и нажатии на кнопку должен мигать светодиод как я понял?

Ewgeny7
14.06.2010, 22:17
при подключении клавиатуры и нажатии на кнопку должен мигать светодиод как я понял?
Это я не знаю, я этот контроллер не собирал.

Mirazh
14.06.2010, 23:23
Это я не знаю, я этот контроллер не собирал.
ну лан, ща попробуем )

---------- Post added at 23:11 ---------- Previous post was at 22:18 ----------


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

---------- Post added at 23:17 ---------- Previous post was at 23:11 ----------

о, опять заткнулся... непонятно чо то.. ((

---------- Post added at 23:23 ---------- Previous post was at 23:17 ----------

похоже что контроллер не дожидается инициации клавиатуры

caro
15.06.2010, 08:43
при нажатии кнопок мигает светодиод. вроде как все правильно пока...Да, это правильно.

похоже что контроллер не дожидается инициации клавиатурыТы наверное прошил версию 2.4, которая рассчитана на AT90S2313 с максимальной тактовой 10 МГц.
Для ATTiny нужно зашивать версию 3.0 или выше.
http://www.zx.pk.ru/attachment.php?attachmentid=10935&d=1236088918

Mirazh
15.06.2010, 10:46
Ты наверное прошил версию 2.4, которая рассчитана на AT90S2313
перешил на прошивку по ссылке. увы, глюк остался. при включении то работает то нет.
если например при включении не заработало, но программатором сделать read - то контроллер заводится...

---------- Post added at 10:46 ---------- Previous post was at 10:30 ----------

и еще замечен глюк - когда контроллер запустился ( от нажатия светодиод мигает), то полежав минут 10 спокойно включается светодиод и на кнопки не реагирует...

Prusak
15.06.2010, 11:40
Ты наверное прошил версию 2.4, которая рассчитана на AT90S2313 с максимальной тактовой 10 МГц.
Для ATTiny нужно зашивать версию 3.0 или выше.

У меня на ATTiny2313 отлично работает прошивка 2.4. Никаких глюков.

caro
15.06.2010, 11:51
У меня на ATTiny2313 отлично работает прошивка 2.4. Никаких глюков.Я их собрал штук 20, и тоже все прекрасно работали и работают.
Попадаются клавиатуры, у которых внутренний тест длится до 1 сек.
И в прошивке 2.4 время ожидания ответа задано равным именно 1 сек, с учетом работы контроллера на частоте 10 МГц.
При установке ATTiny с частотой 20 МГц, время ожидания соответственно уменьшается до 0.5 сек.,
что и приводит к глюку с распознаванием таких клавиатур.
Если клавиатура имеет время внутреннего теста до 0.5 сек, то она как ни в чем не бывало прекрасно работает и при 20 МГц.
В прошивке 3.0 время ожидания увеличено до 1 сек, при 20 Мгц тактовой МК.

---------- Post added at 13:51 ---------- Previous post was at 13:48 ----------


перешил на прошивку по ссылке. увы, глюк остался. при включении то работает то нет.Попробуй с другой клавиатурой.


и еще замечен глюк - когда контроллер запустился ( от нажатия светодиод мигает), то полежав минут 10 спокойно включается светодиод и на кнопки не реагирует...А как он у тебя собран? И как подключен к компьютеру?

Ewgeny7
15.06.2010, 12:43
Ээээ... Резистор на РЕСЕТе на +5 надеюсь идет, а не на землю? :)

Mirazh
15.06.2010, 13:09
А как он у тебя собран? И как подключен к компьютеру?
пока никак. только контроллер, кварц с конденсаторами, резистор ресет, светодиод и пара конденсаторов по питанию.

Mirazh
15.06.2010, 13:13
Ээээ... Резистор на РЕСЕТе на +5 надеюсь идет, а не на землю?
ога, на +5в :)

---------- Post added at 13:13 ---------- Previous post was at 13:09 ----------


Попробуй с другой клавиатурой.
пробовал с 2мя обыкновенными китайскими клавами - гениус и раинбов. какой то особой разницы не заметил.

caro
15.06.2010, 13:21
пока никак. только контроллер, кварц с конденсаторами, резистор ресет, светодиод и пара конденсаторов по питанию.Линию /RDFE подтяни на +5V резистором, а то у тебя висящий вход по прерыванию получился.
Любая помеха по этому входу завесит МК.

Mirazh
15.06.2010, 13:44
Линию /RDFE подтяни на +5V резистором,
Порядок!! )

Ewgeny7
15.06.2010, 14:10
Порядок!! )
Проздрявляем! :) Пойду тресну рюмку кофе за здоровье твоего контроллера!

Mirazh
15.06.2010, 14:12
Проздрявляем! Пойду тресну рюмку кофе за здоровье твоего контроллера!
тогда и за упокой еще одного тресни :D

SoftFelix
29.06.2010, 14:33
Народ, а выложите, пожалуйста, печатку под ЛУТ для ATTINY2313 с двумя буферами (для Ленинград-1, как я понимаю, именно эта схема?) в каком-нить более удобоваримом формате (LAY, TIFF, BMP).

sevol
13.11.2010, 20:06
Не стесняйтесь, выкладывайте!!! :D
И для мыша тоже!

Схема и прошивка контроллера на ATTiny2313 от caro. (http://zx.pk.ru/showpost.php?p=85027&postcount=297)

Подскажите пожалуйста, нет ли у кого нибудь правельного шаблончика под ЛУТ, за ранее очень благодарен) Спасибо.

fan
14.11.2010, 14:17
http://service4u.narod.ru/html/zx.html
В середине страницы .

SoftFelix
14.11.2010, 14:40
sevol,
fan, Я минувшим летом списывался с автором этой печатки и он мне прислал их в формате jpg и cdr (Corel). Думаю, Сергей (Pryanik) будет не против.

sevol
14.11.2010, 14:59
спасибо большое)

Elya
23.05.2011, 22:36
Привет всем!
Контроллер 90S2313, 2 АП6, 1 ЛА3, подключил к Пентагону-128. Кварц нашел 9,8 мгц
Не подключил только элемент ЛЛ1 для Magic.
Нажимаю Print Screen - загружается бейсик-48.
Все прекрасно работает. Игрушки играются, никаких нареканий.
Нажимаю F12 - загружается меню. Ничего не сдвигается, не выбирается.
Подключал по схеме для пентагона, сигнал PFE и прочие - заведены.
Что может быть не так?

caro
24.05.2011, 08:34
Нажимаю F12 - загружается меню.При нажатие на F12 на выходе /NMI контроллера вырабатывается отрицательный импульс длительностью 10 мсек.
Как этот выход задействован в твоей схеме?
Не очень понятно, почему по /RESET (нажатие PrintScreen) идет выход в BASIC48, а по /NMI (нажатие F12) выход в BASIC128.

Elya
24.05.2011, 08:55
Я малость перепутал... При F12 грузится бейсик. При Print Screen грузится меню. Либо с самого начала - меню грузится.
/NMI подключен по схеме, непосредственно к 17 выводу проца.

caro
24.05.2011, 09:13
Я малость перепутал... При F12 грузится бейсик. При Print Screen грузится меню. Либо с самого начала - меню грузится.И что, в меню BASIC128 нет реакции на нажатие любых клавиш? Даже ENTER?

/NMI подключен по схеме, непосредственно к 17 выводу проца.В Пентагоне такое подключение бессмысленно, поскольку в ПЗУ BASICа нет процедуры корректной отработки такого события.
Если используется фирменное ПЗУ, то в этом случае происходит переход на 0 адрес, и значит просто перезапуск BASICа.

Elya
24.05.2011, 11:21
Самое первое в меню - Tape Loader, Enter нажимаю, ждет загрузки. При нажатии на пробел - из загрузки выходит, все как надо.
Но почему стрелки не действуют? Пробовал уже стрелки на клаве, пробовал 6 и 7, пробовал 6 и 7 одновременно со всеми управляющими (Alt, Shift, Ctrl), пробовал цифровую клавиатуру.
Вопрос... А что - Print screen и F12 не задействованы разве?
Вообще, очень удобно даже. Надоела игрушка - шлеп по Print Screen или F12, выходишь - куда надо...

caro
24.05.2011, 11:33
Но почему стрелки не действуют? Пробовал уже стрелки на клаве, пробовал 6 и 7, пробовал 6 и 7 одновременно со всеми управляющими (Alt, Shift, Ctrl), пробовал цифровую клавиатуру.Управление курсорными клавишами, а это CapsShift+6 и CapsShift+7.
Поскольку CapsShift на IBM-ской клавиатуре задан на клавише Ctrl, то и жать надо на Ctrl+6 или Ctrl+7.
Вообще то это сочетание задано в базовой раскладке за курсорными клавишами ВВЕРХ и ВНИЗ.
Так что мне не понятно, почему они у тебя не работают.
Ты какую прошивку заливал?


Вопрос... А что - Print screen и F12 не задействованы разве?Что значит не задействованы?
Сказано же - PrintScreen формирует импульс СБРОСа на выходе /RESET; F12 - импульс на выходе /NMI.

Elya
24.05.2011, 12:40
Версия прошивки 2.4
Фьюзы в "ON". Их 4. Spien, FSTRT, LB1, LB2

caro
24.05.2011, 14:21
Версия прошивки 2.4Нормальная прошивка для AT90S2313.
Вот фрагмент из исходника раскладки:

DB Kl_CS ;11h Left Ctrl CapShift
...
DB CapSh+Kl_6 ;60h [Down]
DB CapSh+Kl_5 ;61h [Left]
DB 000H ;62h Pause/Break -> WAIT
DB CapSh+Kl_7 ;63h [Up]
Как я и говорил клавиша ВНИЗ это Ctrl+6, а клавиша ВВЕРХ - Ctrl+7.
Курсор по ним в меню BASIC128 должен управляться.


Фьюзы в "ON". Их 4. Spien, FSTRT, LB1, LB2Фьюзы у AT90S2313 можно оставить заводские, тоесть вообще не трогать.

Elya
24.05.2011, 15:18
Фьюзы и не трогал, как есть.
Странно вообщем. Стрелки нажимаю - светодиод моргает, все прекрасно. Но не сдвигается. Только три кнопки действуют. Это Enter, F12 и Print Screen.
Толи попробовать ATTINY2313? Цоколевка, если не ошибаюсь, один в один?.. Прошивка имеется, фьюзы как прошивать тоже...

caro
24.05.2011, 15:50
Странно вообщем. Стрелки нажимаю - светодиод моргает, все прекрасно. Но не сдвигается. Только три кнопки действуют. Это Enter, F12 и Print Screen.Это в меню, а в BASICе то как я понял всё работает?

Толи попробовать ATTINY2313?Не имеет смысла.
Проверь лучше, работают ли нормально все клавиши в BASIC48.
У меня такое впечатление, что у тебя не вся матрица клавиатуры правильно подключена к порту клавиатуры Пентагона.

Elya
24.05.2011, 15:59
Исключено. Я проверял каждую кнопку, когда мучался с АП6. Все дохлые были. Лишь с зарубежкой - прекрасно заработало. К тому же я уже игрался в пару десятков игр.
Хоть убей - ну не работает и все... Клавиатур у меня лежит 5 штук. Со всеми уже пробовал - одно и то же.

caro
24.05.2011, 16:06
Исключено. Я проверял каждую кнопку, когда мучался с АП6. Все дохлые были. Лишь с зарубежкой - прекрасно заработало. К тому же я уже игрался в пару десятков игр.
Хоть убей - ну не работает и все... Клавиатур у меня лежит 5 штук. Со всеми уже пробовал - одно и то же.Тогда единственно что могу предположить - сбой в ПЗУ BASIC128.
Остается еще способ проверки, если нет механической клавиатуры, подключить три кнопки Caps Shift, 6 и 7
в соответствии с их расположением в матрице Спектрумовской клавиатуры.
Подключить и проверить, может всё таки ПЗУ не исправно в Пентагоне.

Elya
25.05.2011, 08:15
Подключил механическую клавиатуру - стрелки работают, меню передвигается...
Что за странности-то???
Чем по-сигналам отличается бейсик-48 от меню? Вроде бы все по схеме, единственное только - не поставил элемент ЛЛ1 для Magic. Но, сомневаюсь, что в этом дело.
Я скоро от безысходности прикалываться начну ;-)

Black_Cat
30.05.2011, 16:00
caro, по какому событию прекращается сигнал NMI во всех твоих клавиатурных контроллерах? Т.е. интересует когда он снимается?

caro
30.05.2011, 17:07
... по какому событию прекращается сигнал NMI во всех твоих клавиатурных контроллерах? Т.е. интересует когда он снимается?Во всех контроллерах сделано одинаково - нулевой уровень на выходе, длительностью 10 мсек.
Если его подавать непосредственно на вход /NMI процессора Z80, то при времени обработки этого события менее 10 мсек, прерывание возникнет повторно.
Если это не желательно, то лучше использовать дополнительную схему формирования импульса /NMI, которая активируется импульсом с контроллера.
Так у меня сделано в Кворуме.

Black_Cat
30.05.2011, 22:08
Во всех контроллерах сделано одинаково - нулевой уровень на выходе, длительностью 10 мсек:) я это и предполагал :)


Если его подавать непосредственно на вход /NMI процессора Z80, то при времени обработки этого события менее 10 мсек, прерывание возникнет повторно.
Если это не желательно, то лучше использовать дополнительную схему формирования импульса /NMI, которая активируется импульсом с контроллера.
Так у меня сделано в Кворуме.ну, на Кворуме не было ZXMC-2 :) . Для Фениса это решается одним диодом и резистором + небольшой патч программы Меги :)
Вот токо кто бы этот патч сделал? Ты как думаешь? :)

caro
31.05.2011, 08:19
ну, на Кворуме не было ZXMC-2 :) На моем теперешнем стоит именно ZXMC2.

Для Фениса это решается одним диодом и резистором + небольшой патч программы Меги :)А как же с процедурой обработки этого /NMI в ПЗУ Феникса?
У меня на Кворуме этот импульс передним фронтом сбрасывал системный порт,
что включало страницу, в которой и происходила обработка этого прерывания.
В этой процедуре проверялось наличие вектора прерывания (команда JP) в начале в 8 странице ОЗУ, затем в 0, а при отсутствии таковых, переход в TRDOS.
На Фениксе, как я полагаю, единственная функция этого прерывания - вызов процедуры из ПЗУ TRDOS.

Black_Cat
31.05.2011, 09:42
[
На моем теперешнем стоит именно ZXMC2.я имел ввиду, что на Фениксе она интегрирована, т.к. у слотововой нет такой обвязки.. хотя в принципе и на слотовой можно допаять - все сигналы есть :)


А как же с процедурой обработки этого /NMI в ПЗУ Феникса?это тоже элементарно :) . Делается ещё одна доработка на pnp транзисторе и резисторе, которая при NMI=0, выставляет BLK=1, а в нулевой странице по адресу #66 стоит обработчик прерывания, в конце которого JP на любой адрес выше #FF :) .
Мега после выставления NMI проверяет что нет обращения к #FE, и ждёт когда магнитофонный вход упадёт в ноль, после чего читает старший адрес. После того как старший адрес сначала стал #00, а потом изменился по адресу в JP - NMI снимается :) . Обработчик NMI так же может находиться и выше #FF, в этом случае JP сразу на обработчик.

Vadim
31.05.2011, 09:48
Я собрал 2 контроллера. С первым всё хорошо, а со вторым были проблемы. Контроллер или повисал или выдавал левые нажатия клавиш. Достаточно в бейсик-48 нажать любую клавишу и ждать. Может пройти всего пол-секунды, может 20-30. Но сбой будет 100%. Менял микросхему (10Мгц), на аналогичную. Безрезультатно. Фузы перешивал на использование внутреннего генератора 8Мгц. Внешнего 10. Безрезультатно. Схему перепроверил на много раз. Писал caro, он так и не дал ответа почему идёт сбой. Причем похоже, что с клавиатуры приходят порченные данные. Пробовал делать проводки короче, потом их экранировать - всё без толку. Позднее появилась у меня третья микросхема, 20 Мгц (как и для первого контроллера), поставил её. И на 8 Мгц внутреннем генераторе, и на 20Мгц внешнем - всё заработало (фузы я перешивал и проверял, отключал кварц - контроллер висел). Причем видно бывает, что нажатия клавиш идут в буфер, подзатык идёт, но потом всё выдается нормально. Левых нажатий не выскакивало. Так что может быть проблема в самой ATTiny.

Black_Cat
31.05.2011, 13:56
caro, надеюсь, то что я предложил, принципиально осуществимо с т.з. возможностей Меги?
И я хотел ещё узнать не заняты ли у тебя чем-то комбинации сигналов NMI и RESET на Фениксе, хочу задействовать комбинацию NMI=0, RES=0 для MAGIC с клавиатуры

caro
31.05.2011, 15:34
Писал caro, он так и не дал ответа почему идёт сбой. Ну нет у меня способности только по констатации проблемы решать вопрос о ее причине :)

---------- Post added at 17:26 ---------- Previous post was at 17:23 ----------


И я хотел ещё узнать не заняты ли у тебя чем-то комбинации сигналов NMI и RESET на Фениксе, хочу задействовать комбинацию NMI=0, RES=0 для MAGIC с клавиатурыНе заняты.

---------- Post added at 17:34 ---------- Previous post was at 17:26 ----------


[я имел ввиду, что на Фениксе она интегрирована, т.к. у слотововой нет такой обвязки.. хотя в принципе и на слотовой можно допаять - все сигналы есть :)ZXMC разрабатывался, с учетом безпроблемной работы при подключению к слоту любой модели Кворума и Магика без какой либо доработки таковых.


это тоже элементарно :) . Делается ещё одна доработка на pnp транзисторе и резисторе, которая при NMI=0, выставляет BLK=1, а в нулевой странице по адресу #66 стоит обработчик прерывания, в конце которого JP на любой адрес выше #FF :) .
Мега после выставления NMI проверяет что нет обращения к #FE, и ждёт когда магнитофонный вход упадёт в ноль, после чего читает старший адрес. После того как старший адрес сначала стал #00, а потом изменился по адресу в JP - NMI снимается :) . Обработчик NMI так же может находиться и выше #FF, в этом случае JP сразу на обработчик.Не понял зачем такие сложности.

Black_Cat
31.05.2011, 15:46
ZXMC разрабатывался, с учетом безпромней работы при подключению к слоту любой модели Кворума и Магика без какой либо доработки таковых.Да, потому, что там уже всё есть, а на Фениксе - нет.


Не понял зачем такие сложности.Именно затем, что для лишнего триггера уже нет места, поэтому в лучших спектрумовсих традициях, из железки выжимается всё, что она может дать, и ещё три капельки :)

Lisitsin
09.06.2011, 19:35
Здравствуйте.
Предлагаю разработать контроллер клавиатуры PC/2 на ATMega8-16PU.
Подпрограмма обработки прерывания будет такая:
Выход на прерывание: 4 такта
IN ZL,PINx ; 5 ТАКТОВ
LD BUF,Z ; 7 ТАКТОВ
OUT PORTy,BUF ; 8 ТАКТОВ
OUT DDRy,CONSTFF ; 9 ТАКТОВ
nop
...
nop
OUT DDRy,CONST00
RET

Итого на частоте 20 МГц получаем время 450 мкС.
Вполне безwaitовый вариант !!!

ZEK
09.06.2011, 23:19
В кае 2010 такой