/* ** =================================================================== ** Method : AD1_Calibrate (component ADC) ** Description : ** This method starts self calibration process. Calibration is ** typically used to remove the effects of the gain and offset ** from a specific reading. ** Parameters : ** NAME - DESCRIPTION ** WaitForResult - Wait for a result of ** calibration. If the <interrupt service> is ** disabled, the WaitForResult parameter is ** ignored and the method waits for ** calibration result every time. ** Returns : ** --- - Error code ** ERR_OK - OK ** ERR_BUSY - A conversion is already running ** ERR_SPEED - This device does not work in ** the active speed mode ** ERR_DISABLED - Device is disabled ** ERR_FAILED - Calibration hasn't been ** finished correctly ** =================================================================== */ byte PE_AD1_Calibrate(void) { if (ModeFlg != STOP) { /* Is the device in different mode than "stop"? */ return ERR_BUSY; /* If yes then error */ } (void)AdcLdd1_GetMeasurementCompleteStatus(AdcLdd1_DeviceDataPtr); /* Clear measurement complete status */ (void)AdcLdd1_StartCalibration(AdcLdd1_DeviceDataPtr); /* Start calibration */ while (!AdcLdd1_GetMeasurementCompleteStatus(AdcLdd1_DeviceDataPtr)) {}; /* Wait until calibration ends */ if (AdcLdd1_GetCalibrationResultStatus(AdcLdd1_DeviceDataPtr) != ERR_OK) { /* If calibration failed flag is set */ ModeFlg = STOP; /* Set the device to the stop mode */ return ERR_FAILED; /* Return ERR_FAILED error code */ } return ERR_OK; /* ADC device is now calibrated */ }
/* ** =================================================================== ** Method : AD1_Calibrate (component ADC) ** Description : ** This method starts self calibration process. Calibration is ** typically used to remove the effects of the gain and offset ** from a specific reading. ** Parameters : ** NAME - DESCRIPTION ** WaitForResult - Wait for a result of ** calibration. If the <interrupt service> is ** disabled, the WaitForResult parameter is ** ignored and the method waits for ** calibration result every time. ** Returns : ** --- - Error code ** ERR_OK - OK ** ERR_BUSY - A conversion is already running ** ERR_SPEED - This device does not work in ** the active speed mode ** ERR_DISABLED - Device is disabled ** ERR_FAILED - Calibration hasn't been ** finished correctly ** =================================================================== */ byte AD1_Calibrate(bool WaitForResult) { if (ModeFlg != STOP) { /* Is the device in different mode than "stop"? */ return ERR_BUSY; /* If yes then error */ } ModeFlg = CALIBRATING; /* Set state of device to the calibration mode */ (void)AdcLdd1_GetMeasurementCompleteStatus(AdcLdd1_DeviceDataPtr); /* Clear measurement complete status */ (void)AdcLdd1_StartCalibration(AdcLdd1_DeviceDataPtr); /* Start calibration */ if (!WaitForResult) { /* If doesn't wait for result */ return ERR_OK; /* then return ERR_OK, but user have to check the result of calibration e.g. by GetCalibrationStatus method */ } while (!AdcLdd1_GetMeasurementCompleteStatus(AdcLdd1_DeviceDataPtr)) {}; /* Wait until calibration ends */ if (AdcLdd1_GetCalibrationResultStatus(AdcLdd1_DeviceDataPtr) != ERR_OK) { /* If calibration failed flag is set */ ModeFlg = STOP; /* Set the device to the stop mode */ return ERR_FAILED; /* Return ERR_FAILED error code */ } return ERR_OK; /* ADC device is now calibrated */ }