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


von karlheinz (Gast)


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

von Falk W. (dl3daz) Benutzerseite


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 ;-)

von karlheinz (Gast)


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.

von karlheinz (Gast)


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.

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.