-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Ramansteuerung mit Latch und direkt - Richtig?

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2005
    Ort
    Kaiserslautern
    Beiträge
    794

    Ramansteuerung mit Latch und direkt - Richtig?

    Anzeige

    Hi,

    ich möchte ein 32kB-SRAM (Reichelt, Best-Nr: 62256-80) ansteuern.

    Dafür brauche ich 8 I/O-Leitungen für die Daten (schreiben und lesen, also bidirektional) und 14 Adress-Leitungen (nur zum Ram).

    Ich möchte zur Ansteuerung nur 8-Daten-Leitungen + Steuerleitungen benutzen. Die Idee: Das Ram wird per Latch (74x573) addressiert, die IO/Datenleitungen liegen auf dem selben Port.

    Meine Frage nun:
    Wenn ich eine Adresse einstellen möchte, das Ram gleichzeitig Datenausgibt, kann es ja zu einem Kurzschluss kommen. Wie verhindere ich dies? Sollte man dafür Schutzwiderstände einbauen, oder per Steuerpins (OutputEnable?) dies vermeiden (oder beides? )

    Hier noch der Schaltplan der Ramansteuerung A0-7 sind die Pins am µC (AVR, 5V).


    Gruß, CowZ

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.979
    Hallo CowZ!

    Dein Schaltplan ist noch nicht vollständig.
    Normaleweise sind die Signale an Pins von Latchen und RAM wie folgt:

    /OC und /CS permanent L
    /WE und /OE H

    Ich würde es so realiesieren:

    1. Portpins auf Ausgänge setzen.
    2. Hbyte von Adresse in den unteren Latch mit steigender Flanke an C schreiben.
    3. LByte von Adresse genauso in den oberen Latch schreiben.
    4. Port auf Eingänge setzen und /OE (Output Enable) vom RAM auf L setzen.
    5. Byte von adressierter Speicherstelle des RAMs einlesen.

    Beim RAM Beschreiben geht es genauso, (1-3) nur die Portpins bleiben als Ausgänge und /WR anstatt /OE wird auf L gesetzt.

    Insgesamt brauchst Du also folgende Pins vom uC:

    8 für RAM Adress/Data ausgeben b.z.w. einlesen
    2 für Latchen zu beschreiben (C)
    1 für RAM zu lesen (/OE)
    1 für RAM zu schreiben (/WR)

    Solange /OE von RAM H ist, sind die RAM Ausgänge in hochohmigen Zustand und es kommt zum keinem Konflikt bei beschreiben den Latchen.

    Alles klar ?

    MfG

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2005
    Ort
    Kaiserslautern
    Beiträge
    794
    Hi,

    genau so hatte ich das vor

    (Das mit dem Schaltplan wusste ich und ist mittlerweile auch schon weiter entwickelt )

    Ok, also rein softwaretechnisch schützen Gibt's eine Möglichkeit sich da weiter zu schützen? Was passiert zb. wenn das "Port auf Eingang setzen" von meiner Software vergessen wird?

    Gruß, CowZ

  4. #4
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.979
    Dann kannst Du einfach die adressierte Speicherstelle nicht einlesen.

    Es kann nur von Dir während Schreiben des Programms vergessen werden.

    Keine Angst, da wenn man sich vor allen möglichen software Fehler schützen wollte, würde die eigentliche Hardware in der Schutzhardware nicht mehr zu finden sein.

    Im Ernsten : mir ist noch nicht passiert, dass wegen software Fehler die Hardware beschädigt wurde. Das kann nur bei Leistungssachen passieren.

    Übrigens das höchste Adressbit vom RAM (A15) kannst Du auch mit dem Latch verbinden und zum Umschalten den Helften nutzen.

    MfG

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    Der letzte Satz geht wohl falscher nicht mehr. Ich habe schon diverse TTL-Gräber als wortwörtliche solche vorgefunden, gerade weil die Entwickler an einer entscheidenden Stelle eine Verriegelung vergessen haben oder einen Demultiplexer sparen wollten. Dann noch eine ungeplante Aktion der Software oder ganz schlicht EPROM-Alzheimer dazu und dann geht die Sucherei los. In einem Effektgerät habe ich vor zehn Jahren schon um die 20 TTLs herausschmeissen müssen, weil durch geröstete Ausgänge von Bsutreibern unklare Zustände auf den Datenleitungen herrschten.

    Zur Sache: in herkömmlichen Prozessorsystemen gibt es für sowas Read- und Write-Leitungen. Diese teilen der Peripherie mit, was der Prozessor nun tut und der Hardwareentwickler tut gut daran, die Adressdekoderschaltungen in der Form mit diesen Signalen zu verknüpfen, dass gleichzeitige Schreibzugriffe auf den Bus verhindert werden. Wo das nicht möglich ist, zB bei Einsatz eines Controllers, der nicht mit dediziertem Daten-, Adress- und Steuerbus betrieben wird, würde ich tatsächlich Widerstände in Reihe zu den RAM-Ausgängen vorschlagen. Diese aber wirklich NUR zum Schutz, die Steuerung des OE-Eingangs bleibt trotzdem Pflicht.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2005
    Ort
    Kaiserslautern
    Beiträge
    794
    Hi,

    ok Dann bleibt nur noch die Frage nach der Größe der Widerstände. Diese sollte ja ansich ziemlich unkritisch sein. tun's 10k?

    Gruß,
    CowZ

  7. #7
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.979
    Die Frage ist für mich schwer zu beantworten, da ich sowas noch nie benutzt habe.

    Das ist von Ausgangs- und Eingangswiderständen der damit verbundenen Bausteinen abhängig. Bei CMOS sind sie wirklich unkritisch und 10k sollte gut sein, aber bei TTL muss man beim standard mit 4k, H und S 2,8k, L 40k, LS 18k internen pull-ups rechnen, die dann für L am Ausgang ein Spannungsteiler mit dem seriellem Widerstand bilden und 10k sicher zu viel ist.

    Sie müssen dann entsprechend gewählt werden, dass im schlimsten Fall beim L auf dem Ausgang (max. 0,4V) auf dem Eingang auch L (max. 0,8V) wird.

    Weder aus Deiner Beschreibung noch aus dem Schaltplan kann man die Logikfamilien der Bausteine erkennen.

    MfG

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    @shaun
    Widerstände zum Schutz gegen Bus-Kollisionen höre ich hier das erste mal.
    Read- und Write-Ausgang des µC mit einem Pull-Up zu versehen, ist allerdings Pflicht, damit nicht ausgerechnet während Reset der Bus evtl. zusammen bricht. Den 8-Bit-Port nur während dem 'Adresse-latchen' und 'Daten-schreiben' auf Ausgang zu setzen, ist bei mir selbstverständlich.
    Wenn ich dann nicht in der Lage sein sollte, das Schreib- und Lese-Signal im Programm zum richtigen Zeitpunkt zu setzen, würde ich auf 'Bäcker' umsteigen und jeden Morgen die schwarzen Brötchen in den Mülleimer werfen
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    Ja bei Dir, aber aus der Fragestellung erwuchs bei mir sogleich das Gefühl, dass wir nächste Woche seltsame Spannungen auf den Datenleitungen erklären sollen, wenn dort zwei CMOS-Transistoren um ihr Recht kämpfen. Wenn ich keine saubere Chip-Selektierung realisieren kann, weil ich den uC nicht im Prozessormodus mit dedizierten und nicht durch Software gesteuerten RD/WR-Pins betreiben möchte, würde ich zu einem Schutz mit Widerständen greifen. Kollision ist damit auch nicht gemeint, sondern wirklich der schwarze-Brötchen-Fall, wenn im worst case 8 CMOS-Ausgänge vom RAM gegen derer 8 vom Controller kämpfen, sehe ich durchaus die Gefahr von Kollateralschäden.

    Die Widerlinge dürfen natürlich nicht zu groß sein, da ich sie nicht gegen schlechten Stil, sondern nur zum Katastrophenschutz einsetzen würde, würde ich sagen, sie sollten verhindern, dass der maximale Gesamtstrom der Bauteile überschritten wird, also ein paar zehn Ohm oder so.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2005
    Ort
    Kaiserslautern
    Beiträge
    794
    Hi,

    ich nochmal vielen Dank für die ganzen Beiträge

    Ja, die Widerstände sollen nur die Rauchzeichen verhindern.
    Werd jetzt einfach 470 Ohm (-> 10mA bei 5V) nehmen, oder ist das zuviel?

    edit: seh ich das in den Datenblättern richtig, dass ich die Latchausgänge mit jeweils 6mA belasten darf (also insgesamt 48mA)? (Nicht fürs Ram, aber für was anderes wichtig )

    Gruß, CowZ

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •