Forum: Mikrocontroller und Digitale Elektronik Fragen zum 8255


von Fabian (Gast)


Lesenswert?

Guten Abend,

zuerst zu meinem Projekt, ich möchte einen PC mit Linux und XAMPP 
(Simuliert einen Webserver) in mein Netzwerk einbinden, so das ich über 
meinen Laptop, Handy oder mein Tablet, mich über LAN / WLAN auf den 
Server zugreife, dort ist eine Webseite auf der ich Lampen, Steckdosen 
und und und schalten kann, dann kommt eine Interfacesteuerung die die 
geänderten Daten über den Parallelport ausgibt, der Parallelport wir an 
einen Mikrocontroller (8051 / AT89S8253) der als Puffer dient und die 
Daten die reinkommen Stackt, bzw wenn der Steuercontroller nicht 
beschäftigt ist die Daten an ihn weitergibt.

Jetzt habe ich das ganze über den PCF8574 machen wollen, der jedoch 
1,20Euro kostet, habe jedoch eine "Spende" von ner Firma bekommen, die 
nen Stapel von den 8255 sonst weggeworfen hätte, und jetz würde ich den 
gerne als Porterweiterung verwenden, ist zwar Pin Verschwendung, was 
aber nicht schlimm ist.


Jetzt geht es zu den Fragen:

So wie ich das Datenblatt jetzt verstanden habe, kann ich einen 
Ausgangsport nur als Ein- oder Ausgang verwenden, kann man das nicht 
irgendwie umgehen, wenn ich jetzt z.B. 6 Pins brauche die als Ausgang 
fungieren sollen, jedoch 1 Pin benötige um den Status abzufragen, also 
als Eingang.

Kann ich mehrere 8255er Parallel schalten, also die Adressbits, den 
Eingang vom Datenbus, die Lese- Schreibfunktionsbits, und dann über das 
CS-bit den 8255er auswählen, dessen Port ich ändern möchte.

Wenn man mehrere Parallel anschließen kann, wie viele sind dann etwa das 
Maximum?


Die Auswahl mache ich über einen (oder mehreren) Dekaden-Zähler(n) und 
einem "Auswahlbit" die über Dioden als eine UND-Verknüpfung verbunden 
sind.



Ich bedanke mich mal bei euch für eure schnellen Antworten =)

Gruß Fabi

von Gucker (Gast)


Lesenswert?

Fabian schrieb:
> Parallel schalten, also die Adressbits, den
> Eingang vom Datenbus, die Lese- Schreibfunktionsbits, und dann über das
> CS-bit den 8255er auswählen

Das ist der Sinn  von CS.
>>> Geht!

von hinz (Gast)


Lesenswert?

Fabian schrieb:
> So wie ich das Datenblatt jetzt verstanden habe, kann ich einen
> Ausgangsport nur als Ein- oder Ausgang verwenden, kann man das nicht
> irgendwie umgehen,

Nein.

von holger (Gast)


Lesenswert?

>Jetzt geht es zu den Fragen:

>So wie ich das Datenblatt jetzt verstanden habe, kann ich einen
>Ausgangsport nur als Ein- oder Ausgang verwenden, kann man das nicht
>irgendwie umgehen,

PORTA und PORTB geht nur im ganzen entweder als Eingänge oder Ausgänge.
PORTC kann man getrennt zur Hälfte auf Eingang/Ausgang schalten.

>Kann ich mehrere 8255er Parallel schalten, also die Adressbits, den
>Eingang vom Datenbus, die Lese- Schreibfunktionsbits, und dann über das
>CS-bit den 8255er auswählen, dessen Port ich ändern möchte.

Ja.

>Wenn man mehrere Parallel anschließen kann, wie viele sind dann etwa das
>Maximum?

Was dein uC an Leitungen treiben kann.

von Fabian (Gast)


Lesenswert?

Okey, danke für die schnellen Antworten, gibt es eventuel eine andere 
Möglichkeit als das über Dioden laufen zulassen, also das ich das 
trotzdem über einen Dekadenzähler laufen lassen ohne die Dioden zu 
verwenden?

Wenn ich einen CS auf High setze, kann ich dann an dem Eingangsport 
werte anlegen und die werden dann am Jeweiligen Port ausgegeben oder 
muss ich eine Flanke geben um das der Wert vom Eingangsport auf den 
Ausgangsport zu übergeben?

von oswlad (Gast)


Lesenswert?

Hallo,
die Frage die sich stellt, wie willst du den 8255 über 8051 ansprechen / 
adressieren? Die 8255 passt mehr in ein Konzept mit Neumann Architektur, 
die 8051 hat die Harward Architektur. Willst du die 8255 ins Adressraum 
von 8051 integrieren oder vollkommen über die IO-Ports von 8051 
ansprechen?

mfG

von zp3ui (Gast)


Lesenswert?

oswlad schrieb:
> Hallo,
> die Frage die sich stellt, wie willst du den 8255 über 8051 ansprechen /
> adressieren? Die 8255 passt mehr in ein Konzept mit Neumann Architektur,
> die 8051 hat die Harward Architektur. Willst du die 8255 ins Adressraum
> von 8051 integrieren oder vollkommen über die IO-Ports von 8051
> ansprechen?
>
> mfG

Das ist doch wohl geistiger Dünnschiss oder?

von Fabian (Gast)


Lesenswert?

Also, an die Erweiterungsports, die vom 8255 weggehen, da kommen 
"Module" dran wie z.B. ne Platine mit 8 SSR zum Steuern von Steckdosen / 
Lampen und der Wert der an einen Port A  B  C des 8255ers wird ja 
gespeichert, das heißt ich kann einmal einen Wert anlegen und dieser 
wird im EEPROM des Steuercontrollers hinterlegt und dann an dem Port des 
8255 hinterlegt.

Angeschlossen wird der 8255 an dem Controller, das heißt 1 Port wird an 
den 8255 Datenbuss gelegt und dann die benötigten Pins des Controller 
auf die Steuer Pins, der CS wird über einen Dekadenzähler angesteuert, 
das heißt der Dekadenzähler mit 10 Ausgängen wird angeschlossen, das D0 
an den Controller geht und dan dem Controller sagt er ist durchgelaufen, 
der Pin 10 geht auf den Reset des Dekadenzählers, dann gibt es noch den 
Clock, der die CS immer weiter schaltet bis zum jeweiligen 8255er, der 
angesprochen werden soll, dann gibt es ein bestätigungs Pin vom 
Controller, der soll sobald der richtige 8255er ausgewählt wurde eine 
Flanke setzen, diese flanke bewirkt, das an dem gewählten 8255er des CS 
seine Flanke bekommt (Dioden Logikschaltung)...


Ich habe schon einen 8255 über nen 8051er angesteuert zum testen und es 
hatte ohne Probleme funktioniert...


Oder habe ich deine Frage jetzt falsch verstanden?

von oswald (Gast)


Lesenswert?

zp3ui schrieb:

>
> Das ist doch wohl geistiger Dünnschiss oder?

...schließlich ist davon abhängig wie man die CS-Funktion realisiert, 
aber wenn es für dich eine Art Dünnschiss ist, dann erkläre es mir du 
detailliert wie du das realisieren würdest?

von MCUA (Gast)


Lesenswert?

>Die 8255 passt mehr in ein Konzept mit Neumann Architektur,
Quatsch, der hängt einfach nur am Datenbus, und fertig.

Ausserdem kann man statt dem 8255 auch einfach (günstige) Latches 
und/oder Bus-Transc. nehmen.

von oswald (Gast)


Lesenswert?

Fabian schrieb:

>
>
> Oder habe ich deine Frage jetzt falsch verstanden?

schon in Ordnung, so kann es auch funktionieren, aber worauf ich gedacht 
habe, sind die Kontrollpins der 8255: /RD, /WR, A0, A1, /CS - die 
könnten auch über IO-Ports von µcontroller angesprochen werden, d.h. du 
steuerst vollkommen über die IO-Pins vom µC, dann könntest du die /CS 
Leitungen von mehreren 8255 auf einzelne IO-Pins anschließen und sie so 
selektieren.
...oder, habe ich jetzt dein Vorhaben falsch verstanden? :-)

von Mike (Gast)


Lesenswert?

Es gibt noch mehr "Modes",

PortA läßt sich als 8-Bit In/Out Bus Port verwenden, gesteuert durch 
Port C Leitungen als Strobe und Ack.

Port A und B lassen sich auch als direktionale Ports verwenden, wiederum 
gesteuert duch Port C Leitungen (wieder Strobes und Acks)

Die Ports lassen sich im Fluge umschalten.

Meine Lieblingsanwendung war immer der Bidirektionale 8-Bit In/Out 
Trennport A, gesteuert durch Leitungen des Port C, und übrigbleibende 
Leitungen auf Port C und B nach Belieben eingestellt auf In oder Out.

Handbuch zum 8255 ist etwas umfangreich, das Original von Intel gefällt 
mir am besten, ist aber etwas "vom Alter" her abgegriffen...

Grüße,
Mike

von MaWin (Gast)


Lesenswert?

Ich hab auch noch einen Stapel von den Dingern. Die Firma hat dir keinen 
Gefallen getan mit dem verschenken.

8255 haben als NMOS-Chips den Nachteil, daß fast kein Strom aus den 
Ausgängen kommt (200uA), sie können auch nur ganz wenig Strom (1.7mA) 
nach Masse ableiten, und auch Intersil's 82C55 sind mit 2.5mA nicht so 
viel besser.

Du tust dir mit den Chips also keinen Gefallen, quasi alles was du 
anschliessen willst, schon simple LEDs, erfordern extrene extra 
Verstärker per Transistor oder zusätzlichem IC.

von Fabian (Gast)


Lesenswert?

@ Oswald
Auf deinen Post komme ich gleich zurück, ich mache gleich eine Skizze um 
es besser erklären zu können, hab bitte einen Moment Geduld...

Mike schrieb:
> Die Ports lassen sich im Fluge umschalten.

Wie meinst du das?

Ich möchte gerne ein Modul erstellen, dort kommt eine Funkfernbedienung 
dran, die Funksteckdosen steuern kann (Hab ich schon eins gebaut) diese 
Fernbedinung hat 4 Gruppen A, B, C und D für jede Gruppe gibt es 3 
Steckdosen, die man Ein- oder Ausschalten kann, ich möchte das, wie 
schon bei meinem erstellten Projekt die Gruppen und Taster über einen 
Dekadenzähler auswählen (der schaltet einen 4066er), ich brauche aber 
auch einen Pin, der als Haltepunkt dient, also das der Controller weiß 
das er wieder am Anfang ist, also habe ich an einem Port Ein- uns 
Ausgangs Informationen, kann ich dann einfach wenn ich den Port als 
Ausgang verwendet habe ihn zum abfragen ändern zu einem Eingang und dann 
das Endebit abfragen???

von Fabian (Gast)


Lesenswert?

MaWin schrieb:
> Die Firma hat dir keinen
> Gefallen getan mit dem verschenken.

Naja, LEDs die ich hab leuchten auch mit 1,7mA also nicht so tragisch, 
es geht mir ja nur um die Kostengünstige Porterweiterung, aber das was 
ich machen möchte funktioniert damit...

von Fabian (Gast)


Angehängte Dateien:

Lesenswert?

Mal das Bild als Beispiel gesehen!!!

Also der Pin O.K. ist auf 5V gesetzt, die Zahlen 1 bis 9 sind die 
Ausgänge vom Dekadenzähler, immer 1 Pin ist auf high gesetzt und die 
anderen sind auf low gesetzt, solange der O.K. Pin auf Masse gesetzt ist 
kann an keinem CS jemals ein high erreicht werden, immer wenn der O.K. 
Pin High gesetzt wird, dann bekommt der CS-pin, "auf" den der 
Dekadenzähler zeigt eine Positive Flanke, somit brauche ich jetzt nur 
noch 3 Pins (O.K. , Zur überprüfung ob es am Anfang ist , Takt für den 
Dekadenzähler)...

Das Bild ist jetzt nur ein Beispiel, also zum erklären, also im 
allgemeinen und nicht nur auf den 8255 bezogen.


Der 8255er Soll nur die Werte Speichern die ihm gegeben wurden und diese 
solange ausgeben bis man sie wieder ändert, mehr soll der 8255er nicht 
machen...

von Fabian (Gast)


Lesenswert?

So wie ich das mit dem Bild gezeigt habe steuere ich z.B. auch die 
Funkfernbedienung, läuft super ohne Probleme....

von spess53 (Gast)


Lesenswert?

Hi

>Das Bild ist jetzt nur ein Beispiel, also zum erklären, also im
>allgemeinen und nicht nur auf den 8255 bezogen.

Dafür wurden schon seit Urzeiten 74xy138 verwendet.

Das Ganze hat schon etwas. So wie einen Mercedes mit Holzvergaser zu 
betreiben.

MfG Spess

von MaWin (Gast)


Lesenswert?

Ich nehme an, 20 Dioden und 10 Widerstände gab's auch geschenkt,
einen CD4028/74HC145/74HC32 jedoch nicht...

von Fabian (Gast)


Lesenswert?

Ja, den kenne ich, der ist schon nicht schlecht, jedoch sind 2 Dioden 
und nen Widerstand billiger wie der =P und Widerstände wie auch Dioden 
habe ich zu genüge und muss dafür kein Geld ausgeben, trotzdem danke ach 
und Dekadenzähler (4017) habe ich auch mal nen ganzen Stapel bekommen 
und muss mir keine kaufen, warum soll ich denn bitte was kaufen, wenns 
kostenlos vorhanden ist grins

von oswald (Gast)


Angehängte Dateien:

Lesenswert?

@Fabian

aber es reicht nicht die IC nur über CS anzusprechen, ganz abgesehen 
davon dass die CS-Leitung aktiv LOW ist. Du musst über die Leitungen A0 
und A1 definieren auf welche Ports (A, B, oder C) du zugreifen willst, 
schreibend (/WR) oder lesend (/RD)und nicht vergessen ganz am Anfang die 
IC zu konfigurieren (MODE 0, 1, oder 2).

von holger (Gast)


Lesenswert?

>warum soll ich denn bitte was kaufen, wenns
>kostenlos vorhanden ist grins

Hör auf zu grinsen und sieh in das Datenblat zum 8255
wie die Signale aussehen müssen damit der arbeitet
wie gewollt. Wenn du das nicht raffst dann lass es sein.

Immer diese Trolle hier:(

von Erich (Gast)


Lesenswert?

>Ich nehme an, 20 Dioden und 10 Widerstände gab's auch geschenkt

Er hat doch nur  9  /CS zu erzeugt !

Da steht bestimmt auch ein höherer Sinn dahinter.
Wahrscheinlich kommt zu den Dioden bald noch 'ne Nonode dazu.
Oder sowas wir triple tristate, wer weiß schon.

von Fabian (Gast)


Lesenswert?

1. Initialisieren
2. Adresse Anlegen an A0 und A1
3. Daten an den Bus anlegen
4. Flanke setzen (CS)
5. Daten werden an dem ausgewählten Port ausgegeben und "latched" also 
bleiben solange an dem Port bis der Port geändert wird

Und zu dem Bild, das war nur ein Beispiel, ich habe wie schon erwähnt, 
das jetzt nur mal für das Verständnis so aufgezeichnet, wer lesen kann 
ist im Vorteil!!!

Dem 8255 ist es Wort wörtlich scheiß egal was am Adresseingang, am 
Datenbus oder an den Lese Schreib Pins anliegt, solange er seine 
benötigte Flanke nicht bekommt, also kann man einige Parallel 
anschließen, solange der CS der angeschlossenen 8255er einzeln 
angesteuert wird...

Achja, oben zu der Liste, man muss ihm halt sagen ob gelesen oder 
geschrieben werden soll, also für die, denen jetz gleich wieder einer 
geht, man man muss ihm sagen ob er die Daten vom Datenbus an einen Port 
geben soll oder ob er die Daten von einem Port an den Datenbus geben 
soll...

von H.Joachim S. (crazyhorse)


Lesenswert?

Hm, gut.
Du weisst also was du willst und wie es geht...
Wie war noch mal die eigentliche Frage??

von Fabian (Gast)


Lesenswert?

Fabian schrieb:
> So wie ich das Datenblatt jetzt verstanden habe, kann ich einen
> Ausgangsport nur als Ein- oder Ausgang verwenden, kann man das nicht
> irgendwie umgehen, wenn ich jetzt z.B. 6 Pins brauche die als Ausgang
> fungieren sollen, jedoch 1 Pin benötige um den Status abzufragen, also
> als Eingang.

Die frage ob man einzelne Pins eines Ports als Ein- und Ausgangs 
verwenden kann oder ob man ihn nur Als ein oder Ausgangs Port verwenden 
kann, die Frage wurde zwar durch das Datenblatt beantwortet, aber

Mike schrieb:
> Die Ports lassen sich im Fluge umschalten.

Dazu habe ich eine Frage geäußert die noch nicht beantwortet wurde...

Wie genau ist das gemeint?


Dann noch diese Frage:

Fabian schrieb:
> Kann ich mehrere 8255er Parallel schalten, also die Adressbits, den
> Eingang vom Datenbus, die Lese- Schreibfunktionsbits, und dann über das
> CS-bit den 8255er auswählen, dessen Port ich ändern möchte.
>
> Wenn man mehrere Parallel anschließen kann, wie viele sind dann etwa das
> Maximum?

Diese Frage wurde aber beantwortet, Danke!

von oswald (Gast)


Lesenswert?

ok, dann vielleicht noch ein letztes Wort wie ich es machen würde: die 
8255 wie einen externen Datenspeicher ansprechen. Für die Selektierung 
mehrerer IC-s würde ich eine 74LS138 verwenden und die Adressleitungen 
A2-A5 zum Select heranziehen.
mfG

von MCUA (Gast)


Lesenswert?

>4. Flanke setzen (CS)

>wörtlich scheiß egal was am Adresseingang, am
>Datenbus oder an den Lese Schreib Pins anliegt, solange er seine
>benötigte Flanke nicht bekommt,

Falsch.
der benötigt Pegel, nicht Flanke.
(CS <> \CS)

>Achja, oben zu der Liste, man muss ihm halt sagen ob gelesen oder
>geschrieben werden soll,
Toll.

von Fabian (Gast)


Lesenswert?

Okey, vielleicht habe ich in meinem letzten Beitrag die Frage ein 
bisschen grob formuliert, man wählt ja aus ob "gelesen" oder 
"geschrieben" wird, bleibt der Wert, der an einem Port ausgegeben wurde 
beim "Lesevorgang" erhalten bleibt, also wenn man an Port A den Wert 
anlegt 10011100 dann will man das Bit XXXXXXX0 abfragen ob es ne 1 
geworden ist, bleiben die X erhalten oder ändern die sich?

von Fabian (Gast)


Lesenswert?

MCUA schrieb:
> Falsch.
> der benötigt Pegel, nicht Flanke.
> (CS <> \CS)

Meinetwegen, jedoch ist das keine Antwort auf meine Frage...

von chick (Gast)


Lesenswert?

Wegen 1,20 machst Du solche Klimmzüge? Ist nicht wahr, oder?

Oder hast Du solch riesige Stückzahlen? Überleg es Dir noch mal.

von Fabian (Gast)


Lesenswert?

Ich bin ein armer Schüler, wenn kein Geld da ist, dann wird es schwer 
etwas zu kaufen, auch wenn es nicht ganz so teuer ist, also tut mir 
Leid, das ich keinen Geld-Scheißer habe, wenn ihr doch so viel Geld 
habt, dann gebt es mir doch, ansonsten beschwert euch nicht darüber das 
es auch Menschen gibt, die gerne etwas machen was ihnen Spaß macht und 
sich auch einer "Herausforderung" entgegenstellen und auch mal den 
umständlichen Weg gehen, weil der leichte doch leider nicht immer 
möglich ist...

Aber echt danke, das wenn man etwas fragt nur angenörgelt wird und und 
und, echt traurig was aus der Menschheit, bzw. aus einigen Menschen 
geworden ist...

Sorry wegen Off-Topic...

von Fabian (Gast)


Lesenswert?

Ach und es sind nicht nur 1,20 Euro, ich brauche 20 Ports, also wären 
das 24 Euro, das ist schon mal mehr...

von holger (Gast)


Lesenswert?

>Aber echt danke, das wenn man etwas fragt nur angenörgelt wird und und
>und, echt traurig was aus der Menschheit, bzw. aus einigen Menschen
>geworden ist.

Man nun piss dir mal nicht ins Hemd.
Anschliessen, ausprobieren. So hat man das
früher gemacht. Das geht auch heute noch.

Leuten die Gürtel und Hosenträger benutzen
kann man sowieso nichts recht machen.

von Peter D. (peda)


Lesenswert?

Fabian schrieb:
> Jetzt habe ich das ganze über den PCF8574 machen wollen, der jedoch
> 1,20Euro kostet

Deshalb nimmt man besser 74HC165 (8 Eingänge) bzw. 74HC595 (8 Ausgänge).
CSD: 0,18€ bzw. 0,20€
Dann gibt es auch keine Beschränkung bezüglich Kaskadierung.
Die PCF8574/A gehen ja nur bis max 16 Stück.


Fabian schrieb:
> habe jedoch eine "Spende" von ner Firma bekommen, die
> nen Stapel von den 8255 sonst weggeworfen hätte

Richtig, die kann man nur noch wegschmeißen, selbst für Bastler taugen 
die nichts.
Und wenn es wirklich 8255 sind, also keine 82C55, dann fressen die 
richtig Strom (200mA).


Peter

von Erich (Gast)


Lesenswert?

>Richtig, die kann man nur noch wegschmeißen

Nanana!
Könnte ja sein daß man mal welche braucht als Ersatzteil für den
   Multitech Microprofessor

http://mycorner.no-ip.org/z80/mpf1/mpf_board.jpg
http://mycorner.no-ip.org/z80/index.html

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.