aboutsummaryrefslogtreecommitdiffstats
path: root/testhal/STM32F1xx/I2C/lis3.c
diff options
context:
space:
mode:
authorbarthess <barthess@35acf78f-673a-0410-8e92-d51de3d6d3f4>2011-12-31 10:34:04 +0000
committerbarthess <barthess@35acf78f-673a-0410-8e92-d51de3d6d3f4>2011-12-31 10:34:04 +0000
commit409fb83520d52bdf62baedfe639d8704f50bb5b1 (patch)
tree8d3e1b4a585e144fe8fb33e1dfb1ba5557ed92e3 /testhal/STM32F1xx/I2C/lis3.c
parentc397738010966f85c7ae841e21d74790ac49611c (diff)
downloadChibiOS-409fb83520d52bdf62baedfe639d8704f50bb5b1.tar.gz
ChibiOS-409fb83520d52bdf62baedfe639d8704f50bb5b1.tar.bz2
ChibiOS-409fb83520d52bdf62baedfe639d8704f50bb5b1.zip
I2C. Fully functional testhal for STM32F1x.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@3696 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'testhal/STM32F1xx/I2C/lis3.c')
-rw-r--r--testhal/STM32F1xx/I2C/lis3.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/testhal/STM32F1xx/I2C/lis3.c b/testhal/STM32F1xx/I2C/lis3.c
index 17b1456ec..b8e9e86c7 100644
--- a/testhal/STM32F1xx/I2C/lis3.c
+++ b/testhal/STM32F1xx/I2C/lis3.c
@@ -51,6 +51,9 @@ static int16_t acceleration_z = 0;
* Init function. Here we will also start personal serving thread.
*/
int init_lis3(void){
+ msg_t status = RDY_OK;
+ systime_t tmo = MS2ST(4);
+
/* configure accelerometer */
accel_tx_data[0] = ACCEL_CTRL_REG1 | AUTO_INCREMENT_BIT; /* register address */
accel_tx_data[1] = 0b11100111;
@@ -59,8 +62,13 @@ int init_lis3(void){
/* sending */
i2cAcquireBus(&I2CD1);
- i2cMasterTransmit(&I2CD1, lis3_addr, accel_tx_data, 4, accel_rx_data, 0, &errors, TIME_INFINITE);
+ status = i2cMasterTransmitTimeout(&I2CD1, lis3_addr, accel_tx_data, 4, accel_rx_data, 0, tmo);
i2cReleaseBus(&I2CD1);
+
+ if (status != RDY_OK){
+ errors = i2cGetErrors(&I2CD1);
+ }
+
return 0;
}
@@ -68,11 +76,18 @@ int init_lis3(void){
*
*/
void request_acceleration_data(void){
+ msg_t status = RDY_OK;
+ systime_t tmo = MS2ST(4);
+
accel_tx_data[0] = ACCEL_OUT_DATA | AUTO_INCREMENT_BIT; /* register address */
i2cAcquireBus(&I2CD1);
- i2cMasterTransmit(&I2CD1, lis3_addr, accel_tx_data, 1, accel_rx_data, 6, &errors, TIME_INFINITE);
+ status = i2cMasterTransmitTimeout(&I2CD1, lis3_addr, accel_tx_data, 1, accel_rx_data, 6, tmo);
i2cReleaseBus(&I2CD1);
+ if (status != RDY_OK){
+ errors = i2cGetErrors(&I2CD1);
+ }
+
acceleration_x = accel_rx_data[0] + (accel_rx_data[1] << 8);
acceleration_y = accel_rx_data[2] + (accel_rx_data[3] << 8);
acceleration_z = accel_rx_data[4] + (accel_rx_data[5] << 8);