|
@@ -6,6 +6,7 @@
|
|
|
#include "io_utils.h"
|
|
|
#include "adc_transport.h"
|
|
|
#include "misc.h"
|
|
|
+#include "utility.h"
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
@@ -70,6 +71,14 @@ void adc_gpio_init(void)
|
|
|
|
|
|
spi_enable(MS5192T_SPI, TRUE);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+//
|
|
|
+inline flag_status adc_get_rdy(void)
|
|
|
+{
|
|
|
+ return gpio_input_data_bit_read(GPIOE, GPIO_PINS_13);
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@@ -214,23 +223,64 @@ void adc_task(void *params)
|
|
|
|
|
|
// Запрос регистра конфигурации для (0x710 - значение по умолчанию)
|
|
|
value = MS5192T_GetRegisterValue(MS5192T_REG_CONF, 2, 1);
|
|
|
- printf("ADC configuretion register: 0x%X\r\n", value);
|
|
|
+ printf("ADC cfg reg: 0x%X: ", value);
|
|
|
+ print_binary_half_word((uint16_t)value);
|
|
|
|
|
|
// Коэф-т усиления: 1
|
|
|
- printf("ADC. Set gain rate: %u\r\n", (uint8_t)MS5192T_GAIN_1);
|
|
|
+ printf("ADC. Set gain rate 1\r\n");
|
|
|
MS5192T_SetGain(MS5192T_GAIN_1);
|
|
|
value = MS5192T_GetRegisterValue(MS5192T_REG_CONF, 2, 1);
|
|
|
- printf("ADC configuretion register: 0x%X, gain rate = %u (value 0 eq 1 gain rate)\r\n",
|
|
|
- value, (value & 0x700) >> 8);
|
|
|
+ printf("ADC cfg reg: 0x%X: ", value);
|
|
|
+ print_binary_half_word((uint16_t)value);
|
|
|
|
|
|
- printf("Set unipolar input mode.\r\n");
|
|
|
+ // Униполярный режим
|
|
|
+ printf("Set unipolar input mode...\r\n");
|
|
|
MS5192T_SetPolar(MS5192T_CONF_UNIPOLAR);
|
|
|
value = MS5192T_GetRegisterValue(MS5192T_REG_CONF, 2, 1);
|
|
|
- printf("ADC configuretion register: 0x%X, polar bit: %u\r\n", value, (value & 0x1000) >> 12);
|
|
|
+ printf("ADC cfg reg: 0x%X: ", value);
|
|
|
+ print_binary_half_word((uint16_t)value);
|
|
|
+
|
|
|
+ // Регистр статуса
|
|
|
+ value = MS5192T_GetRegisterValue(MS5192T_REG_STAT, 1, 1);
|
|
|
+ printf("ADC status reg: 0x%X: ", value);
|
|
|
+ print_binary_byte((uint8_t)value);
|
|
|
|
|
|
+ // Установка внутреннего опорного напряжения
|
|
|
+ MS5192T_SetIntReference(MS5192T_REFSEL_INT); // select internal 1.17V reference
|
|
|
+ value = MS5192T_GetRegisterValue(MS5192T_REG_CONF, 2, 1);
|
|
|
+ printf("ADC cfg reg: 0x%X: ", value);
|
|
|
+ print_binary_half_word((uint16_t)value);
|
|
|
+
|
|
|
+ // Регистр режима (MODE register)
|
|
|
+ value = MS5192T_GetRegisterValue(MS5192T_REG_MODE, 2, 1);
|
|
|
+ printf("ADC mode reg: 0x%X: ", value);
|
|
|
+ print_binary_half_word((uint16_t)value);
|
|
|
|
|
|
+ // Установить update rate
|
|
|
+ printf("Set update rate.\r\n");
|
|
|
+ MS5192T_SetUpdateRate(MS5192T_UP_RATE_500);
|
|
|
+ value = MS5192T_GetRegisterValue(MS5192T_REG_MODE, 2, 1);
|
|
|
+ printf("ADC mode reg: 0x%X: ", value);
|
|
|
+ print_binary_half_word((uint16_t)value);
|
|
|
+
|
|
|
+ // Калибровка
|
|
|
+
|
|
|
+ // 1 - ый канал
|
|
|
+ MS5192T_Calibrate(MS5192T_MODE_CAL_INT_ZERO, MS5192T_CH_AIN1P_AIN1M);
|
|
|
+ MS5192T_Calibrate(MS5192T_MODE_CAL_INT_FULL, MS5192T_CH_AIN1P_AIN1M);
|
|
|
+
|
|
|
+ // 2 - ой канал
|
|
|
+ MS5192T_Calibrate(MS5192T_MODE_CAL_INT_ZERO, MS5192T_CH_AIN2P_AIN2M);
|
|
|
+ MS5192T_Calibrate(MS5192T_MODE_CAL_INT_FULL, MS5192T_CH_AIN2P_AIN2M);
|
|
|
+
|
|
|
+ MS5192T_SetChannel(MS5192T_CH_AIN1P_AIN1M);
|
|
|
+
|
|
|
for (;;)
|
|
|
{
|
|
|
+ value = MS5192T_SingleConversion();
|
|
|
+ printf("ADC data raw: 0x%X, %f\r\n", value, (double)value*0.00001785305);
|
|
|
+
|
|
|
+
|
|
|
|
|
|
#if 0
|
|
|
if (state == false)
|