Add ADC example to cc26xx-web-demo
This commit is contained in:
parent
55f3a92211
commit
22b262ce73
|
@ -55,9 +55,13 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "ti-lib.h"
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
PROCESS_NAME(cetic_6lbr_client_process);
|
PROCESS_NAME(cetic_6lbr_client_process);
|
||||||
PROCESS(cc26xx_web_demo_process, "CC26XX Web Demo");
|
PROCESS(cc26xx_web_demo_process, "CC26XX Web Demo");
|
||||||
|
PROCESS(adc_process, "ADC process");
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/*
|
/*
|
||||||
* Update sensor readings in a staggered fashion every SENSOR_READING_PERIOD
|
* Update sensor readings in a staggered fashion every SENSOR_READING_PERIOD
|
||||||
|
@ -84,6 +88,9 @@ static struct uip_icmp6_echo_reply_notification echo_reply_notification;
|
||||||
static struct etimer echo_request_timer;
|
static struct etimer echo_request_timer;
|
||||||
int def_rt_rssi = 0;
|
int def_rt_rssi = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static uint16_t single_adc_sample;
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
process_event_t cc26xx_web_demo_publish_event;
|
process_event_t cc26xx_web_demo_publish_event;
|
||||||
process_event_t cc26xx_web_demo_config_loaded_event;
|
process_event_t cc26xx_web_demo_config_loaded_event;
|
||||||
|
@ -110,6 +117,9 @@ DEMO_SENSOR(batmon_temp, CC26XX_WEB_DEMO_SENSOR_BATMON_TEMP,
|
||||||
DEMO_SENSOR(batmon_volt, CC26XX_WEB_DEMO_SENSOR_BATMON_VOLT,
|
DEMO_SENSOR(batmon_volt, CC26XX_WEB_DEMO_SENSOR_BATMON_VOLT,
|
||||||
"Battery Volt", "battery-volt", "batmon_volt",
|
"Battery Volt", "battery-volt", "batmon_volt",
|
||||||
CC26XX_WEB_DEMO_UNIT_VOLT);
|
CC26XX_WEB_DEMO_UNIT_VOLT);
|
||||||
|
DEMO_SENSOR(adc_dio23, CC26XX_WEB_DEMO_SENSOR_ADC_DIO23,
|
||||||
|
"ADC DIO23", "adc-dio23", "adc_dio23",
|
||||||
|
CC26XX_WEB_DEMO_UNIT_VOLT);
|
||||||
|
|
||||||
/* Sensortag sensors */
|
/* Sensortag sensors */
|
||||||
#if BOARD_SENSORTAG
|
#if BOARD_SENSORTAG
|
||||||
|
@ -467,6 +477,20 @@ get_batmon_reading(void *data)
|
||||||
ctimer_set(&batmon_timer, next, get_batmon_reading, NULL);
|
ctimer_set(&batmon_timer, next, get_batmon_reading, NULL);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static void
|
||||||
|
get_adc_reading(void *data)
|
||||||
|
{
|
||||||
|
int value;
|
||||||
|
char *buf;
|
||||||
|
|
||||||
|
if(adc_dio23_reading.publish) {
|
||||||
|
value = single_adc_sample;
|
||||||
|
buf = adc_dio23_reading.converted;
|
||||||
|
memset(buf, 0, CC26XX_WEB_DEMO_CONVERTED_LEN);
|
||||||
|
snprintf(buf, CC26XX_WEB_DEMO_CONVERTED_LEN, "%d", (value * 4300) >> 12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
#if BOARD_SENSORTAG
|
#if BOARD_SENSORTAG
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
|
@ -825,6 +849,7 @@ init_sensors(void)
|
||||||
|
|
||||||
list_add(sensor_list, &batmon_temp_reading);
|
list_add(sensor_list, &batmon_temp_reading);
|
||||||
list_add(sensor_list, &batmon_volt_reading);
|
list_add(sensor_list, &batmon_volt_reading);
|
||||||
|
list_add(sensor_list, &adc_dio23_reading);
|
||||||
SENSORS_ACTIVATE(batmon_sensor);
|
SENSORS_ACTIVATE(batmon_sensor);
|
||||||
|
|
||||||
#if BOARD_SENSORTAG
|
#if BOARD_SENSORTAG
|
||||||
|
@ -864,6 +889,7 @@ PROCESS_THREAD(cc26xx_web_demo_process, ev, data)
|
||||||
|
|
||||||
/* Start all other (enabled) processes first */
|
/* Start all other (enabled) processes first */
|
||||||
process_start(&httpd_simple_process, NULL);
|
process_start(&httpd_simple_process, NULL);
|
||||||
|
|
||||||
#if CC26XX_WEB_DEMO_COAP_SERVER
|
#if CC26XX_WEB_DEMO_COAP_SERVER
|
||||||
process_start(&coap_server_process, NULL);
|
process_start(&coap_server_process, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
@ -880,6 +906,10 @@ PROCESS_THREAD(cc26xx_web_demo_process, ev, data)
|
||||||
process_start(&net_uart_process, NULL);
|
process_start(&net_uart_process, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CC26XX_WEB_DEMO_ADC_DEMO
|
||||||
|
process_start(&adc_process, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now that processes have set their own config default values, set our
|
* Now that processes have set their own config default values, set our
|
||||||
* own defaults and restore saved config from flash...
|
* own defaults and restore saved config from flash...
|
||||||
|
@ -966,6 +996,47 @@ PROCESS_THREAD(cc26xx_web_demo_process, ev, data)
|
||||||
|
|
||||||
PROCESS_END();
|
PROCESS_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PROCESS_THREAD(adc_process, ev, data)
|
||||||
|
{
|
||||||
|
PROCESS_BEGIN();
|
||||||
|
static struct etimer et_adc;
|
||||||
|
etimer_set(&et_adc, CLOCK_SECOND * 5);
|
||||||
|
while(1) {
|
||||||
|
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et_adc));
|
||||||
|
/* intialisation of ADC */
|
||||||
|
ti_lib_aon_wuc_aux_wakeup_event(AONWUC_AUX_WAKEUP);
|
||||||
|
while(!(ti_lib_aon_wuc_power_status_get() & AONWUC_AUX_POWER_ON)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enable clock for ADC digital and analog interface (not currently enabled in driver) */
|
||||||
|
/* Enable clocks */
|
||||||
|
ti_lib_aux_wuc_clock_enable(AUX_WUC_ADI_CLOCK | AUX_WUC_ANAIF_CLOCK | AUX_WUC_SMPH_CLOCK);
|
||||||
|
while(ti_lib_aux_wuc_clock_status(AUX_WUC_ADI_CLOCK | AUX_WUC_ANAIF_CLOCK | AUX_WUC_SMPH_CLOCK) != AUX_WUC_CLOCK_READY) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Connect AUX IO7 (DIO23, but also DP2 on XDS110) as analog input. */
|
||||||
|
ti_lib_aux_adc_select_input(ADC_COMPB_IN_AUXIO7);
|
||||||
|
|
||||||
|
/* Set up ADC range */
|
||||||
|
/* AUXADC_REF_FIXED = nominally 4.3 V */
|
||||||
|
ti_lib_aux_adc_enable_sync(AUXADC_REF_FIXED, AUXADC_SAMPLE_TIME_2P7_US, AUXADC_TRIGGER_MANUAL);
|
||||||
|
|
||||||
|
/* Trigger ADC converting */
|
||||||
|
ti_lib_aux_adc_gen_manual_trigger();
|
||||||
|
|
||||||
|
/* reading adc value */
|
||||||
|
single_adc_sample = ti_lib_aux_adc_read_fifo();
|
||||||
|
|
||||||
|
/* shut the adc down */
|
||||||
|
ti_lib_aux_adc_disable();
|
||||||
|
|
||||||
|
get_adc_reading(NULL);
|
||||||
|
|
||||||
|
etimer_reset(&et_adc);
|
||||||
|
}
|
||||||
|
PROCESS_END();
|
||||||
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
|
@ -79,6 +79,13 @@
|
||||||
#else
|
#else
|
||||||
#define CC26XX_WEB_DEMO_NET_UART 1
|
#define CC26XX_WEB_DEMO_NET_UART 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CC26XX_WEB_DEMO_CONF_ADC_DEMO
|
||||||
|
#define CC26XX_WEB_DEMO_ADC_DEMO CC26XX_WEB_DEMO_CONF_ADC_DEMO
|
||||||
|
#else
|
||||||
|
#define CC26XX_WEB_DEMO_ADC_DEMO 0
|
||||||
|
#endif
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* Active probing of RSSI from our preferred parent */
|
/* Active probing of RSSI from our preferred parent */
|
||||||
#if (CC26XX_WEB_DEMO_COAP_SERVER || CC26XX_WEB_DEMO_MQTT_CLIENT)
|
#if (CC26XX_WEB_DEMO_COAP_SERVER || CC26XX_WEB_DEMO_MQTT_CLIENT)
|
||||||
|
@ -146,6 +153,7 @@
|
||||||
#define CC26XX_WEB_DEMO_SENSOR_MPU_GYRO_X 12
|
#define CC26XX_WEB_DEMO_SENSOR_MPU_GYRO_X 12
|
||||||
#define CC26XX_WEB_DEMO_SENSOR_MPU_GYRO_Y 13
|
#define CC26XX_WEB_DEMO_SENSOR_MPU_GYRO_Y 13
|
||||||
#define CC26XX_WEB_DEMO_SENSOR_MPU_GYRO_Z 14
|
#define CC26XX_WEB_DEMO_SENSOR_MPU_GYRO_Z 14
|
||||||
|
#define CC26XX_WEB_DEMO_SENSOR_ADC_DIO23 15
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
extern process_event_t cc26xx_web_demo_publish_event;
|
extern process_event_t cc26xx_web_demo_publish_event;
|
||||||
extern process_event_t cc26xx_web_demo_config_loaded_event;
|
extern process_event_t cc26xx_web_demo_config_loaded_event;
|
||||||
|
|
|
@ -50,6 +50,7 @@ extern resource_t res_leds;
|
||||||
|
|
||||||
extern resource_t res_batmon_temp;
|
extern resource_t res_batmon_temp;
|
||||||
extern resource_t res_batmon_volt;
|
extern resource_t res_batmon_volt;
|
||||||
|
extern resource_t res_adc_dio23;
|
||||||
|
|
||||||
extern resource_t res_device_sw;
|
extern resource_t res_device_sw;
|
||||||
extern resource_t res_device_hw;
|
extern resource_t res_device_hw;
|
||||||
|
@ -133,6 +134,7 @@ PROCESS_THREAD(coap_server_process, ev, data)
|
||||||
|
|
||||||
rest_activate_resource(&res_batmon_temp, "sen/batmon/temp");
|
rest_activate_resource(&res_batmon_temp, "sen/batmon/temp");
|
||||||
rest_activate_resource(&res_batmon_volt, "sen/batmon/voltage");
|
rest_activate_resource(&res_batmon_volt, "sen/batmon/voltage");
|
||||||
|
rest_activate_resource(&res_adc_dio23, "sen/adc/dio23");
|
||||||
|
|
||||||
rest_activate_resource(&res_device_hw, "dev/mdl/hw");
|
rest_activate_resource(&res_device_hw, "dev/mdl/hw");
|
||||||
rest_activate_resource(&res_device_sw, "dev/mdl/sw");
|
rest_activate_resource(&res_device_sw, "dev/mdl/sw");
|
||||||
|
|
|
@ -41,6 +41,13 @@
|
||||||
#define CC26XX_WEB_DEMO_CONF_6LBR_CLIENT 1
|
#define CC26XX_WEB_DEMO_CONF_6LBR_CLIENT 1
|
||||||
#define CC26XX_WEB_DEMO_CONF_COAP_SERVER 1
|
#define CC26XX_WEB_DEMO_CONF_COAP_SERVER 1
|
||||||
#define CC26XX_WEB_DEMO_CONF_NET_UART 1
|
#define CC26XX_WEB_DEMO_CONF_NET_UART 1
|
||||||
|
/*
|
||||||
|
* ADC sensor functionality. To test this, an external voltage source should be
|
||||||
|
* connected to DIO23
|
||||||
|
* Enable/Disable DIO23 ADC reading by setting CC26XX_WEB_DEMO_CONF_ADC_DEMO
|
||||||
|
*/
|
||||||
|
#define CC26XX_WEB_DEMO_CONF_ADC_DEMO 0
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* Enable the ROM bootloader */
|
/* Enable the ROM bootloader */
|
||||||
#define ROM_BOOTLOADER_ENABLE 1
|
#define ROM_BOOTLOADER_ENABLE 1
|
||||||
|
|
|
@ -111,12 +111,24 @@ res_get_handler_batmon_volt(void *request, void *response, uint8_t *buffer,
|
||||||
buffer, preferred_size, offset);
|
buffer, preferred_size, offset);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static void
|
||||||
|
res_get_handler_adc_dio23(void *request, void *response, uint8_t *buffer,
|
||||||
|
uint16_t preferred_size, int32_t *offset)
|
||||||
|
{
|
||||||
|
res_get_handler_all(CC26XX_WEB_DEMO_SENSOR_ADC_DIO23, request, response,
|
||||||
|
buffer, preferred_size, offset);
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
RESOURCE(res_batmon_temp, "title=\"Battery Temp\";rt=\"C\"",
|
RESOURCE(res_batmon_temp, "title=\"Battery Temp\";rt=\"C\"",
|
||||||
res_get_handler_batmon_temp, NULL, NULL, NULL);
|
res_get_handler_batmon_temp, NULL, NULL, NULL);
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
RESOURCE(res_batmon_volt, "title=\"Battery Voltage\";rt=\"mV\"",
|
RESOURCE(res_batmon_volt, "title=\"Battery Voltage\";rt=\"mV\"",
|
||||||
res_get_handler_batmon_volt, NULL, NULL, NULL);
|
res_get_handler_batmon_volt, NULL, NULL, NULL);
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
RESOURCE(res_adc_dio23, "title=\"ADC DIO23\";rt=\"mV\"",
|
||||||
|
res_get_handler_adc_dio23, NULL, NULL, NULL);
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
#if BOARD_SENSORTAG
|
#if BOARD_SENSORTAG
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* MPU resources and handler: Accelerometer and Gyro */
|
/* MPU resources and handler: Accelerometer and Gyro */
|
||||||
|
|
Loading…
Reference in a new issue