paparazzi-commits
[Top][All Lists]
Advanced

[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 
 }




reply via email to

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