#include #include "platform.h" #include "xsysmon.h" #include "sleep.h" #define SYSMON_DEVICE_ID XPAR_SYSMON_0_DEVICE_ID //ID of xadc_wiz_0 #define XSysMon_RawToExtVoltage(AdcData) \ ((((float)(AdcData))*(1.0f))/65536.0f) //(ADC 16bit result)/16/4096 = (ADC 16bit result)/65536 // voltage value = (ADC 16bit result)/65536 * 1Volt static XSysMon SysMonInst; //a sysmon instance static int SysMonFractionToInt(float FloatNum); int main() { u32 TempRawData,VccIntRawData,ExtVolRawData; float TempData,VccIntData,ExtVolData,ec; int xStatus; XSysMon_Config *SysMonConfigPtr; XSysMon *SysMonInstPtr = &SysMonInst; init_platform(); print("Hello World\n\r"); //----------------------------------------------------------------------- SysMon Initialize SysMonConfigPtr = XSysMon_LookupConfig(SYSMON_DEVICE_ID); if(SysMonConfigPtr == NULL) printf("LookupConfig FAILURE\n\r"); xStatus = XSysMon_CfgInitialize(SysMonInstPtr, SysMonConfigPtr,SysMonConfigPtr->BaseAddress); if(XST_SUCCESS != xStatus) printf("CfgInitialize FAILED\r\n"); //----------------------------------------------------------------------------------------- XSysMon_GetStatus(SysMonInstPtr); // Clear the old status while(1) { //wait until EOS activated while ((XSysMon_GetStatus(SysMonInstPtr) & XSM_SR_EOS_MASK) != XSM_SR_EOS_MASK); TempRawData = XSysMon_GetAdcData(SysMonInstPtr, XSM_CH_TEMP);//Read the on-chip Temperature Data TempData = XSysMon_RawToTemperature(TempRawData); printf("\r\nThe Current Temperature is %0d.%03d Centigrades.\r\n",(int)(TempData), SysMonFractionToInt(TempData)); VccIntRawData = XSysMon_GetAdcData(SysMonInstPtr, XSM_CH_VCCINT); //Read the on-chip Vccint Data VccIntData = XSysMon_RawToVoltage(VccIntRawData); printf("The Current VCCINT is %0d.%03d Volts. \r\n", (int)(VccIntData), SysMonFractionToInt(VccIntData)); ExtVolRawData = XSysMon_GetAdcData(SysMonInstPtr,XSM_CH_VPVN); //Read the external Vpn Data ExtVolData = XSysMon_RawToExtVoltage(ExtVolRawData); printf("The Current VpVn is %0d.%03d Volts. \r\n", (int)(ExtVolData), SysMonFractionToInt(ExtVolData)); ExtVolRawData = XSysMon_GetAdcData(SysMonInstPtr,XSM_CH_AUX_MIN); //Read the external Vaux0 Data ExtVolData = XSysMon_RawToExtVoltage(ExtVolRawData); printf("The Current Vaux0 is %0d.%03d Volts. \r\n", (int)(ExtVolData), SysMonFractionToInt(ExtVolData)); ExtVolRawData = XSysMon_GetAdcData(SysMonInstPtr,XSM_CH_AUX_MIN+8);//Read the external Vaux8 Data ExtVolData = XSysMon_RawToExtVoltage(ExtVolRawData); printf("The Current Vaux8 is %0d.%03d Volts. \r\n", (int)(ExtVolData), SysMonFractionToInt(ExtVolData)); ExtVolRawData = XSysMon_GetAdcData(SysMonInstPtr,XSM_CH_AUX_MIN+7);//Read the external Vaux7 Data ExtVolData = XSysMon_RawToExtVoltage(ExtVolRawData); printf("The Current Vaux7 is %0d.%03d Volts. \r\n", (int)(ExtVolData), SysMonFractionToInt(ExtVolData)); ExtVolRawData = XSysMon_GetAdcData(SysMonInstPtr,XSM_CH_AUX_MIN+14);//Read the external Vaux14 Data ExtVolData = XSysMon_RawToExtVoltage(ExtVolRawData); printf("The Current Vaux14 is %0d.%03d Volts. \r\n", (int)(ExtVolData), SysMonFractionToInt(ExtVolData)); ec=ExtVolData/0.36835*(-14)+14; printf("pH value is %0d.%01d \r\n", (int)(ec), SysMonFractionToInt(ec)); usleep(1000000); //wait 3s } return 0; }