Важная информация

User Tag List

Страница 17 из 26 ПерваяПервая ... 131415161718192021 ... ПоследняяПоследняя
Показано с 161 по 170 из 259

Тема: Универсальный контроллер PS/2 клавиатуры для компьютеров с матричными клавиатурами.

  1. #161
    Master Аватар для Xrust
    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    906
    Спасибо Благодарностей отдано 
    204
    Спасибо Благодарностей получено 
    145
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Egal Посмотреть сообщение
    Давайте попробуем отладочную. А что-то нужно для порта?
    Для порта можно использовать преобразователь USB-TTL 5V.
    Бинарник для прошивки Атмеги: sketch_jan14a.ino_atmega168p_16000000L.rar
    Требуется кварц 16МГц и правильно выставить фьюзы.
    В порт выводятся передаваемые клавиатурой сканкоды.
    Вот исходник:
    Код:
    #include <PS2KeyRaw.h>
    #define AX0 4
    #define AX1 5
    #define AX2 6
    #define AX3 7
    #define AY0 8
    #define AY1 9
    #define AY2 10
    #define RSTMT 14
    #define CSMT  15
    #define DATMT 16
    #define STBMT 17
    #define DATAPIN 2
    #define IRQPIN  3
    
    volatile boolean d = HIGH;
    
    uint8_t table[128] = {127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,0,127,127,32,48,127,127,127,1,17,16,33,49,127,
    127,3,2,18,34,51,50,127,127,112,4,19,36,35,52,127,127,115,116,100,20,84,68,127,127,127,114,99,83,67,66,127,
    127,127,98,82,81,64,65,127,127,127,127,97,127,80,127,127,127,127,127,127,127,127,127,127,127,113,96,127,127,127,127,127,
    127,127,127,127,127,127,64,127,127,127,127,52,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127};
    
    PS2KeyRaw keyboard;
    void setup() {
      //Инициализация портов
      pinMode(AX0, OUTPUT);   //AX0
      pinMode(AX1, OUTPUT);   //AX1
      pinMode(AX2, OUTPUT);   //AX2
      pinMode(AX3, OUTPUT);   //AX3
      pinMode(AY0, OUTPUT);   //AY0
      pinMode(AY1, OUTPUT);   //AY1
      pinMode(AY2, OUTPUT);   //AY2
      pinMode(RSTMT, OUTPUT); //RES
      pinMode(CSMT, OUTPUT);  //CS
      pinMode(DATMT, OUTPUT); //DAT
      pinMode(STBMT, OUTPUT); //STB
      //Инициализация клавиатуры
      keyboard.begin( DATAPIN, IRQPIN );
        //Последовательный порт
      Serial.begin(115200);
      Serial.println("Speccy+");
      //Инициализация MT8816
      SetAddr(0);
      digitalWrite(RSTMT, LOW);
      digitalWrite(CSMT, LOW);
      digitalWrite(DATMT, LOW);
      digitalWrite(STBMT, LOW); //инициализация
      digitalWrite(CSMT, HIGH); //выбор чипа
      digitalWrite(RSTMT, HIGH);
      digitalWrite(RSTMT, LOW);  //сброс
      digitalWrite(CSMT, LOW);
      
      SetAddr(table[0x12]);
      SetKey(LOW);
    }
    void SetAddr(uint8_t addr) {
      digitalWrite(AX0,bitRead(addr,0));
      digitalWrite(AX1,bitRead(addr,1));
      digitalWrite(AX2,bitRead(addr,2));
      digitalWrite(AX3,bitRead(addr,3));
      digitalWrite(AY0,bitRead(addr,4));
      digitalWrite(AY1,bitRead(addr,5));
      digitalWrite(AY2,bitRead(addr,6));
    }
    void SetKey(boolean data){
       digitalWrite(CSMT, HIGH); //выбор чипа
       digitalWrite(STBMT, HIGH); //строб on
       digitalWrite(DATMT, data); //данные
       digitalWrite(STBMT, LOW); //строб off    
       digitalWrite(CSMT, LOW);   
    }
    void loop()
    {
      if( keyboard.available() ){
        int c = keyboard.read(); //чтение кода
        Serial.println(c); //печать в порт сканкода
        switch (c) {
          case 0xE0:              //если считался префикс 0xE0
            break;
          case 0xF0:              //если считался префикс 0xF0 (отпускание клавиши)
            d = LOW;
            break;
          case 0x66:              //если считался код 0x66 [BS]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x45]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x6B:              //если считался код 0x6B [Left]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x2E]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x72:              //если считался код 0x72 [Down]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x36]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x75:              //если считался код 0x75 [Up]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x3D]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x74:              //если считался код 0x74 [Right]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x3E]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x76:              //если считался код 0x76 [Edit]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x16]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x58:              //если считался код 0x58 [Caps lock]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x1E]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x0D:              //если считался код 0x0D [Ext mode]
            SetAddr(table[0x12]);
            SetKey(d);
            SetAddr(table[0x59]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x41:              //если считался код 0x41 [,]
            SetAddr(table[0x59]);
            SetKey(d);
            SetAddr(table[0x31]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x49:              //если считался код 0x49 [.]
            SetAddr(table[0x59]);
            SetKey(d);
            SetAddr(table[0x3A]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x4C:              //если считался код 0x4C [;]
            SetAddr(table[0x59]);
            SetKey(d);
            SetAddr(table[0x44]);
            SetKey(d);
            d = HIGH;
            break;
          case 0x52:              //если считался код 0x52 ["]
            SetAddr(table[0x59]);
            SetKey(d);
            SetAddr(table[0x4D]);
            SetKey(d);
            d = HIGH;
            break;
          default:  
            SetAddr(table[c]);
            SetKey(d);
            d = HIGH;
        }
      }
    }

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

    Egal (14.01.2022)

  3. #162
    Master
    Регистрация
    07.08.2007
    Адрес
    Москва
    Сообщений
    926
    Спасибо Благодарностей отдано 
    59
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Xrust Посмотреть сообщение
    Требуется кварц 16МГц
    Кварц есть.

    Цитата Сообщение от Xrust Посмотреть сообщение
    и правильно выставить фьюзы.
    Ни разу в жизни не имел дело ни с фьюзами ни с атмегами
    В видео же (1 пост) описано что выставлять?

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

    Цитата Сообщение от Xrust Посмотреть сообщение
    Возможно, где-то флюс плохо отмыт.
    "Дунул" под оба чипа вот такой штукой - и всё работает.
    Радуюсь - и вижу что не работет D1, отпаял вчера зачем-то. Припаиваю - фиг. Ничего не работает. Давлю ладонью всё подряд - начинает работать.
    Отпаиваю D1 - включаю -> всё работает при включении. Припаиваю - не работает. Отпаиваю - работает.
    Припаиваю D1 и отпаиваю D3 - не работает. В общем подключение D1 вызывает стабильное "подвисание" контроллера при старте.
    Это уже совсем какие-то чудеса.

  4. #163
    Master Аватар для Xrust
    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    906
    Спасибо Благодарностей отдано 
    204
    Спасибо Благодарностей получено 
    145
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Egal Посмотреть сообщение
    Ни разу в жизни не имел дело ни с фьюзами ни с атмегами
    В бинарнике эти фьюзы уже выставлены правильно. Но если будете перекомпилировать какой-то из исходников, надо обращать внимание на настройки. В видео об этом тоже упомянуто.

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

    Можно так же попробовать прошить прошить версию для 48к - она значительно проще и возможно будет легче найти проблему.

  5. #164
    Master
    Регистрация
    07.08.2007
    Адрес
    Москва
    Сообщений
    926
    Спасибо Благодарностей отдано 
    59
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Честно говоря странности какие-то. Возможно всё же залип какой-то, т.к. при включении проц пытается загрузиться в 48К - видны 1-пиксельные падающие вниз полоски, в 48К не выходит, потом чёрный квадрат 1-2 секунды и потом уже меню 128К
    На ИР22 - регистр для шины Dx - на некоторых входах без D1 какой-то мусор, и на 1 ноге RDFE сигнал идёт, как строб чтоли (read #FE - порт клавиатуры). Как только подцепляю D1 - везде на входах регистра строгая 1, и на 1 ноге регистра сигнал отсутствует. Что-то подозреваю с портами клавиатуры или ещё чем-то.
    Буду изучать.

    В любом случае спасибо за участие!

  6. #165
    Master
    Регистрация
    07.08.2007
    Адрес
    Москва
    Сообщений
    926
    Спасибо Благодарностей отдано 
    59
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Xrust, всё же что-то не то с контроллером.
    Проверил обычную клавиатуру - никаких проблем при старте. Все кнопки и всегда работают.
    Сейчас раз 10 проверил:
    1. Включаю питание -> кнопки не работают
    2. Отпаиваю D1 (если с 0 считать) - всё тут же начинает работать (кроме кнопок на линии D1).
    Через какое-то время 2-3-4 минуты подпаиваю D1 - его линия тоже работает.

    Кроме этого при включении и подпаяной D1 к контроллеру - "отключается" обычная клавиатура (по крайней мере частично - Enter не срабатывает)

    Чудесатые чудеса.

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

    В момент включения на D1 вот такой сигнал (на всех остальных чисто, единица):


    и раз в ~1-2 секунды пролетает такая загогулина:


    Какой-то ключ дребезжит?

  7. #166
    Master Аватар для Xrust
    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    906
    Спасибо Благодарностей отдано 
    204
    Спасибо Благодарностей получено 
    145
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Egal, попробуйте прошивку от Евгения - там J2 и J3 поменяны местами - шина данных будет на J3.
    KeybRT.ino_atmega168p_8000000L.rar

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

  9. #167
    Guru
    Регистрация
    16.12.2008
    Адрес
    Kharkov, Ukraina
    Сообщений
    2,221
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    18 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Egal Посмотреть сообщение
    "Дунул" под оба чипа вот такой штукой - и всё работает.
    не смог сдержаться. эпический рассказ. пиши. талант

    не хочу никого обидеть, но рассказы в соседних темах блеклые, ну про сказку ЛА3, надоело рассказы какие то без изюминки


    з.ы. не стибаюсь. очень интересно, что будет дальше
    Последний раз редактировалось OrionExt; 15.01.2022 в 18:37.
    Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...

  10. #168
    Master
    Регистрация
    23.04.2020
    Адрес
    г. Тотьма
    Сообщений
    831
    Спасибо Благодарностей отдано 
    239
    Спасибо Благодарностей получено 
    271
    Поблагодарили
    151 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Xrust Посмотреть сообщение
    попробуйте прошивку от Евгения
    Да, а я посмотрю на результат. А то у меня тоже какие-то глюки с парой сигналов. Припаиваю ряды 14, 15 - не работает. Где-то замыкает.

    Скрытый текст


    https://drive.google.com/drive/folde...xZ83juCuaBe32I

    Scorpion ZS 256 Turbo+/GMX 2MB/SMUC v1.3 OP/CF-IDE 2GB/TS ARM/Covox #DD/FDD 5'25/FDD 3'5/AT Kbrd & Mouse Ctrl v2.5/Universal PS/2 Kbrd Ctrl/ZX WiFi
    Leningrad 1/Sega Joy Adapter
    DivGMX
    ZX Spectrum +2A
    ZX Evolution rev. C

    TCK Computer 486DX2-66/512K Tridend 9000i/8MB SIMM72/CF-IDE 512MB/ESS 1869/CNet CN200/FDD 5'25/FDD 3'5
    [свернуть]

  11. #169
    Master
    Регистрация
    07.08.2007
    Адрес
    Москва
    Сообщений
    926
    Спасибо Благодарностей отдано 
    59
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от OrionExt Посмотреть сообщение
    про сказку ЛА3
    Что за сказка? ))

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

    Цитата Сообщение от OrionExt Посмотреть сообщение
    не смог сдержаться. эпический рассказ. пиши. талант
    Вот это триллер, прям до слез, такие страсти!
    Мне самому понравилось чего-то.
    Раз наша жизнь покруче, чем блокбастер,
    Должны быть сказки посильней, чем "Фауст" Гёте. (с)

    Эта. Пришла идея - не побоюсь этого слова гениальная - отцепить D1 и в после включения посмотреть что на контроллере на D1. И что на D1 на плате GRM-1.
    И что мы имеем? А имеем мы следующее:
    1. На D1 контроллера 0, на всех остальных Dx - единица, ~5 вольт
    2. На D1 GRM-1 - единица
    При подключении D1 GRM-1 к D1 контроллера - имеем выше показанную пилу, что даже где-то объяснимо.
    В принципе уже на п.1 возникает вопрос с какого перепуга там 0 при старте?

    Вот такая сказка про контроллер

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

    Xrust, у вас plcc панельки есть? я бы может купил просто еще один конструктор скажем DIP40, панельку PLCC44 и новый набор ключей.
    Так сказать для Сказки-2

  12. #170
    Master Аватар для Xrust
    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    906
    Спасибо Благодарностей отдано 
    204
    Спасибо Благодарностей получено 
    145
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Egal, все есть. Панельку и матрицу, поскольку на нее упало подозрение, вышлю бесплатно. Напишите мне на барахолке, чтобы я ничего не перепутал.

Страница 17 из 26 ПерваяПервая ... 131415161718192021 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 34
    Последнее: 24.11.2022, 16:05
  2. Ответов: 40
    Последнее: 27.06.2021, 15:41
  3. Ответов: 146
    Последнее: 31.05.2020, 19:00
  4. Ответов: 29
    Последнее: 24.03.2019, 18:11

Ваши права

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