Subversion Repositories EngineBay2

Rev

Rev 12 | Rev 14 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 12 Rev 13
Line 89... Line 89...
89
static void MX_DMA_Init(void);
89
static void MX_DMA_Init(void);
90
static void MX_ADC_Init(void);
90
static void MX_ADC_Init(void);
91
static void MX_SPI1_Init(void);
91
static void MX_SPI1_Init(void);
92
static void MX_TIM2_Init(void);
92
static void MX_TIM2_Init(void);
93
static void MX_TIM6_Init(void);
93
static void MX_TIM6_Init(void);
94
static void MX_USART1_UART_Init(void);
-
 
95
static void MX_USART2_UART_Init(void);
94
static void MX_USART2_UART_Init(void);
96
 
-
 
97
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
95
static void MX_USART1_UART_Init(void);
98
               
-
 
99
 
96
 
100
/* USER CODE BEGIN PFP */
97
/* USER CODE BEGIN PFP */
101
/* Private function prototypes -----------------------------------------------*/
98
/* Private function prototypes -----------------------------------------------*/
102
 
99
 
103
/* USER CODE END PFP */
100
/* USER CODE END PFP */
104
 
101
 
105
/* USER CODE BEGIN 0 */
102
/* USER CODE BEGIN 0 */
106
 
103
 
107
void ConfigureDMA(void) {
-
 
108
        hdma_adc.Instance = DMA1_Channel1;
-
 
109
        hdma_adc.Init.Direction = DMA_PERIPH_TO_MEMORY;
-
 
110
        hdma_adc.Init.PeriphInc = DMA_PINC_DISABLE;
-
 
111
        hdma_adc.Init.MemInc = DMA_MINC_ENABLE;
-
 
112
        hdma_adc.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
-
 
113
        hdma_adc.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
-
 
114
        hdma_adc.Init.Mode = DMA_CIRCULAR; // make the DMA loop automatically
-
 
115
        hdma_adc.Init.Priority = DMA_PRIORITY_LOW;
-
 
116
        HAL_DMA_Init(&hdma_adc);
-
 
117
        __HAL_LINKDMA(&hadc, DMA_Handle, hdma_adc);
-
 
118
 
-
 
119
}
-
 
120
 
-
 
121
void plx_sendword(int x) {
104
void plx_sendword(int x) {
122
        PutCharSerial(&uc1, ((x) >> 6) & 0x3F);
105
        PutCharSerial(&uc1, ((x) >> 6) & 0x3F);
123
        PutCharSerial(&uc1, (x) & 0x3F);
106
        PutCharSerial(&uc1, (x) & 0x3F);
124
}
107
}
125
 
108
 
Line 149... Line 132...
149
                        new_time = RPM_Time[next_count];
132
                        new_time = RPM_Time[next_count];
150
                        RPM_Count_Latch = next_count;
133
                        RPM_Count_Latch = next_count;
151
                        if (new_time > base_time) {
134
                        if (new_time > base_time) {
152
                                RPM_Pulsewidth = new_time - base_time; // not wrapped
135
                                RPM_Pulsewidth = new_time - base_time; // not wrapped
153
                        } else {
136
                        } else {
154
                                RPM_Pulsewidth = new_time + (~base_time) + 1; // deal with wrapping
137
                                RPM_Pulsewidth = new_time - base_time + 65536; // deal with wrapping
155
                        }
138
                        }
156
 
139
 
157
                        RPM_Diff += RPM_Pulsewidth;
140
                        RPM_Diff += RPM_Pulsewidth;
158
                        // need to check if this is a long pulse. If it is, keep the answer
141
                        // need to check if this is a long pulse. If it is, keep the answer
159
                        if (RPM_Pulsewidth > BREAKER_MIN) {
142
                        if (RPM_Pulsewidth > BREAKER_MIN) {
Line 262... Line 245...
262
  MX_DMA_Init();
245
  MX_DMA_Init();
263
  MX_ADC_Init();
246
  MX_ADC_Init();
264
  MX_SPI1_Init();
247
  MX_SPI1_Init();
265
  MX_TIM2_Init();
248
  MX_TIM2_Init();
266
  MX_TIM6_Init();
249
  MX_TIM6_Init();
267
  MX_USART1_UART_Init();
-
 
268
  MX_USART2_UART_Init();
250
  MX_USART2_UART_Init();
-
 
251
  MX_USART1_UART_Init();
269
 
252
 
270
  /* USER CODE BEGIN 2 */
253
  /* USER CODE BEGIN 2 */
-
 
254
        HAL_MspInit();
271
 
255
 
272
        __HAL_RCC_SPI1_CLK_ENABLE()
-
 
273
        ;   // Temp sensor port
256
// Not using HAL USART code
274
        __HAL_RCC_USART1_CLK_ENABLE()
257
        __HAL_RCC_USART1_CLK_ENABLE()
275
        ; // PLX comms port
258
        ; // PLX comms port
276
        __HAL_RCC_USART2_CLK_ENABLE()
259
        __HAL_RCC_USART2_CLK_ENABLE()
277
        ;  // Debug comms port
260
        ;  // Debug comms port
278
 
-
 
279
        __HAL_RCC_ADC1_CLK_ENABLE()
-
 
280
        ; // enable the ADC
-
 
281
 
-
 
282
        __HAL_RCC_TIM6_CLK_ENABLE()
-
 
283
        ;
-
 
284
        __HAL_RCC_TIM2_CLK_ENABLE();
-
 
285
 
-
 
286
        ConfigureDMA();
-
 
287
        HAL_ADC_Start_DMA(&hadc, ADC_Samples, 6);
-
 
288
 
-
 
289
        /* setup the USART control blocks */
261
        /* setup the USART control blocks */
290
        init_usart_ctl(&uc1, huart1.Instance);
262
        init_usart_ctl(&uc1, huart1.Instance);
291
        init_usart_ctl(&uc2, huart2.Instance);
263
        init_usart_ctl(&uc2, huart2.Instance);
292
 
264
 
293
        EnableSerialRxInterrupt(&uc1);
265
        EnableSerialRxInterrupt(&uc1);
294
        EnableSerialRxInterrupt(&uc2);
266
        EnableSerialRxInterrupt(&uc2);
295
 
267
 
-
 
268
 
-
 
269
        HAL_SPI_MspInit(&hspi1);
-
 
270
 
-
 
271
        HAL_ADC_MspInit(&hadc);
-
 
272
        HAL_ADC_Start_DMA(&hadc, ADC_Samples, 6);
-
 
273
 
-
 
274
 
-
 
275
 
-
 
276
        HAL_TIM_Base_MspInit(&htim6);
296
        HAL_TIM_Base_Start_IT(&htim6);
277
        HAL_TIM_Base_Start_IT(&htim6);
297
        HAL_TIM_Base_Start(&htim2);
-
 
298
 
278
 
-
 
279
// initialise all the STMCubeMX stuff
-
 
280
        HAL_TIM_Base_MspInit(&htim2);
-
 
281
// Start the counter
-
 
282
        HAL_TIM_Base_Start(&htim2);
-
 
283
// Start the input capture and the interrupt
299
         __HAL_TIM_ENABLE_IT(&htim2, TIM_IT_CC1);
284
        HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);
300
 
285
 
301
 
286
 
302
  /* USER CODE END 2 */
287
  /* USER CODE END 2 */
303
 
288
 
304
  /* Infinite loop */
289
  /* Infinite loop */
Line 336... Line 321...
336
                if (send)
321
                if (send)
337
                {
322
                {
338
                  send = 0;
323
                  send = 0;
339
 
324
 
340
                  uint16_t val;
325
                  uint16_t val;
341
                  val = __HAL_TIM_GET_COUNTER(&htim2);
326
                  val = __HAL_TIM_GET_COMPARE(&htim2,TIM_CHANNEL_1);
342
          PutCharSerial(&uc2,(val&31) + 32);
327
          PutCharSerial(&uc2,(val&31) + 32);
343
 
328
 
-
 
329
 
-
 
330
 
344
  // send the observations
331
  // send the observations
345
                 ProcessRPM(0);
332
                 ProcessRPM(0);
346
                 ProcessCHT(0);
333
                 ProcessCHT(0);
347
                 ProcessBatteryVoltage(0);
334
//               ProcessBatteryVoltage(0);
348
                 ProcessBatteryVoltage(1);
335
//               ProcessBatteryVoltage(1);
349
 
336
 
350
                 PutCharSerial(&uc1,PLX_Stop);
337
                 PutCharSerial(&uc1,PLX_Stop);
351
                }
338
                }
352
 
339
 
353
        }
340
        }
Line 511... Line 498...
511
{
498
{
512
 
499
 
513
  TIM_ClockConfigTypeDef sClockSourceConfig;
500
  TIM_ClockConfigTypeDef sClockSourceConfig;
514
  TIM_MasterConfigTypeDef sMasterConfig;
501
  TIM_MasterConfigTypeDef sMasterConfig;
515
  TIM_IC_InitTypeDef sConfigIC;
502
  TIM_IC_InitTypeDef sConfigIC;
516
  TIM_OC_InitTypeDef sConfigOC;
-
 
517
 
503
 
518
  htim2.Instance = TIM2;
504
  htim2.Instance = TIM2;
519
  htim2.Init.Prescaler = 320;
505
  htim2.Init.Prescaler = 320;
520
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
506
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
521
  htim2.Init.Period = 0xFFFF;
507
  htim2.Init.Period = 65535;
522
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
508
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
523
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
509
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
524
  {
510
  {
525
    Error_Handler();
511
    Error_Handler();
526
  }
512
  }
Line 534... Line 520...
534
  if (HAL_TIM_IC_Init(&htim2) != HAL_OK)
520
  if (HAL_TIM_IC_Init(&htim2) != HAL_OK)
535
  {
521
  {
536
    Error_Handler();
522
    Error_Handler();
537
  }
523
  }
538
 
524
 
539
  if (HAL_TIM_OC_Init(&htim2) != HAL_OK)
-
 
540
  {
-
 
541
    Error_Handler();
-
 
542
  }
-
 
543
 
-
 
544
  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
-
 
545
  {
-
 
546
    Error_Handler();
-
 
547
  }
-
 
548
 
-
 
549
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
525
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
550
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
526
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
551
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
527
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
552
  {
528
  {
553
    Error_Handler();
529
    Error_Handler();
554
  }
530
  }
Line 560... Line 536...
560
  if (HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
536
  if (HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
561
  {
537
  {
562
    Error_Handler();
538
    Error_Handler();
563
  }
539
  }
564
 
540
 
565
  if (HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_2) != HAL_OK)
-
 
566
  {
-
 
567
    Error_Handler();
-
 
568
  }
-
 
569
 
-
 
570
  sConfigOC.OCMode = TIM_OCMODE_TIMING;
-
 
571
  sConfigOC.Pulse = 0;
-
 
572
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
-
 
573
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
-
 
574
  if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
-
 
575
  {
-
 
576
    Error_Handler();
-
 
577
  }
-
 
578
 
-
 
579
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
-
 
580
  if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
-
 
581
  {
-
 
582
    Error_Handler();
-
 
583
  }
-
 
584
 
-
 
585
  HAL_TIM_MspPostInit(&htim2);
-
 
586
 
-
 
587
}
541
}
588
 
542
 
589
/* TIM6 init function */
543
/* TIM6 init function */
590
static void MX_TIM6_Init(void)
544
static void MX_TIM6_Init(void)
591
{
545
{
592
 
546
 
593
  TIM_MasterConfigTypeDef sMasterConfig;
547
  TIM_MasterConfigTypeDef sMasterConfig;
594
 
548
 
595
  htim6.Instance = TIM6;
549
  htim6.Instance = TIM6;
596
  htim6.Init.Prescaler = 3200;
550
  htim6.Init.Prescaler = 320;
597
  htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
551
  htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
598
  htim6.Init.Period = 1000;
552
  htim6.Init.Period = 9999;
599
  if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
553
  if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
600
  {
554
  {
601
    Error_Handler();
555
    Error_Handler();
602
  }
556
  }
603
 
557
 
Line 727... Line 681...
727
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
681
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
728
  GPIO_InitStruct.Pull = GPIO_NOPULL;
682
  GPIO_InitStruct.Pull = GPIO_NOPULL;
729
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
683
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
730
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
684
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
731
 
685
 
732
  /*Configure GPIO pins : PB2 PB12 PB13 PB14
686
  /*Configure GPIO pins : PB2 PB10 PB11 PB12
733
                           PB15 PB4 PB5 PB6
687
                           PB13 PB14 PB15 PB3
-
 
688
                           PB4 PB5 PB6 PB7
734
                           PB7 PB8 PB9 */
689
                           PB8 PB9 */
735
  GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14
690
  GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12
736
                          |GPIO_PIN_15|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6
691
                          |GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_3
-
 
692
                          |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
737
                          |GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;
693
                          |GPIO_PIN_8|GPIO_PIN_9;
738
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
694
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
739
  GPIO_InitStruct.Pull = GPIO_NOPULL;
695
  GPIO_InitStruct.Pull = GPIO_NOPULL;
740
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
696
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
741
 
697
 
742
  /*Configure GPIO pin : PD2 */
698
  /*Configure GPIO pin : PD2 */