Hallo liebe Gemeinde, hier mal ein Lehrbeispiel zum leidigen Thema Übertragungsprobleme mit SPI und Reflektionen. Auf einer kleinen Platine steuert ein ATmega328PB einen ADC vom Typ TLV2553. Leitungslänge ca. 40mm mit ca. 15mm Stichleitung zum ISP-Stecker. Siehe Anhang, das eingeblendete Raster sind 10mm, die helle Leitung SCK. Bei der Inbetriebnahme kam es zu Übertragungsfehlern auf einigen ADC-Kanälen. Logikfehler wurden geprüft und ausgeschlossen (Messung mit dem Oszi am Bus). Dabei zeigte sich, daß mit angeschlossenem 10:1 Tastkopf an SCK die Übertragung stabil und auf allen Kanälen OK war. Uuups! Also mal genau messen. Erstmal mit 10:1 Tastkopf und kurzer Massefeder. https://www.mikrocontroller.net/articles/Oszilloskop#Tastk.C3.B6pfe_richtig_benutzen Dann nochmal mit selbstgebautem Z0-Tastkopf und 1k Eingangswiderstand. Beide Bilder sind leicht verschieden, aber in beiden Fällen läuft die Übertragung fehlerfrei! Nach einer Weile wurde klar, das ISP-Kabel ist Schuld, denn dort hängen ca. 40cm Flachbandkabel als Stichleitung dran. Entfernt man dies, läuft die Übertragung auch ohne Tastkopf am Signal fehlerfrei. Aber das ist unpraktisch für's Debuggen. Also was tun? Ganz einfach. Man entkoppelt das Taktsignal mit einem 1k Widerstand direkt an X15 von der SCK Leitung. Der ISP-Programmer und der AVR sind gutmütig genug, um mit dem höheren Ausgangswiderstand und etwas langsameren Flanken umzugehen. Damit läuft die SPI-Übertragung auch mit angestecktem ISP-Kabel und ohne Tastkopf am Signal. Man sieht bei der Messung an SCK keinen Unterschied, ob das Kabel angesteckt ist oder nicht. Anbei noch ein paar Screenshots. Bei der Messung war es nur sehr schwer möglich, das gestörte Signal aufzuzeichnen, erst mit dem extrem hochohmigen Z0-Tastkopf mit 40kOhm war es ansatzweise möglich, das Signal zu messen und gleichzeitig die Störung noch zu beobachten. Allerdings waren die Meßwerte anders, d.h. auch hier war die Störung durch den Tastkopf verfälscht. 1.png Original, 1k Z0-Tastkopf 2.png Original, 15pF 10:1 Tastkopf 3.png Original, 10k Z0-Tastkopf 4.png Original, 40k Z0-Tastkopf 5.png modifiziert, 15pF 10:1 Tastkopf 6.png modifiziert, 1k, Z0-Tastkopf 7.png modifiziert, 40k, Z0-Tastkopf Die starken Überschwinger bei den Messungen mit 40k Z0-Tastkopf würde ich mit Vorsicht genießen wollen. Ob die echt sind oder ein Meßfehler ist unklar. P.S. Ok, das Layout ist nicht ganz lehrbuchartig, man hätte wenigstens SCK etwas vorsichtiger behandeln und ohne Löcher in der Masse verlegen können.
Falk B. schrieb: > Man entkoppelt das Taktsignal mit einem 1k Widerstand direkt an X15 von > der SCK Leitung. Der Widerstand ist für eine Serienterminierung (nichts anderes hast du da gemacht) im Prinzip zu hochohmig. 100 Ohm reichen da aus. Und der gehört eigentlich so dicht wie möglich an den Sender. Aber wem erzähle ich das... ;-) Du hast da ja so ziemlich genau den Aufbau wie dort im Beitrag "Re: Serienwiderstand bei Hochfrequenz"
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Falk B. schrieb: >> Man entkoppelt das Taktsignal mit einem 1k Widerstand direkt an X15 von >> der SCK Leitung. > Der Widerstand ist für eine Serienterminierung (nichts anderes hast du > da gemacht) Nö. Nochmal genau lesen und hinschauen. Ich habe die Stichleitung + Flachbandkabel am ISP durch 1k HF-mäßig entkoppelt. Das ist KEINE Terminierung! Das 1k wirkt nahezu als HF-mäßig offenes Ende.
Falk B. schrieb: > Ich habe die Stichleitung + Flachbandkabel am ISP durch 1k HF-mäßig > entkoppelt. Schon gesehen. > Das ist KEINE Terminierung! Richtig, das sehe ich ja auch so. Allerdings frage ich mich, ob da eine "regelgerechte" Terminierung am µC-Pin nicht auch "geholfen" hätte. Und man dann im Betrieb mit 40cm Kabel zum Programmer die paar mm zum ADC als "nicht weiter schlimmen" Stub betrachten könnte. Falk B. schrieb: > Die starken Überschwinger bei den Messungen mit 40k Z0-Tastkopf würde > ich mit Vorsicht genießen wollen. Ob die echt sind oder ein Meßfehler > ist unklar. Löte doch mal in die Taktleitung beim µC einen 0402 100 Ohm Widerstand. Platz ist ja genug da. Mich würde interessieren, was dann passiert.
:
Bearbeitet durch Moderator
Lothar M. schrieb: >> Ich habe die Stichleitung + Flachbandkabel am ISP durch 1k HF-mäßig >> entkoppelt. > Schon gesehen. > >> Das ist KEINE Terminierung! > Richtig, das sehe ich ja auch so. Hast du aber nicht geschrieben!!! "Der Widerstand ist für eine Serienterminierung (nichts anderes hast du da gemacht)" > Allerdings frage ich mich, ob da eine > "regelgerechte" Terminierung am µC-Pin nicht auch "geholfen" hätte. > Und man dann im Betrieb mit 40cm Kabel zum Programmer die paar mm zum > ADC als "nicht weiter schlimmen" Stub betrachten könnte. Hmmm. > Löte doch mal in die Taktleitung beim µC einen 0402 100 Ohm Widerstand. > Platz ist ja genug da. Mich würde interessieren, was dann passiert. Sagen wir 0603, 0402 tu ich mir nur an, wenn es denn WIRKLICH sein muss. Ok, siehe Anhang. UFFFF! Das ist so ziemlich das ungünstigste Signal, das man sich wünschen kann, gemessen mit 10:1 Tastkopf und Massefeder. Und trotzdem arbeitet der ADC korrekt!!! Das verstehe wer will! Ich bau das jetzt wieder zurück, mit 1K am ISP-Stecker sah das DEUTLICH besser aus!
Beitrag #5707138 wurde vom Autor gelöscht.
Hier nochmal das Signal mit 100 Ohm Serienterminierung am AVR ohne gestecktes ISP-Kabel! Astrein!
:
Bearbeitet durch User
Falk B. schrieb: > Hier nochmal das Signal mit 100 Ohm Serienterminierung am AVR ohne > gestecktes ISP-Kabel! Astrein! Das ist jetzt wie im Eröffnungsthread das Bild 2? Oder das Bild 5? Kurios. Was passiert, wenn du nur das 40cm-Kabel (ohne hochohmigen Treiber am SCK) einsteckst? Falk B. schrieb: > Ok, siehe Anhang. UFFFF! Das ist so ziemlich das ungünstigste Signal, > das man sich wünschen kann Ja, sieht böse aus. Das ist direkt am ADC?
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Falk B. schrieb: >> Hier nochmal das Signal mit 100 Ohm Serienterminierung am AVR ohne >> gestecktes ISP-Kabel! Astrein! > Das ist jetzt wie im Eröffnungsthread das Bild 2? Oder das Bild 5? 2. > Kurios. In der Tat! > Was passiert, wenn du nur das 40cm-Kabel (ohne hochohmigen Treiber am > SCK) einsteckst? Hab ich nicht probiert, werde ich auch nicht mehr tun. Ich muss fertig werden. Trotzdem würde ich den ADC als relativ empfindlich einstufen. Vermutlich ist der in einem relativ modernen, sauschnellen Halbleiterprozess gefertigt und hat an seinen Takteingängen DEUTLICH mehr Bandbreite als die max. spezifizierten 15 MHz für den SPI-Takt. Das ist eher kontraproduktiv. Das Datenblatt spricht auch von einer internen Entprellung des CS Signals mit ca. 25ns, das deutet schon auf solche Effekte hin. Warum zum Geier kann man dem Takt oder auch CS nicht einfach einen rustikalen Schmitt-Trigger verpassen? Bei 15 MHz brennt da doch rein gar nichts an. >> Ok, siehe Anhang. UFFFF! Das ist so ziemlich das ungünstigste Signal, >> das man sich wünschen kann > Ja, sieht böse aus. Das ist direkt am ADC? Ja.
Lothar M. schrieb: > Kurios. Eigentlich nicht. Die Serienterminierung sorgt dafür, dass am Ende des Flachbandkabels das Signal gut aussieht. Direkt hinter der Serienterminierung (also praktisch da, wo der ADC sitzt), muss sich diese ungünstige Signal ergeben. Bei Loslaufen der Welle wird wegen der Serienterminierung erst mal nur der halbe Pegel erreicht. Wenn die reflektierte Welle dann vom Ende des Flachbandkabels zurück kommt, wird der volle Pegel erreicht. Genau das sieht man am ADC-Eingang.
Achim S. schrieb: > Lothar M. schrieb: >> Kurios. > > Eigentlich nicht. Die Serienterminierung sorgt dafür, dass am Ende des > Flachbandkabels das Signal gut aussieht. Direkt hinter der > Serienterminierung (also praktisch da, wo der ADC sitzt), muss sich > diese ungünstige Signal ergeben. > > Bei Loslaufen der Welle wird wegen der Serienterminierung erst mal nur > der halbe Pegel erreicht. Wenn die reflektierte Welle dann vom Ende des > Flachbandkabels zurück kommt, wird der volle Pegel erreicht. Genau das > sieht man am ADC-Eingang. Jetzt wo du es sagst klingt es logisch. Klassisches Wald und Bäume Problem. ;-)
Falk B. schrieb: >> Bei Loslaufen der Welle wird wegen der Serienterminierung erst mal nur >> der halbe Pegel erreicht. Wenn die reflektierte Welle dann vom Ende des >> Flachbandkabels zurück kommt, wird der volle Pegel erreicht. Genau das >> sieht man am ADC-Eingang. Deshalb auch für jeden Teilnehmer einen eigenen Serien-Widerstand und eine eigene Leitung für Clock ziehen.
Falk B. schrieb: > Ok, siehe Anhang. UFFFF! Das ist so ziemlich das ungünstigste Signal, > das man sich wünschen kann, gemessen mit 10:1 Tastkopf und Massefeder. > Und trotzdem arbeitet der ADC korrekt!!! Das verstehe wer will! Das Signal ist super! *1) Die Impedanz der Leitung passt. Was du siehst, sind ganz normale Leitungseffekte. Da die Harken zu Beginn und Ende mittig sind, also passt die Impedanz zur Serienterminierung. Miss am Ende der Leitung, da sollte daher ein schöner Rechteck rauskommen. *1) vorausgesetzt, es ist am Beginn der Leitung gemessen ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.