PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GETADC(32)



oratus sum
28.04.2010, 17:51
Hallo,

Da ich bei meinem RN2560-Modul die auch die ADC kanäle 8-15 brauche verwende ich die Funktion

GETADC(32) um z.b. ADC8 auszulesen.

Das funktioniert ganz wunderbar allerdings bekomme ich komische Werte:

UNTEN: 20608
UNTEN: 5312
UNTEN: 24256

Unten steht für ein IR-Sharp Sensoren, welcher auf den Boden gerichtet ist. Man sieht, dass sich der Wert verringerte als ich den Sensor vom Boden entfernt habe.

Bei den ADC Kanälen 0-7 bekomme ich Werte von 0-1023, doch bei den Kanälen 8-15 also 32-39, solche Werte.

Der Wert wird als WORD gelesen, bei allen Kanälen.

Bräuchte echt Hilfe...

Che Guevara
28.04.2010, 18:51
Hallo Oratus Sum,

kenn jetzt das Board nicht, aber könnte es sein, dass der AVR einen 16Bit ADC hat (zumindest bei ein paar pins)?

Gruß
Chris

oratus sum
28.04.2010, 20:40
Im Datenbatt des MEGA2560 steht 10bit bei allen AD-Ports

[EDIT]

Ich hab bisschen nachgeforscht udn gesehen, dass die höheren AD Ports verstärkt werden.

Im Datenblatt des Mega2560 steht:

101001(1) ADC9 ADC8 10x
101010(1) ADC8 ADC8 200x
101011(1) ADC9 ADC8 200x
101100(1) ADC10 ADC10 10x
101101(1) ADC11 ADC10 10x
101110(1) ADC10 ADC10 200x
101111(1) ADC11 ADC10 200x

Auf Seite 293 nachzulesen.

Allerdings weiß ich jetzt nicht wie ich das abschalten kann.
in der Hilfe von bascom steht:

var = GETADC(channel [,offset])

offset kann man gain controllieren.

Ich nehme stark an, dass ch dort die Adresse für den unverstärkten AD wandler einfügen muss.

Mal testen....

Besserwessi
28.04.2010, 21:03
Der Wert von 32 ist zu groß für die GETADC funktion. In dem MUX register gibt es neben der Auswahl des Kanals noch andere Funktionen. Vermutlich wird bei GETADC(32) kanal 0 Gemessen, dann aber mit faschen einsellungen für ADLAR. Die Werte werden daruch um 6 Bits nach links verschoden - dadurch die großen Werte, und auch alle gut teilbar durch 64 sind.

oratus sum
28.04.2010, 21:07
Bei GETADC(15) wird nichts venünftiges gemessen, also sicher nciht Kanal 15, denn dort ändert sich nichts obwohl sich die Spannung schon ändert.

Wenn ich als offset:
110111

angebe bekomme ich die gewohnten Werte, jedoch wäre das der Differentialmodus mit ADC9 zusammen. Offset 100111 wäre glaube ich der mit gain 1x ich probiere es gerade.

[EDIT]

Okay...
Es funktioniert:

GETADC(0,64)

Für ADC 8.

GETADC(1,64)

Für ADC 9

ADC 0, 64 ist 100000
ADC 1, 64 ist 100001

usw aus dem Datenblatt

Ich verstehe gerade nur nicht wieso das Bascom nicht gleich richtig setzt. Es müsste doch mit getadc(8) locker funktionieren...