www.mikrocontroller.net

Forum: Compiler & IDEs adc aktivieren und deaktivieren...


Autor: karlheinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
adc-porta kurzfristig sperren.

DDRA &=~(1<<PBA1) //ADC Port als Eingang deklarieren
ADCSRA|=(1<<ADEN) // Teilt dem Board mit das der jeweilige Port für ADC
verwendet wird

kann ich mit DDRA |=(1<<PBA1) den port deaktivieren und dann mit DDRA
&=~(1<<PBA1) wieder
aktivieren ohne diesen befehl wieder einzusetzen: ADCSRA|=(1<<ADEN) ?

mfg karlheinz

Autor: Falk Willberg (dl3daz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Karl-Heinz,
wenn ich das Manual richtig interpretiere, geht das genauso, wie Du
meinst, mit der Einschränkung, daß das während einer AD-Wandlung zu
falschen Ergebnissen führen kann.

Gruß,
Falk
P.S.: Ich habe es nicht probiert, nur nachgelesen, weil sich mir diese
Frage ohnehin morgen stellen wird ;-)

Autor: karlheinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo, meine lösung oben klappt nicht , weil ich mit dem adc-interrupt
arbeite, den brauche ich als radzähler. der adc-port-0 (porta-0)bleibt
immer aktiv, auch wenn ich kein mux aktiviere, weil mux0 schon
adc-port-1 (porta-1)ist. ich arbeite mit dem avr16.

#define ADMUX   _SFR_IO8(0x07)
#define MUX0    0
#define MUX1    1
#define MUX2    2
#define MUX3    3
#define MUX4    4
#define ADLAR   5
#define REFS0   6
#define REFS1   7


diese lösung funktioniert astrein:
ich aktiviere AMUX=(1<<MUX4) und schon sind alle ausgeschaltet, weil es
den mux4 beim avr16 nicht gibt. jetzt kann ich nach bedarf mit:
AMUX=(1<<MUX0)|(1<<REF0) den adc-port1 einschalten und mit
AMUX=(1<<MUX4) den ganzen port ausschalten für den adc-interrupt.

jetzt kommt auch kein chaos mehr zustande und kann meine einzelnen
sharp adc3 bis adc7 einzeln abfragen über den interrupt.
z.b AMUX=(1<<MUX0)|(1<<MUX1)|(1<<REF0) ist porta-3.

Autor: karlheinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also wenn der adc-interrupt läuft, kann ich alle adc nur deaktivieren
mit dem mux4 weil der avr16 den nicht kennt. der adc-porta0 läuft
immer aktiv mit. wenn ich den mux0 einschalte (adc-porta1), laufen
immer porta0 und porta1 als adc ohne das ich es möchte.

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.