Es stellte sich heraus, dass bei direkter
Verbindung von /STB und /ACK an der high-Flanke des /STB
-Pulses ein kleiner Spike auftauchte, den der FT245 als
zweiten WR-Pulse deutete. Dadurch wurde jedes Byte des
Druckerportes zwei mal in den FT245 geladen.
Das nebenstehende Oszillogramm zeigt das. Blau ist das
/STB=/ACK=WR-Signal und Grün das /TXE=BUSY-Signal.
(Letzteres sieht etwas verschliffen aus, da ich den
Masseanschluss der Messleitung sehr lang gelassen habe.) Der
FT245 reagiert auf die fallende Flanke des /STB mit einem
TXE-Puls. Daran erkennt man, das er das Datenbyte eingelesen
hat. In der steigenden Flanke des /STR-Signals gibt es einen
kurzen Zappler, (roter Pfeil) dessen abfallende Flanke vom
FT245 als weiterer /STR interpretiert wird. Deshalb liest er
das Datenbyte ein zweites Mal. Das sieht man gut am zweiten
TXE-Puls.
Das konnte ich unterdrücken, indem ich /STR über einen 220
Ohm Widerstand mit /ACK (und WR) verbinde. Der kleine Spike
verschwindet, und das Byte wird nicht mehr doppelt
eingelesen.(rechtes Oszillogramm)
(Ein testweise eingesetzter 4,7-Kiloohm
pull-up-Widerstand von /ACK nach VCC verbesserte weder die
steigende Flanke, noch tat er was gegen den Spike. Einen
deutlich kleineren Widerstandswert wollte ich nicht
verwenden.)
|
|
|