74HC573 als Eingangserweiterung

OP #5552807
Lesenswert?

Hallo zusammen,

Ich würde gerne mit dem 74HC573 die "Eingänge" meines Atmel 2560 
erweitern.
Anbei der Schaltplan.
LE ("C") liegt dauerhaft auf 5V.  Somit werden die eingänge direkt 
übernommen.
OE ("OC") wird nach und nach umgeschaltet, so das immer nur ein Baustein 
die Werte weiter gibt und der Rest bleibt hochohmig.

Wird das so funktionieren?
Angehängte Dateien:
#5552884
Lesenswert?

A. R. schrieb:
> LE ("C") liegt dauerhaft auf 5V.  Somit werden die eingänge direkt
> übernommen.

Hi,
dachte ich vor dem Experiment  auch.
Aber:
Der LE-Impuls sollte so kurz wie unbedingt nötig,
dagegen die Zwischenspeicherung so lang wie möglich sein.
Wozu ULN-Treiber, besser CD 4010, dann gibts die Pegelwandlerfunktion 
gratis.
Sind zwar nur 6 pro Chip, also entsprechend mehr ICs spendieren.
Wie schaltest Du die nicht selektierten Zwischenspeicher auf Tristate?
Sonst funktioniert das nicht.
Zitat:
"...OE
 does not affect the internal operations of the latches. Old data can be 
retained or new data can be entered
while the outputs are in the high-impedance state.
To ensure the high-impedance state during power up or power down, OE
 should be tied to VCC through a pullup
resistor; the minimum value of the resistor is determined by the 
current-sinking capability of the driver..."
Zitat aus Dabla.

Die Aufbereitung der Impulse erfolgt durch Monoflops CD4098. Sind dann 
"nur" 250 µs lang. Das reicht.


ciao
gustav
Angehängte Dateien:
#5552896
Lesenswert?

M.A. S. schrieb:
> A. R. schrieb:
>> ULN ist dafür, da ich mit 24V Signalen ankomme als eingangssignal.

OK.
Im Prinzip ging es mir darum, die Zwischenspeicherfunktion zu 
"synchronisieren" mit dem Auslese-Zyklus. Bei meinem Experiment 
wechselte die Eingangsinformation ständig, deswegen die LE so kurz wie 
irgend möglich. Was in der Zwischenzeit passiert, fällt dann unter den 
Tisch. Die Anzeige zappelt dann auch nicht so.
Also, zwei Dinge:
Einmal Latch Enable (Zwischenspeicherfunktion)
und dann Output Enable (Signal auf Bus legen oder "hochohmig" werden)
(Dann dafür sorgen, dass es keine Datenkollision gibt, für den Fall, 
dass evtl. mehrere OEs durchschalten. Diese OE-Impulse müssen dann auch 
aufbereitet bzw. jeweils mit einer Latenz zueinander "verriegelt" 
werden.
Das macht wohl die SW des µP.)

ciao
gustav
Gast #5553233
Lesenswert?

Den C-Eingang fest auf +5V bringt nichts. Intern sind im 573 D-FF. Also 
man muß mit einem kurzen Impuls die Daten übernehmen. Wenn ich mich 
recht entsinne werden mit der LH-Flanke die Daten in die Latches 
übernommen und mit der HL-Flanke an die Ausgänge durchgeschalten. 
Anschließend kann man mit OE=L die Daten für jedes Register abfragen. 
Die Eingänge OE sollten unbedingt auf definierten Potential liegen, da 
sie sonst floaten (wurde ja schon in einem anderen Zusammenhang 
erläutert).
OP #5553235
Lesenswert?

karadur schrieb:
> 74573 LE=1 D-In => Q-Out
> LE = 0  Zustand gespeichert.
>
> OE macht Tri-State.
> passt.

Dann habe ich es ja im Prinzip korrekt.
Also ist kein Impuls an LE notwendig?

Der ULN ist klar generell von der Leistung überdimensioniert, aber bei 
meinem Layout Platz technisch eine gute Wahl als smd.

Mit uart gäbe es zwei Probleme, das erste wären die nicht so perfekten 
Kenntnisse in der programmierung  von solchen Bausteinen sowie das ich 
auch noch 48 eingänge realisieren möchte.
Gast #5553238
Lesenswert?

Ich würde auch Schieberegister verwenden, diese allerdings per Software 
mit Bit-Banging abfragen. Dabei kann man mühelos auf ziemlich hohe 
Übertragungsraten kommen - auf jeden Fall wesentlich mehr als per 
USART+Interrupt.
OP #5553249
Lesenswert?

Ok,
habe gerade das Beispiel hier auf der Seite gesehen dazu:
"AVR-Tutorial: Schieberegister"

Im prinzip könnnte ich das Kaskadieren bis zu beliebig vielen Eingängen.

Quellcode wäre dann der unter Ansteuerung Software? Müsste ich mich ma 
mit auseinander setzten, würde dann ggfls. noch etwas Platz auf der 
Platine schaffen, da nicht soviele Leitungen vom Conttroller benötigt 
würden.
OP #5553323
Lesenswert?

Das habe ich gerade auch gelesen in einem älteren Thread.
Der 573 lädt dauerhaft Eingang in Ausgang (bei entsprechender 
beschaltung) und der 574 nur auf Flanke.

Demnach dürfte die Schaltung so funktionieren, wenn an den uln ein Pulli 
up wäre.
#5553580
Lesenswert?

Stefanus F. schrieb:
> Ich würde auch Schieberegister verwenden, diese allerdings per Software
> mit Bit-Banging abfragen. Dabei kann man mühelos auf ziemlich hohe
> Übertragungsraten kommen - auf jeden Fall wesentlich mehr als per
> USART+Interrupt.

Das möchte ich mal sehen, wie Du mit Bit-Banging schneller als F_CPU/2 
sein willst.
Niemand zwingt Dich, die UART mit Interrupts zu benutzen. In der Tat 
dürfte der Interruptoverhead in C etwas kosten, aber langsamer als 
Bit-Banging ist es auch dann nicht.


A. R. schrieb:
> Mit uart gäbe es zwei Probleme, das erste wären die nicht so perfekten
> Kenntnisse in der programmierung  von solchen Bausteinen

Ach komm, das Kapitel "USART in SPI Mode" ist fix gelesen und enthält 
auch Beispielcode.

A. R. schrieb:
> sowie das ich
> auch noch 48 eingänge realisieren möchte.

6 Stück 74HC165 zu kaskadieren ist kein Problem.
Ab 100 Stück (= 800 Eingänge) würde ich vielleicht noch Treiber 
zwischenschalten und nicht die vollen 8MHz Baudrate nehmen.
Gast #5553823
Lesenswert?

Peter D. schrieb:
> Ich habs nicht probiert, aber <32 Zyklen je Interrupt klingt nicht
> unmöglich. Zumindest in Assembler ist es bequem zu schaffen.

Ja, ich denke, es ist machbar, wenn man sich wirklich bemüht.

> Selbst F_CPU/4 ist immer noch deutlich schneller als Bit-Banging.

Ich wollte nicht ausdrücken, dass Bitbanging schneller sei. Es ging mir 
nur darum, dass man mit Bitbanging auch ansprechende Geschwindigkeit 
erreichen kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren