Hallo wieder einmal, im Moment brüte ich darüber, warum ich bei meiner einfachen Kombination aus µC und DAC per SPI (ATMega16 und DAC8043A -> wäre schön, wenn letzteren schon mal jemand benutzt hat) nicht das erwartete Ergebnis bekomme. Den SPI-Prozess (bestehend aus zwei Bytes, weil 12-Bit DAC) habe ich (hoffentlich) soweit verstanden. Ich denke nicht, dass mein Problem dort begraben liegt. Ich erreiche nicht die volle Spannung am DAC und die Werte ändern sich meiner Meinung nach nicht linear. Zudem habe ich den Eindruck, dass immer nur ein Byte vom DAC geschluckt wird. Bevor ich aber weiter auf Details eingehe, die vielleicht gar nicht nötig sind: Mir fallen zwei Dinge an meinem Aufbau (auf einer Steckplatine) auf: - mein definierter Eingangspin reagiert enorm auf Handbewegungen in der Nähe der Platine, wenn ich nicht aktiv mit der anderen Hand Masse berühre. Ein ESD-Armband erwies sich als wirkungslos. - Das SPI-Clock-Signal, das jedesmal gestartet wird, nachdem ich ein Byte in das SPDR-Register geschrieben habe, sieht meines Erachtens furchtbar aus (siehe Bild). Hier gibt es nach meinem laienhaften Eindruck durch das Überschwingen in jedem Takt mehrere steigende Flanken. Kann es sein, dass der DAC damit überfordert ist bzw. er in Summer einfach zu viele Flanken sieht und damit sein Empfangsregister wieder überschreibt? Soweit ich das verstanden habe, nimmt er pro Takt ein Bit an. Woran kann das liegen, dass die Clock, direkt gemessen am SCK-Pin des µC, so schlimm aussieht? Die eigentliche Quarz-Clock für den µC selbst sieht hingegen sehr gut aus. Vielen Dank schon mal Peter
> ... auf einer Steckplatine ...
Allenfalls
-sollte man sich von Steckplatinen verabschieden
-die SPI Clock verlangsamen
-die SPI Signale mit RC filtern
@ Peder (Gast) >Mir fallen zwei Dinge an meinem Aufbau (auf einer Steckplatine) auf: >- mein definierter Eingangspin reagiert enorm auf Handbewegungen in der >Nähe der Platine, wenn ich nicht aktiv mit der anderen Hand Masse >berühre. Ein ESD-Armband erwies sich als wirkungslos. Klingt nach offenen Pins. >- Das SPI-Clock-Signal, das jedesmal gestartet wird, nachdem ich ein >Byte in das SPDR-Register geschrieben habe, sieht meines Erachtens >furchtbar aus (siehe Bild). Richtig! > Hier gibt es nach meinem laienhaften >Eindruck durch das Überschwingen in jedem Takt mehrere steigende >Flanken. Kann es sein, dass der DAC damit überfordert ist bzw. er in >Summer einfach zu viele Flanken sieht und damit sein Empfangsregister >wieder überschreibt? JA! > Soweit ich das verstanden habe, nimmt er pro Takt ein Bit an. Ja. >Woran kann das liegen, dass die Clock, der Takt >direkt gemessen am SCK-Pin des >µC, so schlimm aussieht? Die eigentliche Quarz-Clock für den µC selbst >sieht hingegen sehr gut aus. Messfehler? http://www.mikrocontroller.net/articles/Oszilloskop#Tastk.C3.B6pfe_richtig_benutzen Masseproblem? Schlechte Masseverbindung? Oder saumäßige Verbindung allgemein? http://www.mikrocontroller.net/articles/Wellenwiderstand#Leitungsf.C3.BChrung_und_Layout
foto vom Testaufbau! Welches Netzteil verwendest du? Soft SPI oder SPI hardware genutzt? EProfi
Den Tastkopf würde ich eigentlich ausschließen, weil ich am Oszi für die Quarz-Clock ein sauberes Signal sehe. Mit einem Tiefpass sieht es tatsächlich schon viel besser aus, auch wenn a) die Flankensteilheit drunter leidet und b) ich immer im Hinterkopf habe, dass der µC irgendwas macht, was mir nicht gefällt. Die Byteübertragung scheint jetzt gut zu funktionieren, zumindest reagiert der DAC auf Änderung von High- und Low-Byte in nachvollziehbarer Weise. Bleibt nur das Problem, dass die Spannung nicht voll erreicht wird. Aber wenn ich das nicht hinbekomme, werde ich wohl eh noch mal mit Schaltplan wiederkommen müssen. Danke soweit schon mal!
@ Peder (Gast) >Den Tastkopf würde ich eigentlich ausschließen, weil ich am Oszi für die >Quarz-Clock ein sauberes Signal sehe. Ist ein Argument. Es heißt aber dennoch Quarztakt. >Mit einem Tiefpass sieht es tatsächlich schon viel besser aus, Klar, wenn mir die Realität nicht gefällt setze ich einfach eine dunkle Sonnenbrille auf . . . >Die Byteübertragung scheint jetzt gut zu funktionieren, "scheint" ist kein sonderlich bauchbareas Adjektiv bei fehlerhaften Schaltungen. Du musst SICHER nachweise (=messen) dass es so ist.
Die beiden letzten Beiträge habe ich erst gesehen, nachdem ich schon an meinem Beitrag geschrieben habe. Die möchte ich natürlich nicht unkommentiert lassen. @E-Profi SPI ist Hardware, der ATMega16 bietet mir dafür eine Schnittstelle. Das Netzteil ist ein Labornetzteil, was den Anforderungen eigentlich gewachsen sein sollte. Das war zwar nicht unbedingt teuer, aber die Netzspannung überprüfe ich permanent mit Oszi. Das macht bisher einen guten Eindruck. @Falk Ich habe es gerade mal mit einem "richtigen" Tastkopf versucht (das Ding, was ich vorher benutzt habe, habe ich synonym einfach mit Tastköpfen in einen Topf geworfen) und kann den Überraschungseffekt, den ich jetzt auch bei anderen gelesen habe, nur teilen, wenn ich den denn richtig benutzt habe. Ich habe trotz Abraten die Krokoklemme benutzt, aber soweit ich das mittlerweile gesehen habe, fängt "hochfrequent" auch nicht da an, wo ich mich bewege. Damit habe ich zwar dem µC grob Unrecht getan, verstehe dann aber nicht mehr, womit ich meinen Übertragungsfehler beseitigt habe. Auch Filtern ist quasi überhaupt nicht mehr nötig, der Takt ist 1A "rechteckig"! Was die offenen Pins betrifft, liegst du nicht falsch, davon habe ich etwa 25 (hab nur diesen µC-Typ hier), aber nachdem ich die Mehrzahl mal auf Masse gezogen habe, hat sich diese Überempfindlichkeit nicht geändert. Meine Eingangspins werden aber später eh per Taster oder TTL angesteuert, damit sind die dann fest definiert. Gibt es eine Möglichkeit, die Byteübertragung korrekt zu überprüfen, wenn der DAC (DAC8043A) nur ein reines Empfängerbauteil ist?
Hmm. Blöde Frage. Hast du auch nicht vergessen, die Pins in den DDR Registern auf Ausgang zu stellen? Das ist durch die Verwendung des SPI nämlich nicht impliziert, sondern du musst das selber machen. Das würde auch u.U. erklären, warum du nicht den erwarteten Spannungshub erhältst. Denn deine SPI Einheit schaltet dann immer nur den Pullup-Widerstand zu bzw. weg.
@ Peder (Gast) >Ich habe es gerade mal mit einem "richtigen" Tastkopf versucht (das >Ding, was ich vorher benutzt habe, habe ich synonym einfach mit >Tastköpfen in einen Topf geworfen) AHHHHHHH > und kann den Überraschungseffekt, den >ich jetzt auch bei anderen gelesen habe, nur teilen, wenn ich den denn >richtig benutzt habe. Ich habe trotz Abraten die Krokoklemme benutzt, >aber soweit ich das mittlerweile gesehen habe, fängt "hochfrequent" auch >nicht da an, wo ich mich bewege. Nö, sondern schon bei deutlich niedrigeren Frequenzen. >Damit habe ich zwar dem µC grob Unrecht getan, verstehe dann aber nicht >mehr, womit ich meinen Übertragungsfehler beseitigt habe. Auch Filtern >ist quasi überhaupt nicht mehr nötig, der Takt ist 1A "rechteckig"! Na wenigsten eine Erkenntnis. >Was die offenen Pins betrifft, liegst du nicht falsch, davon habe ich >etwa 25 (hab nur diesen µC-Typ hier), aber nachdem ich die Mehrzahl mal >auf Masse gezogen habe, hat sich diese Überempfindlichkeit nicht >geändert. Meine Eingangspins werden aber später eh per Taster oder TTL >angesteuert, damit sind die dann fest definiert. Naja, unbenutzt Pins sind erstmal egal. Das Thema ist eher, ob Pins, die mit der SPI zu tn haben bzw. in deinem Programm abgefragt werden in der Luft hängen. Kalte Lötstellen? Wackelkontakt? >Gibt es eine Möglichkeit, die Byteübertragung korrekt zu überprüfen, >wenn der DAC (DAC8043A) nur ein reines Empfängerbauteil ist? Sicher, er muss recht genau die Spannung aussucken, die man als Stellwert reinschreibt. Klassischer Test. Man schreibt einfach schnell nacheinander einen aufsteigenden Wert von 0-4095 rein und schaut sich den DAC-Ausgang auf dem Oszi an. Da sieht man viele Dreckeffekte. Denk dran, das Pin SS MUSS als Ausgang konfiguriert sein, siehe Datenblatt "SS pin functionality".
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.