Привет,Denn!
У меня есть еще один программатор по моей схеме, правда неполноценный,
только пишет и читает. В нем я поставил вместо ИР82 - 74HC573, все нормально
и пишет и читает.
Вид для печати
Привет,Denn!
У меня есть еще один программатор по моей схеме, правда неполноценный,
только пишет и читает. В нем я поставил вместо ИР82 - 74HC573, все нормально
и пишет и читает.
VladimirS, у меня стоит 74HCT374 (функциональный аналог нашей ИР23).
Схему твою посмотрел, в общем-то практически тоже самое, что в общем-то не удивительно, т.к. вариантов для манёвров тут не много.
Честно говоря, я предполагал, что могут возникнуть трудности с прошиванием (там разные напряжения, скорости их подачи, определённые алгоритмы), а уж проблемы с банальным считыванием на такой простой системе - это для меня вообще нонсенс.
Попробую резюмировать аппаратные нюансы. Итак, младшая половина адреса у меня формируется ТТЛ-уровнями, а старшая - КМОП. У микрухи 74HCT374 заявлено, что она совместима с ТТЛ. Но факт остаётся фактом, напряжения лог. "0" и лог. "1" отличаются. Выход данных у Winbonda - КМОП, приёмник данных (ВВ55А) - ТТЛ.
Есть ещё нюанс.. поскольку напряжение питания на ПЗУ подаётся через диод (это нужно для развязки источников при подаче напряжения программирования), то оно не 5 Вольт, а меньше и реально составляет 4,67 Вольт (с КРЕНки выходит 4,95в + падение на диоде). При этом питание на ВВ55-ой и на Ирке полные 5 Вольт, т.е. фактически лог. "1" на старших адресных входах ПЗУ больше, чем её питание! Не знаю может ли это как-то влиять, но по д/ш всё укладывается в допустимый разброс.
Если допустить, что проблема в нестыковке КМОП-ТТЛ, то почему тогда у VladimirS в двух аналогичных аппаратных вариантах всё работает, а у меня нет?
Для кмоп-ттл надо резисторы подтяжки ставить...
BYTEMAN, можно поподробнее, плз?
Вот кусок кода, который читает 32 Кб данных из ПЗУ:
Code
RD_ROM:
; Чтение блока из ПЗУ
; I: [F_NUM] - номер блока (косв.адр.)
; подаем питание на ПЗУ
MVI A,10H; 0001 0000 - HiZ=1, HiPWR=OE=CE=0
STA PORT_C
XRA A
DCR A
JNZ $-1
MVI A,50H; 0101 0000 - HiZ=0E=1, HiPWR=CE=0
STA PORT_C
LXI D,BUFFER
MVI B,128; 32768/256 - длина в блоках по 256
; формируем адрес ПЗУ
LHLD F_NUM
MOV A,M
ANI 1
RRC
MOV H,A
MVI L,0
RDROM0:
; цикл чтения данных
; фиксация старшего байта адреса в ИР23
MOV A,H
STA PORT_A
MVI A,58H; 0101 1000 - HiZ=LCK=OE=1, HiPWR=CE=0
STA PORT_C
MVI A,10H; 0001 0000 - HiZ=1, LCK=HiPWR=CE=OE=0
STA PORT_C
; чтение блока 256 байт
RDROM1:
MOV A,L
STA PORT_A
LDA PORT_B
STAX D
INX D
INR L
JNZ RDROM1
INR H
; обновление индикатора прогресса
MOV A,B
ANI 3
MVI C,'*'
CZ BIOS; [A]=0 - PRC
DCR B
JNZ RDROM0
; снимаем питание с ПЗУ
XRA A; 0000 0000 - HiZ=HiPWR=CE=OE=0
STA PORT_C
RET
[свернуть]
Сомневаюсь, что в нём бага, но мало ли...
Согласовывать надо. Ну и шоттки в питание (+ что мешает "скомпенсировать" падение на диоде теми же диодами в выводе стабилизации кренок?).
В питании и так Шоттка стоит (SR106). Насчёт "скомпенсировать" - а оно надо? До +4.5 Вольт обязана работать ПЗУха.
ПЗУха то работает, но если она ТТЛ, она не протянет тебе лог.1. Т.е. по своим меркам она тянет, там же от Vcc будет считаться, а ты со своими честными 5V со стороны ВВ55 уже не замечаешь. Хотя, я всякое делал, были разные капризные экземпляры.
А, еще я со странностями ВВ55 сталкивался, что его ножки не могли протянуть некоторые ТТЛ входы. И ЕМНИП тут тоже у кого-то было, и вроде как помогла установка дубовой 82С55, которая уже CMOS, в отличии от 8255/ВВ55 которые nMOS. Как уже было тут сказано, я бы подтянул выводы ВВ55 к +5В (как данные так и адрес, выход регистра подтягивать не надо).
А я бы посоветовал попробовать поменять ВВ55А на другую. И лучше попробовать несколько. У меня были случаи, когда ВВ-шка себя вела неадекватно. Ещё написать тест, выдавать в порт А значение случайное, с порта Б читать (сделать соединения ессно на плате), проверить, что на выводах то, что и нужно, что нет запзадываний отдельных разрядов.
Denn А не проще A и B порты использовать для адреса без всяких защелок , C для данных ,CE на землю ,OE дергать любым свободным битом (например портом магнитофона или бипером) ,хотя бы для проверки чтения.