Tja, nun ist es endlich soweit. Nach Durchführung der erforderlichen Lötarbeiten sollten allen geneigten Mitbastlern einige rechnergesteuerte Lichter aufgehen. Doch zuvor einige klärende Worte zu den Bauelementen, die bei dieser ersten Schaltung Verwendung finden. Fangen wir zur Abwechslung einmal hinten an und nehmen unsere "Anzeige" unter die Lupe.
LED bedeutet zu deutsch "Licht Emittierende Diode". Es handelt sich also um eine Diode, die Licht aussenden kann. Das tut sie beileibe nicht grundsätzlich, sondern nur dann, wenn der Strom in einer bestimmten Richtung durch sie hindurchfließt. Schließt man eine LED falsch-herum an einen Stromkreis an, bleibt nicht nur das gewünschte Leuchten aus, unter Umständen wird die LED dabei auch zerstört. Deshalb ist es sehr erfreulich, daß man den LED's ihre Polarität auch ansehen kann. Dem aufmerksamen Betrachter fallen sofort zwei Anschlüsse auf, die den Diodenkörper verlassen. Sinnigerweise ist der eine Anschluß der Pluspol, der andere der Minuspol. Der versierte Elektroniker nennt den Pluspol Anode und den Minuspol Kathode. Anode und Kathode lassen sich durch die Länge der Anschlußpins voneinander unterscheiden. Die Anode, also der Pluspol, ist der längere von beiden. Wer nun seine LED's irgendwo ausgelötet hat, wird mit diesem Unterscheidungsmerkmal wenig anfangen können, da beide Pins wahrscheinlich auf gleiche Länge gekürzt wurden. Flier hilft ein Blick auf den Diodenkörper weiter: Man erkennt im Kunststoffkörper der LED zwei Pole, von denen einer deutlich größer ist als der andere. Der größere der beiden Pole ist die Kathode, also der Minuspol, der kleinere die Anode. Die Anschlußrichtung steht somit fest, aber damit ist das Thema LED noch nicht erledigt. Wird eine LED von einem zu großen Strom durchflossen, so wird sie zwar besonders hell, aber nicht besonders lange leuchten. Aus diesem Grunde ist es notwendig, den Strom zu begrenzen, der durch die LED fließt. Handelsübliche LED's sind normalerweise für einen Strom von maximal 20 mA (= 0,02 A) ausgelegt. Um diesen Strom von 20 Milliampere nicht zu überschreiten, muß der LED ein Widerstand vorgeschaltet werden, der den Strom auf den zulässigen Wert begrenzt. In unserem Fall wird das ansteuernde IC mit +5 Volt gespeist, kann demnach für die LED-Ansteuerung höchstens eine Spannung von 5 Volt bereitstellen. Je nach Farbe benötigt (oder "verbraucht") die LED selbst eine Spannung von ca. 1,5 Volt bis 2,2 Volt, damit sie überhaupt etwas tut (das nennt sich Spannungsabfall, muß aber nicht entsorgt werden). Somit bleiben uns bestenfalls 3,5 Volt, die für die LED-Leuchtkraft zu gebrauchen sind. Nehmen wir jetzt das allseits beliebte Ohmsche Gesetz zur Hand, können wir den nötigen Vorwiderstand errechnen.
Der nächste geläufige Widerstand von 180R ist für den LED-Betrieb ausreichend hoch. Der Grund für den empfohlenen Widerstand von 330R ist, daß unsere LED's mit einem geringeren Strom zwar etwas weniger stark leuchten, das treibende IC dafür aber auch nicht so stark belasten. Kurz gesagt: Der Stromverbrauch unserer Schaltung wird dadurch gesenkt.
Der Sinn und Zweck der eingesetzten Widerstände ist mit den vorangegangenen Ausführungen zur LED eigentlich hinreichen erklärt. Zu Widerständen allgemein kann man ganze Romane verfassen, so vielseitig einsetzbar ist dieses unscheinbare Bauelement. Für uns aber soll für's erste genügen, daß man damit einen Strom begrenzen kann.
Die Einsatzmöglichkeiten sind gewaltig, wir benutzen sie aber erst einmal nur zur Glättung und Stabilisierung der Versorgungsspannung für unsere Schaltung. Betrachten wir zunächst den Elko, genauer: Elektrolytkondensator. Wer genau hingeguckt hat, hat vielleicht bemerkt, daß dieser Kondensatortyp, genau wie eine LED, einen Plus- und einen Minuspol hat. Bei der stehenden Ausführung ist der Anschluß für den Pluspol etwas länger als der für den Minuspol.
Der Minuspol auf dem ist auf dem Kondensator selbst zusätzlich noch irgendwie kenntlich gemacht, häufig durch einige Minuszeichen an der entsprechenden Seite. Die liegende Ausführung hat an der Plusseite eine Einschnürung, auf den Minuspol weist in der Regel ein breiter Pfeil Der Elko dient uns als Stromspeicher und sorgt dafür, daß wir durch das Schalten der LED's keine Spannungseinbrüche befürchten müssen. Der kleine Kondensator mit 1 OOnF ist anderer baulicher Natur, auf die Polarität muß dabei nicht geachtet werden. Seine Funktion ist das Abfangen (Puffern) von Spannungsspitzen, die durch die Schaltvorgänge in unserem IC entstehen können.
Richtig gelesen, zunächst brauchen wir nur eines, nämlich ein 74LS374. In diesem Ic sind eine ganze Reihe von Bauelementen verborgen, die uns aber nicht weiter interessieren. Wichtig für uns ist die Funktion. Das 74LS374 enthält acht Flip-Flops, was im Groben nichts anderes bedeutet, als daß sie, je nach äußeren Umständen, an ihren Ausgängen mal einen Hi-Pegel oder mal einen Lo-Pegel haben. Der Atari soll uns nun dabei behilflich sein, solche "äußeren Umstände" (sprich: Bedingungen) herzustellen, die ein Flip-Flop dazu veranlassen, das zu tun, was wir wollen. Dazu sehen wir uns eines von den acht Stück etwas genauer an: Da gibt es einen Eingang, einen Ausgang und einen Takteingang, das war's schon. Der Pegel (Hi oder Lo). der an den Eingang gelegt wird, steht nur dann am Ausgang an, wenn die Taktleitung in der Zwischenzeit einen Sprung von Lo nach Hi durchführt. Anders ausgedrückt: Das Signal am Eingang wird mit der steigenden Flanke des Taktsignals am Ausgang sichtbar. Solange also die Taktleitung nicht von Lo nach Hi geht, ist es egal, welches Signal am Eingang liegt, am Ausgang steht das Signal zur Verfügung, das bei der letzten LO->FIi-Bewegung am Eingang anstand. Die Flip-Flops im 74LS374 sind also Zwischenspeicher, die genau die Daten an ihren Ausgängen bereithalten, die mit der letzten steigenden Flanke (= die Bewegung von Lo nach Hi) an ihre Eingänge gelegt waren.
Dem wachen Verstand eines jeden Bastelwütigen wird der mit FE bezeichnete Pin 1 des 74LS374 nicht entgangen sein. Hierbei handelt es sich um den Eingang für ein sogenanntes "Freigabesignal". Wird dieser Eingang auf Hi gelegt, werden die an den Eingängen anliegenden Daten mit der steigenden Flanke des Taktsignals zwar in den Flip-Flops gespeichert, aber die Ausgänge verhalten sich, als wären sie gar nicht da. Sie bleiben hochohmig, und die gespeicherten Daten können nicht ausgelesen werden. Diesen Zustand nennt man "Tri-State", weil er, abgesehen von Lo und Hi, der dritte mögliche Zustand dieses ICs ist. Erst wenn der Freigabeeingang auf Lo gelegt wird, werden die in den Flip-Flops gespeicherten Daten an den Ausgängen sichtbar. Wozu gibt es nun diesen dritten Zustand, den Tri-State? Die Erklärung ist schnell geliefert: Wenn ein IC seine Daten permanent auf den Leitungen liegen läßt, kann ein anderes IC diese Leitungen nicht benutzen, sie sind ja nicht frei, sondern besetzt. Uber den Freigabeeingang wird das IC dazu bewegt, die Leitungen freizugeben, sich selbst also in einen Zustand zu versetzen, der andere ICs bei der Benutzung dieser Leitungen nicht stört. In unserem Fall spielen andere ICs noch keine Rolle, deshalb können wir den Freigabeeingang des 74LS374 erst mal mit Masse verbinden. Eine weitere Frage wirft sicherlich der Takteingang auf: Woher nehmen wir den Takt? Kein Problem - zur gesteuerten Datenübernahme stellt uns der Atari am Romport entsprechende Leitungen zur Verfügung: /ROM3 und /ROM4. Genau genommen dienen diese Leitungen dazu, bei einem Lesezugriff auf den Romport der angeschlossenen Hardware mitzuteilen, daß in dem Augenblick, wenn /ROM3 oder /ROM4 Lo sind, die anstehenden Daten eingelesen werden. Wir verwenden als Taktleitung für unser IC das Signal /ROM3. Dieses Signal wird dann aktiv, wenn wir aus dem höheren der beiden 64KB-Blöcke des Romport etwas lesen wollen.
Das Schreiben in diesen Bereich ist nicht möglich, dem hat Atari hardwaremäßig einen Riegel vorgeschoben. Aus diesem Grunde können für die Ansteuerung einer externen Hardware am Romport auch nicht die Datenleitungen benutzt werden Wir mißbrauchen deshalb die Adresslei-tungen zur Datenübertragung, und zwar folgendermaßen: An die Eingänge unserer Flip-Flops werden nicht die Daten-, sondern die Adressierungen angelötet, /ROM3 dient uns als Taktleitung. Wenn wir jetzt einen Lesezugriff aus dem richtigen Speicherbereich durchführen, haben die Adressierungen die Lo-Hi-Kombination, die unsere angelegte Adresse als Zahlenwert im dualen Zahlensystem hat. /ROM3 wird Lo, um für uns uninteressante Daten einzulesen. Wenn /ROM3 dann wieder Hi, also inaktiv wird, wird mit der steigenden Flanke unsere angelegte Adresse in den Flip-Flop's gespeichert und steht bis zum nächsten Lesezugriff zur Verfügung.
Wer keinen Romportstecker auftreiben konnte, hat vielleicht, wie ich auch, die Adern des Flachbandkabels direkt an den Romport angelötet. Wenn der Rechner noch läuft, scheint die Sache gut gegangen zu sein und der schwierigste Teil der Lötarbeit ist erledigt. In jedem Fall sollte auf die eine oder andere Art der Romport über ein 10cm bis 15cm langes Flachbandkabel jetzt als 40polige Buchsenleiste zur Verfügung stehen. Mit gebührendem Elan geht's an die Bestückung der Euro-Platine. Normalerweise werden die niedrigsten Bauelemente zuerst eingesetzt, wir machen's aber anders, dann müssen wir nicht so genau planen (soll heißen: gar nicht) und beginnen mit der Pfostenleiste. Die wird, entsprechend der Adernzahl des Flachbandkabels, auf 40 Pins gekürzt und an der rechten oberen Ecke der Platine eingelötet. Es folgen im Abstand von ca. 1,5 cm ein 20poliger IC-Sockel mit den zwei Kondensatoren und untereinander die acht LED's. Die Anode (=plus, langer Pin) gehört in Richtung IC. Zwischen den LED's sollte ein Leerraster verbleiben, damit die Leuchtkörper nicht aneinanderstoßen und das Löten einfacher wird. Es macht sich gut, wenn man die LED's zunächst nur mit einem Pin anlötet, dann kann man sie noch vernünftig ausrichten (das Auge sieht mit!). Jetzt noch einen Widerstand links neben jede LED gesetzt, und schon geht's an die Verdrahtung. Hier muß eigentlich immer nur Punkt A mit Punkt B verbunden werden, soweit kann eigentlich nichts schiefgehen, wenn man seine A- und B-Punkte kennt. Hangeln wir uns diesmal von leicht in Richtung schwer, die Kabellänge nicht zu knapp bemessen.
LED-Listing
FOR C=0 TO 10
FOR I=1 TO 7
a=PEEK (&HFB0000+2^i)
PAUSE 1
NEXT I
FOR I=6 TO 0 STEP -1
a=PEEK (&HFB0000+2^i)
PAUSE 1
NEXT I
C%=PEEK(&HFB0000)
NEXT C
Wie schon in der letzten Ausgabe angedeutet, liegt der Romport in einem bestimmten Adressbereich des Atari. Dieser Bereich läßt sich recht nett in hexadezimalen Zahlen beschreiben: Der Bereich von FA0000 bis FAFFFF wird von dem Signal /ROM4 bedient, /ROM3 ist für den Bereich von FB0000 bis FBFFFF zuständig. Das heißt, sobald man auf einen dieser Bereiche lesend (!) zugreift, wird eines der /ROM-Signale aktiv. Was es dort zu lesen gibt, ist für uns unwichtig, denn wir wollen ja nur den Zustand unserer Adressleitungen in dem IC speichern! Da wir als Taktleitung /ROM3 verwenden, hat nur der Lesezuriff auf den Bereich FB0000 bis FBFFFF einen Effekt. Genau betrachtet ist unser Adressbereich sogar noch kleiner, denn wir verwenden nur die Adressleitungen A0 (A1) bis A1. Damit können wir höchstens 256 Zustände erzeugen. Hexadezimal ausgedrückt sind es FF Zustände, dementsprechend reicht unser nutzbarer Bereich nur bis FB00FF. In GFA-Basic (und auch woanders) gibt es einen einfachen Befehl, um von einer beliebigen Adresse Daten einzulesen. Dieser Befehl heißt "PEEK", gefolgt von der gewünschten Adresse in Klammem. Natürlich muß man auch angeben, was mit den eingelesenen Daten passieren soll. Man kann sie z.B. auf dem Bildschirm ausgeben und gleichzeitig versuchen, die zweite LED zum Leuchten zu bringen. Dann lautet der Befehl: "PRINT PEEK(&HFB0000+2)". Auf dem Monitor erscheint als eingelesener Wert eine 255, um die wir uns keine Gedanken machen, und die zweite LED leuchtet auf. Das in dem Basic-Befehl enthaltene "&H" ist ein Hinweis darauf, daß der direkt folgende Ausdruck eine hexadezimale Zahl ist. Die auf das Pluszeichen folgende 2 ist in diesem Fall eine Dezimalzahl. Ersetzt man sie durch eine 4, sollte die dritte LED leuchten. Mit ein paar Zahlenspielen lassen sich die LED's nun in beliebiger Weise zum Leuchten bringen. Dabei kann zu unserem Basiswert von FB0000 auch eine Variable addiert werden. Die Programmbeispiele verdeutlichen die Programmiermöglichkeiten (hoffe ich).
Jetzt ham wir den Salat, keine AO-Leitung! Nur nicht verzagen, die können wir uns selbst bauen. Wenn sie da wäre, würde A0 beim Zugriff auf eine gerade Adresse inaktiv (Lo), bei einer ungeraden Adresse Hi. Eine Betrachtung von /UDS oder /LDS lohnt in jedem Fall, um A0 zu generieren. Noch ein Tip: Das Signal muß etwas verzögert werden (z.B. 74LS00), damit es als A0 in dem 74LS374 gespeichert werden kann. Mehr wird nicht verraten, denn für die denkende Mehrheit der Bewohner dieses Planeten gibt es möglicherweise etwas zu holen. Funktionierende Lösungsvorschläge für dieses elektronische Rätsel haben die Chance auf einen netten Gewinn!
Unter allen Einsendern verlosen wir drei Softwarepakete: für CD-ROM-Besitzer die brandneue Infopedia-Lexikon-CD oder wahlweise ein Grafikpaket "Arabeque + Convector". Senden Sie Ihre Lösungsvorschläge bitte direkt an die Redaktion des Falke Verlags (siehe Impressum auf Seite 66 dieser Ausgabe).