www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 24 bit AD Wandler


Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.