www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik wie aktiviert man den noise Reduction Interrupt ?


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Josef Mayr (josefm)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Irgendwie funktioniert bei mir der noise Reduction Interrupt nicht
oder nicht richtig.
MCU: ATMega328 1MHz
Wenn ich das Flag ADSC abfrage also Polling dann bekomme ich den ADC
Wert.
Nur mit Interrupt und Noise Reduction gehts nicht.
In der Beschreibung von ATMEL heißt es man solle Single Conversion Mode
verwenden. Also ADATE = 0  und damit kein free Running.
Im Anhang ist die Initialisierungroutine enthalten.
Eventuell, bzw. höchstwarscheinlich fehlt da noch was.

Josef

Autor: Stefan Ernst (sternst)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Josef Mayr schrieb:
> Im Anhang ist die Initialisierungroutine enthalten.

Wieso als .txt und nicht .c?

Josef Mayr schrieb:
> Eventuell, bzw. höchstwarscheinlich fehlt da noch was.

Ich sehe nicht, dass du irgendwo eine Wandlung startest.

> // Bit 6 – ADSC: ADC Start Conversion   but not for noise reduction ?

Wie kommst du auf das "but not for noise reduction"?

Autor: Peter Dannegger (peda)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Bei allen Sleep-Sachen ist die Reihenfolge wichtig:

- setze ADC-Sleepmode
- cli
- disable alle anderen Interrupts
- starte ADC
- sleep
- sei

Den Interrupt leer lassen und den ADC nach dem SEI auslesen.
Das spart haufenweise push/pop.

Meine Erfahrung ist aber, daß die Wandlung dadurch kaum besser wird.

Dafür hat man heftige Nebenwirkungen, z.B. Timer0,1,3 und UART gehen 
falsch, also auch die PWMs!


Peter

Autor: Peter Dannegger (peda)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ups, Schusselfehler.
Das SEI gehört natürlich direkt vor das SLEEP!

- setze ADC-Sleepmode
- cli
- disable alle anderen Interrupts
- enable ADC-Interrupt, starte ADC
- sei
- sleep

Den Interrupt leer lassen und den ADC nach dem SLEEP auslesen.
Das spart haufenweise push/pop.


Peter

Autor: Hannes Lux (hannes)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Ups, Schusselfehler.

Na denn iss ja gut... - Ich wollte schon zweifeln... ;-)))

...

Autor: Dosmo (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> - sei
> - sleep

Übrigens, nur so am Rande:
In dieser Konstellation werden die Interrupts erst mit "sleep" scharf 
geschaltet, und das ist auch gut so, damit nicht ausversehen noch ein 
Interrupt zwischen "sei" und "sleep" reingrätscht.

Autor: Uwe S. (de0508)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo Dosmo,

wenn man
- disable alle anderen Interrupts
durchführt und dann nur den ADC wieder freischaltet, ist es doch sehr 
sehr unwahrscheinlich, dass eine ADC-Wandlung innerhalb 2er Zyklen 
fertig ist.

Oder ?

Autor: Peter Dannegger (peda)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Uwe S. schrieb:
> wenn man- disable alle anderen Interrupts
> durchführt und dann nur den ADC wieder freischaltet, ist es doch sehr
> sehr unwahrscheinlich

Stimmt, wenn man das Magazin rausnimmt, braucht man den Sicherungshebel 
nicht mehr runter zu drücken.
Bloß manchmal liegt man doch tot am Boden und denkt sich, da steckte 
wohl noch eine Patrone im Lauf.

Es ist einfacher, immer die sichere Variante zu nehmen, als jedesmal neu 
nachzudenken. Der Mensch ist vergeßlich.


Peter

Autor: cyblord ---- (cyblord)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Die Wandlung wird beim Eintritt in den ADC Noise Reduction Sleep Mode 
automatisch gestartet. Muss also nicht vorher gestartet werden.

gruß cyblord

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




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 erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net