mikrocontroller.net

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


Autor: P. Gräbel (pgr)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Carlos (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: P. Gräbel (pgr)
Datum:

Bewertung
0 lesenswert
nicht 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)?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.