[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[paparazzi-commits] [5186] Made the communication with CSC working.
From: |
Piotr Esden-Tempski |
Subject: |
[paparazzi-commits] [5186] Made the communication with CSC working. |
Date: |
Thu, 29 Jul 2010 04:34:39 +0000 |
Revision: 5186
http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=5186
Author: esden
Date: 2010-07-29 04:34:39 +0000 (Thu, 29 Jul 2010)
Log Message:
-----------
Made the communication with CSC working. Added some more compiletime
definitions for configuring the stm32 CAN hardware.
Modified Paths:
--------------
paparazzi3/trunk/conf/autopilot/lisa_test_progs.makefile
paparazzi3/trunk/sw/airborne/lisa/test_csc_servo.c
paparazzi3/trunk/sw/airborne/stm32/can_hw.c
Modified: paparazzi3/trunk/conf/autopilot/lisa_test_progs.makefile
===================================================================
--- paparazzi3/trunk/conf/autopilot/lisa_test_progs.makefile 2010-07-28
15:19:17 UTC (rev 5185)
+++ paparazzi3/trunk/conf/autopilot/lisa_test_progs.makefile 2010-07-29
04:34:39 UTC (rev 5186)
@@ -1131,10 +1131,19 @@
test_csc_servo.CFLAGS += -DUSE_LED
test_csc_servo.srcs += $(SRC_ARCH)/led_hw.c
test_csc_servo.CFLAGS += -DUSE_SYS_TIME -DSYS_TIME_LED=1
-#test_csc_servo.CFLAGS += -DPERIODIC_TASK_PERIOD='SYS_TICS_OF_SEC(1./512.)'
-test_csc_servo.CFLAGS += -DPERIODIC_TASK_PERIOD='SYS_TICS_OF_SEC(1./10.)'
+test_csc_servo.CFLAGS += -DPERIODIC_TASK_PERIOD='SYS_TICS_OF_SEC(1./512.)'
test_csc_servo.srcs += sys_time.c $(SRC_ARCH)/sys_time_hw.c
-test_csc_servo.CFLAGS += -DUSE_CAN1 -DUSE_USB_LP_CAN1_RX0_IRQ
+# setting CAN prescaler to generate 3MHz time quanta, drift compensiation to 1
+# time quanta, bit section 1 to 3 time quanta and bit section 2 to 4 time
quanta
+# resulting in a 375kHz CAN bitrate expected by the CSC.
+test_csc_servo.CFLAGS += \
+ -DUSE_CAN1 \
+ -DUSE_USB_LP_CAN1_RX0_IRQ \
+ -DCAN_PRESCALER=12 \
+ -DCAN_SJW_TQ=CAN_SJW_1tq \
+ -DCAN_BS1_TQ=CAN_BS1_3tq \
+ -DCAN_BS2_TQ=CAN_BS2_4tq \
+ -DCAN_ERR_RESUME=DISABLE
test_csc_servo.srcs += can.c $(SRC_ARCH)/can_hw.c
################################################################################
Modified: paparazzi3/trunk/sw/airborne/lisa/test_csc_servo.c
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/test_csc_servo.c 2010-07-28 15:19:17 UTC
(rev 5185)
+++ paparazzi3/trunk/sw/airborne/lisa/test_csc_servo.c 2010-07-29 04:34:39 UTC
(rev 5186)
@@ -25,6 +25,7 @@
#include "init_hw.h"
#include "sys_time.h"
#include "can.h"
+#include "stm32/can.h"
static inline void main_init( void );
static inline void main_periodic_task( void );
@@ -32,6 +33,10 @@
uint16_t servos[4];
+FlagStatus can_error_warning = RESET;
+FlagStatus can_error_passive = RESET;
+FlagStatus can_bus_off = RESET;
+
int main(void) {
main_init();
@@ -56,11 +61,28 @@
}
static inline void main_periodic_task( void ) {
- servos[0]++;
+ servos[0]+=10;
+ servos[1]+=10;
+ servos[2]+=10;
+ servos[3]+=10;
- can_transmit(1, 0, (uint8_t *)servos, 8);
+ if((can_error_warning = CAN_GetFlagStatus(CAN1, CAN_FLAG_EWG)) == SET){
+ LED_ON(2);
+ }else{
+ LED_OFF(2);
+ }
+ if((can_error_passive = CAN_GetFlagStatus(CAN1, CAN_FLAG_EPV)) == SET){
+ LED_ON(3);
+ }else{
+ LED_OFF(3);
+ }
+ if((can_bus_off = CAN_GetFlagStatus(CAN1, CAN_FLAG_BOF)) == SET){
+ LED_ON(0);
+ }else{
+ LED_OFF(0);
+ }
- LED_TOGGLE(0);
+ can_transmit(0, 0, (uint8_t *)servos, 8);
LED_PERIODIC();
}
Modified: paparazzi3/trunk/sw/airborne/stm32/can_hw.c
===================================================================
--- paparazzi3/trunk/sw/airborne/stm32/can_hw.c 2010-07-28 15:19:17 UTC (rev
5185)
+++ paparazzi3/trunk/sw/airborne/stm32/can_hw.c 2010-07-29 04:34:39 UTC (rev
5186)
@@ -43,8 +43,6 @@
CanTxMsg can_tx_msg;
CanRxMsg can_rx_msg;
-volatile uint8_t CAN_RX_FLAG;
-
void can_hw_init(void)
{
RCC_ClocksTypeDef rcc_clocks;
@@ -57,9 +55,6 @@
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO |
RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
- //RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO |
- // RCC_APB2Periph_GPIO_CAN, ENABLE);
- //RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
/* Configure CAN pin: RX */
gpio.GPIO_Pin = GPIO_Pin_11;
@@ -90,16 +85,16 @@
/* CAN cell init */
can.CAN_TTCM = DISABLE;
- can.CAN_ABOM = DISABLE;
+ can.CAN_ABOM = CAN_ERR_RESUME;
can.CAN_AWUM = DISABLE;
can.CAN_NART = DISABLE;
can.CAN_RFLM = DISABLE;
can.CAN_TXFP = DISABLE;
can.CAN_Mode = CAN_Mode_Normal;
- can.CAN_SJW = CAN_SJW_1tq;
- can.CAN_BS1 = CAN_BS1_3tq;
- can.CAN_BS2 = CAN_BS2_5tq;
- can.CAN_Prescaler = 11;
+ can.CAN_SJW = CAN_SJW_TQ;
+ can.CAN_BS1 = CAN_BS1_TQ;
+ can.CAN_BS2 = CAN_BS2_TQ;
+ can.CAN_Prescaler = CAN_PRESCALER;
CAN_Init(CAN1, &can);
/* CAN filter init */
@@ -118,7 +113,11 @@
can_tx_msg.StdId = 0x0;
can_tx_msg.ExtId = 0x0;
can_tx_msg.RTR = CAN_RTR_DATA;
+#ifdef USE_CAN_EXT_ID
can_tx_msg.IDE = CAN_ID_EXT;
+#else
+ can_tx_msg.IDE = CAN_ID_STD;
+#endif
can_tx_msg.DLC = 1;
CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
@@ -130,7 +129,11 @@
return -1;
}
+#ifdef USE_CAN_EXT_ID
can_tx_msg.ExtId = id;
+#else
+ can_tx_msg.StdId = id;
+#endif
can_tx_msg.DLC = len;
memcpy(can_tx_msg.Data, buf, len);
@@ -144,32 +147,4 @@
void usb_lp_can1_rx0_irq_handler(void)
{
CAN_Receive(CAN1, CAN_FIFO0, &can_rx_msg);
- //set CAN receive event flag
- CAN_RX_FLAG = 1;
- LED_TOGGLE(5);
-
-#ifdef BLINKENLIGHTS
-//code piotr used to show receive activity
-
- if((can_rx_msg.Data[0] & 0x01) == 0x01){
- LED_ON(4);
- }else{
- LED_OFF(4);
- }
- if((can_rx_msg.Data[0] & 0x02) == 0x02){
- LED_ON(5);
- }else{
- LED_OFF(5);
- }
- if((can_rx_msg.Data[0] & 0x04) == 0x04){
- LED_ON(6);
- }else{
- LED_OFF(6);
- }
- if((can_rx_msg.Data[0] & 0x08) == 0x08){
- LED_ON(7);
- }else{
- LED_OFF(7);
- }
-#endif
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [5186] Made the communication with CSC working.,
Piotr Esden-Tempski <=