paparazzi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[paparazzi-commits] [5844] Modified Eagletree airspeed sensor to work wi


From: Mark Griffin
Subject: [paparazzi-commits] [5844] Modified Eagletree airspeed sensor to work with the new i2c transaction-based code .
Date: Wed, 08 Sep 2010 21:18:30 +0000

Revision: 5844
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=5844
Author:   markgriffin
Date:     2010-09-08 21:18:30 +0000 (Wed, 08 Sep 2010)
Log Message:
-----------
Modified Eagletree airspeed sensor to work with the new i2c transaction-based 
code. Comments in Eagletree makefiles updated.

Modified Paths:
--------------
    paparazzi3/trunk/conf/autopilot/subsystems/fixedwing/airspeed_ets.makefile
    paparazzi3/trunk/conf/autopilot/subsystems/fixedwing/baro_ets.makefile
    paparazzi3/trunk/sw/airborne/airspeed_ets.c
    paparazzi3/trunk/sw/airborne/airspeed_ets.h

Modified: 
paparazzi3/trunk/conf/autopilot/subsystems/fixedwing/airspeed_ets.makefile
===================================================================
--- paparazzi3/trunk/conf/autopilot/subsystems/fixedwing/airspeed_ets.makefile  
2010-09-08 20:34:44 UTC (rev 5843)
+++ paparazzi3/trunk/conf/autopilot/subsystems/fixedwing/airspeed_ets.makefile  
2010-09-08 21:18:30 UTC (rev 5844)
@@ -1,4 +1,4 @@
-# EagleTree sensors (altimeter and airspeed)
+# EagleTree airspeed sensor
 ap.CFLAGS += -DUSE_AIRSPEED_ETS -DUSE_AIRSPEED -DUSE_I2C0
 ap.srcs += airspeed.c airspeed_ets.c i2c.c $(SRC_ARCH)/i2c_hw.c
 

Modified: paparazzi3/trunk/conf/autopilot/subsystems/fixedwing/baro_ets.makefile
===================================================================
--- paparazzi3/trunk/conf/autopilot/subsystems/fixedwing/baro_ets.makefile      
2010-09-08 20:34:44 UTC (rev 5843)
+++ paparazzi3/trunk/conf/autopilot/subsystems/fixedwing/baro_ets.makefile      
2010-09-08 21:18:30 UTC (rev 5844)
@@ -1,4 +1,4 @@
-# EagleTree sensors (altimeter and airspeed)
+# EagleTree barometric altitude sensor
 ap.CFLAGS += -DUSE_BARO_ETS -DUSE_I2C0
 ap.srcs += baro_ets.c i2c.c $(SRC_ARCH)/i2c_hw.c
 

Modified: paparazzi3/trunk/sw/airborne/airspeed_ets.c
===================================================================
--- paparazzi3/trunk/sw/airborne/airspeed_ets.c 2010-09-08 20:34:44 UTC (rev 
5843)
+++ paparazzi3/trunk/sw/airborne/airspeed_ets.c 2010-09-08 21:18:30 UTC (rev 
5844)
@@ -5,7 +5,7 @@
  * Notes:
  * Connect directly to TWOG/Tiny I2C port. Multiple sensors can be chained 
together.
  * Sensor should be in the proprietary mode (default) and not in 3rd party 
mode.
- * See conf/airframes/easystar2.xml for a configuration example.
+ * See /conf/airframes/easystar_ets_example.xml for a configuration example.
  *
  * Sensor module wire assignments:
  * Red wire: 5V
@@ -14,6 +14,7 @@
  * Brown wire: SCL
  *
  * Copyright (C) 2009 Vassilis Varveropoulos
+ * Modified by Mark Griffin on 8 September 2010 to work with new i2c 
transaction routines.
  *
  * This file is part of paparazzi.
  *
@@ -33,7 +34,6 @@
  * Boston, MA 02111-1307, USA.
  *
  */
-
 #include "airspeed_ets.h"
 #include "i2c.h"
 #include "nav.h"
@@ -44,7 +44,6 @@
 #endif
 
 #define AIRSPEED_ETS_ADDR 0xEA
-#define AIRSPEED_ETS_REG 0x07
 #ifndef AIRSPEED_ETS_SCALE
 #define AIRSPEED_ETS_SCALE 1.8
 #endif
@@ -65,6 +64,8 @@
 int airspeed_ets_buffer_idx;
 float airspeed_ets_buffer[AIRSPEED_ETS_NBSAMPLES_AVRG];
 
+struct i2c_transaction airspeed_ets_i2c_trans;
+
 // Local variables
 volatile bool_t airspeed_ets_i2c_done;
 bool_t airspeed_ets_offset_init;
@@ -81,18 +82,22 @@
   airspeed_ets_valid = TRUE;
   airspeed_ets_offset_init = FALSE;
   airspeed_ets_cnt = AIRSPEED_ETS_OFFSET_NBSAMPLES_INIT + 
AIRSPEED_ETS_OFFSET_NBSAMPLES_AVRG;
-  i2c0_buf[0] = 0;
-  i2c0_buf[1] = 0;
+
   airspeed_ets_buffer_idx = 0;
   for (n=0; n < AIRSPEED_ETS_NBSAMPLES_AVRG; ++n)
     airspeed_ets_buffer[n] = 0.0;
+
+  airspeed_ets_i2c_trans.status = I2CTransSuccess;
+  airspeed_ets_i2c_trans.slave_addr = AIRSPEED_ETS_ADDR;
+  airspeed_ets_i2c_trans.stop_after_transmit = TRUE;
 }
 
 void airspeed_ets_read( void ) {
-  // Initiate next read
-  i2c0_buf[0] = 0;
-  i2c0_buf[1] = 0;
-  i2c0_receive(AIRSPEED_ETS_ADDR, 2, &airspeed_ets_i2c_done); 
+  if (airspeed_ets_i2c_trans.status == I2CTransSuccess) {
+    airspeed_ets_i2c_trans.type = I2CTransRx;
+    airspeed_ets_i2c_trans.len_r = 2;
+    i2c_submit(&i2c0, &airspeed_ets_i2c_trans);
+  }
 }      
 
 void airspeed_ets_periodic( void ) {
@@ -100,9 +105,10 @@
   float airspeed_tmp = 0.0;
 
   // Read raw value
-  if (i2c0_status == I2C_IDLE) {
+
+  if (airspeed_ets_i2c_trans.status == I2CTransSuccess) {
     // Get raw airspeed from buffer
-    airspeed_ets_raw = ((uint16_t)(i2c0_buf[1]) << 8) | 
(uint16_t)(i2c0_buf[0]);
+    airspeed_ets_raw = ((uint16_t)(airspeed_ets_i2c_trans.buf[1]) << 8) | 
(uint16_t)(airspeed_ets_i2c_trans.buf[0]);
     // Check if this is valid airspeed
     if (airspeed_ets_raw == 0)
       airspeed_ets_valid = FALSE;

Modified: paparazzi3/trunk/sw/airborne/airspeed_ets.h
===================================================================
--- paparazzi3/trunk/sw/airborne/airspeed_ets.h 2010-09-08 20:34:44 UTC (rev 
5843)
+++ paparazzi3/trunk/sw/airborne/airspeed_ets.h 2010-09-08 21:18:30 UTC (rev 
5844)
@@ -1,12 +1,15 @@
 /*
  * Driver for the EagleTree Systems Airspeed Sensor
+ * Modified by Mark Griffin on 8 September 2010 to work with new i2c 
transaction routines.
  */
-
 #ifndef AIRSPEED_ETS_H
 #define AIRSPEED_ETS_H
 
 #include "std.h"
+#include "i2c.h"
 
+extern struct i2c_transaction airspeed_ets_i2c_trans;
+
 extern void airspeed_ets_periodic( void );
 extern void airspeed_ets_read( void );
 extern void airspeed_ets_init( void );




reply via email to

[Prev in Thread] Current Thread [Next in Thread]