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?
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.
@ 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_LayoutBeitrag "Re: Skurriles Problem mit BS170 Mosfets"
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.
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.
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.
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.
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.
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?
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.
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.
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.
>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).
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.
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.
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.
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?
@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.
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.
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.
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
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
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...
@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.
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
@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.
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.
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
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.
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
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.
Erstaunlich, dass die NES-Joysticks überhaupt funktioniert haben ;-)
Wir reden hier von ein paar hundert Hz über 15cm - da braucht es genau
gar nichts.
>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 ...
@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 . . .
@ 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?
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
@ 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.
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.