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
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!
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.
>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.
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?
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
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?
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?
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?
>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.
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? :-)
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
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.
@ 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???
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...
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...
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
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
@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).
>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:(
>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.
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...
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!
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
>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.
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?
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...
>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.
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