Porterweiterung für ATtiny13 mit Portbaustein 82C43  

von Michael Gaus                      
Elektronik-Labor  Projekte   AVR   T13-Contest



Der ATtiny13 bietet 5 digitale Ausgänge. Falls man jedoch einmal mehr Ausgänge benötigen sollte, aber trotzdem den Tiny13 verwenden möchte, bietet es sich an, den Porterweiterungsbaustein 82C43 zu verwenden. Dieser Baustein ist zwar schon etwas betagt, aber immer noch erhältlich, z.B. bei http://www.kessler-electronic.de oder bei Ebay. Der 82C43 bietet 16 I/Os, die in 4 Gruppen mit jeweils 4-bit steuerbar sind (P4 bis P7). Zur Ansteuerung verfügt er über einen 4-Bit Controlport (P2), einen Chipselect-Pin sowie den Prog-Pin.

Bei aktivem Chipselect liest der Baustein mit der fallenden Flanke am Prog-Pin einen 4-bit Befehl über P2 ein. Die höchstwertigen 2 Bits geben dabei den eigentlichen Befehl an (Read, Write, OR, AND) und die niederwertigsten 2 Bits geben den gewünschten Port (P4 bis P7) an. Mit der steigenden Flanke am Prog-Pin liest der Baustein die zu schreibenden 4-bit Daten über P2 ein (bei Write, OR, AND) bzw. gibt die eingelesenen Daten an P2 aus (bei Read).

In dieser Beispielanwendung sollen mit dem 82C43 insgesamt 16 LEDs angesteuert werden. Da der 82C43 nur bei Ausgabe eines LOW-Pegels genügend Strom zur Ansteuerung einer LED liefern kann, sind die LEDs über einen Vorwiderstand gegen Vcc geschaltet. Die Ansteuerung muss somit invertiert erfolgen, d.h. bei einer 0 am Ausgangspin leuchtet die entsprechende LED. Die LEDs 1-16 sind der Reihe nach an P4.0 bis P4.3, P5.0 bis P5.3 usw. angeschlossen. Der Chipselect-Pin des 82C43 ist fest auf GND gelegt, da kein Ausgangspin am Tiny13 mehr frei ist, dies funktioniert jedoch problemlos.



Der Controlport P2 wird an die Pins Pb0-PB3 des Tiny13 angeschlossen. Um bei versehentlichen Read-Befehlen zum 82C43 zu verhindern, dass die dann als Ausgang geschalteten Pins von P2 gegen die Digitalausgänge des AVRs treiben, werden 100 Ohm Serienwiderstände als Schutz verwendet. Der PROG-Pin wird mit PB4 verbunden.

Um einen der 4 Ports des 82C43 zu steuern ist folgende Vorgehensweise erforderlich:
- die 4 AVR-Pins PB3-PB0 setzen auf 01pp, wobei pp dem Bitmuster für den gewünschten Port entspricht (00=P4, 01=P5, 10=P6, 11=P7)
- PB4 auf 0 setzen (LOW-Pegel am PROG-Pin)
- die 4 AVR-Pins PB3-PB0 invertiert auf das gewünschte LED-Muster setzen (0=LED an, 1=LED aus)
- PB4 auf 1 setzen (HIGH-Pegel am PROG-Pin)

Beispiel für Bascom, um P5 auf 0011 zu setzen, d.h. die LEDs an P5.3 und P5.2 leuchten (Pins=0), die LEDs an P5.1 und P5.0 sind aus (Pins=1):

Portb = &B10101  ' Befehl: Write P5
Portb.4 = 0      ' PROG fallende Flanke
Portb = &B00011  ' Daten für P5
Portb.4 = 1      ' PROG steigende Flanke

Im Beispiel wird davon ausgegangen, dass PB4 zuvor auf High-Pegel war.

Als Beispielanwendung ist noch ein Bascom-Code beigefügt, der folgendes LED-Muster erzeugt: Zunächst werden der Reihe nach alle LEDs von 1-16 nacheinander eingeschaltet, bis alle LEDs leuchten. Nach einer kurzen Pause werden alle LEDs wieder ausgeschaltet und das Muster wiederholt sich.


Links:
[1] Datenblatt 82C43: http://www.dhservis.cz/docs_soubory/m82c43.pdf
[2] Bezugsquelle für 82C43: http://www.kessler-electronic.de

Download: Porterweiterung.zip

$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 16
$swstack = 16
$framesize = 16


Dim I As Byte
Dim Port As Byte
Dim Value As Byte
Dim Inv_value As Byte


Declare Sub Write8243(byval Port As Byte , Byval Value As Byte) 'declare the SUB program


Portb = &B10000
Ddrb = &B11111
Waitms 100

Do

Call Write8243(4 , &HF)
Call Write8243(5 , &HF)
Call Write8243(6 , &HF)
Call Write8243(7 , &HF)
Waitms 500

For Port = 4 To 7

Value = 0

For I = 1 To 4
Shift Value , Left , 1
Value = Value Or 1
Inv_value = Not Value
Call Write8243(port , Inv_value)
Waitms 100
Next I

Next Port

Waitms 500

Loop

End


Sub write8243(byval Port As Byte , Byval Value As Byte) 'Port = port of 82C43: 4...7

Port = Port And &B00011
Portb = &B10100 Or Port
Portb.4 = 0
Portb = Value And &B01111
Portb.4 = 1

End Sub





Elektronik-Labor  Projekte   AVR   T13-Contest