www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA128 mit PIO-Baustein 82C55


Autor: Armin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich soll für ein bestehendes Gerät eine Test-/Überwachungshardware
(Systemtest...) samt µC aufbauen. Prinzipiell würde mir die ATMEGA
serie schon dafür gefallen, ich auf einem ATMEGA32 schonmal etwas
gemacht. Allerdings gilt es in diesem Fall 44 Pins des Systems zu
überwachen und das möglichst simultan.

Daher meine Frage zu einem ATMEGA128. Dieser hat ja ein Bussystem
herausgeführt, an dem ich dort mittels eines PIO-Bausteins die Anzahl
der verfübaren PIO Pins erhöhen kann.

Wie funktioniert das dann beim Ansprechen des externen Ports in C? Habe
das noch nie gemacht und würde mal im vorab paar Tips benötigen, damit
ich es besser abschätzen kann, ob es klappen könnte und wie...

Gibt es evtl. bessere Bausteine als 82C55 (zusätzlich 3 Ports a 8Bit)?
Habt Ihr andere Bausteinfamilien benutzt?

Vielen Dank für eure Infos.
Armin

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kommt ganz drauf an, was da wie gemessen werden soll.

z.B. 8x 8Bit-TriState-Buffer mit den Ausgängen parallel an einen Port,
die /OE-leitungen an einen anderen und Du hast 64 Eingänge.
Die Abfragen passieren dann per Software jeweils nacheinander.
Wenn der Status zeitgleich erfasst werden soll, Buffer mit
Eingangs-Latch nehmen und vom MC das Latch verriegeln vor dem Auslesen
der Daten. Das alles hängt davon ab, wie oft und in welcher Art
überwacht werden soll...
Einen 8255 würde ich ohne zwingenden Grund nicht nehmen, der Aufwand
wäre mir zu hoch.

Gruß aus Berlin
Michael

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du könntest den Baustein wie externes RAM ansprechen, also den externen
Adress- und Datenbus des AVR aktivieren und den 8255 per Adressdecoder
anschließen (der Adressdecoder ist nur dann erforderlich, wenn am Bus
noch mehr als der 8255 hängen soll, was sinnvoll erscheint, da sonst
sehr viele Portpins dafür "verballert" werden müssen, um gerade mal
24 "zusätzliche" Portpins zu erhalten.

Der 8255 hat zwar drei 8-Bit-I/O-Ports, aber einer davon ist nur mit
Verrenkungen zu nutzen. Außerdem ist ein 40poliges DIP-Gehäuse auch
schon ein ziemlicher "Fladen".

Oftmals genügt es, einfache Bustreiber (74x244, 74x245, 74x541 ...)
bzw. Latches (74x374, 74x574 ...) zu verwenden, um einen 8-Bit-Eingang
bzw. Ausgang zu erhalten.
Um I/O-Pins am AVR zu sparen, ließe sich so etwas auch mit einem
Schieberegister oder einem I²C-I/O-Baustein realisieren, dann ist
allerdings der erzielbare Datendurchsatz etwas geringer.

Wenn ein solcher externer I/O-Baustein wie externes RAM angeschlossen
wird ("memory mapped I/O"), dann wird so ein Baustein aus C heraus
wie normaler Speicher angesprochen. Wichtig ist, daß die entsprechenden
I/O-Adressen als "volatile" deklariert werden, da sich der Zustand der
Bausteine auch ohne Wissen des Compilers ändern kann; der Compiler darf
hier also keine optimierenden Annahmen treffen.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da rollen sich ja dem Mega128 die Pins hoch, wenn er neben so nem
Uralt-Monster-Chip 8255 sitzen muß.

Nimm einfach ne entsprechende Anzahl 74HC165 am SPI und gut is.

Wenn Dich der hohe Layoutaufwand nicht scheut, kannst Du auch ein paar
74HC541 und nen Dekoder 74HC138 nehmen, dann sind die Inputs direkt im
SRAM gemappt.


Peter

Autor: Armin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
werde wohl zu der Erweiterung via SPI greifen, nur habe ich zum
Beispielschaltplan
http://www.mikrocontroller.net/attachment.php/3085...
eine Frage.

Bei den Ausgängen (HC595) liegt dort OE permanent auf Masse. Das heißt
doch, dass die Ausgänge dort das sofort wiedergeben, was an jeweiligen
internen Latch Outputs anliegt. Also beim shiften "wackeln" meine
Ausgänge, bis ich den Wert komplett aus'm µC hinausgeschoben habe,
richtig?

Als Abhilfe würde doch reichen, einfach OE auf einen µC-Pin legen?
Diesen Pin müsste ich dann, wenn das shiften beendet ist, auf low
ziehen und es wäre immer ein stabiler Zustand, oder?

Danke

Autor: Armin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm, netürlich auf High ziehen, damit die Daten übernommen werden...mein
Fehler, sorry

Autor: Armin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh, nochmal sorry, habs gesehen, hab mich an der Pin-Nr.
verkuckt...alles erledigt/klar

Autor: Dieter Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt doch sicher auch ATMEGAs in 80TQFP Gehäusen, die sollten von
Hause aus genügend I/O Pins haben.

Autor: Thomas O. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Oder vielleicht mehrere 573er parallel als Eingangserweiterungung
schalten den Pin für die Datenübernahme in den Buffer schaltest du
zusammen, so das mit einem kurzen Impuls vom AVR alle 573 gleichzeitig
die anliegenden Werte abspeichern, danach ließt du jeden Baustein
einzeln mit dem gleichen Port aus musst halt nur den richtigen
selektieren.

Das angehänge Beispiel ist etwas abgespeckt da, der Baustein kann was
an den Eingängen anliegt abspeichern (sich trasparant stellen) die
Eingangssignale an die Ausgänge durchschalten und sich hochohmig
schalten so das er keine Belastung für die restliche Beschaltung
darstellt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.