Ejemplo n.º 1
0
/***************************************************************************
* Looks up the current config and initializes psXADC
***************************************************************************/
void init_XADC()
{
    int Status;
    XAdcPs_Config *Config;

    Config = XAdcPs_LookupConfig(XPAR_PS7_XADC_0_DEVICE_ID);
    if (NULL == Config) {
        //return XST_FAILURE;
    }

    Status = XAdcPs_CfgInitialize(&AdcInstancePtr, Config, Config->BaseAddress);
    if (Status != XST_SUCCESS) {
        xil_printf("XADC initialization FAILED!\n \r");
        //return XST_FAILURE;
    }
    else {
        xil_printf("XADC initialization SUCCESS!\n \r");
    }
}
int main(void)
{
	//temperature readings
	u32 TempRawData;
	float TempData;

	//Vcc Int readings
	u32 VccIntRawData;
	float VccIntData;

	//Vcc Aux readings
	u32 VccAuxRawData;
	float VccAuxData;

	//Vbram readings
	u32 VBramRawData;
	float VBramData;

	//VccPInt readings
	u32 VccPIntRawData;
	float VccPIntData;

	//VccPAux readings
	u32 VccPAuxRawData;
	float VccPAuxData;

	//Vddr readings
	u32 VDDRRawData;
	float VDDRData;

	XAdcPs_Config *XADCConfigPtr;
	XAdcPs *XADCInstPtr = &XADCMonInst;

	XADCConfigPtr = XAdcPs_LookupConfig(XPAR_PS7_XADC_0_DEVICE_ID);
	if (XADCConfigPtr == NULL) {
	    printf("Error Configuring XADC\n\r");
		return XST_FAILURE;
	}

	XAdcPs_CfgInitialize(XADCInstPtr,XADCConfigPtr,XADCConfigPtr->BaseAddress);

	XAdcPs_SetSequencerMode(XADCInstPtr,XADCPS_SEQ_MODE_SINGCHAN);

     //disable alarms
     XAdcPs_SetAlarmEnables(XADCInstPtr, 0x0);

     //configure sequencer to just sample internal on chip parameters
     XAdcPs_SetSequencerMode(XADCInstPtr, XADCPS_SEQ_MODE_SAFE);

     //configure the channel enables we want to monitor
     XAdcPs_SetSeqChEnables(XADCInstPtr,XADCPS_SEQ_CH_TEMP|XADCPS_SEQ_CH_VCCINT|XADCPS_SEQ_CH_VCCAUX|XADCPS_SEQ_CH_VBRAM|XADCPS_SEQ_CH_VCCPINT|
     		XADCPS_SEQ_CH_VCCPAUX|XADCPS_SEQ_CH_VCCPDRO);

   //  while(1){

          TempRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_TEMP);
           TempData = XAdcPs_RawToTemperature(TempRawData);
           printf("Raw Temp %lu Real Temp %f \n\r", TempRawData, TempData);

           VccIntRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VCCINT);
           VccIntData = XAdcPs_RawToVoltage(VccIntRawData);
           printf("Raw VccInt %lu Real VccInt %f \n\r", VccIntRawData, VccIntData);

           VccAuxRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VCCAUX);
           VccAuxData = XAdcPs_RawToVoltage(VccAuxRawData);
           printf("Raw VccAux %lu Real VccAux %f \n\r", VccAuxRawData, VccAuxData);

           VBramRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VBRAM);
           VBramData = XAdcPs_RawToVoltage(VBramRawData);
           printf("Raw VccBram %lu Real VccBram %f \n\r", VBramRawData, VBramData);

           VccPIntRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VCCPINT);
           VccPIntData = XAdcPs_RawToVoltage(VccPIntRawData);
           printf("Raw VccPInt %lu Real VccPInt %f \n\r", VccPIntRawData, VccPIntData);

           VccPAuxRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VCCPAUX);
           VccPAuxData = XAdcPs_RawToVoltage(VccPAuxRawData);
           printf("Raw VccPAux %lu Real VccPAux %f \n\r", VccPAuxRawData, VccPAuxData);

           VDDRRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VCCPDRO);
           VDDRData = XAdcPs_RawToVoltage(VDDRRawData);
           printf("Raw VccDDR %lu Real VccDDR %f \n\r", VDDRRawData, VDDRData);
       //   }


}//end main
Ejemplo n.º 3
0
void xadc(client *c, int argc, sds *argv)
{
	XAdcPs_Config *ConfigPtr;
	XAdcPs *XADCInstPtr = &XADCMonInst;

	//status of initialisation
	int Status_ADC;

	//temperature readings
	u32 TempRawData;
	float TempData;

	//Vcc Int readings
	u32 VccIntRawData;
	float VccIntData;

	//Vcc Aux readings
	u32 VccAuxRawData;
	float VccAuxData;

	//Vbram readings
	u32 VBramRawData;
	float VBramData;

	//VccPInt readings
	u32 VccPIntRawData;
	float VccPIntData;

	//VccPAux readings
	u32 VccPAuxRawData;
	float VccPAuxData;

	//Vddr readings
	u32 VDDRRawData;
	float VDDRData;

	printf("Start to do stuff\n");

    //XADC initilization
    ConfigPtr = XAdcPs_LookupConfig(XPAR_AXI_XADC_0_DEVICE_ID);
    if (ConfigPtr == NULL) {
      return XST_FAILURE;
    }

	printf("Initialised\n");
    Status_ADC = XAdcPs_CfgInitialize(XADCInstPtr,ConfigPtr,MappedXADCBaseAddress);
    if(XST_SUCCESS != Status_ADC){
      printf("ADC INIT FAILED\n\r");
      addReplyStatus(c, "+NOT OK");
    }

    printf("Self-test\n");
    //self test
    Status_ADC = XAdcPs_SelfTest(XADCInstPtr);
 	if (Status_ADC != XST_SUCCESS) {
 	  printf("Failed Self-test!\n");
 		addReplyStatus(c, "+NOT OK");
 	}

	printf("Set squencer\n");
 	//stop sequencer
 	XAdcPs_SetSequencerMode(XADCInstPtr,XADCPS_SEQ_MODE_SINGCHAN);

    //disable alarms
    XAdcPs_SetAlarmEnables(XADCInstPtr, 0x0);

    //configure sequencer to just sample internal on chip parameters
    XAdcPs_SetSeqInputMode(XADCInstPtr, XADCPS_SEQ_MODE_SAFE);

    //configure the channel enables we want to monitor
    XAdcPs_SetSeqChEnables(XADCInstPtr,XADCPS_CH_TEMP|XADCPS_CH_VCCINT|XADCPS_CH_VCCAUX|XADCPS_CH_VBRAM|XADCPS_CH_VCCPINT| XADCPS_CH_VCCPAUX|XADCPS_CH_VCCPDRO);

	printf("Begin Loop\n");
    /*while(1){
      TempRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_TEMP);
      TempData = XAdcPs_RawToTemperature(TempRawData);
      printf("Raw Temp %lu Real Temp %f \n\r", TempRawData, TempData);

      VccIntRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VCCINT);
      VccIntData = XAdcPs_RawToVoltage(VccIntRawData);
      printf("Raw VccInt %lu Real VccInt %f \n\r", VccIntRawData, VccIntData);

      VccAuxRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VCCAUX);
      VccAuxData = XAdcPs_RawToVoltage(VccAuxRawData);
      printf("Raw VccAux %lu Real VccAux %f \n\r", VccAuxRawData, VccAuxData);

      //VrefPRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VREFP);
      //VrefPData = XAdcPs_RawToVoltage(VrefPRawData);
      //printf("Raw VRefP %lu Real VRefP %f \n\r", VrefPRawData, VrefPData);

      //VrefNRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VREFN);
      //VrefNData = XAdcPs_RawToVoltage(VrefNRawData);
      //printf("Raw VRefN %lu Real VRefN %f \n\r", VrefNRawData, VrefNData);

      VBramRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VBRAM);
      VBramData = XAdcPs_RawToVoltage(VBramRawData);
      printf("Raw VccBram %lu Real VccBram %f \n\r", VBramRawData, VBramData);

      VccPIntRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VCCPINT);
      VccPIntData = XAdcPs_RawToVoltage(VccPIntRawData);
      printf("Raw VccPInt %lu Real VccPInt %f \n\r", VccPIntRawData, VccPIntData);

      VccPAuxRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VCCPAUX);
      VccPAuxData = XAdcPs_RawToVoltage(VccPAuxRawData);
      printf("Raw VccPAux %lu Real VccPAux %f \n\r", VccPAuxRawData, VccPAuxData);

      VDDRRawData = XAdcPs_GetAdcData(XADCInstPtr, XADCPS_CH_VCCPDRO);
      VDDRData = XAdcPs_RawToVoltage(VDDRRawData);
      printf("Raw VccDDR %lu Real VccDDR %f \n\r", VDDRRawData, VDDRData);
    }*/

	addReplyStatus(c, "+OK");
}