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
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
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.