Forum: Mikrocontroller und Digitale Elektronik Verständnis von PSIDLE beim ADC des Atmel T89C51CC02


von P. G. (pgr)


Lesenswert?

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?

von Carlos (Gast)


Lesenswert?

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

von P. G. (pgr)


Lesenswert?

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
Noch kein Account? Hier anmelden.