Forum: Mikrocontroller und Digitale Elektronik ADC auslesen


von Peter Pan (Gast)


Lesenswert?

Hallo zusammen,

ich bin neu auf dem Gebiet der uC.
Arbeite gerade an einem Projekt, wo ich einen 16 Bit- AD- Wandler 
auslesen  und mit einem Atmega 256 über SPI die Werte auf dem Display 
ausgeben möchte.
Wie fange ich da am besten an?

MfG Peter

von Jojo S. (Gast)


Lesenswert?

links oben. AVR, Tutorial, GCC-Tutorial
http://www.mikrocontroller.net/articles/AVR-Tutorial

von Stephan M. (multimeter90)


Lesenswert?

Herzlich willkommen!

Willst du wissen wie du dein Programm aufbauen, oder wie du dich mit 
einem µC einarbeiten könntest?

Für dein Programm:
- ADC intialiseren
- Display initialiseren (falls nötig)
- ADC auslesen
- Messergebnis auswerten und aufbereiten
- Display das Ergebnis anzeigen lassen


Um überhaupt erstmal mit einem µC klar zu kommen kannst du ja vorerst 
nur das Display ansteuern und dir mal ein paar Zahlen oder so ausgeben 
lassen.

von Peter Pan (Gast)


Lesenswert?

Vielen Dank für die schnellen Antworten.
Display ist init. und läuft auch über SPI.
Habs mitm STK 500 gemacht.
Brauche nur eine Routine, um den ADC auszulesen.
Verstehe das mit dem high und lowbyte nicht.
in welches Register wird der Messwert geschrieben und wo muss ich den 
wieder abholen usw.

von Düsendieb (Gast)


Lesenswert?

Peter Pan schrieb:
> Verstehe das mit dem high und lowbyte nicht.

wenn Dein Programm in C geschrieben ist, brauchst Du dir darum keinem 
Kopf zu machen. Darum kümmert sich der Compiler

von Udo S. (urschmitt)


Lesenswert?

Peter Pan schrieb:
> Verstehe das mit dem high und lowbyte nicht.

Ein 16Bit Wandler liefert einen 16 Bit Wert zurück. Das sind 2 Byte.
Das Highbyte ist der höherwertige Teil davon, das Lowbyte der 
niederwertige.
Beispiel:
0x1234 ist der Messwert.
Highbyte = 0x12
Lowbyte = 0x34

von Peter Pan (Gast)


Lesenswert?

Ja habe ich C geschrieben.

Also mein Display läuft.
Muss jetzt ein Programm schreiben, womit ich die Messwerte des ADC 
auslesen  und auf dem Display ausgeben kann.
Habe da keine Ahnung wie ich da anfangen soll.
HAbe einen 16 Bit ADC und den Atmega 256.

von Sebastian M. (compressed)


Lesenswert?

hat der Wandler auch einen Namen?

von Mike (Gast)


Lesenswert?

Peter Pan schrieb:
> Habe da keine Ahnung wie ich da anfangen soll.

Mit der Initialisierung des Wandler. Wie das geht steht im Datenblatt 
des Wandlers. Da die Spannung meiner Glaskugel grad aus ist und sie den 
Eimer Spannungsabfall auch nicht nutzen will vermag ich nicht mehr zu 
sagen.

von Stephan M. (multimeter90)


Lesenswert?

Hast du einen externen ADC? Wenn ja, wie sprichst du den an?
Ansonsten musst du den Messvorgang erst einmal starten, dann etwas 
warten, eventuell 10ms, und dann die zwei Register auslesen und in zwei 
eigene Variablen speichern.
1
unsigned char byte1 = 0;
2
unsigned char byte2 = 0;
3
unsigned int ergebnis = 0;
4
5
// starten
6
// warten
7
// auslesen
8
byte1 = LOWBYTE-NAME;
9
byte2 = HIGHBYTE-NAME;
10
11
ergebnis = (byte2<<8)+byte1;

In ergebnis steht dann ein wert mit maximal 65000 oder so drin, das 
entspricht dann deinem maximalen Wert, der vorgegeben wird durch deine 
referenz-spannung, also sicherlich 5V. Das musst du dann entsprechend 
umrechnen und dann hast du eine Spannung.

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.