30.12.2012 Aufrufe

Untitled

Untitled

Untitled

MEHR ANZEIGEN
WENIGER ANZEIGEN

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:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!