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_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.
|
||||
|
@ -59,7 +38,7 @@ int init_lis3(void){
|
|||
|
||||
/* sending */
|
||||
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);
|
||||
return 0;
|
||||
}
|
||||
|
@ -70,7 +49,7 @@ int init_lis3(void){
|
|||
void request_acceleration_data(void){
|
||||
accel_tx_data[0] = ACCEL_OUT_DATA | AUTO_INCREMENT_BIT; // register address
|
||||
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);
|
||||
|
||||
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