Forum: Mikrocontroller und Digitale Elektronik 74HC165 SPI kompatible Schaltung


von Der D. (derdaniel)


Angehängte Dateien:

Lesenswert?

Servus,

ich möchte an einem SPI unter anderem 74HC165er betreiben.
Um erstens den Pinverbrauch am ATmega zu senken würde ich gerne das 
parallele Laden mit dem ChipSelect verbinden und zweitens den Ausgang 
TriState schalten wenn CS inaktiv ist.

Die im Anhang abgebildete Schaltung ist mir dazu eingefallen.
Folgende Fragen habe ich nun:
Laut Datenblatt ist der PL nicht flankengesteruert, das EAGLE Symbol 
aber schon, was ist nun Richtig.

Und ist die schaltung so funktionsfähig?

Habe mit dem 165er leider noch nicht so viel erfahrung und wäre dankbar 
wenn die alten Hasen da mal n blick drauf werfen könnten.


--Daniel


PS: ich würde als versorgung gerne 3,3V nehmen, machen die MOSFETs das 
mit?

von Falk B. (falk)


Lesenswert?

@  Daniel Steffen (derdaniel)

>Laut Datenblatt ist der PL nicht flankengesteruert,

Das ist auch real so.

>das EAGLE Symbol
>aber schon,

Fehler.

>Und ist die schaltung so funktionsfähig?

Jain. Lass aber den Murks mit dem selbstgestricken Tristate. Nimm einen 
74HC125. Den kannst du auch als Inverter für CS/PL nutzen.

>PS: ich würde als versorgung gerne 3,3V nehmen, machen die MOSFETs das
>mit?

Wenn man die richtigen nutzt. Es muss ein Logic Level Mosfet, sein, der 
im Datenblatt explizit für 3,3V Steuerspannung (oder weniger) 
spezifisiert ist, Siehe MOSFET-Übersicht

MfG
Falk

von Der D. (derdaniel)


Lesenswert?

Ups, da bin ich wohl verrutscht mit dem PL und der Flankensteuerung.

Aber wie baue ich aus einem 125er einen invertierer?

von Falk B. (falk)


Lesenswert?

@  Daniel Steffen (derdaniel)

>Aber wie baue ich aus einem 125er einen invertierer?

Das ist eine kleine Knobelaufgabe für den Schööööler.
Kleiner Tip. Tristate-Ausgang nutzen.

MFG
Falk

von Der D. (derdaniel)


Lesenswert?

Also ich komme auf keine andere möglichkeit als wieder n PULL Widerstand 
zu nehmen:

       |\
+3V3 --| >O--|--PL
       |/    |
       O     -
       |    | | 100k
       |    | |
       CS    -
             |
            GND

Aber das ist wieder keine saubere Lösung.


Oder gibts einen 74HC Inverter mit TriState ausgängen? (übersicht 
rauskram) Mit dem könnte man eine Sehr schäne Lösung basteln und gleich 
zwei 165er SPI kompatibel machen.

von Falk B. (falk)


Lesenswert?

@  Daniel Steffen (derdaniel)

>Also ich komme auf keine andere möglichkeit als wieder n PULL Widerstand
>zu nehmen:

Das ist die Lösung.

>Aber das ist wieder keine saubere Lösung.

Aber sicher!

MfG
Falk

von Der D. (derdaniel)


Lesenswert?

Befriedigt mich irgendwie nur so weit das ich auch n eigenbau TriState 
machen könnte.

Um die Idee mit dem invertierenden Treiber nochmal aufzugreifen:
Damit wäre an /QH und CE1 ein Direktes treiben des SPI und /PL möglich 
(ohne sonstige beschaltung) nur bräuchte man dafür n 74HC125 mit 
invertierenden Treibern. Gibts das?
Bis jetzt habe ich nur welche gefunden bei denen Output Enable zentral 
geschaltet wird (74HC240), was bisal blöd is.

von Artabanos (Gast)


Lesenswert?

Eventuell hilft Dir der hier weiter: 74LVC1G99

Im Datenblatt wird auch gezeigt, wie man den unter anderem zum 
invertierenden Treiber mit 3-State Output umfunktionieren kann.

http://www.nxp.com/documents/data_sheet/74LVC1G99.pdf

von MCUA (Gast)


Lesenswert?

>würde ich gerne das parallele Laden mit dem ChipSelect verbinden
geht norm. nicht, weil ChipSelect während ganzer Protokollzeit aktiv 
ist.
evtl mit ner Impuls-schaltung, oder \LD ein-aus über Takte gesteuert...

von Torsten C. (torsten_c) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich hatte gerade das gleiche Problem und fand hier keine Lösung.

Im Artikel Porterweiterung mit SPI ist "/SS" (Chip-Select) direkt 
mit "/PL" (= PIN1 = /LD) verbunden.

Das geht aber nicht, wie MCUA schrieb:
> geht norm. nicht, weil ChipSelect während ganzer Protokollzeit aktiv
> ist.
> evtl mit ner Impuls-schaltung, oder \LD ein-aus über Takte gesteuert...

Das ist irreführend; soll ich das im Wiki mal korrigieren?

In der Anlage ist der Ausschnitt, aus dem Artikel
Beitrag "Re: USB Koppelfeld für Festplatten"
…, dort ist zu sehen, wie ich das Problem gelöst habe.

Hope that helps ...

von spess53 (Gast)


Lesenswert?

Hi

>Das ist irreführend; soll ich das im Wiki mal korrigieren?

Warum? Bei AVRs ist, im SPI-Master-Betrieb, das SS-Pin frei 
programmierbar. D.h. da wird nichts 'automatisch' L oder H.

MfG Spess

von Peter D. (peda)


Lesenswert?

Der HC165 braucht kein Chip-Select, nur ein Parallel-Load, was vor dem 
Schieben kurz low gepulst wird.

Will man noch andere SPI-ICs mit dem HC165 zusammen auf MISO schalten, 
legt man einfach einen 4,7k in Reihe.
Ist kein anderer SPI-Slave selektiert, dann wird der HC165 eingelesen. 
Ansonsten überstimmt der selektierte Slave den HC165.


Peter

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Peter Dannegger schrieb:
> Der HC165 braucht kein Chip-Select, nur ein Parallel-Load, was vor dem
> Schieben kurz low gepulst wird.

Genau darum geht es (ganz unten im Bild) ^^. Danke.

> Will man noch andere SPI-ICs mit dem HC165 zusammen auf MISO schalten,
> legt man einfach einen 4,7k in Reihe.

Du redest wieder über den seriellen Ausgang! Und wenn man einen '1G125 
über hat, kann man auch den nehmen. Das steht schon zig mal im Forum.

Will man noch andere SPI-ICs in eine Gänseblümchenkette bauen, brauchen 
die anderen Slaves in der Regel ein "echtes SS". Daher nur der Hinweis, 
wie man "Parallel-Load" aus diesem dann eh vorhandenen Signal ableiten 
könnte.

spess53 schrieb:
> Warum? … D.h. da wird nichts 'automatisch' L oder H.

Es ist ja auch nicht falsch. Irreführend ist es, weil das Signal als 
"SS" bezeichnet wird, und nicht z.B. als "PL" wir hier:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Schaltung

Bei Verwendung der Bezeichnungen "SPI" und "SS" könnte man annehmen, das 
Protokoll so funktioniert so wie hier beschrieben:
http://de.wikipedia.org/wiki/Serial_Peripheral_Interface#Protokollablauf_und_Einstellm.C3.B6glichkeiten

Ich wollte nur helfen, damit der TO eine Lösung in seinem Thread hat und 
damit andere nicht in die Irre geleitet werden, aber das kann auch gern 
ein anderer machen.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

MCUA schrieb:
>>würde ich gerne das parallele Laden mit dem ChipSelect verbinden
> geht norm. nicht, weil ChipSelect während ganzer Protokollzeit aktiv
> ist.
> evtl mit ner Impuls-schaltung, oder \LD ein-aus über Takte gesteuert...

Wieso Impuls-schaltung oder über Takte steuern?

Kann man nicht einfach ein invertiertes SlaveSelect (ChipSelect ^^) mit 
PIN 1 (\PL == /LD) verbinden? Ich denke, das ist die einfachste Antwort 
auf die Frage des TO. Einzelne Inverter gib's in der 1G...-Serie.

von Peter D. (peda)


Lesenswert?

Wem die Lösung mit Widerstand nicht gefällt, es gibt doch auch high 
active Tristate-Gatter, z.B. MC74VHC1GT126DF1G. Und schon kann man /PL 
und CS zusammen auf einen IO-Pin legen.


Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.