C-Control Pro mit 48 I/O      

von Hermann Nieder            
            
Elektronik-Labor  Projekte  AVR 

 

Wie wäre es, wenn Sie für Ihren Mikrocontroller  auf dem C-Control-PRO-Mega32-Experimentierboard für bestimmte Anwendungen zusätzliche Portleitungen zur Verfügung hätten? Dies ist möglich, wenn  man z. B. einen oder zwei funktionsfähige Portbausteine 8255 in der Bastelkiste liegen hat, die ohnehin einer sinnvollen Verwendung zugeführt werden sollten.


 
Die C-Control Pro-Unit wird nach dem abgebildeten Plan mit einem bzw. zwei der oben erwähnten Portbausteine verbunden. Dabei sind die Datenleitungen, die Leitung /WR(Schreiben), /RD(Lesen) , A0(Adresse 0), A1 (Adresse 1) sowie Masse(GND) gemeinsam, während die Leitung /CS mit dem ersten 8255 direkt und mit dem zweiten über eine Inverterstufe verbunden ist. Dies ist notwendig, da immer nur jeweils einer der Portbausteine vom Mikrocontroller angesteuert werden kann. Beide 8255 haben eine eigene Spannungsversorgung.

Die Leuchtdioden einschließlich ihrer Vorwiderstände und die Pull-up-Widerstände an einem Teil der Portpins fehlen der Übersichtlichkeit wegen im oben abgebildeten Plan.

Ein 8255 besitzt vier Register, die unter den Adressen 0(Port A), 1(Port B), 2 (Port C) sowie 3(Steuerregister) angesprochen werden.

Da bis zu zwei Portbausteine an die C_Contro PRO-Unit angeschlossen werden sollen, dient die /CS-Leitung  als „dritte“ Adressleitung. Legt der Mikrocontroller /CS 0 auf 0, ist Portbaustein 1 mit ihm verbunden, während bei /CS = 1 der zweite 8255 von ihm angesteuert werden kann. Sein /CS-Eingang  ist mit dem Mikrocontroller über einen Inverter verbunden.

Aus den Datenblättern, die man im Internet herunterladen kann, ist zu entnehmen, dass  durch die Programmierung des Steuerregisters festgelegt wird, welcher Port Ausgang, welcher Eingang usw. sein soll. Dort kann man auch nachlesen, dass es je nach Anwendung drei Betriebsarten für den Portbaustein gibt. Hier in diesem Projekt wird für beide die Betriebsart 0 verwendet.

 
Die C-Control PRO-Unit kann für diese Anwendung z. B.  in  Compact-C programmiert werden. 

Dies sind  Auszüge aus dem Programmlisting, das ich entworfen habe :

#define RD 16   // RD (PortC.0), Portnummer bei Mega32
#define WR 17
#define A0 18
#define A1 19
#define CS 20    

/ /Variablen
int Dat_ea; 
int Dat_s;
int Dat_e;
int Dat_ad;

...

void main(void)
{
// RD, WR, A0, A1 und CS sind Ausgänge

Port_DataDir(1,255);  // Alle Pins von Port B auf Ausgang
Port_DataDirBit(RD,1); // Port C.0 =1
Port_DataDirBit(WR,1);
Port_DataDirBit(A0,1);
Port_DataDirBit(A1,1);
Port_DataDirBit(CS,1);

// Anfangszustand
Port_WriteBit(R,1);
Port_WriteBit(WR,1);
Port_WriteBit(CS,1);
Port_WriteBit(A0,1);
Port_WriteBit(A1,1);

 // Serielle Schnittstelle konfigurieren
Serial_Init(0,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD9600);

 while(1)
{
//Endlosschleife
{

// Wird zuerst vom angeschlossenen PC eine 1 gesendet, soll an einen Portbaustein //geschrieben werden.
Dat_ea=Serial_Read(0);
if(Dat_ea==1)

{
Dat_aus();
}
// Wird eine 2 empfangen, soll von einem Portbaustein gelesen werden.
if(Dat_ea==2)
{
Dat_ein();
}
}
}
}

// Datenausgabe an einem Portbaustein
// zuerst nach Ad_wahl verzweigen,
// um die Adresse festzulegen
// Adresse 0..3: Portbaustein 1, Adresse 4..7:  Portbaustein 2

void Dat_aus(void)
{
Dat_ad=Serial_Read(0);

Ad_wahl();
Dat_e=Serial_Read(0);
//Byte an Port B ausgeben.
Port_Write(1,Dat_e);
Port_WriteBit(WR,0);
AbsDelay(1);
Port_WriteBit(WR,1);
}

Unter Windows lässt sich die C-Control PRO-Unit mit den angeschlossenen Portbausteinen   mit dem, wie ich finde, ausgezeichneten Terminal-Programm von Burkhard Kainka ansteuern, das von  seinen Seiten heruntergeladen werden kann.  Dort wird auch anschaulich  erklärt, wie sich eine COM-Nummer bei Bedarf ändern lässt.

 

Sind z. B. gerade  vom PC nacheinander die Bytes 1, 3 und anschließend 128 gesendet worden, dann sind alle drei Ports des ersten 8255-Bausteins auf Ausgang geschaltet.

Werden nun nacheinander 1, 0 und dann 3 gesendet, werden an Port A desselben  Portbausteins die Bits 0, 1 und 3 gesetzt. Die eingeschalteten roten Leuchtdioden im ersten Bild verdeutlichen dies.  Um die Bits 0 und 1 von Port B zu setzen, sendet man 1, 1 und dann 3.

Aus den Bytes im abgebildeten Screenshot ist zu entnehmen, dass 1 , 7 und 155 gesendet wurde. Damit wurde für den zweiten Portbaustein festgelegt, dass seine drei Ports auf Eingang geschaltet worden sind. Liest man nun durch Senden von 2 und dann einer 4  bzw. 2 und darauf einer 6 die  Ports A und C ein, sendet der Mikrocontroller in beiden Fällen 255 an den PC. Das ist richtig, da im Bild oben alle Portpins über Pull-up-Widerständen mit  + 5V verbunden  sind, und gerade keiner von ihnen gerade mit Masse verbunden ist.

 

Eine andere Möglichkeit der Steuerung unter Windows bietet das von mir entwickelte Programm in Visual Basic 5, von dem ein Screenshot abgebildet ist..


Nach der Wahl der COM-Schnittstelle wird durch Anklicken von OptionButtons festgelegt, welche der Ports der Portbausteine 8255_1 bzw. 8255_2 auf Ausgang oder auf Eingang geschaltet werden soll. Dann wird das zugehörige Steuerwort mit dem jeweiligen Button links an den Mikrocontroller gesendet, und dieser überträgt es an das betreffende Steuerregister.

Die Buttons und Textfelder, die nicht benötigt werden, sind der Übersichtlichkeit ausgeblendet, wie dies durch den Screenshot veranschaulicht wird.

Nun kann man in die entsprechenden Textfelder Werte eintragen. Anschließend  werden jeweils durch Drücken des zugeordneten Buttons die Bytes an Port A, hier z. B. 7, an Port B, hier 3, sowie an Port C0-3, hier z. B. 7, übertragen.

Von Port C4-7 wird 15 eingelesen, wenn gerade alle vier Portpins PortC.4.. PortC.7 z. B. über Pull-up-Widerstände an +5V angeschlossen sind.

Das Programm in Visual Basic 5 benötigt die Funktionsbibliothek RSCOM.DLL  sowie die Datei RSCOM.BAS von Burkhard Kainka, die von seinen Seiten heruntergeladen werden können. Es gibt dort jeweils eine Suchmöglichkeit, mit der man die beiden Dateien leicht finden kann. 

Das kleine Steckboard im Bild mit den Leuchtdioden(Low Current-LEDs mit Widerstandsnetzwerken, die 4k7-Widerstände enthalten)  war in der Entwicklungsphase der Programme für den Mikrocontroller und auch für dasjenige in Visual Basic 5 recht nützlich. 

Programmlisting für Mikrocontroller auf der Platine  des Franzis Lernpakets Mikrocontrollertechnik mit C-Control Pro sowie die Dateien zum Windows-Programm in Visual Basic 5 hier herunterladen.   

 Download: C-Control_P8255_2.zip  und   8255_VB_IF.zip



Elektronik-Labor  Projekte  AVR