I2C. Testhal switch to synchronous driver model.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/i2c_dev@3571 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
0738591b02
commit
b9df6d7c80
|
@ -25,27 +25,6 @@ static int16_t acceleration_x = 0;
|
||||||
static int16_t acceleration_y = 0;
|
static int16_t acceleration_y = 0;
|
||||||
static int16_t acceleration_z = 0;
|
static int16_t acceleration_z = 0;
|
||||||
|
|
||||||
/* Error trap */
|
|
||||||
static void i2c_lis3_error_cb(I2CDriver *i2cp, const I2CSlaveConfig *i2cscfg){
|
|
||||||
(void)i2cscfg;
|
|
||||||
int status = 0;
|
|
||||||
status = i2cp->id_i2c->SR1;
|
|
||||||
while(TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This callback raise up when transfer finished */
|
|
||||||
static void i2c_lis3_cb(I2CDriver *i2cp, const I2CSlaveConfig *i2cscfg){
|
|
||||||
(void)i2cp;
|
|
||||||
(void)i2cscfg;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Accelerometer lis3lv02dq config */
|
|
||||||
static const I2CSlaveConfig lis3 = {
|
|
||||||
i2c_lis3_cb,
|
|
||||||
i2c_lis3_error_cb,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Init function. Here we will also start personal serving thread.
|
* Init function. Here we will also start personal serving thread.
|
||||||
|
@ -59,7 +38,7 @@ int init_lis3(void){
|
||||||
|
|
||||||
/* sending */
|
/* sending */
|
||||||
i2cAcquireBus(&I2CD1);
|
i2cAcquireBus(&I2CD1);
|
||||||
i2cMasterTransmit(&I2CD1, &lis3, lis3_addr, accel_tx_data, 4, accel_rx_data, 0);
|
i2cMasterTransmit(&I2CD1, lis3_addr, accel_tx_data, 4, accel_rx_data, 0);
|
||||||
i2cReleaseBus(&I2CD1);
|
i2cReleaseBus(&I2CD1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -70,7 +49,7 @@ int init_lis3(void){
|
||||||
void request_acceleration_data(void){
|
void request_acceleration_data(void){
|
||||||
accel_tx_data[0] = ACCEL_OUT_DATA | AUTO_INCREMENT_BIT; // register address
|
accel_tx_data[0] = ACCEL_OUT_DATA | AUTO_INCREMENT_BIT; // register address
|
||||||
i2cAcquireBus(&I2CD1);
|
i2cAcquireBus(&I2CD1);
|
||||||
i2cMasterTransmit(&I2CD1, &lis3, lis3_addr, accel_tx_data, 1, accel_rx_data, 6);
|
i2cMasterTransmit(&I2CD1, lis3_addr, accel_tx_data, 1, accel_rx_data, 6);
|
||||||
i2cReleaseBus(&I2CD1);
|
i2cReleaseBus(&I2CD1);
|
||||||
|
|
||||||
acceleration_x = accel_rx_data[0] + (accel_rx_data[1] << 8);
|
acceleration_x = accel_rx_data[0] + (accel_rx_data[1] << 8);
|
||||||
|
|
|
@ -57,6 +57,22 @@ static msg_t PollAccelThread(void *arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Accelerometer thread
|
||||||
|
*/
|
||||||
|
static WORKING_AREA(PollAccelThreadWA, 128);
|
||||||
|
static msg_t PollAccelThread(void *arg) {
|
||||||
|
(void)arg;
|
||||||
|
systime_t time = chTimeNow();
|
||||||
|
|
||||||
|
while (TRUE) {
|
||||||
|
time += MS2ST(20);
|
||||||
|
request_acceleration_data();
|
||||||
|
chThdSleepUntil(time);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue