Forum: Mikrocontroller und Digitale Elektronik Zwei Schieberegister auf zwei Platinen: Gleicher Takt + Flachbandkabel


von Andreas Hoi (Gast)


Lesenswert?

Hallo uC.net Forum,

seit einiger Zeit spiele ich mit der Idee, eine Platine etwas 
einbaufreundlicher zu gestalten. Es geht um ein kleines, 
batteriebetriebenes Gerät, an dem man über einen Drehcodierschalter eine 
Zahl einstellt, die dann mittels LEDs binär dargestellt wird.
Quasi ein Byte zum Anfassen. Wir verschenken das an Schulen und 
Weiterbildungseinrichtigungen.

Je nachdem, um welche Art Schule es sich handelt, bekommen wir häufiger 
die Nachfrage, ob man das Gehäuse größer machen kann, die Kodierschalter 
anders ausführen kann, die LEDs in unterschiedlichen Farben, etc.

Ist-Zustand: Auf dieser Platine befinden sich zwei Schieberegister. Ein 
74HC165 für die Eingänge und ein 74HC595 für die Ausgänge.
Beide teilen sich das selbe Taktsignal, das auch permanent anliegt.

Soll-Zustand: Ich würde die Platine gerne in zwei kleinere Platinen 
aufteilen und die Platine für die Eingänge mit einem 5-poligen 
Flachbandkabel verbinden. Schätzungsweise wird dieses nie länger als 
15cm werden.


Das Schema sähe dann so aus:
1
 +----+                  +----+
2
 | uC |                  | 74 |
3
 |    |---- (clock)--+-- | HC |
4
 |    |              |   | 595|
5
 |    |              |   |    |
6
 +----+              |   +----+
7
                     |
8
                     |
9
                     ===== (5-Pol Stiftleiste)
10
11
12
                  [15cm Flachbandkabel]
13
14
15
                     ===== (5-Pol Stiftleiste)
16
                     |
17
                     |
18
                     |  +----+
19
                     +--| 74 |
20
                        | HC |
21
                        | 165|
22
                        |    |
23
                        +----+

Im Betrieb wäre das Kabel immer gesteckt - also keine offenen Stecker 
oder Kabelenden.

Auf dem Flachbandkabel lägen außerdem noch: VCC, GND, Load und Data.

Meint ihr, das könnte ein Problem darstellen?

Eigentlich macht es hierbei doch keinen Unterschied, ob es sich um 
Leiterbahnen oder Kabelverbindungen handelt, oder?

von Watt is? (Gast)


Lesenswert?

Ist das ne Trollnummer?
Die Frage kann doch nicht ernst gemeint sein?
Was ist das auch für ne Konstruktion, wenn ich den Controller habe und 
dann noch Schieberegister ein Byte darzustellen?

Oder hängen da so viele LED‘s dran?
Die Antwort ist natürlich auch klar.

von Falk B. (falk)


Lesenswert?

@ Andreas Hoi (Gast)

>Soll-Zustand: Ich würde die Platine gerne in zwei kleinere Platinen
>aufteilen

Wieso 5? Welchen Stecker willst du denn da verwenden?

> und die Platine für die Eingänge mit einem 5-poligen
>Flachbandkabel verbinden. Schätzungsweise wird dieses nie länger als
>15cm werden.

Das kann im Einzelfall auch Probleme machen, wenn man so das Forum liest 
;-)

Tip. Nimm ein normales, 10poliges Flachbandkabel mit Wannensteckern und 
leg jede 2. Leitung aus GND. Dann läuft das SICHER.

Siehe

https://www.mikrocontroller.net/articles/Wellenwiderstand#Leitungsf.C3.BChrung_und_Layout

Beitrag "Re: Skurriles Problem mit BS170 Mosfets"

von Andreas Hoi (Gast)


Lesenswert?

Watt is? schrieb:
> Ist das ne Trollnummer?
> Die Frage kann doch nicht ernst gemeint sein?
> Was ist das auch für ne Konstruktion, wenn ich den Controller habe und
> dann noch Schieberegister ein Byte darzustellen?
>
> Oder hängen da so viele LED‘s dran?
> Die Antwort ist natürlich auch klar.

Ja - ich weiß. Es gibt Leute in diesem Forum, die gern jede Frage ins 
Lächerliche ziehen und Sinn und Zweck einer Schaltung in Frage stellen, 
weil sie auf das eigentliche Problem auch keine Antwort wissen.

Natürlich hätte man das auch ohne Mikrocontroller lösen können. Oder mit 
Mikrocontroller und ohne Schieberegister. Man hätte auch eine 
Dampfmaschine statt einer Batterie für die Stromversorgung nehmen 
können... es ist halt, wie es ist.

Wenn Du mit der Frage überfordert bist oder sie einfach soooo unendlich 
weit unter Deinem Niveau ist, dann lehn Dich doch entspannt zurück und 
mach Dich lustig über meine Unwissenheit. Aber spar Dir die Zeit, hier 
eine Antwort zu schreiben. Das hilft uns beiden am meisten.

@ Falk:
> Wieso 5? Welchen Stecker willst du denn da verwenden?

Ich dachte an einen Micro-Match Stecker. Die Verbindungen machen einen 
soliden Eindruck. Bei Wannensteckern hatte ich - je nach 
Ausführung/Hersteller - schonmal das Problem, dass die sich losrütteln, 
wenn das Gerät viel in Bewegung ist.

Danke für den Link und die Tips bzgl. der GND Leitungen. Ich les mir das 
Durch.

von Alex (Gast)


Lesenswert?

Wenn man sich SPI anschaut würde das funktionieren. Der 74HC165 braucht 
ja nur uum einlesen auf #PL ein L-Signal und der 74HC595 zur Ausgabe nur 
ein kurzes H-Signal an STROBE. STROBE und #PL kannst dur am selben 
Chipselect hängen. Die beiden Takteingänge an SCK. Den Rest mit den 
Datenleitungen machen dann MISO und MOSI.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Andreas Hoi schrieb:
> Meint ihr, das könnte ein Problem darstellen?

Kommt auf die übertragenen Frequenzen an. Deine Schilderung klingt aber 
nicht so, als ob es hier um schnelle Datenübertragung geht, insofern 
wird das funktionieren.
Anspruchsvsoller wird es bei Frequenzen jenseits von ein paar hundert 
kHz; ich wüsste aber nicht, wieso Dein Aufbau die verwenden sollte.


5polige Flachbandkabel sind sehr schlecht konfektionierbar; Du solltest 
Dich nach verfügbaren Steckverbindern richten.

Hier haben schon andere zu 10poligen Flachbandkabel mit entsprechenden 
Steckverbindern geraten; die sind weit verbreitet, einfach zu bekommen 
und günstig.

von HildeK (Gast)


Lesenswert?

Andreas Hoi schrieb:
> Meint ihr, das könnte ein Problem darstellen?

Ja.
Mache eine ordentliche Taktverteilung.

            kurz!       kurz    auch lang
Taktquelle --o-- Buffer1 --- 33R ----------> Senke1 (HC595)
             |
             o-- Buffer2 --- 33R ----------> Senke2 (Stiftleiste etc.)
             |
             o-- Buffer3 -o- 33R ----------> Senke3
             |   auch:    |
            usw.          +- 33R ----------> Senke4

Nach der Quelle ein paar Buffer spendieren, diese maximal kurz anbinden 
und am Ausgang einen oder zwei Serienwiderstände (33R). Dann kann die 
Leitung zur Senke auch mal größer sein. Den Wert des R an die 
Leitungsimpedanz anpassen und zu jeder Leitung auch einen GND legen.

von Joachim B. (jar)


Lesenswert?

HildeK schrieb:
> Ja.
> Mache eine ordentliche Taktverteilung.

ich würde ja an jedem "Modul" einen Takt in (Data in) machen mit 
Terminierung
pullup/pulldown nach Bedarf

und weiter ein Takt out (Data out) mit Treiber, siehe APA102, WS2801, 
WS2812b

Clock in Clock out
Din Dout


Treiber
74HC4050 z.B.

: Bearbeitet durch User
von Andreas Hoi (Gast)


Lesenswert?

Vielen Dank für die Tips.

@Rufus: Wie schnell das Clock-Signal genau ist, kann ich auswendig 
gerade nicht sagen. Müsste ich morgen mal messen. Das wäre allerdings 
ggf. auch noch ein Ansatz... Falls es Probleme geben sollte, einfach mal 
etwas langsamer Lesen/Schreiben/Takten.

OK - das mit den 10-poligen Verbindern hab ich eingesehen. Mehr Auswahl, 
GND zwischen allen Signalleitungen. Werde ich machen.


@ HildeK:
Wow - das finde ich interessant. Auch weil es mehr "System" hat, als 
einen Takt kreuz und quer an mehreren Bauteilen entlang zu führen.

Mit "kurz" meinst Du vermutlich besonders kurze Leiterbahnen auf der 
Platine, oder? Und gleich noch zwei Fragen:
- Was genau ist denn ein "Buffer"?
- Angenommen, ich würde so eine Taktverteilung für 2 Senken aufbauen - 
kann ein uC Pin allein bei so einer Beschaltung dann als Taktquelle 
dienen? Oder schafft der das nicht?

von MaWin (Gast)


Lesenswert?

Andreas Hoi schrieb:
> Meint ihr, das könnte ein Problem darstellen

IDE Festplatten übertragen weit mehr weit länger.

Sorge dafür, dass Plus und Masse und massebezogene Signale immer 
parallel laufen, mit HC-MOS bist du sowieso auf der störsicheren Seite 
und du hast aucb nur die wenig Strom verbrauchenden Taster über Kabel 
abgesetzt, nicht die stromzehrenden LEDs. Abblockkondensator nicht 
vergessen.

Warum man die Funktion allerdings per uC so verschleiern muss, und das 
gerade im Lehrbetrieb, ist mir unklar.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Andreas Hoi schrieb:
> Oder schafft der das nicht?

Doch, der schafft das, sofern die Senken nicht zu niederohmig sind. Das 
aber sind normale Logikbausteine wie Deine Schieberegister nicht.

> Mit "kurz" meinst Du vermutlich besonders kurze Leiterbahnen auf der
> Platine, oder?

"Früher" hat man, dann allerdings mit zusätzlichen Treiberbausteinen, 
Computersysteme mit Steckkarten und Busplatine ("Backplane") gebaut. Die 
Busplatine war eine Platine mit lauter mehr oder weniger 
parallelgeschalteten Steckverbindern und konnte die Breite eines 
kompletten 19"-Racks einnehmen.

Solche Systeme konnten mit mehreren MHz Takt arbeiten.

Auch der PC verwendete mit dem ISA-Bus ein vergleichbares System, da war 
zwar die Gesamtlänge des Busses unter 20 cm lang, dafür konnte der Takt 
aber bis zu 16 MHz oder sogar 20 MHz betragen.

Sowohl bei dem Steckkartencomputer als auch dem PC wurde natürlich etwas 
mehr Aufwand in das Schaltungsdesign gesteckt, aber es wurde noch mit 
normalen 5V-Logikpegeln gearbeitet.

von HildeK (Gast)


Lesenswert?

Andreas Hoi schrieb:
> Mit "kurz" meinst Du vermutlich besonders kurze Leiterbahnen auf der
> Platine, oder?
Exakt. Oder auch elektrisch kurz, d.h. die Signallaufzeit auf dem 
Leitungsstück ist deutlich geringer als die Anstiegszeit des Signals 
selber. Ein, zwei cm bei CMOS-Schaltungen sind kein Problem, aber 0cm 
ist eben der Idealfall :-).

> - Was genau ist denn ein "Buffer"?
z.b. der schon genannte HC4050.  Wie Inverter, aber eben ohne 
Invertierung :-). Wenn du den Takt schon im μC invertieren kannst, dann 
reicht auch ein normaler Inverter - HC04 z.B.
> - Angenommen, ich würde so eine Taktverteilung für 2 Senken aufbauen -
> kann ein uC Pin allein bei so einer Beschaltung dann als Taktquelle
> dienen? Oder schafft der das nicht?
Ja, bei den 15cm wird das gehen mit einem normalen Ausgang.
Ich bin aber mal mit einem speziellen Taktausgang bei einem 68000 
(früher, (TM)) auf die Nase gefallen, der war einfach zu schwach.

von Jens G. (jensig)


Lesenswert?

>Mache eine ordentliche Taktverteilung.

>            kurz!       kurz    auch lang
>Taktquelle --o-- Buffer1 --- 33R ----------> Senke1 (HC595)
>             |
>             o-- Buffer2 --- 33R ----------> Senke2 (Stiftleiste etc.)
>             |
>             o-- Buffer3 -o- 33R ----------> Senke3
>             |   auch:    |
>            usw.          +- 33R ----------> Senke4

Um Gottes Willen ;-) - und das wegen voraussichtlich nur 15cm.
Selbst die olle IDE-Schnittstelle in Computern hat 33MB/s geschafft und 
mehr, ganz ohne Terminierung, und bei einigen 10cm langen 
Flachbandkabeln. Also schon weit im MHz-Bereich.

Wenn man Angst vor Leitungsreflektionen hat, könnte man:
- die Signalleitungen am Ende (also beim zweiten Schieberegister) mit 
dem Wellenwiderstand des Flachbandkabels abschließen (also R parallel 
zum R). Was für einen R so ein Flachbandkabel üblicherweise hat, werden 
hier ja sicherlich einige wissen (am Leitungsanfang (Senderseite) 
braucht man eigentlich grundsätzlich keinen R)
- ICs der langsameren CMOS-Reihe nehmen (also nicht unbeding HC), sofern 
deren geringere Ausgangsstromtragfähigkeit noch für die anderen Zwecke 
(z.B. LED) ausreicht
- oder generell das ganze langsamer takten, so daß sich die Signale 
zwischendurch beruhigen können (wobei das nicht direkt Reflektionen 
vermeidet).
- viel wichtiger als all diese Maßnahmen (bei nur 15cm): auf der zweiten 
Platine den IC extra nochmal in unmittelbarer Nähe mit einem kleinen 
Keramik-C abblocken (100nF oder so).

von Hä? (Gast)


Lesenswert?

Hast Du dich gegen den Strich gekämmt?
Antwort war da auch mit dabei...

Krawallbürste!


Andreas Hoi schrieb:
> Ja - ich weiß. Es gibt Leute in diesem Forum, die gern jede Frage ins
> Lächerliche ziehen und Sinn und Zweck einer Schaltung in Frage stellen,
> weil sie auf das eigentliche Problem auch keine Antwort wissen.
>
> Natürlich hätte man das auch ohne Mikrocontroller lösen können. Oder mit
> Mikrocontroller und ohne Schieberegister. Man hätte auch eine
> Dampfmaschine statt einer Batterie für die Stromversorgung nehmen
> können... es ist halt, wie es ist.
>
> Wenn Du mit der Frage überfordert bist oder sie einfach soooo unendlich
> weit unter Deinem Niveau ist, dann lehn Dich doch entspannt zurück und
> mach Dich lustig über meine Unwissenheit. Aber spar Dir die Zeit, hier
> eine Antwort zu schreiben. Das hilft uns beiden am meisten.

von Maxim B. (max182)


Lesenswert?

Jens G. schrieb:
> - oder generell das ganze langsamer takten, so daß sich die Signale
> zwischendurch beruhigen können (wobei das nicht direkt Reflektionen
> vermeidet).

Es gibt auch so ein Ding: 74HC14. Man kann sehr bequem 3x je zwei 
Trigger nacheinander schalten: SCK, MOSI und SS. Wenn Reflexionen nicht 
zu groß sind, hilft das.

von Wolfgang (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> 5polige Flachbandkabel sind sehr schlecht konfektionierbar; Du solltest
> Dich nach verfügbaren Steckverbindern richten.

Dann nimmt man eben 6-polige und führt z.B. Gnd doppelt rüber. So 
schlimm wäre das nicht.
PFL 6  https://www.reichelt.de/?ACTION=3;ARTICLE=53153
WSL 6G https://www.reichelt.de/?ACTION=3;ARTICLE=85732
WSL 6W https://www.reichelt.de/?ACTION=3;ARTICLE=105978

von HildeK (Gast)


Lesenswert?

Jens G. schrieb:
> Um Gottes Willen ;-) - und das wegen voraussichtlich nur 15cm.

Schlüsselwort: "voraussichtlich"! Und, über die Längen zur und von der 
Steckerleiste war nichts ausgesagt, Steckverbinder sind auch dazwischen. 
Außerdem: 15cm würde ich schon als Grenze für HC ansehen.
Und morgen braucht der TO noch einen HC595 ...

Wenn er tatsächlich nur zwei Senken hat: dafür hatte ich auch ein 
Beispiel. Und wenn der erste HC595 noch sehr nahe an der Quelle sitzt, 
dann ist es harmlos.

Jens G. schrieb:
> Wenn man Angst vor Leitungsreflektionen hat, könnte man:
> - die Signalleitungen am Ende (also beim zweiten Schieberegister) mit
> dem Wellenwiderstand des Flachbandkabels abschließen

Kann man, geht aber bei HC u. dgl. schlecht und kostet zusätzlich Strom. 
Ein Serienwiderstand quellseitig ist viele Male besser, aber nur, wenn 
man mit getrennten Leitungen zu den Senken fährt. Das sollte man bei 
Takten immer tun.

Jens G. schrieb:
> - oder generell das ganze langsamer takten, so daß sich die Signale
> zwischendurch beruhigen können (wobei das nicht direkt Reflektionen
> vermeidet).

Eben, die Reflexionen bleiben und sind am Takt maximal schädlich. Nützt 
also rein gar nichts, nur eine langsamere Logik (sagte ich implizit auch 
schon: "elektrisch kurz, d.h. die Signallaufzeit auf dem
Leitungsstück ist deutlich geringer als die Anstiegszeit des Signals
selber."). Ob du einen schnellen CMOS-Baustein mit 1Hz oder 10MHz 
taktest, ändert an einem ev. Problem rein gar nichts.

Jens G. schrieb:
> - viel wichtiger als all diese Maßnahmen (bei nur 15cm): auf der zweiten
> Platine den IC extra nochmal in unmittelbarer Nähe mit einem kleinen
> Keramik-C abblocken (100nF oder so).

Was? Dem Takt? Bloß nicht!
Die VCC des ICs schon, aber das ändert an einem eventuellen Problem auch 
nichts.

Rufus Τ. F. schrieb:
> Sowohl bei dem Steckkartencomputer als auch dem PC wurde natürlich etwas
> mehr Aufwand in das Schaltungsdesign gesteckt,

Ja richtig, geht auch. Aber dazu gehört Know How, das der TO wohl nicht 
hat, sonst hätte er die Frage nicht stellen müssen.

Andreas Hoi schrieb:
> Eigentlich macht es hierbei doch keinen Unterschied, ob es sich um
> Leiterbahnen oder Kabelverbindungen handelt, oder?

Im Prinzip nicht, allerdings sollte an der Stelle schon über die gesamte 
Leitung ein in etwa konstanter Wellenwiderstand herrschen. Das kann 
schwierig zu erreichen sein bei Flachbandkabel und Leitung auf dem Board 
gleichzeitig - außer man kennt die Geometrie der Leiterplatte, des 
Kabels und die Berechnungsformeln :-).
Gewisse Toleranzen (+/-10...20%) sind drin und nicht unbedingt sofort 
störend und man kann damit leben, wenn man die richtigen Knöpfe kennt.

von Jens G. (jensig)


Lesenswert?

Hä? (Gast) schrieb:

>Hast Du dich gegen den Strich gekämmt?
>Antwort war da auch mit dabei...

>Krawallbürste!


>Andreas Hoi schrieb:
>> ...

Hast Du dich im Thread geirrt, oder wen willst Du hier ausschimpfen?

von Jens G. (jensig)


Lesenswert?

@HildeK (Gast)

>Jens G. schrieb:
>> Wenn man Angst vor Leitungsreflektionen hat, könnte man:
>> - die Signalleitungen am Ende (also beim zweiten Schieberegister) mit
>> dem Wellenwiderstand des Flachbandkabels abschließen

>Kann man, geht aber bei HC u. dgl. schlecht

Warum?

>und kostet zusätzlich Strom.

Gut, dann mache einen kleinen C in Reihe zum R.

>Jens G. schrieb:
>> - viel wichtiger als all diese Maßnahmen (bei nur 15cm): auf der zweiten
>> Platine den IC extra nochmal in unmittelbarer Nähe mit einem kleinen
>> Keramik-C abblocken (100nF oder so).

>Was? Dem Takt?
Nee ...

>Bloß nicht!
Eben ...

>Die VCC des ICs schon, aber das ändert an einem eventuellen Problem auch
>nichts.
Doch, das wäre dann das nächste Problem, wenn er es vergißt.

von Andreas Hoi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

vielen Dank für eure zahlreichen Antworten hierzu.

Ich habe aus einem Schieberegister direkt mal zwei gemacht.
So kann man dann auch wirklich einen Wert von 255 einstellen und damit 
ein ganzes Byte in Form von LEDs darstellen.

Den Stecker habe ich 8-polig ausgeführt und die drei Signalleitungen 
jeweils mit GND benachbart.

Meine Frage wäre noch:

> Jens G. schrieb:
> - die Signalleitungen am Ende (also beim zweiten Schieberegister) mit
> dem Wellenwiderstand des Flachbandkabels abschließen (also R parallel
> zum R). Was für einen R so ein Flachbandkabel üblicherweise hat, werden
> hier ja sicherlich einige wissen (am Leitungsanfang (Senderseite)
> braucht man eigentlich grundsätzlich keinen R)

R parallel zum R? Wie kann ich mir das vorstellen? Die Terminierung muss 
wohl hinter das zweite Schieberegister. Einfach nochmal die 
Clock-Leitung abzweigen und dann über einen 120R nach GND?
Stören sich die 3 Signalleitungen dann nicht untereinander?

Die Taktverteilung auf der anderen Seite des Flachbandkabels folgt 
gleich noch...

Vielen Dank schonmal für eure Unterstützung.

von Andreas Hoi (Gast)


Lesenswert?

Oh - die Kondensatoren haben noch keinen Wert. Also klar - 100nF Abblock

von HildeK (Gast)


Lesenswert?

Jens G. schrieb:
> Warum?

Abschließen heißt, den Wellenwiderstand als Lastwiderstand zu verwenden.
Kabel liegen hier oft bei 50R-100R, die dann kaum mehr von einem HC 
getrieben werden können. Und weil man nicht nur hinten einen Abschluss 
braucht, sondern auch auf der Quellseite, hast du per se schon mal nur 
die halbe Amplitude.

Jens G. schrieb:
> Gut, dann mache einen kleinen C in Reihe zum R.

Ja, kenne ich. Muss aber individuell optimiert werden, weil abhängig von 
z.B. der Flankensteilheit der Quelle.
Nichts ist einfacher und effektiver als eine quellseitige 
Serienterminierung - nur mit dem Aufwand, eben mehrere Leitungen 
spendieren zu müssen.

von Andreas Hoi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo nochmal,

ich habe nun mal einen Schaltplan für so eine Taktverteilung begonnen.

Das Ziel war/ist:
Es gibt zwei Platinen, die durch ein Flachbandkabel miteinander 
verbunden sind. Auf Platine A befinden sich uC sowie zwei 
Schieberegister zur Ansteuerung von insgesamt LEDs.
Auf Platine B befinden sich 3 Codierschalter zum Einstellen einer 
Dezimalzahl.
Alle 4 Schieberegister teilen sich das selbe Takt-Signal.

Den Schaltplan habe ich als Bild und als .sch (Eagle) angehängt.

Wo müsste denn nun genau die Terminierung hin?

Vielen Dank,

Andreas

von Andreas Hoi (Gast)


Lesenswert?

OK, die Frage nach der Terminierung wird hier gut erklärt:

https://www.diodes.com/assets/App-Note-Files/AB023.pdf

Blieben noch zwei Fragen:

sollte man die Datenleitungen
 * Lesen vom 165 und
 * Schreiben nach 595

jeweils mit einem Pullup versehen?

Danke, Andreas

von Andreas Hoi (Gast)


Lesenswert?

Achja - und die zweite Frage:

Könnte ich anstelle des 4050 Buffers auch zwei invertierende Schmitt 
Trigger hintereinander setzen? Ich habe auf der Platine noch einen 
74HCT14D, der noch 6 Gates frei hat.
Dann könnte ich mir den 4050 nämlich sparen...

von Falk B. (falk)


Lesenswert?

@Andreas Hoi (Gast)
Datum: 18.04.2018 06:02

> * Lesen vom 165 und
> * Schreiben nach 595

>jeweils mit einem Pullup versehen?

Nein.

>Könnte ich anstelle des 4050 Buffers auch zwei invertierende Schmitt
>Trigger hintereinander setzen? Ich habe auf der Platine noch einen
>74HCT14D, der noch 6 Gates frei hat.
>Dann könnte ich mir den 4050 nämlich sparen...

Du kannst dir BEIDE ICs sparen! Der AVR kann das alleine treiben! Wie 
das geht, ist in meinem Link beschrieben! Da ging es um mehrere Meter! 
Abr wozu lesen und erfolgreich nachbauen, wenn man das Thema zum 1001 
mal durchkauen kann.

von Andreas Hoi (Gast)


Lesenswert?

Hallo Falk,

vielen Dank. Ich habe den Link gelesen - und die anderen auch.

Nachdem, was ich daraus verstanden habe, ergibt sich aber das Problem, 
dass ja insgesamt 4 Schieberegister an dem Taktsignal hängen, zwei davon 
etwas weiter entfernt über das Flachbandkabel.

Aus den beschriebenen Szenarien und den verschiedenen Terminierungen 
ergaben sich für mich zwei Varianten:

1) Eine Taktverteilung mit Serienterminierung, um Reflektionen zu 
verhindern.

2) Taktverteilung optional und am Ende der Taktleitung ein 47R + 47pF 
Kapazität (AC-Terminierung).


Verstehe ich das jetzt richtig, dass gar keine Maßnahmen nötig sind?

Für meine Anwendung mag das ohnehin alles nicht so wahnsinnig wichtig 
sein, aber ich würde es gern verstehen.

Danke für Deine Geduld.

Andreas

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

@Andreas Hoi (Gast)

>Nachdem, was ich daraus verstanden habe, ergibt sich aber das Problem,
>dass ja insgesamt 4 Schieberegister an dem Taktsignal hängen, zwei davon
>etwas weiter entfernt über das Flachbandkabel.

Ja und? Im Original waren es noch mehr.

>1) Eine Taktverteilung mit Serienterminierung, um Reflektionen zu
>verhindern.

Geht nur bei Punkt zu Punkt Verbindungen.

>2) Taktverteilung optional und am Ende der Taktleitung ein 47R + 47pF
>Kapazität (AC-Terminierung).

Wo hast du das in dem Link auf das Forum gelesen? Dort wird 
Thevenin-Terminierung genutzt, die ist meistens robuster.

>Verstehe ich das jetzt richtig, dass gar keine Maßnahmen nötig sind?

Nö, das verstehst du falsch.

>Für meine Anwendung mag das ohnehin alles nicht so wahnsinnig wichtig
>sein,

Wenn das mal kein Irrtum ist. Deine Schieberegister können sich auch bei 
10 kHz Takt verschlucken. Die Taktfrequenz ist nebensächlich, die 
Flankensteilheit sowie die Bandbreite der Gatter ("Giftigkeit") sind 
entscheidend.

> aber ich würde es gern verstehen.

Du solltest die SPI-Signale linienförmig führen und am Ende per 
Thevenin-Terminierung abschließen. Dazu braucht man keinen extra 
Treiber, die AVR-Ausgänge sind stark genug. Wenn gleich deine Platinen 
kleine und einfach sind, sollten trotzdem möglichst keine Stichleitungen 
in den Signalen sein, siehe Anhang.
Mit Stichleitungen kriegt man irgendwann mal Probleme, wobei man hier 
nicht päpstlicher als der Papst sein sollte. Bei diesen ICs sind 20-30mm 
Stichleitungen schon noch OK.

von HildeK (Gast)


Lesenswert?

Andreas Hoi schrieb:
> Verstehe ich das jetzt richtig, dass gar keine Maßnahmen nötig sind?

Nein, die beiden Serienwiderstände müssen bleiben und gehen dann beide 
auf den Pin SCK. Wie ich schon mal schrieb, zwei Leitungen mit zwei 
Serienwiderständen an einem Ausgang ist noch gut möglich.
Wenn allerdings noch ein Ausbau geplant wäre, dann empfehle ich auf 
jeden Fall die Treibervariante.

Andreas Hoi schrieb:
> Könnte ich anstelle des 4050 Buffers auch zwei invertierende Schmitt
> Trigger hintereinander setzen? Ich habe auf der Platine noch einen
> 74HCT14D, der noch 6 Gates frei hat.

Ja, du musst halt in SW den Takt invertiert ausgeben oder mit einem 
weiteren übrigen vorher nochmal invertieren. Ist ja normalerweise kein 
Act.

Und beachte: die jeweils beiden Schieberegister auf den beiden Blättern 
sollten ihren Takteingang nicht zu weit auseinander haben.

Falk B. schrieb:
> Du kannst dir BEIDE ICs sparen! Der AVR kann das alleine treiben!

Von einem AVR war lange nicht die Rede, nur allgemein von einem µC. Und 
da kann man über die Treiberleistung dieses unbekannten µC keine 
gesicherte Aussage machen - zumindest bin ich da vorsichtig geworden, 
weil schon mal hereingefallen. Da waren die Entfernungen eher noch 
kleiner.

von Andreas Hoi (Gast)


Angehängte Dateien:

Lesenswert?

Hi Falk,

ah - ok, so langsam komme ich dahinter.

Auf dem Mainboard würde ich also den Taktverteiler komplett weglassen. 
Auch der Serienwiderstand wäre dann nicht notwendig, sofern die Platine 
mit den Schaltern immer gesteckt ist - was auch der Fall wäre.

Nur auf der Platine mit den beiden 74HC165 braucht es die Terminierung, 
richtig?

Wenn man für das Flachbandkabel, welches dann ja zwischen jeder 
Signalleitung einen GND Leiter hat, von Z=100-120R und die Thevenin 
Terminierung R=2Z haben will, würden demnach 2 x 220R ausreichen, oder? 
(Siehe Anhang)

Und wenn die Frequenz nicht entscheidend ist, sondern die 
Flankensteilheit, dann gilt das vermutlich nicht für das CLK Signal, 
sondern auch für die Latch bzw. SER Signale von und zu den 
Schieberegistern, richtig?

Die Ausgänge der 74HC165 auf Seite des uC und die Eingänge der beiden 
74HC595 hinter den Schieberegistern.

Hab ich das jetzt einigermaßen hintereinander?

;)

1000 Dank,

Andreas

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hat der Threadstarter es in diesem langen Thread eigentlich hinbekommen, 
mal die verwendete Taktfrequenz zu erwähnen?

von HildeK (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Hat der Threadstarter es in diesem langen Thread eigentlich hinbekommen,
> mal die verwendete Taktfrequenz zu erwähnen?

Ich kann mich nicht erinnern. Das ist aber auch zweitrangig: die 
Flankensteilheit ist das Problem und die tritt bei 20Hz genauso auf wie 
bei 20MHz. Aber es gibt schon eine Richtung: HC, CD4000, AVR.

von HildeK (Gast)


Lesenswert?

Andreas Hoi schrieb:
> Und wenn die Frequenz nicht entscheidend ist, sondern die
> Flankensteilheit, dann gilt das vermutlich nicht für das CLK Signal,
> sondern auch für die Latch bzw. SER Signale von und zu den
> Schieberegistern, richtig?

Es gilt zwar für alle Signale, aber bei z.B. Daten ist eine schlechte 
Flanke unkritisch, weil der Takt erst abtastet, wenn sich das Signal 
schon wieder beruhigt hat. Aber auch Überschwinger werden durch die 
Terminierung beruhigt, wenn sie zu groß sind, sollte man da auch was 
tun.
Beim Takt ist die saubere Flanke wichtig und deshalb ist es hier in den 
meisten Fällen notwendig

von Udoino (Gast)


Lesenswert?

Falk B. schrieb:
> Du solltest die SPI-Signale linienförmig führen und am Ende per
> Thevenin-Terminierung abschließen. Dazu braucht man keinen extra
> Treiber,

...aber ganz schön viel Strom. Durch die Thevenin Terminierung hast Du 
einen konstanten DC Stromfluss zwischen VCC und GND. Bei den 
vorgeschlagenen Widerständen von 2 x 220R sind das immerhin permanent 10 
mA.

Ich würde mal probieren, ob man nicht zwischen VCC und R1 bzw. GND und 
R2 jeweils einen Kondensator setzen kann. Dann ist der Stromfluss im 
Idlemode zumindest weg.

von foobar (Gast)


Lesenswert?

Erstaunlich, dass die NES-Joysticks überhaupt funktioniert haben ;-)

Wir reden hier von ein paar hundert Hz über 15cm - da braucht es genau 
gar nichts.

von Jens G. (jensig)


Lesenswert?

>Wir reden hier von ein paar hundert Hz über 15cm - da braucht es genau
>gar nichts.

Wie schon mehrfach angedeutet wurde - es geht um Flankensteilheiten, die 
Reflektionen verursachen können, nicht um die Drehzahl ...

: Bearbeitet durch User
von foobar (Gast)


Lesenswert?

> es geht um Flankensteilheiten, die Reflektionen verursachen können

Und? Nen paar ns nen paar Überschwinger - who cares.

von Falk B. (falk)


Lesenswert?

@foobar (Gast)

>> es geht um Flankensteilheiten, die Reflektionen verursachen können

>Und? Nen paar ns nen paar Überschwinger - who cares.

Der Takteingang des Empfängers . . .

von Falk B. (falk)


Lesenswert?

@ Andreas Hoi (Gast)

>Auf dem Mainboard würde ich also den Taktverteiler komplett weglassen.
>Auch der Serienwiderstand wäre dann nicht notwendig, sofern die Platine
>mit den Schaltern immer gesteckt ist - was auch der Fall wäre.

Dein Board läuft auch ohne das Kabel und die 2. Platine mit der 
Terminirung, den die Leitungen auf der 1. Platine sind doch eher kurz.

>Nur auf der Platine mit den beiden 74HC165 braucht es die Terminierung,
>richtig?

Ja.

>Wenn man für das Flachbandkabel, welches dann ja zwischen jeder
>Signalleitung einen GND Leiter hat, von Z=100-120R und die Thevenin
>Terminierung R=2Z haben will, würden demnach 2 x 220R ausreichen, oder?
>(Siehe Anhang)

Ja.. 2x240Ohm gingen damals in der Diskussion auch.

>Und wenn die Frequenz nicht entscheidend ist, sondern die
>Flankensteilheit, dann gilt das vermutlich nicht für das CLK Signal,

FALSCH! Gerade dieses Signal ist das kritischste. Denn wenn das 
klingelt, können schnelle ICs dann 2 Flanken "sehen", wo eigentlich nur 
eine ist.

>sondern auch für die Latch bzw. SER Signale von und zu den
>Schieberegistern, richtig?

Falsch.

>Die Ausgänge der 74HC165 auf Seite des uC und die Eingänge der beiden
>74HC595 hinter den Schieberegistern.

Die Datenleitungen sind um Größenordnungen unkritischer.

Was für einen uC hast du denn genau?

von Andreas Hoi (Gast)


Lesenswert?

Hallo Falk,

Falk B. schrieb:
>>Und wenn die Frequenz nicht entscheidend ist, sondern die
>>Flankensteilheit, dann gilt das vermutlich nicht für das CLK Signal,

sorry - ein entscheidendes Wort vergessen.
Es sollte heißen:

...dann gilt das vermutlich nicht NUR für das CLK Signal,...


Bei dem uC handelt es sich um einen ATMEGA328P-AU.
Das Clock Signal hat 50kHz.

Ich hatte heute zwischendurch auch GElegenheit, die Thevenin 
Terminierung einmal probehalber aufzubauen. Der Stromverbrauch auf der 
5V-Seite erhöht sich dadurch um etwas mehr als 10mA.

Das ist natürlcih schon ein Häppchen, für ein batteriebetriebenes Gerät.
Den Vorschlag von Udoino finde ich unter diesem GEsichtspunkt ganz 
interessant. Wenn man den DC Stromfluss einfach mit zwei Kondensatoren 
unterbrechen kann, wäre das natürlich super.

Momentan messe ich einen Overshoot des Taktes von 0.3V ohne 
Terminierung.

Mit der Thevenin Terminierung reduziert sich der Pegel insgesamt auf die 
Hälfte. Kann das sein?

LG, Andreas

von Falk B. (falk)


Lesenswert?

@ Andreas Hoi (Gast)

>Terminierung einmal probehalber aufzubauen. Der Stromverbrauch auf der
>5V-Seite erhöht sich dadurch um etwas mehr als 10mA.

>Das ist natürlcih schon ein Häppchen, für ein batteriebetriebenes Gerät.

Ja.

>Den Vorschlag von Udoino finde ich unter diesem GEsichtspunkt ganz
>interessant. Wenn man den DC Stromfluss einfach mit zwei Kondensatoren
>unterbrechen kann, wäre das natürlich super.

Dann nimmt man die normale AC-Terminierung, die man aber ein wenig 
hintricksen muss.

>Momentan messe ich einen Overshoot des Taktes von 0.3V ohne
>Terminierung.

Wie mißt du denn GENAU?

https://www.mikrocontroller.net/articles/Oszilloskop#Tastk.C3.B6pfe_richtig_benutzen

>Mit der Thevenin Terminierung reduziert sich der Pegel insgesamt auf die
>Hälfte. Kann das sein?

Das ist eher zuviel. High und low sollten um ca. 0,5V in Richtung 
VCC/halbe rutschen.

von HildeK (Gast)


Lesenswert?

Andreas Hoi schrieb:
> Mit der Thevenin Terminierung reduziert sich der Pegel insgesamt auf die
> Hälfte. Kann das sein?

Hast du auf der Quellseite einen Serienwiderstand? Der würde das 
verursachen ... Lass ihn weg bei der Theveninterminierung.

Andreas Hoi schrieb:
> Momentan messe ich einen Overshoot des Taktes von 0.3V ohne
> Terminierung.

0.3V Overshoot sind kein Problem, vorausgesetzt du hast mit einem 
ausreichend schnellen Skope gemessen. Sieht die Flanke am Takteingang 
perfekt aus? Keine angedeutete Flachstelle oder S-Form auf halber Höhe? 
Auch mit schnellem Skope und Tastkopf gemessen, sonst siehst du nur 
weichgezeichnetes!

Andreas Hoi schrieb:
> Ich hatte heute zwischendurch auch GElegenheit, die Thevenin
> Terminierung einmal probehalber aufzubauen. Der Stromverbrauch auf der
> 5V-Seite erhöht sich dadurch um etwas mehr als 10mA.
>
> Das ist natürlcih schon ein Häppchen, für ein batteriebetriebenes Gerät.
> Den Vorschlag von Udoino finde ich unter diesem GEsichtspunkt ganz
> interessant.

Tja, auch mein Vorschlag mit zwei Serienwiderständen und zwei getrennten 
Leitungen wäre dann wieder interessant.

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.