User Tag List

Показано с 1 по 10 из 531

Тема: Контроллер клавиатуры для "Пентагон-128" на ATMega8/48/88/168/328

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    14.05.2020
    Адрес
    г. Пятигорск
    Сообщений
    77
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krotan Посмотреть сообщение
    Только ATmega8...
    Эту сложнее достать уже, даже для проверки. Есть мысль запаять обратно ATMega168PA и поставить кварц 24(25) МГц, Скорее всего проще найти б/у 25 МГц на платах от компьютерных железок. Не шить прошивку, а установить биты конфигурации на работу с внешним кварцем и обязательно активировать CKOUT. Тогда смогу проверить на соответствующем выводе, есть ли генерация на этой частоте. Напрямую на кварце не могу своим частотомером сигнал посмотреть. Он его шунтирует и генерация срывается. А у ATmega8A, насколько помню, бита CKOUT нет.
    У меня работает 8а (планарка) на 27мНz в этом варианте схемы
    Да эта схема в принципе не отличается от схемы с сайта https://www.avray.ru/ru/zx-spectrum-ps2-keyboard/ там только нюансы. Резисторы подтяжки на клавиатуре, по идее, есть внутри самой клавиатуры. Можно проверить тестером. Диоды на выходах КА распаяны на самой плате Harlequin 128k issue 2D. Вернее там вместо диодов транзисторы.
    Судя по схеме этот сигнал с активным низким уровнем.
    Там стоит 74HC32, а это 4×2ИЛИ элемента. На выходе низкий уровень же будет, если все входные лог. 0. Да и запись в 74HC541 по выводам /OE тоже при активном лог. 0. Значит по спаду надо прерывание /RDFE.

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

    А вообще я не сильно понимаю, зачем такие частоты нужны для кварца. Я измерил частотомером сигнал на 6 выводе U5B, там 400 Гц всего. Неужели МК не будет успевать генерировать коды нажатия клавиш с кварцем на те же 16 МГц? С ассемблером не дружу, поэтому работу прошивки могу оценить лишь приблизительно
    Последний раз редактировалось serg_svd; 15.05.2020 в 13:26.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,726
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    91 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от serg_svd Посмотреть сообщение
    А вообще я не сильно понимаю, зачем такие частоты нужны для кварца. Я измерил частотомером сигнал на 6 выводе U5B, там 400 кГц всего.
    Вот это очень странно, учитывая, что клавиатура опрашивается по прерываниям с частотой кадров, то есть 50 Герц, и при этом происходит опрос по 8 адресным линиям, то частота должна быть порядка 400 Герц.
    Меня смущает, что на втором входе выборки регистра U6 (порт чтения клавиатуры) имеется еще один сигнал под названием AL.

  4. #3

    Регистрация
    14.05.2020
    Адрес
    г. Пятигорск
    Сообщений
    77
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    caro, опечатка. Там действительно 400 Гц. Я ошибку исправил
    Цитата Сообщение от caro Посмотреть сообщение
    Меня смущает, что на втором входе выборки регистра U6 (порт чтения клавиатуры) имеется еще один сигнал под названием AL.
    Он меня тоже смущает. И я не нашел его назначения

  5. #4

    Регистрация
    30.08.2010
    Адрес
    Санкт-Петербург
    Сообщений
    1,263
    Спасибо Благодарностей отдано 
    53
    Спасибо Благодарностей получено 
    200
    Поблагодарили
    163 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от serg_svd Посмотреть сообщение
    А вообще я не сильно понимаю, зачем такие частоты нужны для кварца.
    С момента выставления сигнала чтения клавиатуры /RDFE до момента получения данных с клавиатуры проходит 2 такта процессора Z80. За время этих двух тактов Атмега должна переключится на программу обработки прерываний, прочитать адресную линию Z80, по этим данным из таблицы (заранее приготовленной) прочитать данные нажатых клавиш и выставить эти данные на шину данных Z80.
    Мы очень много хотим от Атмеги по быстродействию. Поэтому, либо разгонять Атмегу, либо останавливать процессор Z80, пока Атмега всё это переварит...

    P.S. (даже меньше двух тактов, потому что ещё тратится время на формирование сигнала /RDFE тормозной дискретной логикой)
    Последний раз редактировалось krotan; 15.05.2020 в 14:37.

  6. #5

    Регистрация
    14.05.2020
    Адрес
    г. Пятигорск
    Сообщений
    77
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krotan Посмотреть сообщение
    За время этих двух тактов Атмега должна переключится на программу обработки прерываний, прочитать адресную линию Z80
    А зачем это? Механическая клавиатура, простите, тоже читает состояние шины Z80?

    Мне видится это так. МК выполняет 2 задачи: 1) скан клавиатуры и сохранение в буфер кода нажатой клавиши; 2) и при поступлении прерывания по /RDFE, формирование на своих портах эквивалента сигнала нажатой клавиши.

    Частота сигнала /RDFE 400 Гц. Это не очень высокая частота прерываний. Другое дело, что в паузах надо обрабатывать сигнал с клавиатуры. А вот тут я слабо пока владею информацией, но в данной схеме не совсем корректно реализован опрос клавиатуры. Сигнал DAT, на мой взгляд, надо было тоже вешать на прерывание и накапливать код в буфер. Надо бы с кодом разобраться, но как я уже говорил, я ассемблер практически не знаю.

  7. #6

    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,726
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    91 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от serg_svd Посмотреть сообщение
    Сигнал DAT, на мой взгляд, надо было тоже вешать на прерывание и накапливать код в буфер.
    Запросы на прерывание при чтении порта клавиатуры нельзя пропускать ни в коем случае,
    тем более что на обработку такого события отводится очень мало времени.
    Если одновременно обрабатывать по прерыванию еще и опрос PS/2 клавиатуры,
    то неизбежно возникнет конфликт и времени на отработку прерывания от Z80 просто не хватит.
    А программный опрос PS/2 клавиатуры хорошо отработан и не вызывает никаких проблем,
    даже если время от времени прерывается запросами от Z80, тем более что они идут с такой низкой частотой.

    PS. Кстати можно на Спектруме написать такой короткий цикл чтения матрицы клавиатуры,
    что контроллер во время пауз не будет успевать отрабатывать PS/2 клавиатуру.
    Последний раз редактировалось caro; 15.05.2020 в 15:46.

  8. #7

    Регистрация
    06.01.2011
    Адрес
    г. Днепр, Украина
    Сообщений
    804
    Спасибо Благодарностей отдано 
    43
    Спасибо Благодарностей получено 
    198
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от serg_svd Посмотреть сообщение
    А зачем это? Механическая клавиатура, простите, тоже читает состояние шины Z80?
    Вот именно, что читает. А конкретно, читает 8 старших бит шины адреса, потому что они составляют строки на матрице клавиатуры, 5 бит данных - это столбцы. На пересечении адресных бит и бит данных расположены клавиши. В зависимости от того, какой выставлен старший байт порта 0xFE процессором, клавиатура должна выдать на шину данных тот или иной код. МК делает тоже самое. Только если на механической клавиатуре это реализовано развязывающими диодами, то в МК это приходится обрабатывать программно.
    С уважением, Александр

    Этот пользователь поблагодарил Northwood за это полезное сообщение:

    Gesha86PK(22.02.2022)

  9. #8

    Регистрация
    14.05.2020
    Адрес
    г. Пятигорск
    Сообщений
    77
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Northwood Посмотреть сообщение
    Вот именно, что читает.
    То есть за один такт читается состояние линий КА, а за другой KD? Я Вас правильно понял?
    микропроцессор при разгоне глючит, это не его частота.
    Значит эта конструкция ненадежная? Стоит забросить и собирать на ПЛИС?

  10. #9

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от serg_svd Посмотреть сообщение
    То есть за один такт читается состояние линий КА, а за другой KD?
    Примерно так, но KD не читает, а записывает

    Цитата Сообщение от serg_svd Посмотреть сообщение
    Значит эта конструкция ненадежная? Стоит забросить и собирать на ПЛИС?
    На ПЛИС однозначно будет лучше, а так зависит от МК, если тянет 24МГц, то будет нормально работать

  11. #10

    Регистрация
    14.05.2020
    Адрес
    г. Пятигорск
    Сообщений
    77
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от EvgenRU Посмотреть сообщение
    а так зависит от МК, если тянет 24МГц, то будет нормально работать
    Так по моим измерениям у меня стабильный запуск на 25 МГц. Контроллер не сбоит, не капризничает. На выводе CLKO стабильная частота тактирования выдается. Я считаю, что пашет он на этой частоте. По-другому это проверить можно только написав некоторую тестовую прошивку, с работой на этой частоте. Но на ум ничего толкового не приходит. А мигать светодиодом - это не показатель

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 112
    Последнее: 03.08.2020, 16:24
  2. Ответов: 3
    Последнее: 16.10.2010, 14:04
  3. Продам плату "Пентагон-128K" + примочки
    от Atari в разделе Барахолка (архив)
    Ответов: 3
    Последнее: 20.03.2010, 13:30
  4. Продам печатные платы: от "Львов-48" и клавиатуры
    от Tim0xA в разделе Барахолка (архив)
    Ответов: 9
    Последнее: 27.12.2008, 16:41
  5. Ответов: 3
    Последнее: 23.07.2007, 19:10

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •