Hello Matt,
Device works in auto mode.
Please see below init and simple read functions
void monitor_init()
{
Xuint16 dword;
PORT_OUT(XPAR_CNTRL_GPIO_BASEADDR) |= AMC7823_RESET;
amc7823_SPI_Write(&amc7823, 0x0C, 0xBB30, 1, 1);
xil_printf("Starting monitor (AMC7823) initialization\r\n");
//check <Part Revision Number> register
amc7823_SPI_Read(&amc7823, 0x1E, &dword, 1, 1);
xil_printf("AMC7823_REV: 0x%X\r\n", dword);
//Power-Down Register
//set PADC to '1' to enable ADC operation
//set PDACn to '0' to disable DAC operation
//set PTS to '0' to disable the precision current source
//set PREFB to '0' disable the reference buffer amplifier
amc7823_SPI_Write(&amc7823, 0x0D, 0x8000, 1, 1);
//AMC Status/Configuration Register
//set SREF to '0' to select internal refence
//set GREF to '0' to select +1.25V reference
//set ECNVT to '0' to enable internal trigger mode
amc7823_SPI_Write(&amc7823, 0x0A, 0x0000, 1, 1);
//ADC Control Register
//set CMODE to '1' for auto mode (continuous conversion)
//set SA to 0 to start measure at channel 0
//set EA to 8 to end measure at channel 8
amc7823_SPI_Write(&amc7823, 0x0B, 0x8080, 1, 1); Sleep(2);
}
void monitor_displayamctemp()
{
int dword;
float result;
amc7823_SPI_Read(&amc7823, 0x08, &dword, 1, 0);
//calculate deltaVbe in mV
result = 0.61f * (dword&0xFFF);
//calculate temperature in C
result = 2.60f * result - 273.0f;
xil_printf(" Temperature : %d C\r\n", (Xuint32)result);
}
BR&Thanks,
Serge