- Labornetzteil AliExpress         
Ergebnis 1 bis 4 von 4

Thema: Mehrere 74HC595(N) an einem SPI

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    34
    Beiträge
    1.461

    Mehrere 74HC595(N) an einem SPI

    Anzeige

    E-Bike
    HI!

    Dass man einen 74HC595 an einen SPI hängen kann ist mir gerade
    noch mal klar.
    Ich habe aber bei wikipedia oder hier gesehen, dass man
    beliebig viele 74HC595 an einen SPI hängen kann.

    Kann mir dass bitte jemand erklären??
    Wie geht das? (Schaltplan wäre ganz toll!!)

    Braucht man dann für jeden 595er eine eigene ENABLE-Leitung?

    Vielen Dank schonmal,
    Liebe Grüße, Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    09.06.2004
    Ort
    Rhein-Neckar-Raum
    Beiträge
    504
    Zitat Zitat von tobimc
    ...dass man beliebig viele 74HC595 an einen SPI hängen kann
    Hi Tobi,
    das kann man wirklich. Du brauchst immer nur Pin9 mit Pin14 zu verbinden wie auf dem Bild. Alle anderen Eingangssignale parallel schalten!. Der Einfachheit halber habe ich das auf dem Schaltbild weggelassen.

    Du brauchst nicht mehr Anschlüsse am µP zu belegen, gleichgültig ob du nur einen 595er anschließt oder eine größere Anzahl. Bei deiner Software musst du noch beachten, dass du die Daten für das letzte (auf der Zeichnung rechts) IC in der Kette zuerst übergibst. Das IC, das direkt am µP hängt bekommt seine Daten als letztes.

    Ich habe bei meinem Projekt "DATA-B" die gleiche Schaltung verwendet. Dabei habe ich gelernt, dass man die Taktleitungen unbedingt vor Spikes schützen muss, also fernab von Störquellen verlegen und evtl abschirmen. Wenn du nämlich zusätzliche Impulse auf die Taktleitung bekommst (durch Störeinstrahlungen, bzw. "Übersprechen") verschiebt sich alles und der Roboter spielt total verrückt. Hat mich einiges an Zeit und Nerven gekostet, diesen Fehler zu finden.

    Liebe Grüße
    Avatar
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken 74595.gif  

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    34
    Beiträge
    1.461
    Hi avatar!

    Du bist ein Schatz! (Frage: wieso giebt's keinen knutsch-Smilie?)

    Also wenn ich das richtig verstanden habe...

    Muss der MOSI-Ausgang vom Prozzi auf 14 (Ds).
    Der SCK Ausgang " " auf 11(SHcp) oder 12(STcp)? Nur welcher? beide?

    Wofür ist der 3te Ausgang? Wo muss der hin? 13 (OE) Output Enable?
    Wenn ich mit dem Herausschieben der Daten fertig bin setze ich den dann auf high oder low oder?

    Beim nächsten 74HC595 muss dann Ds(14) auf 9(Q7²) vom ersten.
    Wie du geschrieben hast.
    Takt und Enable wird durcheschleift!?! Oder?

    Also folgendes zum Programmablauf:

    Sagen wir ich habe 3 74HC595s angeschlossen also 74HC595 A, B und C
    Ich sende vom Mega16 über ISP Datenpaket 1 bis 3 los.
    Dann geschieht folgendes:

    1 -> C
    2 -> B
    3 -> D

    Stimmt so oder?

    Geht das, wenn ich über SPI drei mal ein Byte losschicke? oder müssen das 3 zusammenhängende Bytes sein?

    Was meinst du mit

    Zitat Zitat von avatar
    Alle anderen Eingangssignale parallel schalten!
    Alle übrigen Eingänge miteinander verbinden?

    Fragen über Fragen.
    Und unser Automower spinnt.

    EGAL

    Vielen Dank soweit;

    TO BE CONTINUED...

    Liebe Grüße, Tobi
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken 74hc595.jpg  
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    09.06.2004
    Ort
    Rhein-Neckar-Raum
    Beiträge
    504
    Zitat Zitat von tobimc
    Beim nächsten 74HC595 muss dann Ds(14) auf 9(Q7²) vom ersten.
    Wenn du mehr als zwei 595er hintereinander schaltest, kommt
    Pin14 vom ersten an einen Ausgang vom Prozessor
    Pin14 vom zweiten an Pin9 vom ersten
    Pin14 vom dritten an Pin9 vom zweiten
    Pin14 vor vierten an Pin9 vom dritten
    Pin14 vom fünften an Pin9 vom vierten
    usw.

    Pin11 von allen 595ern werden parallel geschaltet
    und auch mit einem Ausgang vom Prozessor verbunden.

    Pin12 von allen 595ern werden parallel geschaltet
    und auch mit einem weiteren Ausgang vom Prozessor verbunden.

    Damit hast du drei Ausgänge am Prozessor belegt
    Mehr ist eigentlich nicht erforderlich. Welche Ausgänge du nimmst,
    ist eigentlich egal. Die Beschaltung und die Software müssen nur miteinander in Einklang gebracht werden.

    Ich habe es dann so gemacht, dass ich Pin13 von
    allen 595ern an Masse gelegt habe. Damit liegen immer
    alle Ausgänge von allen IC's auf einem definierten Pegel
    (HIGH oder LOW).

    Pin10 von allen 595ern habe ich mit VCC (+5V) verbunden.
    Damit können die IC's zwar nicht mehr resettet werden,
    das ist auch nicht notwendig. Ich sende einfach beim einschalten
    des Systems ein Datenpaket um alle Ausgänge zu
    initialisieren.

    Zitat Zitat von tobimc
    Ich sende vom Mega16 über ISP Datenpaket 1 bis 3 los.
    Nein. Du schickst nur ein Datenpaket für alles. Die Bits
    für den letzten Chip in der Kette müssen am Anfang des
    Datenpaketes stehen. Du kannst es dir so vorstellen, als wenn
    du Perlen auf einen Draht auffädelst. Dann schiebst du mit jeder
    neuen Perle (Bit) die zuvor aufgefädelten weiter nach hinten.
    Die Perle, die ganz hinten hin soll, musst du zuerst einfädeln.
    Die Kette aus mehreren 595ern verhält sich wie ein einziges, langes
    Schieberegister.

    Ich verwende in meinem Projekt einen ganz anderen Prozessor,
    und zusätzlich FPGA's. Deshab nützt es dir nichts, wenn
    ich dir meine komplette Schaltung und meine Software schicke.

    LG

Berechtigungen

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

12V Akku bauen