fixed actuators_mkk and ami601 drivers on lpC21

This commit is contained in:
Antoine Drouin
2010-09-06 10:32:53 +00:00
parent b5022c14bb
commit 0a9d04e0d8
12 changed files with 144 additions and 84 deletions
+2
View File
@@ -214,7 +214,9 @@
<target name="test_baro" board="booz_1.0"/> <target name="test_baro" board="booz_1.0"/>
<target name="test_rc_spektrum" board="booz_1.0"/> <target name="test_rc_spektrum" board="booz_1.0"/>
<target name="test_rc_ppm" board="booz_1.0"/> <target name="test_rc_ppm" board="booz_1.0"/>
<target name="test_esc_mkk_simple" board="booz_1.0"/>
<target name="test_actuators_mkk" board="booz_1.0"/> <target name="test_actuators_mkk" board="booz_1.0"/>
<target name="test_ami601" board="booz_1.0"/>
</firmware> </firmware>
+54
View File
@@ -166,6 +166,28 @@ test_rc_ppm.srcs += $(SRC_BOOZ)/booz_radio_control.c \
$(SRC_BOOZ_ARCH)/radio_control/booz_radio_control_ppm_arch.c $(SRC_BOOZ_ARCH)/radio_control/booz_radio_control_ppm_arch.c
#
# simple test of mikrokopter motor controllers
#
test_esc_mkk_simple.ARCHDIR = $(ARCHI)
test_esc_mkk_simple.ARCH = arm7tdmi
test_esc_mkk_simple.TARGET = test_esc_mkk_simple
test_esc_mkk_simple.TARGETDIR = test_esc_mkk_simple
test_esc_mkk_simple.CFLAGS = -I$(SRC_LISA) -I$(ARCHI) -DPERIPHERALS_AUTO_INIT
test_esc_mkk_simple.CFLAGS += -DBOARD_CONFIG=$(BOARD_CFG)
test_esc_mkk_simple.srcs = test/test_esc_mkk_simple.c \
$(SRC_ARCH)/armVIC.c
test_esc_mkk_simple.CFLAGS += -DUSE_LED
test_esc_mkk_simple.CFLAGS += -DUSE_SYS_TIME -DSYS_TIME_LED=1
test_esc_mkk_simple.CFLAGS += -DPERIODIC_TASK_PERIOD='SYS_TICS_OF_SEC(1./512.)'
test_esc_mkk_simple.srcs += sys_time.c $(SRC_ARCH)/sys_time_hw.c
test_esc_mkk_simple.CFLAGS += -DACTUATORS_MKK_DEV=i2c0
test_esc_mkk_simple.CFLAGS += -DUSE_I2C0
test_esc_mkk_simple.CFLAGS += -DI2C0_SCLL=150 -DI2C0_SCLH=150 -DI2C0_VIC_SLOT=10
test_esc_mkk_simple.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c
# #
# test actuators mkk # test actuators mkk
# #
@@ -194,5 +216,37 @@ test_actuators_mkk.srcs += $(SRC_BOOZ)/booz2_commands.c
test_actuators_mkk.srcs += $(SRC_BOOZ)/actuators/booz_actuators_mkk.c test_actuators_mkk.srcs += $(SRC_BOOZ)/actuators/booz_actuators_mkk.c
test_actuators_mkk.CFLAGS += -DACTUATORS_MKK_DEVICE=i2c0 test_actuators_mkk.CFLAGS += -DACTUATORS_MKK_DEVICE=i2c0
test_actuators_mkk.srcs += $(SRC_BOOZ)/actuators/booz_supervision.c test_actuators_mkk.srcs += $(SRC_BOOZ)/actuators/booz_supervision.c
test_actuators_mkk.CFLAGS += -DACTUATORS_MKK_DEV=i2c0
test_actuators_mkk.CFLAGS += -DUSE_I2C0 test_actuators_mkk.CFLAGS += -DUSE_I2C0
test_actuators_mkk.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c test_actuators_mkk.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c
test_actuators_mkk.CFLAGS += -DUSE_I2C0 -DI2C0_SCLL=150 -DI2C0_SCLH=150 -DI2C0_VIC_SLOT=10
#
# test ami601
#
test_ami601.ARCHDIR = $(ARCHI)
test_ami601.ARCH = arm7tdmi
test_ami601.TARGET = test_ami601
test_ami601.TARGETDIR = test_ami601
test_ami601.CFLAGS = -I$(SRC_BOOZ) -I$(SRC_BOOZ_ARCH) -DPERIPHERALS_AUTO_INIT
test_ami601.CFLAGS += -DBOARD_CONFIG=$(BOARD_CFG)
test_ami601.srcs = test/peripherals/test_ami601.c \
$(SRC_ARCH)/armVIC.c
test_ami601.CFLAGS += -DUSE_LED
test_ami601.CFLAGS += -DUSE_SYS_TIME -DSYS_TIME_LED=$(SYS_TIME_LED)
test_ami601.CFLAGS += -DPERIODIC_TASK_PERIOD='SYS_TICS_OF_SEC(1./512.)'
test_ami601.srcs += sys_time.c $(SRC_ARCH)/sys_time_hw.c
test_ami601.CFLAGS += -DUSE_$(MODEM_PORT) -D$(MODEM_PORT)_BAUD=$(MODEM_BAUD)
test_ami601.srcs += $(SRC_ARCH)/uart_hw.c
test_ami601.CFLAGS += -DDOWNLINK -DDOWNLINK_TRANSPORT=PprzTransport -DDOWNLINK_DEVICE=$(MODEM_PORT)
test_ami601.srcs += downlink.c pprz_transport.c
test_ami601.CFLAGS += -DUSE_AMI601
test_ami601.srcs += $(SRC_BOOZ)/peripherals/booz_ami601.c
test_ami601.CFLAGS += -DUSE_I2C1 -DI2C1_SCLL=150 -DI2C1_SCLH=150 -DI2C1_VIC_SLOT=11
test_ami601.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c
@@ -49,7 +49,7 @@ ap.srcs += $(SRC_BOOZ)/peripherals/booz_max1168.c \
ap.CFLAGS += -DUSE_AMI601 ap.CFLAGS += -DUSE_AMI601
ap.srcs += $(SRC_BOOZ)/peripherals/booz_ami601.c ap.srcs += $(SRC_BOOZ)/peripherals/booz_ami601.c
ap.CFLAGS += -DUSE_I2C1 -DI2C1_SCLL=150 -DI2C1_SCLH=150 -DI2C1_VIC_SLOT=11 -DI2C1_BUF_LEN=16 ap.CFLAGS += -DUSE_I2C1 -DI2C1_SCLL=150 -DI2C1_SCLH=150 -DI2C1_VIC_SLOT=11
# #
+2 -2
View File
@@ -309,8 +309,8 @@ void i2c1_hw_init ( void ) {
I2C1SCLH = I2C1_SCLH_D; I2C1SCLH = I2C1_SCLH_D;
// initialize the interrupt vector // initialize the interrupt vector
VICIntSelect &= ~VIC_BIT(VIC_I2C1); // I2C0 selected as IRQ VICIntSelect &= ~VIC_BIT(VIC_I2C1); // I2C1 selected as IRQ
VICIntEnable = VIC_BIT(VIC_I2C1); // I2C0 interrupt enabled VICIntEnable = VIC_BIT(VIC_I2C1); // I2C1 interrupt enabled
_VIC_CNTL(I2C1_VIC_SLOT) = VIC_ENABLE | VIC_I2C1; _VIC_CNTL(I2C1_VIC_SLOT) = VIC_ENABLE | VIC_I2C1;
_VIC_ADDR(I2C1_VIC_SLOT) = (uint32_t)i2c1_ISR; // address of the ISR _VIC_ADDR(I2C1_VIC_SLOT) = (uint32_t)i2c1_ISR; // address of the ISR
} }
+1 -1
View File
@@ -47,7 +47,7 @@ uint32_t sys_time_chrono; /* T0TC ticks */
#endif #endif
#ifdef USE_AMI601 #ifdef USE_AMI601
#include "peripherals/booz_ami601.h" #include "booz/peripherals/booz_ami601.h"
#else #else
#define AMI601_IT 0x00 #define AMI601_IT 0x00
#endif #endif
@@ -43,6 +43,7 @@ void actuators_init(void) {
actuators_mkk.trans[i].type = I2CTransTx; actuators_mkk.trans[i].type = I2CTransTx;
actuators_mkk.trans[i].len_w = 1; actuators_mkk.trans[i].len_w = 1;
actuators_mkk.trans[i].slave_addr = actuators_addr[i]; actuators_mkk.trans[i].slave_addr = actuators_addr[i];
actuators_mkk.trans[i].stop_after_transmit = TRUE;
actuators_mkk.trans[i].status = I2CTransSuccess; actuators_mkk.trans[i].status = I2CTransSuccess;
} }
+2 -2
View File
@@ -16,10 +16,11 @@ void ami601_init( void ) {
ami601_values[i] = 0; ami601_values[i] = 0;
} }
ami601_i2c_trans.status = I2CTransSuccess; ami601_i2c_trans.status = I2CTransSuccess;
ami601_i2c_trans.slave_addr = AMI601_SLAVE_ADDR;
ami601_i2c_trans.stop_after_transmit = TRUE;
ami601_nb_err = 0; ami601_nb_err = 0;
ami601_status = AMI601_IDLE; ami601_status = AMI601_IDLE;
} }
void ami601_read( void ) { void ami601_read( void ) {
@@ -30,7 +31,6 @@ void ami601_read( void ) {
ami601_status = AMI601_SENDING_REQ; ami601_status = AMI601_SENDING_REQ;
ami601_i2c_trans.type = I2CTransTx; ami601_i2c_trans.type = I2CTransTx;
ami601_i2c_trans.len_w = 3; ami601_i2c_trans.len_w = 3;
ami601_i2c_trans.slave_addr = AMI601_SLAVE_ADDR;
ami601_i2c_trans.buf[0] = 0x55; ami601_i2c_trans.buf[0] = 0x55;
ami601_i2c_trans.buf[1] = 0xAA; ami601_i2c_trans.buf[1] = 0xAA;
ami601_i2c_trans.buf[2] = 0x14; ami601_i2c_trans.buf[2] = 0x14;
@@ -70,7 +70,6 @@ extern volatile uint32_t ami601_nb_err;
ami601_status = AMI601_READING_MEASURE; \ ami601_status = AMI601_READING_MEASURE; \
ami601_i2c_trans.type = I2CTransRx; \ ami601_i2c_trans.type = I2CTransRx; \
ami601_i2c_trans.len_r = 15; \ ami601_i2c_trans.len_r = 15; \
ami601_i2c_trans.slave_addr = AMI601_SLAVE_ADDR; \
i2c_submit(&i2c1, &ami601_i2c_trans); \ i2c_submit(&i2c1, &ami601_i2c_trans); \
} }
+4 -4
View File
@@ -135,7 +135,7 @@ extern bool_t i2c_submit(struct i2c_periph* p, struct i2c_transaction* t);
_t.len_w = 0; \ _t.len_w = 0; \
_t.stop_after_transmit = TRUE; \ _t.stop_after_transmit = TRUE; \
i2c_submit(&(_p),&(_t)); \ i2c_submit(&(_p),&(_t)); \
} }
#define I2CTransmit(_p, _t, _s_addr, _len) { \ #define I2CTransmit(_p, _t, _s_addr, _len) { \
_t.type = I2CTransTx; \ _t.type = I2CTransTx; \
@@ -144,7 +144,7 @@ extern bool_t i2c_submit(struct i2c_periph* p, struct i2c_transaction* t);
_t.len_w = _len; \ _t.len_w = _len; \
_t.stop_after_transmit = TRUE; \ _t.stop_after_transmit = TRUE; \
i2c_submit(&(_p),&(_t)); \ i2c_submit(&(_p),&(_t)); \
} }
#define I2CTransmitNoStop(_p, _t, _s_addr, _len) { \ #define I2CTransmitNoStop(_p, _t, _s_addr, _len) { \
_t.type = I2CTransTx; \ _t.type = I2CTransTx; \
@@ -153,7 +153,7 @@ extern bool_t i2c_submit(struct i2c_periph* p, struct i2c_transaction* t);
_t.len_w = _len; \ _t.len_w = _len; \
_t.stop_after_transmit = FALSE; \ _t.stop_after_transmit = FALSE; \
i2c_submit(&(_p),&(_t)); \ i2c_submit(&(_p),&(_t)); \
} }
#define I2CTransceive(_p, _t, _s_addr, _len_w, _len_r) { \ #define I2CTransceive(_p, _t, _s_addr, _len_w, _len_r) { \
_t.type = I2CTransTxRx; \ _t.type = I2CTransTxRx; \
@@ -162,7 +162,7 @@ extern bool_t i2c_submit(struct i2c_periph* p, struct i2c_transaction* t);
_t.len_w = _len_w; \ _t.len_w = _len_w; \
_t.stop_after_transmit = TRUE; \ _t.stop_after_transmit = TRUE; \
i2c_submit(&(_p),&(_t)); \ i2c_submit(&(_p),&(_t)); \
} }
#endif /* I2C_H */ #endif /* I2C_H */
+2 -2
View File
@@ -415,7 +415,7 @@ struct FloatRates {
FLOAT_QUAT_INV_COMP(_b2c, _a2b, _a2c); \ FLOAT_QUAT_INV_COMP(_b2c, _a2b, _a2c); \
FLOAT_QUAT_WRAP_SHORTEST(_b2c); \ FLOAT_QUAT_WRAP_SHORTEST(_b2c); \
FLOAT_QUAT_NORMALISE(_b2c); \ FLOAT_QUAT_NORMALISE(_b2c); \
} }
/* _b2c = _a2b inv_comp _a2c , aka _b2c = inv(_a2b) * _a2c */ /* _b2c = _a2b inv_comp _a2c , aka _b2c = inv(_a2b) * _a2c */
#define FLOAT_QUAT_INV_COMP(_b2c, _a2b, _a2c) { \ #define FLOAT_QUAT_INV_COMP(_b2c, _a2b, _a2c) { \
@@ -440,7 +440,7 @@ struct FloatRates {
(q_out).qy = (w).q/v_norm * s2; \ (q_out).qy = (w).q/v_norm * s2; \
(q_out).qz = (w).r/v_norm * s2; \ (q_out).qz = (w).r/v_norm * s2; \
} \ } \
} }
#define FLOAT_QUAT_ROTATE_FRAME(q_out, q_in, q_rot) { \ #define FLOAT_QUAT_ROTATE_FRAME(q_out, q_in, q_rot) { \
struct FloatQuat q_temp; \ struct FloatQuat q_temp; \
+3
View File
@@ -14,6 +14,9 @@ test_geodetic: test_geodetic.c ../math/pprz_geodetic_float.c ../math/pprz_geodet
test_algebra: test_algebra.c ../math/pprz_trig_int.c test_algebra: test_algebra.c ../math/pprz_trig_int.c
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
test_martin: test_martin.c ../math/pprz_trig_int.c
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
test_bla: test_bla.c ../math/pprz_trig_int.c test_bla: test_bla.c ../math/pprz_trig_int.c
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
+2 -1
View File
@@ -59,7 +59,8 @@ static inline void main_periodic_task( void ) {
trans.buf[0] = 0x04; trans.buf[0] = 0x04;
trans.len_w = 1; trans.len_w = 1;
trans.slave_addr = 0x58; trans.slave_addr = 0x58;
i2c_submit(&i2c1,&trans); trans.stop_after_transmit = TRUE;
i2c_submit(&ACTUATORS_MKK_DEV,&trans);
LED_PERIODIC(); LED_PERIODIC();