Forum: Mikrocontroller und Digitale Elektronik 24 bit AD Wandler


von Matthias (Gast)


Lesenswert?

Hallo ich habe hier einen Beispielcode für einen
MSC 1210 Controller (Temperatur sensor auslesen).
Ich habe jetzt einen regelbaren Widerstand an AIN1 angeschlossen und 
will den digitalen Wert der angelegten Spannung anzeigen lassen.
Hier wird die Funktion "bipolar()" verwendet die anscheinend den Wert 
enthält.
Wie sieht die Funktion aus?
Gibt es einfachere Möglichkeiten sich den Wert anzeigen zu lassen?
Wo ist der digitale Spannungswert gespeichert?

#include <REG1210.H>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define LSB 298.0232e-9 /* LSB=5.0/2^24 */
#define ALPHA 2664.7 /* derived for some devices */
extern void autobaud(void);
extern long bipolar(void);
void main(void)
{
float volts, temp, resistance, ratio, lr, ave;
int i, k, decimation = 1728, samples;
CKCON = 0; // 0 MOVX cycle stretch
autobaud();
printf(”2MSC1210 ADC Temperature Test\n”);
//Timer Setup
USEC= 10; // 11MHz Clock
ACLK = 9; // ACLK = 11,0592,000/10 = 1,105,920 Hz
// modclock = 1,105,920/64 = 17,280 Hz
// Setup ADC
PDCON &= 0x0f7; //turn on adc
ADMUX = 0x0FF;//Select Temperature Diodes
ADCON0 = 0x30;//Vref On, Vref Hi, Buff off, BOD off, PGA=1
ADCON2 = decimation & 0xFF; // LSB of decimation
ADCON3 =(decimation>>8) & 0x07; // MSB of decimation
ADCON1 = 0x01; // bipolar, auto, self calibration, offset, gain
printf ("Calibrating. . .\n");
for (k=0; k<4; k++)
{
// Wait for Four conversions for filter to settle
// after calibration
while(!(AIE & 0x20)); // Wait for data ready
lr = bipolar(); // Dummy read to clear ADCIRQ
}
samples = 10; // The number of voltage samples we will average
while(1)
{
ave = 0;
for (i = 0; i < samples; i++)
{
while (!(AIE & 0x20)); // Wait for new next result
ave += bipolar() * LSB; // This read clears ADCIRQ
}
volts = ave/samples;
temp = ALPHA * volts - 282.14;
printf ("V=%f, resistance=%f, Temp=%f degrees C\n",
volts, resistance, temp);
}// while
} //main

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.