Gast
#3704168
Hallo zusammen!
Ich bin gerade dabei den ADC und DAC eines XMega128A3 zum laufen zu
bringen. Bisher klappt das auch schon ganz gut. Damit die Werte noch ein
bisschen genauer werden, wollte ich zunächst den ADC kalibrieren.
Dazu sollen laut Datenblatt im Controller Kalibrationswerte
abgespeichert sein. Diese habe ich mit folgendem Code aus dem Internet
ausgelesen und in das entsprechende Register geschrieben.
void ADCA_Cal(void)
{
ADCA.CALL =
LeseKalibrationsbyte(offsetof(NVM_PROD_SIGNATURES_t,
ADCACAL0));
ADCA.CALH =
LeseKalibrationsbyte(offsetof(NVM_PROD_SIGNATURES_t,
ADCACAL1));
}
int LeseKalibrationsbyte(int Index)
{
int result;
NVM_CMD = NVM_CMD_READ_CALIB_ROW_gc;
result = pgm_read_byte(Index);
NVM_CMD = NVM_CMD_NO_OPERATION_gc;
return(result);
}
Allerdings ändern sich dadurch die Werte des ADC nicht. Deshalb habe ich
die Werte, die in CALL und CALH geschrieben werden, auf das
angeschlossene LCD ausgegeben und beide waren 0.
Kann das sein? Mir scheint das recht unwahrscheinlich oder habe ich
irgendwas falsch gemacht?
Vielen Danke!
Fabian
