Merge branch 'integration-changes'
This commit is contained in:
		@ -47,6 +47,7 @@ extern "C" {
 | 
			
		||||
/* Exported macro ------------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN EM */
 | 
			
		||||
 | 
			
		||||
void Error_Handler_Led(uint8_t err);
 | 
			
		||||
/* USER CODE END EM */
 | 
			
		||||
 | 
			
		||||
/* Exported functions prototypes ---------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
@ -4,11 +4,12 @@
 | 
			
		||||
// CHOOSE ONE, comment the other or comment both and use -D SN_FRONT
 | 
			
		||||
//#define SN_FRONT
 | 
			
		||||
#define SN_REAR
 | 
			
		||||
// #define DEBUG
 | 
			
		||||
 | 
			
		||||
#ifdef SN_FRONT
 | 
			
		||||
#ifdef SN_REAR
 | 
			
		||||
#error "Choose to either #define SN_FRONT or SN_REAR, not both!"
 | 
			
		||||
#endif
 | 
			
		||||
#if (defined(SN_FRONT) && defined(SN_REAR)) || \
 | 
			
		||||
    (defined(SN_FRONT) && defined(DEBUG))   || \
 | 
			
		||||
    (defined(SN_REAR) && defined(DEBUG))
 | 
			
		||||
#error "Choose only one of #define SN_FRONT, #define SN_REAR, or #define DEBUG!"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
@ -20,12 +21,12 @@ static struct {
 | 
			
		||||
  GPIO_TypeDef* port;
 | 
			
		||||
  uint16_t pin;
 | 
			
		||||
} DIO_PIN_MAP[NUM_DIO_PINS] = {
 | 
			
		||||
/* 0 */ { .port = D1_IC_GPIO_Port,  .pin = D1_IC_Pin},
 | 
			
		||||
/* 1 */ { .port = D2_GPIO_Port,     .pin = D2_Pin},
 | 
			
		||||
/* 2 */ { .port = D3_GPIO_Port,     .pin = D3_Pin},
 | 
			
		||||
/* 3 */ { .port = D4_IC_GPIO_Port,  .pin = D4_IC_Pin},
 | 
			
		||||
/* 4 */ { .port = D5_GPIO_Port,     .pin = D5_Pin},
 | 
			
		||||
/* 5 */ { .port = D6_GPIO_Port,     .pin = D6_Pin},
 | 
			
		||||
/* 0 */ { .port = D5_GPIO_Port,     .pin = D5_Pin},
 | 
			
		||||
/* 1 */ { .port = D6_GPIO_Port,     .pin = D6_Pin},
 | 
			
		||||
/* 2 */ { .port = D4_IC_GPIO_Port,  .pin = D4_IC_Pin},
 | 
			
		||||
/* 3 */ { .port = D3_GPIO_Port,     .pin = D3_Pin},
 | 
			
		||||
/* 4 */ { .port = D2_GPIO_Port,     .pin = D2_Pin},
 | 
			
		||||
/* 5 */ { .port = D1_IC_GPIO_Port,  .pin = D1_IC_Pin},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
@ -135,6 +136,10 @@ static can_pkt_t CAN_SIGNAL_MAP[NUM_TX_PKT] = {
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static uint8_t DIO_LATCHING[NUM_DIO_PINS] = {
 | 
			
		||||
    1, 1, 0, 0, 0, 0,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define CAN_PWM_DC_ID 0x0DA // UNUSED
 | 
			
		||||
#define CAN_PWM_CONF_ID 0x0DB // UNUSED
 | 
			
		||||
#define CAN_PWM_BASE_ID CAN_PWM_DC_ID
 | 
			
		||||
@ -182,6 +187,10 @@ static can_pkt_t CAN_SIGNAL_MAP[NUM_TX_PKT] = {
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static uint8_t DIO_LATCHING[NUM_DIO_PINS] = {
 | 
			
		||||
    0, 0, 0, 0, 0, 0,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define CAN_PWM_DC_ID 0x0DC
 | 
			
		||||
#define CAN_PWM_CONF_ID 0x0DD
 | 
			
		||||
#define CAN_PWM_BASE_ID CAN_PWM_DC_ID
 | 
			
		||||
@ -189,6 +198,58 @@ static can_pkt_t CAN_SIGNAL_MAP[NUM_TX_PKT] = {
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
 | 
			
		||||
static can_pkt_t CAN_SIGNAL_MAP[NUM_TX_PKT] = {
 | 
			
		||||
    {
 | 
			
		||||
        .can_id = 0x044, .dlc = 6, .num_signals = 9, .period = 100,  .signals = {
 | 
			
		||||
            { .type = DIN, .channel = L9, .start =  0, .length =  1, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = DIN, .channel = LA, .start =  1, .length =  1, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = DIN, .channel = LC, .start =  2, .length =  1, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = DIN, .channel = R5, .start =  3, .length =  1, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = DIN, .channel = R6, .start =  4, .length =  1, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = DIN, .channel = R7, .start =  5, .length =  1, .factor = 1., .name = "" },
 | 
			
		||||
 | 
			
		||||
            { .type = AIN, .channel = L1, .start =  6+12*0, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = AIN, .channel = L2, .start =  6+12*1, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = AIN, .channel = L3, .start =  6+12*2, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        .can_id = 0x045, .dlc = 8, .num_signals = 5, .period = 100,  .signals = {
 | 
			
		||||
            { .type = AIN, .channel = L4, .start =  12*0, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = AIN, .channel = L5, .start =  12*1, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = AIN, .channel = L6, .start =  12*2, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = AIN, .channel = L7, .start =  12*3, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = AIN, .channel = L8, .start =  12*4, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        .can_id = 0x046, .dlc = 8, .num_signals = 5, .period = 100,  .signals = {
 | 
			
		||||
            { .type = AIN, .channel = R9, .start =  12*0, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = AIN, .channel = RA, .start =  12*1, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = AIN, .channel = RB, .start =  12*2, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = AIN, .channel = RC, .start =  12*3, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = AIN, .channel = RD, .start =  12*4, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        .can_id = 0x047, .dlc = 5, .num_signals = 3, .period = 100,  .signals = {
 | 
			
		||||
            { .type = AIN, .channel = RE, .start =  12*0, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = AIN, .channel = RF, .start =  12*1, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
            { .type = AIN, .channel = R0, .start =  12*2, .length =  12, .factor = 1., .name = "" },
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define CAN_PWM_DC_ID 0x0DA // UNUSED
 | 
			
		||||
#define CAN_PWM_CONF_ID 0x0DB // UNUSED
 | 
			
		||||
#define CAN_PWM_BASE_ID CAN_PWM_DC_ID
 | 
			
		||||
#define CAN_PWM_FILTER_MASK 0x7FE // Match both
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* user needs
 | 
			
		||||
TIM_HandleTypeDef* PWM_TIM_MAP[3] = {&htim1, &htim4, &htim3};
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
@ -41,6 +41,7 @@
 | 
			
		||||
/* Private define ------------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN PD */
 | 
			
		||||
#define TIM_BASE_FREQ 96000000UL
 | 
			
		||||
#define WSS_HISTORY_SIZE 10
 | 
			
		||||
/* USER CODE END PD */
 | 
			
		||||
 | 
			
		||||
/* Private macro -------------------------------------------------------------*/
 | 
			
		||||
@ -69,6 +70,9 @@ TIM_HandleTypeDef* PWM_TIM_MAP[3] = {&htim1, &htim4, &htim3};
 | 
			
		||||
static uint8_t  pwm_ch_active[8];
 | 
			
		||||
 | 
			
		||||
static uint16_t wss_flanks[2];
 | 
			
		||||
static uint16_t wss_flanks_avg[2];
 | 
			
		||||
static uint8_t wss_flanks_history[2][WSS_HISTORY_SIZE];
 | 
			
		||||
static uint8_t wss_flanks_history_idx[2];  // index of the oldest entry (next to be overwritten)
 | 
			
		||||
/* USER CODE END PV */
 | 
			
		||||
 | 
			
		||||
/* Private function prototypes -----------------------------------------------*/
 | 
			
		||||
@ -86,10 +90,16 @@ void send_latest_can() {
 | 
			
		||||
  tx_counter++;
 | 
			
		||||
 | 
			
		||||
  for (int di = 0; di < NUM_DIO_PINS; di++) {
 | 
			
		||||
    dio_values[di] = HAL_GPIO_ReadPin(
 | 
			
		||||
    uint8_t value = HAL_GPIO_ReadPin(
 | 
			
		||||
      DIO_PIN_MAP[di].port,
 | 
			
		||||
      DIO_PIN_MAP[di].pin
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    if (DIO_LATCHING[di]) {
 | 
			
		||||
      dio_values[di] |= value;
 | 
			
		||||
    } else {
 | 
			
		||||
      dio_values[di] = value;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for (int pi = 0; pi < NUM_TX_PKT; pi++) {
 | 
			
		||||
@ -112,6 +122,7 @@ void send_latest_can() {
 | 
			
		||||
        switch (signal->type) {
 | 
			
		||||
          case DIN:
 | 
			
		||||
            value = dio_values[signal->channel];
 | 
			
		||||
            dio_values[signal->channel] = 0;  // will be overwritten with real value at start of 1kHz loop
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
          case AIN:
 | 
			
		||||
@ -119,8 +130,21 @@ void send_latest_can() {
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
          case FIN:
 | 
			
		||||
            value = wss_flanks[signal->channel];
 | 
			
		||||
            uint8_t oldest_hist_idx = wss_flanks_history_idx[signal->channel];
 | 
			
		||||
            // subtract oldest entry from avg
 | 
			
		||||
            wss_flanks_avg[signal->channel] -= wss_flanks_history[signal->channel][oldest_hist_idx];
 | 
			
		||||
            // overwrite oldest history entry with new value and reset counter
 | 
			
		||||
            wss_flanks_history[signal->channel][oldest_hist_idx] = wss_flanks[signal->channel];
 | 
			
		||||
            wss_flanks[signal->channel] = 0;
 | 
			
		||||
            // add new counter to avg
 | 
			
		||||
            wss_flanks_avg[signal->channel] += wss_flanks_history[signal->channel][oldest_hist_idx];
 | 
			
		||||
            // increase / wrap around index
 | 
			
		||||
            wss_flanks_history_idx[signal->channel]++;
 | 
			
		||||
            if(wss_flanks_history_idx[signal->channel] >= WSS_HISTORY_SIZE) {
 | 
			
		||||
              wss_flanks_history_idx[signal->channel] = 0;
 | 
			
		||||
            }
 | 
			
		||||
            // value = wss_flanks_avg[signal->channel] * (1000 / pktinfo->period / WSS_HISTORY_SIZE);
 | 
			
		||||
            value = wss_flanks_avg[signal->channel];
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
          default:
 | 
			
		||||
@ -132,9 +156,11 @@ void send_latest_can() {
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (HAL_FDCAN_AddMessageToTxFifoQ(hMainCAN, &txHeader, (uint8_t*) &txData) != HAL_OK)
 | 
			
		||||
        Error_Handler();
 | 
			
		||||
 | 
			
		||||
      if (HAL_FDCAN_AddMessageToTxFifoQ(hMainCAN, &txHeader, (uint8_t*) &txData) != HAL_OK) {
 | 
			
		||||
        if(HAL_FDCAN_GetError(hMainCAN) != HAL_FDCAN_ERROR_FIFO_FULL) {
 | 
			
		||||
          Error_Handler_Led(1);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (tx_counter >= 256) {
 | 
			
		||||
@ -207,10 +233,10 @@ int main(void)
 | 
			
		||||
  hPeriCAN = &hfdcan2;
 | 
			
		||||
 | 
			
		||||
  if (HAL_ADCEx_Calibration_Start(&hadc1, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED) != HAL_OK)
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
    Error_Handler_Led(2);
 | 
			
		||||
 | 
			
		||||
  if (HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_values, NUM_ADC_PINS) != HAL_OK)
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
    Error_Handler_Led(2);
 | 
			
		||||
 | 
			
		||||
  HAL_TIM_Base_Start_IT(&htim6);
 | 
			
		||||
 | 
			
		||||
@ -227,11 +253,11 @@ int main(void)
 | 
			
		||||
  txHeader.DataLength = 8;
 | 
			
		||||
 | 
			
		||||
  if (HAL_FDCAN_ActivateNotification(hMainCAN, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
    Error_Handler_Led(3);
 | 
			
		||||
 | 
			
		||||
  if (HAL_FDCAN_ConfigGlobalFilter(hMainCAN, FDCAN_REJECT, FDCAN_REJECT,
 | 
			
		||||
                                    FDCAN_REJECT_REMOTE, FDCAN_REJECT_REMOTE) != HAL_OK)
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
    Error_Handler_Led(3);
 | 
			
		||||
 | 
			
		||||
  FDCAN_FilterTypeDef filter;
 | 
			
		||||
  filter.IdType = FDCAN_STANDARD_ID;
 | 
			
		||||
@ -242,10 +268,10 @@ int main(void)
 | 
			
		||||
  filter.FilterID2 = CAN_PWM_FILTER_MASK;
 | 
			
		||||
 | 
			
		||||
  if (HAL_FDCAN_ConfigFilter(hMainCAN, &filter) != HAL_OK)
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
    Error_Handler_Led(5);
 | 
			
		||||
 | 
			
		||||
  if (HAL_FDCAN_Start(hMainCAN) != HAL_OK)
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
    Error_Handler_Led(5);
 | 
			
		||||
 | 
			
		||||
  // Init all channels as stopped
 | 
			
		||||
  memset(pwm_ch_active, 0, 8);
 | 
			
		||||
@ -256,6 +282,10 @@ int main(void)
 | 
			
		||||
 | 
			
		||||
  tx_counter = 0;
 | 
			
		||||
 | 
			
		||||
  memset(wss_flanks, 0, sizeof(wss_flanks));
 | 
			
		||||
  memset(wss_flanks_avg, 0, sizeof(wss_flanks));
 | 
			
		||||
  memset(wss_flanks_history, 0, sizeof(wss_flanks_history));
 | 
			
		||||
  memset(wss_flanks_history_idx, 0, sizeof(wss_flanks_history_idx));
 | 
			
		||||
  /* USER CODE END 2 */
 | 
			
		||||
 | 
			
		||||
  /* Infinite loop */
 | 
			
		||||
@ -317,7 +347,7 @@ void SystemClock_Config(void)
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLFRACN = 0;
 | 
			
		||||
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
    Error_Handler_Led(4);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /** Initializes the CPU, AHB and APB buses clocks
 | 
			
		||||
@ -335,7 +365,7 @@ void SystemClock_Config(void)
 | 
			
		||||
 | 
			
		||||
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
    Error_Handler_Led(4);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -476,6 +506,49 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
 | 
			
		||||
  HAL_ResumeTick();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Error_Handler_Led(uint8_t err) {
 | 
			
		||||
  HAL_GPIO_WritePin(STATUS_R_GPIO_Port, STATUS_R_Pin, GPIO_PIN_RESET);
 | 
			
		||||
  HAL_GPIO_WritePin(STATUS_G_GPIO_Port, STATUS_G_Pin, GPIO_PIN_RESET);
 | 
			
		||||
  HAL_GPIO_WritePin(STATUS_B_GPIO_Port, STATUS_B_Pin, GPIO_PIN_RESET);
 | 
			
		||||
  switch (err)
 | 
			
		||||
  {
 | 
			
		||||
  case 0: // red: general error
 | 
			
		||||
    HAL_GPIO_WritePin(STATUS_R_GPIO_Port, STATUS_R_Pin, GPIO_PIN_SET);
 | 
			
		||||
    break;
 | 
			
		||||
 | 
			
		||||
  case 1: // red blue: in 1 kHz loop
 | 
			
		||||
    HAL_GPIO_WritePin(STATUS_R_GPIO_Port, STATUS_R_Pin, GPIO_PIN_SET);
 | 
			
		||||
    HAL_GPIO_WritePin(STATUS_B_GPIO_Port, STATUS_B_Pin, GPIO_PIN_SET);
 | 
			
		||||
    break;
 | 
			
		||||
 | 
			
		||||
  case 2: // blue: ADC calibration or DMA start
 | 
			
		||||
    HAL_GPIO_WritePin(STATUS_B_GPIO_Port, STATUS_B_Pin, GPIO_PIN_SET);
 | 
			
		||||
    break;
 | 
			
		||||
 | 
			
		||||
  case 3: // green blue: CAN notify and config gloabl filter
 | 
			
		||||
    HAL_GPIO_WritePin(STATUS_B_GPIO_Port, STATUS_B_Pin, GPIO_PIN_SET);
 | 
			
		||||
    HAL_GPIO_WritePin(STATUS_G_GPIO_Port, STATUS_G_Pin, GPIO_PIN_SET);
 | 
			
		||||
    break;
 | 
			
		||||
    
 | 
			
		||||
  case 4: //red green: clock
 | 
			
		||||
    HAL_GPIO_WritePin(STATUS_R_GPIO_Port, STATUS_R_Pin, GPIO_PIN_SET);
 | 
			
		||||
    HAL_GPIO_WritePin(STATUS_G_GPIO_Port, STATUS_G_Pin, GPIO_PIN_SET);
 | 
			
		||||
    break;
 | 
			
		||||
    
 | 
			
		||||
  case 5: // red green blue: CAN config filter and start
 | 
			
		||||
    HAL_GPIO_WritePin(STATUS_R_GPIO_Port, STATUS_R_Pin, GPIO_PIN_SET);
 | 
			
		||||
    HAL_GPIO_WritePin(STATUS_B_GPIO_Port, STATUS_B_Pin, GPIO_PIN_SET);
 | 
			
		||||
    HAL_GPIO_WritePin(STATUS_G_GPIO_Port, STATUS_G_Pin, GPIO_PIN_SET);
 | 
			
		||||
    break;
 | 
			
		||||
    
 | 
			
		||||
    default:
 | 
			
		||||
    break;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  __disable_irq();
 | 
			
		||||
  while (1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* USER CODE END 4 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										29
									
								
								Software/debug_dbc_entries.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								Software/debug_dbc_entries.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,29 @@
 | 
			
		||||
BO_ 68 Sensornode_Debug_1: 6 Sensornode_F
 | 
			
		||||
   SG_ Sensornode_Debug_L9 : 0|1@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_LA : 1|1@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_LC : 2|1@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_R5 : 3|1@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_R6 : 4|1@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_R7 : 5|1@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_L1 : 6|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_L2 : 18|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_L3 : 30|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
 | 
			
		||||
BO_ 69 Sensornode_Debug_2: 8 Sensornode_F
 | 
			
		||||
   SG_ Sensornode_Debug_L4 : 0|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_L5 : 12|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_L6 : 24|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_L7 : 36|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_L8 : 48|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
 | 
			
		||||
BO_ 70 Sensornode_Debug_3: 8 Sensornode_F
 | 
			
		||||
   SG_ Sensornode_Debug_R9 : 0|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_RA : 12|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_RB : 24|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_RC : 36|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_RD : 48|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
 | 
			
		||||
BO_ 71 Sensornode_Debug_4: 5 Sensornode_F
 | 
			
		||||
   SG_ Sensornode_Debug_RE : 0|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_RF : 12|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
   SG_ Sensornode_Debug_R0 : 24|12@1+ (1,0) [0|1] "" Vector__XXX
 | 
			
		||||
		Reference in New Issue
	
	Block a user