Forum: Mikrocontroller und Digitale Elektronik 24 Bit parallel ausgeben / IC Auswahl?


von Harry H. (73_haller)


Lesenswert?

Hallo ich habe ein Problem: Mein Prozessor hat Datentabellen gespeichert 
(immer 8 Bits....) ich möchte aber immer nur 24 Bit zusammen ausgeben,

d.h. zum Beispiel:

- Enable IC1 8 Bit übertragen / einschreiben (soll nicht an den 
"Äußeren" 24 bit zu sehen sein) Enable IC2 8 Bit .... und IC3
- jetzt Enable Ausgabe alle 24 Bit ausgeben. Ich denke wenn man '273 als 
8 Bit D Register (Eingeben und SPeichern) und dann '541 zur AUsgabe 
nimmt würde das gehen.

Hat jemand eine Einfachere Idee? Gibt es ein IC der die Ausbage konstant 
läßt und dem ich aber schon am Eingang neue Daten bekannt machen kann?

Vielen Dank schon mal!

von Martin S. (sirnails)


Lesenswert?

Ja, nimm ein "8 bit serial shift register with latch". Unter dem Begriff 
solltest Du fündig werden.

von Harry H. (73_haller)


Lesenswert?

Ja ich glaub ich weiss was Du meinnst, die kann man seriell hinter 
einande bauen und dann würde man auf einer Leitung alle 24 Bit 
reinschieben können und danach das ganze aktivieren ABER Ich hatte was 
vergessen, das soll schnell gehen. 3 x 8 Bit anlegen 3 x Enable 
vielleicht 6 x
und dann 2 Mal ausgeben sind 11 Ausgaben und alles ist durch.
Bei der seriellen Ausgabe muss man (denke ich wenigstens 26 oder mehr 
Ausgaben machen)

von Purzel H. (hacky)


Lesenswert?

Wenn's nicht seriell geschehen soll... hast du 24 parallele 
Datenleitungen ausm Controller ?'Oder zumindest 8 parallele? Um welchen 
Controller geht es denn ?

von Karl H. (kbuchegg)


Lesenswert?

Harry Haller schrieb:
> Ja ich glaub ich weiss was Du meinnst, die kann man seriell hinter
> einande bauen und dann würde man auf einer Leitung alle 24 Bit
> reinschieben können und danach das ganze aktivieren ABER Ich hatte was
> vergessen, das soll schnell gehen. 3 x 8 Bit anlegen 3 x Enable
> vielleicht 6 x
> und dann 2 Mal ausgeben sind 11 Ausgaben und alles ist durch.
> Bei der seriellen Ausgabe muss man (denke ich wenigstens 26 oder mehr
> Ausgaben machen)

Alles schön und gut.
Aber: in welcher Zeit!

Das ist der entscheidende Punkt: In welchen Zeitabständen musst du die 
24 Bit updaten können? Erst dann, wenn man das weiß, kann man 
abschätzen, ob es mit den dazu notwendigen Operationen am µC eng wird 
oder nicht.

: Bearbeitet durch User
von Di P. (drpepper) Benutzerseite


Lesenswert?

Harry Haller schrieb:
> 3 x 8 Bit anlegen 3 x Enable

in der Regel kannst du die hintereinanderhängen, sodass du in den ersten 
Chip alle 24 bit schiebst, und was der nicht aufnehmen kann wird an den 
folgenden weitergegeben (daisychain). Dann reicht auch ein gemeinsamer 
latch-anschluss.

ansonsten könntest du mal die nötige Updaterate verraten...

von Shifter (Gast)


Lesenswert?

Oder drei 8-Bit Shift Register "parallel" mit 3 Datenleitungen und einem 
Takt füttern.

Dann sind es weniger I/O-Operationen, aber Du brauchst mehr Ports. Aber 
8 hast Du offenbar!?

von Harry H. (73_haller)


Lesenswert?

erst mal zum Prozessor R8C13 da hat 3 mal 8 Bit Ports und Takt bis 20 
MHz

Aus der Vergangenheit weiß ich das mechanicht Teile (Motor) gerne sehr 
genau angesteuert werden möchten. Die Grenzfrequenz weiß nich nocht 
nicht, warum sollte ich Sie durch serielles gerödel unnütz senken?
Der RC8/13 kann an einem Port 8 Bit parallel ausgeben (ohne Probleme) 
darum will ich das so nutzen.

Ich wollte doch nur wissen ob es eine Latch (Eingeben und Speichern) und 
Ausgeben bzw. Zustand halten IC gibt was beides kann. Ohne 2 8 Bit ICs 
zu verwenden. Das ist das Entscheidene.

von Stefan (Gast)


Lesenswert?

Es geht um Motoren, da kann von "schnell" nicht die Rede sein. Der 
Mikrocontroller serialisiert die 24 Bits in wenigen Mikrosekunden. 
Motoren reagieren alleine schon aufgrund ihrer Masse mindestens 1000 mal 
träger.

von Stefan (Gast)


Lesenswert?

> Ich wollte doch nur wissen ob es eine Latch (Eingeben und Speichern)
> und Ausgeben bzw. Zustand halten IC gibt was beides kann.

Na klar gibts das. Zum Beispiel das 74HCT595. Es hat einen Takteingang 
für serielle Eingabe, und einen weiteren Takteingang für parallele 
Ausgabe. Die Speicherung findet also zweistufig statt.

von Stefan (Gast)


Lesenswert?

> Die Grenzfrequenz weiß nich nocht nicht, warum sollte ich Sie durch
> serielles gerödel unnütz senken?

Weil es einfach ist und wenige Leitungen erfordert. Frage Dich anders 
herum: Warum soll ich etwas auf eine Geschwindigkeit optimieren, die ich 
nicht brauche?

Warum akzeptierst Du, dass Dein Blueray Player einige Sekunden zum 
Einschalten braucht? Warum bist Du mit einem Auto zufrieden, dass keine 
300km/h fahren kann? Warum fliegst Du nicht mit dem Helikopter zur 
Arbeit, da er ja schneller ist. Warum schmierst Du Dir deine Butterbrote 
selbst?

Man muss nicht alles machen, nur weil es machbar ist.

Anders herum kann es durchaus valide sein, eine Schaltung unnötig 
kompliziert zu machen, wenn das dazu führt, dass anstatt neue "einfache" 
Bauteile auf gut bekannte und bewährte Teile setzen kannst. Nicht immer 
spielen Kosten und Größe eine wichtige Rolle.

von Peter D. (peda)


Lesenswert?

Harry Haller schrieb:
> Die Grenzfrequenz weiß nich nocht
> nicht

Dann solltest Du das mal feststellen.
Man ermittelt immer erst die Anforderungen und danach baut man die 
Schaltung entsprechend auf. Nicht umgekehrt!


Harry Haller schrieb:
> ich möchte aber immer nur 24 Bit zusammen ausgeben

Woher kommt diese Anforderung?
Ist in der Praxis zumindest seltsam. Vielleicht mal 4 gleichzeitig, aber 
24?

von Karl H. (kbuchegg)


Lesenswert?

Harry Haller schrieb:

> genau angesteuert werden möchten. Die Grenzfrequenz weiß nich nocht
> nicht, warum sollte ich Sie durch serielles gerödel unnütz senken?

Weil das serielle 'Gerödel' in Wirklichkeit kein Problem ist und du mit 
595 und einem mit 20Mhz getaktetem Prozessor locker in Bereiche von 
100kHz und darüber ohne besondere Anstrengung vordringen kannst.

> Der RC8/13 kann an einem Port 8 Bit parallel ausgeben (ohne Probleme)
> darum will ich das so nutzen.

Aber um alle 24 Leitungen gemeinsam und gleichzeitig umzuschalten musst 
du ebenfalls Aufwand treiben.
Aus Sicht eines µC stellt sich damit die Alternative
* Aufwand UND 12 (8+3+1) Leitungen am µC blockiert
* Aufwand UND lediglich 3 Leitungen am µC blockiert
Die beiden Alternativen unterscheiden sich noch im Zeitverhalten, das in 
der ersten Version ein wenig schneller ist. D.h. man muss sich fragen: 
Ist das eine relevante Größe oder nicht. Wenn es nicht relevant ist, 
dann nehm ich die Version mit den 3 blockierten Leitungen. Denn die hat 
einen weiteren Vorteil. Brauch ich nicht 24 Leitungen sondern irgendwann 
mal deren 32, dann ist das trivial durchzuführen.

: Bearbeitet durch User
von Martin S. (sirnails)


Lesenswert?

Peter Dannegger schrieb:
> Woher kommt diese Anforderung?

Bitte nicht fragen. Würmer sind glitschig und wenn man ihn zu schnell 
aus der Nase ziehen will, rutscht man ab und fängt bei 0 an :)

von Uwe (Gast)


Lesenswert?


von Oliver (Gast)


Lesenswert?

Selbst Würmer kann man aber nur ziehen, wenn welche da sind. In dem Fall 
gibt es aber nicht mal Würmer, sondern nur ein trotziges "ich will aber 
schnell, und zwar sofort" ohne jede Vorstellung, was schnell eigentlich 
ist.

Oliver

von MCUA (Gast)


Lesenswert?

>Ich denke wenn man '273 als
>8 Bit D Register (Eingeben und SPeichern) und dann '541 zur AUsgabe
>nimmt würde das gehen.
(ganz schön seltsame Formulierungen...)
Nö. '541 bringt da nichts, der schaltet die Daten nur durch.
Das kann auch beim '573 oder '574 gemacht werden.
Wenn man tolerieren kann (*), dass sich von den 24 Bits jeweils 8 Bits 
einzeln ändern, reicht es 3x '573 oder '574 zu benutzen.
(*) evtl bei der End-App ein Enable-Signal für die 24 Bits verwenden.

Andere Möglichkeit, wie schon erwähnt, Seriell.

von Harry H. (73_haller)


Lesenswert?

Also zum Umschalten: Mal als Beispiel:
Ich nehme ein 1 aus 8 Dekoder, '138  der macht select von je einem 8 bit 
Latch

8 x select mit 3 Leitungen (+ 1 mal enable) und 8 x Daten und dann habe 
ich 64 Bit eingespeichert und die liegen an dem Speicherausgang an und 
dann -> ein mal Übernahme zum folgenden 8 ICs und schon wandern 64 Bit 
Daten weiter

Also ob 24 oder 64 oder 128 BIt braucht nur vielfaches von 8 als 
Hardware und ab und zu ein Bit für den Dekoder.

von Justus S. (jussa)


Lesenswert?

MCUA schrieb:
> Das kann auch beim '573 oder '574 gemacht werden.

mein ich auch, der 573 hört sich doch an wie gemacht dafür...8 Eingänge, 
8 Ausgänge, 1 Pin zum Latchen der Daten, 1 Pin zum aktivieren der 
Ausgänge

von Martin S. (sirnails)


Lesenswert?

Harry Haller schrieb:
> Ich nehme ein 1 aus 8 Dekoder, '138  der macht select von je einem 8 bit
> Latch

Na das geht doch noch viel viel umständlicher. Ich würde einen Cyclone 
II nehmen.

von Di P. (drpepper) Benutzerseite


Lesenswert?

Pentium III - mindestens!

von Uwe (Gast)


Lesenswert?

> Selbst Würmer kann man aber nur ziehen, wenn welche da sind.
Deshalb ja CPLD, da kann er sich dann später irgendwas ausdenken. Das 
passt schon!

von Martin S. (sirnails)


Lesenswert?


von Blackbird (Gast)


Lesenswert?

> Ich nehme ein 1 aus 8 Dekoder, '138  der macht select von je einem 8 bit
> Latch

Naja, für 24bit (3 x 8bit-Latch) braucht man auch nur 3 Leitungen zum 
selektieren. Da kann man den '138 weglassen, bringt nur ein unnötiges 
Delay.
Soll ja "schnell" sein.

Blackbird

von MCUA (Gast)


Lesenswert?

>Naja, für 24bit (3 x 8bit-Latch) braucht man auch nur 3 Leitungen zum
>selektieren. Da kann man den '138 weglassen, bringt nur ein unnötiges
>Delay.
'138 ist doch gut, hat dann mehr Möglicheiten (falls ers benutzten 
kann).
Das zus. Delay wird im konkr Fall nicht ins Gewicht fallen.

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.