SPI-Signal, das an anderen Pins des ATmega1284P-Mikrocontrollers angezeigt wird?

Ich verwende eine Atmel ATmega1284P MCU (40-Pin-DIP) für ein Projekt und habe einige Niederfrequenzspitzen am ADC0-Pin (Pin 40) bemerkt. Nach einiger Fehlersuche stellte ich fest, dass die Spikes perfekt mit der SPI-Kommunikation auf den Pins 6 und 8 synchronisiert waren.

Ich konnte das Problem mit der folgenden minimalen Schaltung replizieren:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Und der minimale Code:

#include <SPI.h>

void setup()
{
  SPI.begin();
}
void loop()
{
  SPI.transfer(B00000000);
  delay(61);
}

Beim Überwachen der Pins 8 und 40 mit einem Oszilloskop kann ich sehen, dass der SCK alle 61 ms korrekt auf 5 V springt, aber was seltsam ist, ist, dass ich eine ungefähr 400-mV-Spitze auf der ADC0-Leitung sehe. Hier ist ein Screenshot von meinem Oszilloskop, die ADC0-Sonde ist gelb und die SCK blau:

Geben Sie hier die Bildbeschreibung ein

Als Referenz ist hier die Pinbelegung für den 1284 DIP:

Geben Sie hier die Bildbeschreibung ein

Ich bin mir wirklich nicht sicher, was hier vor sich geht, aber es scheint eine Art Erdungsproblem zu sein. Ich habe versucht, Entkopplungskappen zwischen den Pins 10 und 11 sowie den Pins 30 und 31 hinzuzufügen, aber es hat keinen Unterschied gemacht. Irgendwelche Ideen, wie man diese Spitze an den anderen MCU-Pins beseitigen kann?

Aufnahme der Vcc-Spur mit elektrolytischen 22-uF-Entkopplungskappen in der Nähe von Vcc und AVcc:

Geben Sie hier die Bildbeschreibung ein

Haben Sie versucht, AVcc über eine Tiefpassschaltung anzuschließen, wie im Datenblatt beschrieben?
@FRob Nein, habe ich nicht. Wo im Datenblatt wird beschrieben, welche Werte für den Tiefpass verwendet werden sollen?
Nehmen Sie auch eine Oszilloskop-Spur von Vcc auf, idealerweise AC-gekoppelt mit beispielsweise 50 mV oder 100 mV pro Teilungseinstellung, zur gleichen Zeitbasis - wenn Sie das gleiche Rauschen auf Vcc haben, dann ist das Ihr Problem. Welche Art und Kapazität haben Ihre Entkopplungskappen? Ein Bild vom Aufbau könnte auch helfen. & Wie FRob oben sagte, ist die Tiefpassfilterung von AVcc von Vcc ziemlich wichtig, wenn die analoge Leistung für Ihre App von Bedeutung ist.
@Techydude Derzeit habe ich 22uF-Elektrolyte in der Nähe von Vcc und AVcc. Wird die Frage mit einer Aufnahme der Vcc-Spur aktualisieren.
Sie möchten mehr Entkopplungskappen an den Stromanschlüssen anbringen. Ich wette, das Datenblatt sagt Ihnen, dass Sie 0,1 uF verwenden sollen. Sie könnten auch 0,01 uF parallel versuchen. Vcc und AVcc sind normalerweise durch eine Ferritperle oder einen Induktor getrennt.
Off-Topic vielleicht, aber ich mag die Screenshots Ihres Bereichs wirklich. :) Welche Zeile ist im VCC-Screenshot welche? Aber im Allgemeinen stimme ich @Naz zu, fügen Sie einige Entkopplungskappen hinzu.
@Mewa Danke, es ist der Rigol 1054Z. Der neue, größere Bildschirm ist ganz nett. Erstaunlich, was man heutzutage für 400 Dollar bekommen kann! In der Vcc-Aufnahme ist die Sonde 1 die Vcc (gelb) und Sonde 2 ist der SCK an Pin 8 (cyan).

Antworten (2)

Pin 40 ist ein Eingang, dh er ist relativ hochohmig (im Vergleich zu einem Ausgang oder einer Stromversorgungsleitung). Das ist die erste wichtige Sache zu beachten.

Als nächstes schließen Sie Ihre O-Scope-Sonde daran an und jetzt haben Sie im Grunde einen hochohmigen Stift, der mit einer Antenne mittlerer Länge verbunden ist.

Ist es eine Überraschung, dass etwas gesehen werden könnte? Wenn Sie die Oszilloskopsonde in mehreren Bereichen in der Nähe halten, stellen Sie möglicherweise auch fest, dass schnelle Transienten auf der SCK-Leitung ebenfalls mit der Sonde koppeln.

Das allgemeine Layout des Steckbretts kann leicht dazu führen, dass die Spitzen (in geringerem Maße) auf anderen Stiften erscheinen. Wenn es sich auf einer Leiterplatte mit einer anständigen Erdungsebene befindet und das Erdungskabel des Oszilloskops mit dem 0-V-Pin des Schranks verbunden ist, sehen Sie möglicherweise immer noch eine kleine Spitze - dies liegt daran, dass die Sonde des Oszilloskops als Rahmenantenne fungiert.

Ich denke, Sie haben Recht, dass die Sonde als Antenne fungiert. Ich kann eine Verbindung zu einer völlig unbestückten Steckbrettsäule herstellen und trotzdem ein schwaches Signal empfangen. Bedeutet dies also, dass die anderen Pins, wie die ADC-Eingänge, dieses Signal nicht wirklich erkennen? Oder wenn doch, kann ich nichts dagegen tun?
Wenn Sie eine geeignete analoge Spannungsquelle mit niedriger Impedanz an einen ADC-Eingang angeschlossen haben, werden Sie feststellen, dass die Spitze Null oder möglicherweise einige Millivolt mit einem anständigen PCB-Layout beträgt.
Ihre Oszilloskopsonden wurden mit kleinen spitzen Federstahlspulen geliefert, die über die Sondenspitze gleiten (wenn Sie die normale Plastikspitze entfernen). Wenn Sie das federnde Ding verwenden, um einen sehr nahen Boden zu berühren, und Vcc (und andere Signale) prüfen, reduzieren Sie die Größe der Schleife, die durch die Erdungsdraht-Krokodilklemme des Oszilloskops gebildet wird, dramatisch. Ja, induktive Aufnahme könnte das sein, was Sie sehen. Dies könnte darauf hindeuten, dass Ihr SPI-Bus stark strahlt, was ein Problem für sich sein könnte ...
Es kann auch sehr knifflig sein, die durch eine Oszilloskopsonde verursachte Streuaufnahme von einem echten Signal an einem Pin zu isolieren. Viel Glück.
Oh, das ist ein Steckbrett? Ich wünschte, das OP hätte das erwähnt .... :)
@techydude es könnte sein. Der einzige Hinweis, den ich gesehen habe, ist die Erwähnung des DIP-Chips zu Beginn der Frage, ABER die gleichen Prinzipien würden für ein nicht ideales PCB-Layout gelten! Ja, er hat es auch in einem Kommentar erwähnt!
@Techydude Ja, dies ist derzeit ein DIP auf einem Steckbrett, aber das endgültige Design wird ein QFP auf einer Leiterplatte verwenden. Danke euch beiden für eure Hilfe!

In Anlehnung an meinen Kommentar ist das Rauschen also auf Vcc, was bedeutet, dass es wahrscheinlich überall ist. Ein 22uF-Elektrolyt ist keine Entkopplungskappe, viel zu viel Induktivität und ESR. Keramikscheibe bei Durchgangsbohrung oder MLCC (Mehrschicht-Keramikchip) bei SMD mit 100 nF (0,1 uF) reicht normalerweise aus. Manchmal funktioniert in Durchgangslöchern eine Kombination aus 100n & 10n besser, abhängig vom Kappentyp, PCB-Layout usw. Platzieren Sie die Entkopplungskappe so nah wie möglich an den Vcc/AVcc- und Gnd-Pins, kürzeste (Durchgangsloch-)Leitungen wie möglich. Weitere Erklärung: http://www.baldengineer.com/a-1uf-decoupling-capacitor-is-too-mous.html Und wie auch von Ignacio kommentiert, ist dieser App-Hinweis wichtig, insbesondere das Setzen eines Tiefpass-LC-Filters zwischen Vcc und AVcc. Dann mach noch eine Aufnahme und zeig uns den Unterschied :)

Beachten Sie, dass die 1-µF-Kappe in dem Artikel ein Aluminium-Elektrolyt ist. Eine 1µF-Keramikkappe hat aufgrund ihres niedrigeren ESR eine viel bessere Chance zu arbeiten.
Die 0,1-uF-Keramikkappen auf Vcc und AVcc hinzugefügt und immer noch die Spitzen sehen. Ich vermute, Andy hat Recht, dass die Sonde als Antenne fungiert.
Aber haben sie immer noch die gleiche Amplitude?
Ziemlich viel, aber die Hintergrundgeräusche wurden reduziert, das ist also etwas.
ok, es hört sich so an, als ob das 'Gras' (Rauschen) mit niedrigem Pegel durch die Kappen ein wenig bereinigt wurde, aber die auf das SPI-Timing ausgerichteten Spitzen wurden induktiv über die Erdungsschleife der 'Oszilloskopsonde' gekoppelt, nachweisbar, wenn Sie diese ausprobieren kleine Federstahl-Bodensonden-Dinge, die ich unter der anderen Antwort erwähnt habe. Spaß haben!