ADC¶
Analog to digital converters, typically used for measuring voltages for sensors, battery voltage, etc.
Defines¶
| Name | Value | Description | 
|---|---|---|
MIRA_ADC_PIN_VDD | 
0xFF00 | |
MIRA_ADC_PIN_DISABLED | 
0xFF01 | 
Types¶
| Name | Type | Description | 
|---|---|---|
mira_adc_value_t | 
int16_t | 
Enums¶
mira_adc_reference_t¶
| Value | Description | 
|---|---|
| MIRA_ADC_REF_VDD | |
| MIRA_ADC_REF_INT_3_6V | 
Structs¶
mira_adc_context_t¶
| Type | Name | Description | 
|---|---|---|
uint16_t | 
gpio_pin_p | |
uint16_t | 
gpio_pin_n | |
mira_adc_reference_t | 
reference | |
mira_bool_t | 
is_measuring | |
mira_adc_value_t | 
value | |
process | 
measuring_process | 
Functions¶
mira_adc_init¶
mira_status_t mira_adc_init( mira_adc_context_t* context);
Use this to set up the context block with default parameters. and initialize the ADC module.
Parameters
| Parameter | Description | 
|---|---|
context | 
Configuration block for the ADC. | 
Return
Status of the operation.
| Value | Description | 
|---|---|
MIRA_SUCCESS | 
If initialization was successful. | 
mira_adc_uninit¶
mira_status_t mira_adc_uninit( mira_adc_context_t* context);
Use this to uninitialize the ADC module and abort current measuring.
Parameters
| Parameter | Description | 
|---|---|
context | 
Configuration block for the ADC. | 
Return
Status of the operation.
| Value | Description | 
|---|---|
MIRA_SUCCESS | 
If initialization was successful. | 
mira_adc_set_source_supply¶
mira_status_t mira_adc_set_source_supply( mira_adc_context_t* context);
Parameters
| Parameter | Description | 
|---|---|
context | 
Configuration block for the ADC. | 
Return
Status of the operation.
| Value | Description | 
|---|---|
MIRA_SUCCESS | 
If operation was successful. | 
MIRA_ADC_ERROR_INVALID_PIN | 
If supply voltage can't be measured. | 
mira_adc_set_source_single¶
mira_status_t mira_adc_set_source_single( mira_adc_context_t* context, mira_gpio_pin_t pin);
Parameters
| Parameter | Description | 
|---|---|
context | 
Configuration block for the ADC. | 
pin | 
GPIO pin for the source (not analog pin number). | 
Return
Status of the operation.
| Value | Description | 
|---|---|
MIRA_SUCCESS | 
If operation was successful. | 
MIRA_ADC_ERROR_INVALID_PIN | 
If the pin does not allow analog input. | 
mira_adc_set_source_diff¶
mira_status_t mira_adc_set_source_diff( mira_adc_context_t* context, mira_gpio_pin_t pin_p, mira_gpio_pin_t pin_n);
If CPU doesn't support differential measurements, this will be emulated by two consecutive measurements.
Parameters
| Parameter | Description | 
|---|---|
context | 
Configuration block for the ADC. | 
pin_p | 
GPIO pin for the positive source (not analog pin number). | 
pin_n | 
GPIO pin for the negative soruce (not analog pin number). | 
Return
Status of the operation.
| Value | Description | 
|---|---|
MIRA_SUCCESS | 
If operation was successful. | 
MIRA_ADC_ERROR_INVALID_PIN | 
If any of the pins does not allow analog input. | 
mira_adc_set_reference¶
mira_status_t mira_adc_set_reference( mira_adc_context_t* context, mira_adc_reference_t reference);
Sets the voltage that maps to the maximum voltage of the conversion.
Parameters
| Parameter | Description | 
|---|---|
context | 
Configuration block for the ADC. | 
reference | 
The reference for the conversion. | 
Return
Status of the operation.
| Value | Description | 
|---|---|
MIRA_SUCCESS | 
If operation was successful. | 
MIRA_ERROR_NOT_SUPPORTED | 
If reference voltage is not supported by the device. | 
mira_adc_measurement_start¶
mira_status_t mira_adc_measurement_start( mira_adc_context_t* context);
The measurement will be started. mira_adc_measurement_in_progress() returns MIRA_FALSE when measurement is finished.
To do a proper measurement, do the following:
mira_status_t status; mira_value_t value; status = mira_adc_measurement_start(&context); if(status == MIRA_SUCCESS) { PROCESS_WAIT_UNTIL(!mira_adc_measurement_in_progress(&context)); status = mira_adc_measurement_finish(&context, &value); ... measurement result and status ... } else { ... handle error ... }
Make sure the mira_adc_measurement_finish() is called for every successful mira_adc_measurement_start() call.
Parameters
| Parameter | Description | 
|---|---|
context | 
Configuration block for the ADC. | 
Return
Status of the operation.
| Value | Description | 
|---|---|
MIRA_SUCCESS | 
If operation was successful. | 
MIRA_ERROR_NOT_INITIALIZED | 
If ADC module is not initialized. | 
MIRA_ADC_ERROR_CHANNEL_BUSY | 
If a measurement is already in progress. | 
MIRA_ADC_ERROR_INVALID_REFERENCE | 
If the reference is invalid. | 
MIRA_ADC_ERROR_INVALID_PIN | 
If the pin is invalid. | 
mira_adc_measurement_in_progress¶
mira_bool_t mira_adc_measurement_in_progress( mira_adc_context_t* context);
Use to poll if the measurement is in progress or not.
Parameters
| Parameter | Description | 
|---|---|
context | 
Configuration block for the ADC. | 
Return
Status of measurement.
| Value | Description | 
|---|---|
MIRA_TRUE | 
If measurement is in progress. | 
MIRA_FALSE | 
If measurement is not in progress. | 
mira_adc_measurement_finish¶
mira_status_t mira_adc_measurement_finish( mira_adc_context_t* context, mira_adc_value_t* value);
Use to finish up a conversion. This must be executed for each successful mira_adc_measurement_start() call to free the ADC for other measurements.
Parameters
| Parameter | Description | 
|---|---|
context | 
Configuration block for the ADC. | 
value | 
Storage of the measurement value. Only set if successful. | 
Return
Status of the operation.
| Value | Description | 
|---|---|
MIRA_SUCCESS | 
If operation was successful. | 
MIRA_ADC_ERROR_NO_MEASUREMENT | 
If no measurement was started. |