Untitled
Untitled
Untitled
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
144 Der User-Port<br />
Falls der serielle Port als Eingang programmiert<br />
ist, fungiert auch CNT als<br />
Takteingang. Bei jeder positiven Flanke<br />
an CNT wird der Zustand von SP in das<br />
Schieberegister ubernommen. Dabei wird<br />
der bisherige Inhalt dieses Registers nach<br />
links geschoben und das neue Bit rechts<br />
angefugt. 1st dies achtmal geschehen,<br />
dann wird der Wert des Schieberegisters in<br />
das serielle Datenregister ubertragen.<br />
Gleichzeitig wird Bit 3 im Interrupt<br />
Kontrollregister gesetzt, urn anzuzeigen,<br />
daB ein neues Datenwort bereitsteht.<br />
1m Ausgabemodus dient der AnschluB<br />
CNT als Ta ktausgang. Bei jedem Unterlauf<br />
von Timer A andert er seinen Zustand.<br />
Mit Timer A wird also die<br />
Geschwindigkeit der Datenausgabe bestimmt.<br />
Da der kleinste Inhalt des Timer<br />
$0001 ist ($0000 erzeugt keinen Unterlauf!),<br />
betragt die hOchste Ubertragungsrate<br />
ein Viertel des Systemtaktes. Schreibt<br />
man einen Wert in das serielle Datenregi<br />
ster, dann wird er in das Schieberegister<br />
ubernommen, sob aid dieses leer ist. Der<br />
Inhalt des Schieberegisters wird Bit fur Bit<br />
auf den AnschluB SP gelegt und dann eine<br />
positive Flanke an CNT ausgegeben. Dabei<br />
ist auch hier die Schieberichtung wieder<br />
links, so daB das hOchstwertige Bit<br />
zuerst erscheint. Sind aIle 8 Bit herausgeschoben,<br />
so wird - analog zum Emp<br />
fang von Daten - das Bit 3 im Interrupt<br />
Kontrollregister gesetzt. Dies geschieht<br />
nicht, wenn bereits vor der Ubertragung<br />
des achten Bit neue Daten ins serielle Datenregister<br />
geschrieben wurden. In diesem<br />
Fall wurde die Ubertragung direkt fortgesetzt.<br />
Falls kein neues Byte ins Datenregister<br />
geschrieben wird, halt die Datenausgabe<br />
an.<br />
2.5.2 Erzeugung einer Gleich<br />
spannung aus<br />
Rechteckimpulsen<br />
Erinnern Sie sich noch an das Problem<br />
auf der SC-OI-Sprachausgabekarte ein�<br />
variable Gleichspannung zu erzeugen? Sie<br />
wissen jetzt, wie Sie Daten seriell ausgeben,<br />
doch wie erhalt man dam it eine<br />
Gleichspannung? Sehr einfach, denn man<br />
kann doch eine Rechteckspannung mit<br />
variabler Impulsbreite erzeugen. Hat diese<br />
Rechteckspannung eine genugend hohe<br />
Frequenz, dann zeigt ein VielfachmeB<br />
gerat bereits einen konstanten Wert an.<br />
Das kommt daher, weil der Zeiger aufgrund<br />
seiner Tragheit den schnellen Spannungswechseln<br />
nicht mehr folgen kann:<br />
Er zeigt einfach einen Mittelwert an, bzw.<br />
er integriert den Spannungsverlauf mechanisch.<br />
Analog dazu verhalt sich elektrisch ein<br />
TiefpaB, also eine Hintereinanderschal<br />
tung aus Widerstand und Kondensator<br />
nach Bild 2.68. Die Dimensionierung der<br />
Bauteile hangt von der Frequenz und der<br />
Belastung am Ausgang abo Uber den Widerstand<br />
wird ein Kondensator wahrend<br />
der Spannungsimpuise aufgeladen. Er<br />
entladt sich aber nur langsam, so daB sich<br />
ein konstanter Mittelwert einstellt.<br />
1m C 64 kann man die geforderte Frequenz<br />
zusatzlich zu der bereits beschriebenen<br />
Sprachausgabeschaltung am bequemsten<br />
generieren, indem wahrend der<br />
Interrupt-Routine einfach das serielle Datenregister<br />
des CIA # 1 mit einem speziellen<br />
Bitmuster geladen wird. Timer A wird<br />
zur Erzeugung des System-Interrupt benbtigt<br />
und lauft bereits. Der nbtige Zusatz<br />
in der IRQ-Routine lautet lediglich: