Forum: Mikrocontroller und Digitale Elektronik Bascom + 10bit A/D wandler auslesen


von Alber (Gast)


Lesenswert?

Hallo

Ich habe bisher nur mit den 8 bit A/d Wandler gearbeitet da reicht es
ja wenn man das ADCH Register ausließt.Für 10 bit A/D Wandlung werden
aber noch 2 Bits ins ADCL Register geschrieben soweit ich weis.

Muß Ich nun beide Register seperat auslesen und dann zusammenrechnen ?

Gruß
Alber

von Sebastian K. (basti)


Lesenswert?

Hallo!
Mit Bascom funktioniert das ganz einfach, wenn alles richtig
Konfiguriert ist (also z.B.: Config ADC = Single, Prescale = Auto,
Reference = Avcc) dann reicht folgendes:
Dim Ergebnis as Word
.
.
.
Ergebnis = Getadc(0)

Bei Getadc steht der Wert in den Klammern für den ADC-Kanal.

Wenn du das nicht über diese Variante machen willst, musst du zuerst
das ADCL Register dann das ADCH Register auslesen. Wenn du das
ADCL-Register gelesen hast macht der ADC nicht weiter bis auch das ADCH
Register gelesen wurde.
Am einfachsten ist es wenn du hier mit einer Overlay-Variable
arbeitest.

MfG
Basti

von Simon K. (simon) Benutzerseite


Lesenswert?

Ja, und in Assembler und C ist es noch viel einfacher:

Schau dir mal in den Register-beschreibungen des ADCs das Bit ADLAR an.
Das ist exakt das, was du suchst. Das setzt du einfach, dann wird das
10Bit Word so organisiert, dass die 8 höchstens Bits in ADCH stehen.
Und so kannst du ganz einfach ADCH auslesen und hast den ganzen Krempel
in 8 Bit.

von AVRNIX (Gast)


Lesenswert?

Es sollte unter Sample ein Beispiel finden bzw. in der Hilfe von Bascom
siehe GETADC


'--------------------------------------------------------------------
'                  ADC.BAS
'  demonstration of GETADC() function for 8535 micro
'--------------------------------------------------------------------
$regfile = "m163def.dat"

'configure single mode and auto prescaler setting
'The single mode must be used with the GETADC() function

'The prescaler divides the internal clock by 2,4,8,15,32,64 or 128
'Because the ADC needs a clock from 50-200 KHz
'The AUTO feature, will select the highest clockrate possible
Config Adc = Single , Prescaler = Auto
'Now give power to the chip
Start Adc

'With STOP ADC, you can remove the power from the chip
'Stop Adc

Dim W As Word , Channel As Byte

Channel = 0
'now read A/D value from channel 0
Do
  W = Getadc(channel)
  Print "Channel " ; Channel ; " value " ; W
  Incr Channel
  If Channel > 7 Then Channel = 0
Loop
End

'The new M163 has options for the reference voltage
'For this chip you can use the additional param :
'Config Adc = Single , Prescaler = Auto, Reference = Internal
'The reference param may be :
'OFF      : AREF, internal reference turned off
'AVCC     : AVCC, with external capacitor at AREF pin
'INTERNAL : Internal 2.56 voltage reference with external capacitor ar
AREF pin

'Using the additional param on chip that do not have the internal
reference will have no effect.

von Marc M. (bytewood) Benutzerseite


Lesenswert?

Hallo zusammen!

vielleicht hilft Dir folgender Link weiter.
Bezieht sich zwar auf Bascom allgemein, aber dafür sehr detailliert:

http://web.inter.nl.net/users/cpotma/

Grüße

von Alber (Gast)


Lesenswert?

Hallo

Vielen Dank für die vielen Antworten.

Gruß
Alber

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.