[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [4994] i2c1 error counter telemetry added,
Greg Horn <=