Обновил ссылку, была ошиПка в "стрелка вниз", попутно изменил NMI на ScrLck.
Обновил ссылку, была ошиПка в "стрелка вниз", попутно изменил 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"
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Значит пины Х теперь по порядку на 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
[свернуть]
Последний раз редактировалось 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"
Скрытый текст
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
[свернуть]
Всем добрый день.
Спаял этот контроллер с 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 - прочитал вот это - это соответствует действительности?
Соответствует. Контрольная сумма совпадает с тем, что в рабочий контроллер шилось.
Попробуйте другую клавиатуру, если есть возможность. Попробуйте резисторы подтяжки для клавиатуры - некоторые жаловались, что встроенной в МК 10кОм не всегда хватает.
Если ничего не поможет, предлагаю прошить отладочную прошивку. Тут понадобится кварц, чтобы стабилизировать работу последовательного порта. Могу вам прислать такую для кварца 16МГц. К сожалению, на PLCC версии платы я не развел контакты для отладочного порта, придется провода к выводам припаивать.
Все чипы, которые я отправляю в комплектах, проходят у меня проверку. В МК я записываю тестовую прошивку, которая проверяет работоспособность портов. Матрицы тоже проходят ограниченную проверку - втыкаю их в рабочий контроллер, подключенный к спеку.
Последний раз редактировалось Xrust; 13.01.2022 в 20:04.
Фух. Значит не сломал ничего ))
Клавиатуры у меня две - но они одинаковые, ОКЛИК и обе нормально работают в Speccy2010.
Я пока грешу на китайский импульсник.
Хотя сам GRM-1 все тесты проходит нормально. Я подержал всё включенным подольше - ключи сами собой переключаются, на что хотят. Хотят два шифта, хотят сами Enter нажмут.
Стрелка вверх редко когда работает, но вниз стабильно. Бывает нажмёшь вниз - и полоска-селектор полетела снизу вверху добесконечности.
Может клавиатура что-то левое пуляет? На неё какую подтяжку надо?
Давайте попробуем отладочную. А что-то нужно для порта?
- - - Добавлено - - -
Да, С1 я на 470мкф впаял
- - - Добавлено - - -
Кстати, на схеме - в pdf-ке - DATA у MT8816AE обозначена 38 пин, хотя по DS это 42 пин.
- - - Добавлено - - -
Мне кажется я нашёл причину моих мучений ;-)
Надеюсь будет видно
![]()
Нет, ничего не замечаю.
Неужели непропай? Как всегда, у последнего лапка соскакивает...
- - - Добавлено - - -
Сейчас специально взял и спаял такой же PLCC контроллер. Мне стыдно, но новую серию фиолетовых плат PLCC я на собираемость не проверял. Впрочем, изменение там были только одно - резистор R1. Плата с первого раза не заработала, глючила, были ложные срабатывания. Тщательно отмыл китайский флюс, который остался под PLCC панелькой. Снова глюк. На этот раз не той стороной матрицу воткнул в панель. Нагрелась, но не сгорела. Поставил правильно - работает.
Последний раз редактировалось Xrust; 13.01.2022 в 22:28.
Для порта можно использовать преобразователь 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; } } }
Egal(14.01.2022)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)