Diese Website verwendet Cookies – nähere Informationen dazu und zu Ihren Rechten als Benutzer finden Sie in unserer Datenschutzerklärung am Ende der Seite. Klicken Sie auf „Ich stimme zu“, um Cookies zu akzeptieren und direkt unsere Website besuchen zu können.
; Configure Time Constant for BRG (TCHR1L,TCHR1H)
LD A,$0
OUT0 (TCHR1H),A
LD A,$9
OUT0 (TCHR1L),A ;57600
; set Clock Source (phi / 10240)-->06h (bit2,1,0 of CNTLB1)
LD A,$06
OUT0 (CNTLB1),A ;bit 7..3 is 0 after reset anyway
; Configure Frame
LD A,$14 ;Start+8bit+1Stop
OUT0 (CNTLA1),A
; Enable BRG
LD A,$08 ;set BRG Bit to 1
OUT0 (ASEXT1),A
; Enable Transmit Line
IN0 A,(CNTLA1)
OR A,$30 ;Enable Bit TE
OUT0 (CNTLA1),A
Software zur Ausgabe eines einzelnen Zeichens
writeZ:
; put value 5 into transmit data register
wait:
IN0 A,(STAT1)
AND A,$02
CP A,$02
JP NZ,wait
LD A,5
OUT0 (TDS1),A
JP writeZ
Prüfen der Logik Pegel am Level-Shifter MAX233
Der MAX233 Level Shifter ist ebenso vom Schaltplan und vom Boardlayout her falsch bedrahtet. Zwei vermeintliche Eingänge (es sind schon eingänge… denke ich) sind gutgemeint auf GND gelegt. Jedoch scheint dies dem MAX 233 nicht gut zu tun. Das IC (chip / integrated circuit) wurde heiss. So lange, bis ich die entsprechenden PINs (Anschlussbeinchen) von den Lötpads "weggehoben" habe. Jedoch bis dahin, erfuhr das IC eine Menge Hitze. Wie es derzeit aussieht, ging das IC dadurch kaputt. Dies zeigt sich, wenn man das serielle Signal von der TTL Seite her betrachtet. Es hat ein TTL Spannungspegel bei logisch 1 von 5 V → das ist richtig. Der TTL Spannungspegel bei logisch 0 sollte jedoch unterhalb von 0.8V liegen. Die Messung mit dem Oszilloskop zeigt jedoch dass dort ein offset (Spannungsversatz) von +2V vorhanden ist. Das zeigt nachfolgendes Bild. Da für den MAX233 am Eingang ein als logisch 0 zu wertendes Signal durch eine kleinere Spannung als 0.8V angeboten werden muß - dieses sich aber nur mit mindestens 2V anbietet - würde der MAX233 konstant ein logisch 1 wahrnehmen und entsprechend verfahren. Der entsprechende Ausgang des MAX233 würde demnach konstant ein logisch 1 in Form von RS232 spezifischen Spannungspegeln ausgeben. –> Die zu übertragenden Worte würden sich also immer gleichermaßen nach "nichts ordentliches" anhören. Man könnte auch sagen, dass die serielle Schnittstelle an dieser Stelle nuschelt.
Jetzt war die Frage von wo kommen diese +2V ? Kommt dieser Offset vom Prozessor, oder vom angeschlossenen IC (dem MAX233) ? Um dies zu prüfen ist der Eingangs-Pin (Anschlussbeinchen) vom Levelshifter für TTL In ebenso vom Lötpad hochgehoben worden. Bei der anschliessenden Messung ergibt sich nun folgendes elektrisch betrachtet richtiges Bild. Es zeigt nun korrekte TTL Spannungspegel. Das logisch 1 wird durch 5V repräsentiert. Das logisch 0 wird mit 0V (GND-potential) dargestellt. Ergo: Das IC MAX233 hat sich verabschiedet, bedeutet : ist defekt. Also wurde es ausgelötet… sieht etwas martialisch aus. (Mir tat es auch weh)
Letztenendes nach wiedereinlöten eines Ersatzteils für den MAX233 und legen einer ebenso, später festgestellten, notwendigen GND Leitung ist der MAX233 ordentlich in Betrieb und wandelt die zu sendenden TTL bits in RS232 entsprechende Signals um.
Anbinden an Laptop als Host (Host empfängt)
Erste Übung ist ein Programm zu schreiben, welches simpel ein "Buchstabe" an den Host Computer schickt. Es wird ein Terminalprogrammm genutzt, welches auf COM4 hört und mit 57k 8n1 konfiguriert ist. An dieser Stelle, mit diesem Programm wird nur geprüft ob der Host Computer Daten vom CAPRI Z180 empfangen kann. Auf der linken Seite des Bildes ist ein Terminalprogramm gezeigt, welches bereits die empfangenen Buchstaben (immer der selbe - da der CAPRI Z180 wieder in einer endlos Schleifen schickt…) darstellt. Es ist der Buchstabe "K" der auf der rechten Seite des Assembler Programms markiert ist. Im Vordergrund (vor dem Terminalprogramm) ist dessen Konfigurationsseite eingeblendet, in dem man die Übertragungsparameter konfiguriert - also die Empfangsgeschwindigkeit der Worte. Es ist hier auch 57600 baud gesetzt (56kbit/s) . Das war im übrigen in den 90zigern so der Traum an Modem geschwindigkeiten, bevor ISDN und später DSL eingeführt worden ist. Wir erinnern uns.. boah… ein 56k Modem. Rock'n Roll !
Zweite Übung: Direkte Rückantwort (echoing) von empfangen Daten
Das Controlregister wurde soweit verändert dass auch der Empfänger aktiv ist. Ein kleines Programm wurde geschrieben welches im Poll Betrieb darauf wartet dass der Empfangsbuffer meldet, dass ein Wort zur Abholung bereit steht. Dieses wird in die Schleife mit einbezogen um letzten endes dieses wieder auszugeben. Die obere Kurve zeigt die elektrische repräsentation des zum CAPRI Z180 Board gesendeten Zeichens. Die Untere Kurve zeigt die elektrische "rück" Übermittlung zum Absender (dem Laptop mit einem Terminalprogram. Das Terminalprogram ist im folgenden abgebildet. Zu guter letzt ist hier ein Teil des Assembler Quellcodes dargestellt. Es zeigt oben das polling auf den leeren Sendebuffer und weiter unten auf den gefüllten Empfangsbuffer. Den Wert aus dem Empfangsbuffer wird in das generische B-Register zwischengespeichert. Beim wieder antritt der Schleife wird dieses Byte genommen (das Byte entspricht der gedrückten Taste) und in den Sendebuffer gelegt.
writeZ:
; put value 5 into transmit data register
wait:
IN0 A,(STAT1)
AND A,$02
CP A,$02 JP NZ,wait LD A,B OUT0 (TDS1),A JP waitRX
set20: IN0 A,(CCR)
OR $80 OUT0 (CCR),A jp prog
waitRX:
IN0 A,(STAT1) AND A,$80 CP A,$80
JP NZ,waitRX IN0 A,(RDR1)
LD B,A
JP writeZ