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:
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:
Als Referenz ist hier die Pinbelegung für den 1284 DIP:
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:
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.
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 :)
FRob
Fünfer
Techniker
Fünfer
Nazar
Ignacio Vazquez-Abrams
Mewa
Fünfer