Gast
#1389917
Hallo alle zusammen,
ich habe ein kleines Problem mit dem AD Wandler beim XMega128A1.
Ich möchte dass mir der angelegte Spannungswert an PortA Pin0 mit dem AD
Wandler ausgewertet wird. Leider verändert sich der angezeigte Wert
nicht (der Wert bleibt gleich) in Abhängigkeit von der angelegten
Spannung.
Das heißt der Quellcode müsste fehlerhaft sein. Leider finde ich den
Fehler nicht. Kann mir jemand helfen? Vielen Dank im Voraus :)
Mein Quellcode:
#include <avr/io.h>
#include <avr/interrupt.h>
double x= 0;
unsigned char temp;
void adc_init(void)
{
ADCA.CTRLA = 0x41;
ADCA.CTRLB = 0x04;
ADCA.REFCTRL = 0x02;
ADCA.EVCTRL = 0x00;
ADCA.PRESCALER = 0x00;
ADCA.CH0.CTRL = 0x00;
ADCA.CH0.MUXCTRL = 0x00;
ADCA.CH0.INTCTRL = 0x03;
PMIC.CTRL = 0x07;
sei();
}
void Osi_init(void)
{
OSC.CTRL =3;
while(OSC.STATUS != 3);
CCP = 0xD8;
CLK.CTRL = 1;
}
ISR(ADCA_CH0_vect)
{
temp = ADCA.CH0.RES;
x = (double)temp;
ADCA.CH0.CTRL = 0x80;
}
int main(void)
{
PORTA.DIRCLR = 0xff;
adc_init();
Osi_init();
ADCA.CH0.CTRL = 0x80;
while(1){}
}