paparazzi-commits
[Top][All Lists]
Advanced

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

[paparazzi-commits] [4994] i2c1 error counter telemetry added


From: Greg Horn
Subject: [paparazzi-commits] [4994] i2c1 error counter telemetry added
Date: Mon, 21 Jun 2010 19:24:04 +0000

Revision: 4994
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4994
Author:   ghorn
Date:     2010-06-21 19:24:03 +0000 (Mon, 21 Jun 2010)
Log Message:
-----------
i2c1 error counter telemetry added
increased i2c1 startup delay to 2 seconds

Modified Paths:
--------------
    paparazzi3/trunk/conf/messages.xml
    paparazzi3/trunk/conf/telemetry/telemetry_booz2.xml
    paparazzi3/trunk/sw/airborne/booz/actuators/booz_actuators_asctec.c
    paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.h
    paparazzi3/trunk/sw/airborne/stm32/i2c_hw.c
    paparazzi3/trunk/sw/airborne/stm32/i2c_hw.h

Modified: paparazzi3/trunk/conf/messages.xml
===================================================================
--- paparazzi3/trunk/conf/messages.xml  2010-06-20 23:41:10 UTC (rev 4993)
+++ paparazzi3/trunk/conf/messages.xml  2010-06-21 19:24:03 UTC (rev 4994)
@@ -1515,6 +1515,16 @@
     <field name="zeta_r" type="float" />
   </message>
 
+  <message name="I2C_ERRORS" id="253">
+      <field name="Acknowledge_failure"   type="uint8"/>
+      <field name="Misplaced_Start_or_Stop"   type="uint8"/>
+      <field name="Arbitration_lost"   type="uint8"/>
+      <field name="Overrun_or_Underrun"   type="uint8"/>
+      <field name="PEC_Error_in_reception"   type="uint8"/>
+      <field name="Timeout_or_Tlow_error"   type="uint8"/>
+      <field name="SMBus_alert"   type="uint8"/>
+  </message>
+
 </class>
 
 

Modified: paparazzi3/trunk/conf/telemetry/telemetry_booz2.xml
===================================================================
--- paparazzi3/trunk/conf/telemetry/telemetry_booz2.xml 2010-06-20 23:41:10 UTC 
(rev 4993)
+++ paparazzi3/trunk/conf/telemetry/telemetry_booz2.xml 2010-06-21 19:24:03 UTC 
(rev 4994)
@@ -16,6 +16,7 @@
       <message name="BOOZ2_CAM"         period="1."/>
       <message name="BOOZ2_GPS"         period=".25"/>
       <message name="BOOZ_INS"          period=".25"/>
+      <message name="I2C_ERRORS"        period=".25"/>
     </mode>
 
     <mode name="ppm">

Modified: paparazzi3/trunk/sw/airborne/booz/actuators/booz_actuators_asctec.c
===================================================================
--- paparazzi3/trunk/sw/airborne/booz/actuators/booz_actuators_asctec.c 
2010-06-20 23:41:10 UTC (rev 4993)
+++ paparazzi3/trunk/sw/airborne/booz/actuators/booz_actuators_asctec.c 
2010-06-21 19:24:03 UTC (rev 4994)
@@ -114,7 +114,8 @@
 }
 #else /* ! ACTUATORS_ASCTEC_V2_PROTOCOL */
 void actuators_set(bool_t motors_on) {
-  if (!cpu_time_sec) return; // FIXME
+//  if (!cpu_time_sec) return; // FIXME
+  if (cpu_time_sec < 2) return; // FIXME
   supervision_run(motors_on, FALSE, booz2_commands);
 #ifdef KILL_MOTORS
   DeviceBuf[0] = 0;

Modified: paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.h
===================================================================
--- paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.h 2010-06-20 23:41:10 UTC 
(rev 4993)
+++ paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.h 2010-06-21 19:24:03 UTC 
(rev 4994)
@@ -51,6 +51,8 @@
 #include "booz2_ins.h"
 #include "booz_ahrs.h"
 
+#include "i2c_hw.h"
+
 extern uint8_t telemetry_mode_Main_DefaultChannel;
 
 #ifdef USE_GPS
@@ -752,6 +754,18 @@
                                   );                                          \
   }
 
+#define PERIODIC_SEND_I2C_ERRORS(_chan) {                                     \
+    DOWNLINK_SEND_I2C_ERRORS(_chan,                                   \
+                                  &i2c_errc_ack_fail,  \
+                                  &i2c_errc_miss_start_stop,  \
+                                  &i2c_errc_arb_lost,  \
+                                  &i2c_errc_over_under,  \
+                                  &i2c_errc_pec_recep,  \
+                                  &i2c_errc_timeout_tlow,  \
+                                  &i2c_errc_smbus_alert  \
+                                  );                                          \
+  }
+
 //TODO replace by BOOZ_EXTRA_ADC
 #ifdef BOOZ2_SONAR
 #define PERIODIC_SEND_BOOZ2_SONAR(_chan) 
DOWNLINK_SEND_BOOZ2_SONAR(_chan,&booz2_adc_1,&booz2_adc_2,&booz2_adc_3,&booz2_adc_4);

Modified: paparazzi3/trunk/sw/airborne/stm32/i2c_hw.c
===================================================================
--- paparazzi3/trunk/sw/airborne/stm32/i2c_hw.c 2010-06-20 23:41:10 UTC (rev 
4993)
+++ paparazzi3/trunk/sw/airborne/stm32/i2c_hw.c 2010-06-21 19:24:03 UTC (rev 
4994)
@@ -41,6 +41,14 @@
                                                                        \
   }
 
+uint16_t i2c_errc_ack_fail = 0;
+uint16_t i2c_errc_miss_start_stop = 0;
+uint16_t i2c_errc_arb_lost = 0;
+uint16_t i2c_errc_over_under = 0;
+uint16_t i2c_errc_pec_recep = 0;
+uint16_t i2c_errc_timeout_tlow = 0;
+uint16_t i2c_errc_smbus_alert = 0;
+
 void i2c1_hw_init(void) {
   
   DEBUG_SERVO1_INIT();
@@ -198,30 +206,39 @@
   }
 }
 
+
+
 void i2c1_er_irq_handler(void) {
   
   DEBUG_S1_TOGGLE();
-  
+
   if (I2C_GetITStatus(I2C1, I2C_IT_AF)) {   /* Acknowledge failure */
+    i2c_errc_ack_fail++;
     I2C_ClearITPendingBit(I2C1, I2C_IT_AF);
     I2C_GenerateSTOP(I2C1, ENABLE);
   }
   if (I2C_GetITStatus(I2C1, I2C_IT_BERR)) {   /* Misplaced Start or Stop 
condition */
+    i2c_errc_miss_start_stop++;
     I2C_ClearITPendingBit(I2C1, I2C_IT_BERR);
   }
   if (I2C_GetITStatus(I2C1, I2C_IT_ARLO)) {   /* Arbitration lost */
+    i2c_errc_arb_lost++;
     I2C_ClearITPendingBit(I2C1, I2C_IT_ARLO);
   }
   if (I2C_GetITStatus(I2C1, I2C_IT_OVR)) {    /* Overrun/Underrun */
+    i2c_errc_over_under++;
     I2C_ClearITPendingBit(I2C1, I2C_IT_OVR);
   }
   if (I2C_GetITStatus(I2C1, I2C_IT_PECERR)) { /* PEC Error in reception */
+    i2c_errc_pec_recep++;
     I2C_ClearITPendingBit(I2C1, I2C_IT_PECERR);
   }
   if (I2C_GetITStatus(I2C1, I2C_IT_TIMEOUT)) { /* Timeout or Tlow error */
+    i2c_errc_timeout_tlow++;
     I2C_ClearITPendingBit(I2C1, I2C_IT_TIMEOUT);
   }
   if (I2C_GetITStatus(I2C1, I2C_IT_SMBALERT)) { /* SMBus alert */
+    i2c_errc_smbus_alert++;
     I2C_ClearITPendingBit(I2C1, I2C_IT_SMBALERT);
   }
   

Modified: paparazzi3/trunk/sw/airborne/stm32/i2c_hw.h
===================================================================
--- paparazzi3/trunk/sw/airborne/stm32/i2c_hw.h 2010-06-20 23:41:10 UTC (rev 
4993)
+++ paparazzi3/trunk/sw/airborne/stm32/i2c_hw.h 2010-06-21 19:24:03 UTC (rev 
4994)
@@ -37,7 +37,15 @@
 extern void i2c1_ev_irq_handler(void);
 extern void i2c1_er_irq_handler(void);
 
+extern uint16_t i2c_errc_ack_fail;
+extern uint16_t i2c_errc_miss_start_stop;
+extern uint16_t i2c_errc_arb_lost;
+extern uint16_t i2c_errc_over_under;
+extern uint16_t i2c_errc_pec_recep;
+extern uint16_t i2c_errc_timeout_tlow;
+extern uint16_t i2c_errc_smbus_alert;
 
+
 #define I2c1SendStart() { I2C_GenerateSTART(I2C1, ENABLE); I2C_ITConfig(I2C1, 
I2C_IT_EVT, ENABLE);}
 
 #ifdef I2C1_STOP_HANDLER




reply via email to

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