Ich verstehe das PSIDLE-Flag im Register ADCON nicht so recht, auch nicht nach Durchlesen des Datablattes. Verhindert das PSIDLE-Flag einfach nur, daß der ADC-Interrupt durch einen anderen Interrupt unterbrochen wird? Oder wird die CPU durch dieses Flag ausgeschaltet, während der ADC wandelt, wobei umgehend danach alles wieder wie gewohnt weiterläuft (bis zur nächsten Wandlung)? Würde letzteres also einfach nur etwas CPU-Ausführungzeit zugunsten des ADC wegnehmen?
Hallo, das Bit PSIDLE dient dazu, die CPU, den µC-Kern abzuschalten. Grund dafür: möchte man "sehr genaue", d.h. äußerst störungsfreie Wandlungen durchführen, so schaltet man die CPU ab, da durch die Taktimpulse des Digital-Teils Störungen auf dem analogen Eingangssignal entstehen können (der Wert des LSBs beträgt bei 10 Bit Auflösung und 2,5 V Uref ja nur ca. 2 mV und dann machen sich Störungen u.U. schon stark bemerkbar). Da die CPU in diesem Modus deaktiviert ist, kann sie nur wieder durch einen Interrupt aufgeweckt werden, d.h. wenn der A/D-Wandler fertig ist mit der Wandlung, weckt er per Interrupt die CPU auf, diese kann den störungsfrei gewandelten Wert aus den SFRs auslesen und weiterverarbeiten. Der A/D-Wandler muß daher im Interrupt-Betrieb arbeiten. Bezüglich der Wandlungzeiten ändert sich durch dieses Bit nichts. Gruß Carlos
Danke für die Antwort! "weckt per Interrupt die CPU auf": ist damit der Interrupt gemeint, den ich per Flags ADEOC und EADC nutzen kann, um über vollständig ausgeführte Wandlungen benachrichtigt zu werden? Oder ist das ein anderes Ding? Da ADC und CPU nicht parallel laufen, verliert man also durch den Precision Mode keine CPU-Ausführungszeit? Wenn der ADC wandelt, dann wird kein Programmcode ausgeführt (egal ob im normalen oder im Precision-Mode)?
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.