Forum: Mikrocontroller und Digitale Elektronik ADC ATxmega32A4


von Alfred Witzl (Gast)


Lesenswert?

Hallo,
hat jemand einen lauffähigen Programm-Code der z.B. an PA0 des 
ATxmega32A4
eine Spannung misst.
Ich verwende den AVR-Compiler von Imagecraft.
Falls du einen anderen Compiler verwendest bitte alle *.h-Files
mitliefern.
alfred.witzl@googlemail.com
Mercy im voraus...

von Stefan (Gast)


Lesenswert?

Sehr unhöflich einfach so mal ein Programm zu fordern. Probier es hald 
erst einmal selbst, und schreib dann wo du Probleme hast...

von Alfred Witzl (Gast)


Lesenswert?

Entschuldige, aber natürlich hab ich es erst mal selber probiert.
Das wirkliche Problem habe ich bei der Kalibrierung, wo mein Compiler
folgende Funktionen bzw. Konstanten nicht kennt:
- NVM_CMD
- pgm_read_byte()
- ADCA.CALL
- ADCA.CALH
Wahrscheinlich sind alle Beispiele für den GCC ausgelegt ?

von Harry M. (harry4516)


Lesenswert?

Hallo Alfred,

- NVM_CMD
- pgm_read_byte()
sind für den Zugriff auf das Program Memory, das brauchst du zunächst 
nicht für den ADC (bzw. weiter unten für Methode a.)

- ADCA.CALL
- ADCA.CALH
diese brauchst du, allerdings heißen die bei allen Compilern geringfügig 
anders. Da musst du bei deinem Compiler im Manual nachsehen. Falls dort 
nichts steht nimm lieber einen anderen der für den Xmega besser ist.

Jetzt mal zur Kalibrierung:
dieses Thema ist beim ATXmega etwas speziell und gewöhnungsbedürftig
weil es einen absichtlichen Offset gibt, den man rausrechnen muss.
Diesen Offset zu bestimmen gibt es verschiedene Wege:
a) den von Atmel programmierten Calib-Wert auslesen
b) den Offset selbst bestimmt. Dazu legt man einen ADC Eingang fest auf 
GND und misst die Spannung nach dem Reset. Diese Spannung zieht man 
später von den Messwerten ab. So macht es zB der CAVR Compiler.
c) den festen Offsetwert aus dem Datasheet abziehen

Ich habe das alles durchprobiert und habe gesehen dass es für 99% der 
Anwendungen ausreicht wenn man den Festwert aus dem Datasheet abzieht. 
Der Messwert mit Methode B) unterscheidet sich kaum davon, vielleicht um 
1 oder maximal 2.

Falls du dir schwer tust den nötgen Code für den ADC zu schreiben, dann 
lade dir die freie Version des CodeVision CAVR Compilers herunter. Da 
ist ein Code-Wizard drin wo du mit ein paar Mausklicks den kompletten 
Code für den ADC automatisch erzeugen kannst.

viel Erfolg
Harry

von Alfred Witzl (Gast)


Lesenswert?

Hallo Harry,
da hast mir super weitergeholfen, Mercy...

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.