Mehr Ausgangsleitungen für den Attiny13

von Hermann Nieder
ELO 2009
Elektronik-Labor  Labortagebuch  ELO  


 Wäre es Ihnen nicht lieber, Sie hätten für manche Ihrer Projekte mit dem Attiny13 mehr als die vorhandenen Ausgänge zur Verfügung? Man könnte zur Lösung des Problems sicher einen anderen AVR-Controller mit einer größeren Anzahl Anschlüssen nehmen, aber dieser lässt sich nicht so komfortabel wie mit der Software und der Platine programmieren, die zum Lernpaket Mikrocontroller gehört.Da der Attiny13 außer der Leitung für die Kommunikation über eine serielle PC-Schnittstelle nur noch vier Pins frei hat, die man für seine Projekte nutzen kann, führte ich einige Experimente mit Schieberegistern durch, die von ihm angesteuert wurden.Im Bild sind gerade zwei Ics 4094 am Mikrocontroller angeschlossen. An das eine ist der Zahlenwert 15 und an das andere 240 übertragen worden. Dies wird durch die roten und die grünen LOW-Current-LEDs, die über Vorwiderstände an die Ausgänge der Schieberegister angeschlossen sind, dargestellt.

 

 

Zunächst schloss ich nur einen Baustein 4094 nach dem Schaltplan oben an den Attiny13 an und wählte dafür folgende Zuordnung: PB0 - DAT, PB4 - STR und PB3 - CLK.

Hier ist dazu ein Auszug aus dem BASCOM-AVR-Programm, das compiliert und in den Mikrocontroller übertragen wurde:

 
...
D Alias Portb.0
Clk Alias Portb.3
Strobe Alias Portb.4
...
Start:
Clk = 1
Strobe = 1
D = 0
Do
Get #2 , Daten ´ Byte von PC empfangen
Daten1 = Daten ´und in Daten1 „zwischenlagern"
Gosub Schieben ´Sprung in das Unterprogramm Schieben
Loop
Schieben:
D = 0
Strobe = 0
Clk = 0
For N = 0 To 7
D = 0
Daten1 = Daten And 128 ´ Bit 7 testen auf 1 oder 0
If Daten1 = 128 Then
D = 1 ´ beginnend bei Bit 7 nun Bit für Bit an PB0 hinausschieben zum Anschluss DAT
´des 4094
Else
D = 0
End If
Clk = 1
Clk = 0
Shift Daten , Left ´nacheinander alle Bits an Position von Bit 7 schieben,
Next N ´ um sie auf 1 oder 0 testen zu können
Strobe = 1
Strobe = 0
Return

Beim Experimentieren mit dem Attiny13 und dem IC 4094 fand ich heraus, dass es sinnvoll ist, R1 und C1 wie im Schaltplan oben einzufügen, damit beim Einschalten der 5V-Spannung die Ausgangsbits des Schieberegisters zunächst alle gelöscht sind , bevor sie dann dem vom PC übermittelten Zahlenwert entsprechend gesetzt werden. Aus den Datenblättern des 4094 lässt sich entnehmen, dass man diese ICs „hintereinanderschalten" kann, um noch mehr Ausgangsleitungen zu erhalten. Die gerade erwähnte Schaltungsvariante probierte ich nicht aus, jedoch die im Schaltplan oben zu erkennende andere Möglichkeit. Ich verwendete zwei Bausteine 4094, die durch den Attiny13 abwechselnd angesteuert wurden. Dabei hatte ich bei gemeinsamen Daten- und Taktleitungen PB4 mit STR1 des ICs 4094_1 und PB1 mit STR2 des ICs 4094_2 zu verbinden, damit dies möglich wurde. Wird zunächst vom PC eine 1 an den Mikrocontroller übertragen, verzweigt dieser in das Unterprogramm 4094_1 und steuert den Baustein 4094_1 an, während bei einer zuerst übermittelten 2 oder einem größeren Zahlenwert das IC 4094_2 ausgewählt wird. Anschließend wird das zu übertragende Byte empfangen, das Bit für Bit an dasjenige Schieberegister weitergegeben wird, dessen STR-Eingang anschließend durch den Attiny13 aktiviert wird. Hier ein Auszug aus dem Programmlisting in BASCOM-AVR:

...
D Alias Portb.0
Clk Alias Portb.3
Strobe1 Alias Portb.4
Strobe2 Alias Portb.1
...
Start:
Clk = 1
Strobe1 = 1
Strobe2 = 1
D = 0 ' Bei beiden 4094
Daten = 0 ' alle Ausgangsbits löschen.
Gosub Weiter1
Daten = 0
Gosub Weiter2
Do
Get #2 , Daten 'Auswahl eines der
Select Case Daten '4094-ICs
Case 1 : Gosub 4094_1
Case 2 : Gosub 4094_2
Case Is >= 2 : Gosub 4094_2
End Select
Loop
4094_1:
Get #2 , Daten
Weiter1: ´ im Unterprogramm 4094_2 steht hier Weiter2:
Daten1 = Daten
D = 0
Strobe1 = 0
Clk = 0
Gosub Schieben
Strobe1 = 1 ´ " und hier Strobe2=1
Strobe1 = 0 ´ " " Strobe2=0
Return
...

Das Unterprogrammlisting „Schieben" entspricht bis auf die „Strobe-Befehle" demjenigen oben im ersten BASCOM-AVR-Listing. In ähnlicher Weise wie der Baustein 4094 lässt sich auch ein Schieberegister 74HC595 durch den Attiny13 ansteuern und wird dazu z. B. nach dem folgenden Schaltplan angeschlossen.

 

 

Für dieses IC wählte ich die Zuordnung PB0 -- SI, PB3 - SCK sowie PB4 -- RCK. Es lassen sich auch zwei Bausteine 74HC595 am Attiny13 anschließen. In diesem Fall wird bei gemeinsamer Nutzung von SCK(PB3) und SI(PB0) die Leitung PB1 mit RCK2 und diejenige von PB4 mit RCK1 verbunden, und es stehen dann 2 mal 8 Ausgangsleitungen zur Verfügung.

Die Programmlistings in BASCOM-AVR sind für die ICs 74HC595 ähnlich gestaltet wie diejenigen für die Ansteuerung der Bausteine 4094. Auch solche Ics lassen sich nach den Hinweisen in den Datenblättern „hintereinanderschalten", um noch weitere Ausgangsleitungen zur Verfügung zu haben.

Im Bild ist der Screenshot eines Programms in Visual Basic dargestellt, mit dem es möglich ist, mit der abgebildeten Schaltung und dem compilierten BASCOM-AVR-Programm im Attiny13 für die Ansteuerung zweier Ics 74HC595 eine Platine aus einem sogenannten MFA-Computer zu aktivieren.

 

 

Das Bitmuster lässt sich durch Anklicken eingeben, wobei jeweils ein gesetztes Bit durch ein rotes Shape veranschaulicht wird.
Der Dezimalwert des Bytes wird ebenfalls angezeigt und dieses beim Betätigen des Buttons links unten an den Attiny13 übertragen. Der 8 Bit breite Datenbus, des in den 80er Jahren für die Ausbildung in der Industrie und an Schulen entwickelten MFA-Mediensystems ist mit 8 Ausgängen eines der Ics 74HC595 verbunden, während die Adresse der Platine mit einem 8-poligen Mini-Dip-Schalter eingestellt werden kann. Mit einer Leitung des noch freien Schieberegisters wird der Übernahmeimpuls zum Schreiben erzeugt. Im nächsten Bild sind zwei der Platinen aus dem MFA-Mediensystem angeschlossen und werden vom PC über den Attiny13 und die daran angeschlossenen Schieberegister 74HC595 angesteuert.

 

 

Ich hatte mir einen solchen Computer vor einigen Jahren bei eBay gekauft und kann nun Ausgabe-Platinen davon sogar mit dem Attiny13 und den Schieberegistern 74HC595 betreiben. Auch die von Pollin [2] oder Conrad [3] und anderen angebotenen Bausätze für den Betrieb von 8 Relais an der Druckerschnittstelle eines PCs können in ähnlicher Weise mit den Ausgängen der Schieberegister verbunden und angesteuert werden.

Es wird nur noch ein geeignetes Netzgerät mit stabiler Ausgangsspannung benötigt, das 5 V und die Betriebsspannung für die Relais liefert, sowie eine 25-polige Adapterleitung, die man sich nach dem Löten des Bausatzes herstellen kann.
Es lässt sich auch eine eventuell noch im eigenen Hobbyraum oder in dem des Vaters, Onkels oder eines Freundes vorhandene Relais- oder Motor-Platine für den USER-Port des C64, des ZX81 oder ähnlicher „Veteranen" auf „moderne Art und Weise" ansteuern, und zwar schon mit einem Attiny13 und zwei mit diesem verbundenen Schieberegistern.

Hier die beiden Listings in BASCOM-AVR für die ICs 4094 sowie diejenigen für die Bausteine 74HC595 sowie die Dateien für das Beispielprogramm in Visual Basic herunterladen: Tiny13Outputs.zip




Elektronik-Labor  Labortagebuch  ELO