Bekomme ADC Noise Canceler beim ATMega16 nicht zum laufen

OP #327599
Lesenswert?
• ▲
▼
Ich versuche nun schon seit langem den AD-Wandler des ATMega16 im
"Noise Canceler"-Modus zu betreiben. Er wandelt aber nicht und ADIF
wird auch nicht gesetzt. Ich finde meinen Fehler einfach nicht.

Ich gehe folgendermaßen vor:
ADEN=1, ADATE=0 und den Teiler einstellen (125kHz)
ADMUX (externe Ref und single ended) einstellen


Wenn ich jetzt über ADSC-setzen eine einfache Wandlung starte, bekomme
ich das richtige Ergebnis.

Um nun den "Noise Canceler" zu benutzen, muss ich doch nur Interrupts
zulassen und im MCUCR-Register eine dezimale 80 reinschreiben (SM0=1 und
SE=1), oder verstehe ich das falsch? (Datenblatt Seite 31)
Mach ich das so, passiert nichts.
Kann mir jemand sagen, was ich im Datenblatt falsch verstanden oder
übersehen habe?

Und sehe ich das richtig, dass der UART die CPU im "Noise
Caneler"-Schlafzustand nicht wecken kann (Datenblatt Seite 32)?

Danke

Gruß

Thomas
Gast #327600
Lesenswert?
• ▲
▼
Also nach weiteren Versuchen, bin ich mir nun fast sicher, dass das
ATMega garnicht in den Schlafmodus wechselt und folglich auch keine
Wandlung startet. Gibt es bei den Sleep-Modes noch was zu beachten,
oder genugt einfach das setzen des SE-Bits und des entsprechenden
Sleepmodus über die SMx-Bits?
Gast #327603
Lesenswert?
• ▲
▼
Ist das nicht das gleiche, wenn ich die Bit händisch setzte, d.h. nicht
diese Funktion benutze? Hab den code der fertigen sleep-Funktion gerade
nicht zur Hand, werde aber heute abend nochmal reinschauen.

Gruß

Thomas
Gast #327604
Lesenswert?
• ▲
▼
Das hat mit den Bits nix zu tun. Der µC schläft erst dann ein, wenn er
den (Assembler-) Befehl 'sleep' hört. Das Setzen der Bits ist nur
Vorarbeit. sleep_cpu() (in GCC-C) macht nix anderes, als diesen Befehl
einzufügen. Falls Du in CodeVision programmierst, geht das über
#asm("sleep").
Gast #327605
Lesenswert?
• ▲
▼
Ahh, jetzt hab ich es verstanden. Wußte nicht, dass es da extra einen
Befehl für gibt. Ich dachte ein Schreiben ins Sleep-Mode-Register löst
das Schlafen automatisch aus. Aber es gibt ja tatsächlich einen extra
Befehl dafür. Dann wird einiges klarer.
Immer wieder liegt es nur daran, dass ich manches zu flüchtig lese.

Vielen Dank

Gruß

Thomas

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.