Fixes an improvements to EX demos

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9471 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
Rocco Marco Guglielmi 2016-05-12 21:01:59 +00:00
parent fde8d50497
commit f5be820e9c
6 changed files with 35 additions and 8 deletions

View File

@ -466,6 +466,24 @@ static msg_t reset_sensivity(void *ip) {
return MSG_OK;
}
static msg_t get_temperature(void *ip, int8_t* tempp) {
#if LIS3DSH_USE_SPI
osalDbgAssert((((LIS3DSHDriver *)ip)->config->spip->state == SPI_READY),
"read_raw(), channel not ready");
#if LIS3DSH_SHARED_SPI
spiAcquireBus(((LIS3DSHDriver *)ip)->config->spip);
spiStart(((LIS3DSHDriver *)ip)->config->spip,
((LIS3DSHDriver *)ip)->config->spicfg);
#endif /* LIS3DSH_SHARED_SPI */
*tempp = lis3dshSPIReadRegister(((LIS3DSHDriver *)ip)->config->spip,
LIS3DSH_AD_OUT_T);
#if LIS3DSH_SHARED_SPI
spiReleaseBus(((LIS3DSHDriver *)ip)->config->spip);
#endif /* LIS3DSH_SHARED_SPI */
#endif /* LIS3DSH_USE_SPI */
return MSG_OK;
}
static const struct BaseSensorVMT vmt_basesensor = {
get_axes_number, read_raw, read_cooked
};
@ -477,7 +495,8 @@ static const struct BaseAccelerometerVMT vmt_baseaccelerometer = {
static const struct LIS3DSHVMT vmt_lis3dsh = {
get_axes_number, read_raw, read_cooked,
set_bias, reset_bias, set_sensivity, reset_sensivity
set_bias, reset_bias, set_sensivity, reset_sensivity,
get_temperature
};
/*===========================================================================*/

View File

@ -241,7 +241,9 @@ typedef struct LIS3DSHDriver LIS3DSHDriver;
* @brief @p LIS3DSH specific methods.
*/
#define _lis3dsh_methods \
_base_accelerometer_methods
_base_accelerometer_methods \
/* Retrieve the temperature of L3GD20 chip.*/ \
msg_t (*get_temperature)(void *instance, int8_t* temperature);
/**
* @extends BaseAccelerometerVMT
@ -291,16 +293,17 @@ struct LIS3DSHDriver {
/**
* @brief Get current MEMS temperature.
* @detail This information is very useful especially for high accuracy IMU
* @note Value is raw since there is a lack of information in datasheet.
*
* @param[in] ip pointer to a @p BaseAccelerometer class.
* @param[out] temp the MEMS temperature as single precision floating.
* @param[out] temp the MEMS temperature as raw data.
*
* @return The operation status.
* @retval MSG_OK if the function succeeded.
* @retval MSG_RESET if one or more errors occurred.
* @api
*/
#define accelerometerGetTemp(ip, tpp) \
#define accelerometerGetTemp(ip, tpp) \
(ip)->vmt_lis3dsh->get_temperature(ip, tpp)
/*===========================================================================*/

View File

@ -113,12 +113,13 @@ int main(void) {
*/
l3gd20Start(&L3GD20D1, &l3gd20cfg);
while(!palReadLine(LINE_BUTTON)){
while(!palReadLine(LINE_BUTTON)) {
chprintf(chp, "Press BTN to calibrate gyroscope...\r\n");
chThdSleepMilliseconds(150);
#if CHPRINTF_USE_ANSI_CODE
chprintf(chp, "\033[2J\033[1;1H");
#endif
}
palClearLine(LINE_LED3);
chprintf(chp, "Calibrating Gyroscope sampling bias...\r\n");

View File

@ -120,7 +120,7 @@ int main(void) {
accelerometerReadCooked(&LIS302DLD1, cookeddata);
for(i = 0; i < LIS302DL_NUMBER_OF_AXES; i++)
chprintf(chp, "COOKED-%c:%.3f\r\n", axesID[i], cookeddata[i]);
chprintf(chp, "COOKED-%c:%.3f g\r\n", axesID[i], cookeddata[i]);
chThdSleepMilliseconds(150);
#if CHPRINTF_USE_ANSI_CODE

View File

@ -33,7 +33,7 @@
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&lt;contentList&gt;&lt;content id=&quot;cr2-adc_lld_start_conversion-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;CR2-adc-null-port_wait_for_interrupt-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;CR2-adc-adcp-adc_lld_start_conversion-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;null-lis3dshStart-(format)&quot; val=&quot;2&quot;/&gt;&lt;/contentList&gt;"/>
<stringAttribute key="org.eclipse.cdt.launch.FORMAT" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&lt;contentList&gt;&lt;content id=&quot;null-lis3dshStart-(format)&quot; val=&quot;2&quot;/&gt;&lt;content id=&quot;CR2-adc-adcp-adc_lld_start_conversion-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;CR2-adc-null-port_wait_for_interrupt-(format)&quot; val=&quot;4&quot;/&gt;&lt;content id=&quot;cr2-adc_lld_start_conversion-(format)&quot; val=&quot;4&quot;/&gt;&lt;/contentList&gt;"/>
<stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;globalVariableList/&gt;&#13;&#10;"/>
<stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;memoryBlockExpressionList/&gt;&#13;&#10;"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="./build/ch.elf"/>

View File

@ -32,6 +32,7 @@ static LIS3DSHDriver LIS3DSHD1;
static int32_t rawdata[LIS3DSH_NUMBER_OF_AXES];
static float cookeddata[LIS3DSH_NUMBER_OF_AXES];
static int8_t temperature;
static char axesID[LIS3DSH_NUMBER_OF_AXES] = {'X', 'Y', 'Z'};
static uint32_t i;
@ -121,7 +122,10 @@ int main(void) {
accelerometerReadCooked(&LIS3DSHD1, cookeddata);
for(i = 0; i < LIS3DSH_NUMBER_OF_AXES; i++)
chprintf(chp, "COOKED-%c:%.3f\r\n", axesID[i], cookeddata[i]);
chprintf(chp, "COOKED-%c:%.3f g\r\n", axesID[i], cookeddata[i]);
accelerometerGetTemp(&LIS3DSHD1, &temperature);
chprintf(chp, "TEMP:%d \r\n", temperature);
chThdSleepMilliseconds(150);
#if CHPRINTF_USE_ANSI_CODE