PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrere 74HC595(N) an einem SPI



tobimc
23.07.2004, 17:54
HI!

Dass man einen 74HC595 an einen SPI hängen kann ist mir gerade
noch mal klar. :-k ;)
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

avatar
23.07.2004, 22:53
...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

tobimc
24.07.2004, 10:23
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



Alle anderen Eingangssignale parallel schalten!


Alle übrigen Eingänge miteinander verbinden?

Fragen über Fragen.
Und unser Automower spinnt. :-k

EGAL

Vielen Dank soweit;

TO BE CONTINUED...

Liebe Grüße, Tobi

avatar
24.07.2004, 11:14
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.


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 O:)