-
ATMega8 ADC problem
Hallo!
Ich möchte einen Beschleunigungssensor an den ATMega8 anschließen
Der Sensor gibt eine Spannung von 0..5V aus.
Erstamal die Schaltung:
Beim Microcontroller habe ich die Pins AREF und AVCC jeweils mit VCC
verbunden und den Ausgang des Sensors dann an ADC0.
mein Programm:
;ADC initialisieren
ldi r16,0b10100110 ;ADC ein, FreeRun, prescaler 64 (für 12Mhz)
out ADCSRA,r16
; zum auslesen
in r17, ADCL
jedenfalls erhalte ich immer den Wert 0
vielleicht ist der Beschleunigungssensor falsch geschaltet
gibt es die Möglichkeit ein Poti anzuschließen, um zu Testen?
-
Ich glaube, wenn das Low-Byte ausgelesen wurde, wird das gesamte ADC-Result-Register nicht mehr aktualisiert, bis das High-Byte ausgelesen wird. Dadurch wird verhindert, dass man, wenn man die Bytes nacheinander ausliest, zwei bytes ausliest, die zu unterschiedlichen Samples gehören.
Ansonsten kann man auch ein Poti anschließen, Mittelabgriff an den ADC, die beiden anderen Anschlüsse einen an 5V und den anderen an GND.
MfG
-
Hab's ausprobiert, leider ohne Erfolg!
ich hab beide ausgelesen auch in umgekehrter Reihenfolge, bekomme immer noch 0 heraus
-
Dann versuch's mal mit dem Poti.
-
OK, habs!
wusste nicht, dass man im Free Running Modus das
ADSC (Bit6) auch setzen muss!!!
trotzdem danke!
-
muss aber feststellen, dass das teil ziemlich flackert (im bereich von
20 einheiten oder so) kann man das irgenwie vermindern?
-
AVcc und ARef müssen von Vcc entkoppelt werden. Da gibt es hier im Forum schon etliche Beiträge zu und es steht ausserdem im Datenblatt. Ohne diese Entkopplung schwanken die ADC-Werte stark.
-
Bei der ADC-Software ist einiges zu beachten.
Schau mal hier:
http://www.mikrocontroller.net/forum/read-4-225010.html
und suche Dir mal die entsprechenden Routinen ;)