User Tag List

Страница 15 из 26 ПерваяПервая ... 111213141516171819 ... ПоследняяПоследняя
Показано с 141 по 150 из 282

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

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

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

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Обновил ссылку, была ошиПка в "стрелка вниз", попутно изменил NMI на ScrLck.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

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

  3. #2

    Регистрация
    23.04.2020
    Адрес
    г. Тотьма
    Сообщений
    903
    Спасибо Благодарностей отдано 
    273
    Спасибо Благодарностей получено 
    339
    Поблагодарили
    182 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Значит пины Х теперь по порядку на 0-7, а земля осталась на Х10. Хорошо, буду перепаивать.

    Упд.
    Что-то не работает. Перепаял с Х8-9 на Х6-7 и комп не заводится.
    Последний раз редактировалось izzx; 12.01.2022 в 20:28.

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


    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
    [свернуть]

  4. #3

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от izzx Посмотреть сообщение
    а земля осталась на Х10
    Нет, зачем же? для клавиатуры используется Х0-7, а на Х8 - землю.

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

    Цитата Сообщение от izzx Посмотреть сообщение
    Что-то не работает. Перепаял с Х8-9 на Х6-7 и комп не заводится.
    Заменил прошивку в Меге? У меня сейчас всё работает.
    Последний раз редактировалось Ewgeny7; 13.01.2022 в 17:25.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  5. #4

    Регистрация
    23.04.2020
    Адрес
    г. Тотьма
    Сообщений
    903
    Спасибо Благодарностей отдано 
    273
    Спасибо Благодарностей получено 
    339
    Поблагодарили
    182 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    Заменил прошивку в Меге
    Прошивку заменил, и землю оставил на Х10. Что характерно, магик и сброс работали. Только перестали работать два последних ряда кнопок. Вот тогда и перепаял на 6-7. И тут внезапно не заработало. Отпаял контакты 6-7, заработало. Буду дальше пробовать.

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


    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
    [свернуть]

  6. #5

    Регистрация
    07.08.2007
    Адрес
    Москва
    Сообщений
    936
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    26
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всем добрый день.
    Спаял этот контроллер с plcc версией ключей. Не заработал.
    На 2-3 секунды работает кнопка вниз. Либо может сработать Enter - включится Tape Loader - можно нажать два раза проблем для отмены, тоже сработает.
    Дальше ничего не работает. Иногда Enter начинает работать как кнопка вниз.
    Посе прогрева время от времени после ресета комп практически постоянно выходит в цветовой матрас - как при зажатых шифтах.
    Если при включении сразу нажать стрелку вверх - то после этого ничего больше не нажимается.

    Кондеи по питанию поставил 1мкф постоянные 2 штуки и 1 на 470 электролит

    Подключаюсь по ICSP программатором TL866-2-Pro - чип выбираю ATMEGA168PA - check id = 1E 94 0b
    Пытаюсь прочитать -- Check ID Error 0x 1E 94 0b
    Отключаю Check ID - прочитал вот это - это соответствует действительности?

  7. #6

    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    931
    Спасибо Благодарностей отдано 
    243
    Спасибо Благодарностей получено 
    167
    Поблагодарили
    81 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Egal Посмотреть сообщение
    прочитал вот это - это соответствует действительности?
    Соответствует. Контрольная сумма совпадает с тем, что в рабочий контроллер шилось.

    Попробуйте другую клавиатуру, если есть возможность. Попробуйте резисторы подтяжки для клавиатуры - некоторые жаловались, что встроенной в МК 10кОм не всегда хватает.
    Если ничего не поможет, предлагаю прошить отладочную прошивку. Тут понадобится кварц, чтобы стабилизировать работу последовательного порта. Могу вам прислать такую для кварца 16МГц. К сожалению, на PLCC версии платы я не развел контакты для отладочного порта, придется провода к выводам припаивать.
    Все чипы, которые я отправляю в комплектах, проходят у меня проверку. В МК я записываю тестовую прошивку, которая проверяет работоспособность портов. Матрицы тоже проходят ограниченную проверку - втыкаю их в рабочий контроллер, подключенный к спеку.
    Последний раз редактировалось Xrust; 13.01.2022 в 20:04.

  8. #7

    Регистрация
    07.08.2007
    Адрес
    Москва
    Сообщений
    936
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    26
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Xrust Посмотреть сообщение
    Соответствует. Контрольная сумма совпадает с тем, что в рабочий контроллер шилось.
    Фух. Значит не сломал ничего ))
    Клавиатуры у меня две - но они одинаковые, ОКЛИК и обе нормально работают в Speccy2010.

    Я пока грешу на китайский импульсник.
    Хотя сам GRM-1 все тесты проходит нормально. Я подержал всё включенным подольше - ключи сами собой переключаются, на что хотят. Хотят два шифта, хотят сами Enter нажмут.
    Стрелка вверх редко когда работает, но вниз стабильно. Бывает нажмёшь вниз - и полоска-селектор полетела снизу вверху добесконечности.
    Может клавиатура что-то левое пуляет? На неё какую подтяжку надо?

    Давайте попробуем отладочную. А что-то нужно для порта?

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

    Да, С1 я на 470мкф впаял

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

    Кстати, на схеме - в pdf-ке - DATA у MT8816AE обозначена 38 пин, хотя по DS это 42 пин.

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

    Цитата Сообщение от Xrust Посмотреть сообщение
    предлагаю прошить отладочную прошивку
    Мне кажется я нашёл причину моих мучений ;-)
    Надеюсь будет видно

  9. #8

    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    931
    Спасибо Благодарностей отдано 
    243
    Спасибо Благодарностей получено 
    167
    Поблагодарили
    81 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Egal Посмотреть сообщение
    Мне кажется я нашёл причину моих мучений ;-)
    Надеюсь будет видно
    Нет, ничего не замечаю.
    Неужели непропай? Как всегда, у последнего лапка соскакивает...

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

    Сейчас специально взял и спаял такой же PLCC контроллер. Мне стыдно, но новую серию фиолетовых плат PLCC я на собираемость не проверял. Впрочем, изменение там были только одно - резистор R1. Плата с первого раза не заработала, глючила, были ложные срабатывания. Тщательно отмыл китайский флюс, который остался под PLCC панелькой. Снова глюк. На этот раз не той стороной матрицу воткнул в панель. Нагрелась, но не сгорела. Поставил правильно - работает.
    Последний раз редактировалось Xrust; 13.01.2022 в 22:28.

  10. #9

    Регистрация
    09.03.2017
    Адрес
    г. Троицк
    Сообщений
    609
    Спасибо Благодарностей отдано 
    125
    Спасибо Благодарностей получено 
    64
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Xrust Посмотреть сообщение
    Нет, ничего не замечаю.
    25-ая лапа
    electronox necromancer

  11. #10

    Регистрация
    12.04.2017
    Адрес
    г. Тольятти
    Сообщений
    931
    Спасибо Благодарностей отдано 
    243
    Спасибо Благодарностей получено 
    167
    Поблагодарили
    81 сообщений
    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;
        }
      }
    }

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

    Egal(14.01.2022)

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

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

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

Эту тему просматривают: 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

Ваши права

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