Subversion Repositories EDIS_Ignition

Rev

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

Rev 18 Rev 19
Line 21... Line 21...
21
 
21
 
22
/* Private includes ----------------------------------------------------------*/
22
/* Private includes ----------------------------------------------------------*/
23
/* USER CODE BEGIN Includes */
23
/* USER CODE BEGIN Includes */
24
#include "memory.h"
24
#include "memory.h"
25
#include "display.h"
25
#include "display.h"
26
#include "bmp280driver.h" 
26
#include "bmp280driver.h"
27
#include "libMisc/fixI2C.h"
27
#include "libMisc/fixI2C.h"
28
#include "libPlx/plx.h"
28
#include "libPlx/plx.h"
29
#include "libSerial/serial.h"
29
#include "libSerial/serial.h"
30
#include "libIgnTiming/timing.h"
30
#include "libIgnTiming/timing.h"
31
#include "libIgnTiming/edis.h"
31
#include "libIgnTiming/edis.h"
Line 75... Line 75...
75
int32_t timing = 0;
75
int32_t timing = 0;
76
 
76
 
77
// 6 degrees error in timing wheel this time ..
77
// 6 degrees error in timing wheel this time ..
78
int const TIMING_OFFSET = -6 * TIMING_SCALE;
78
int const TIMING_OFFSET = -6 * TIMING_SCALE;
79
 
79
 
-
 
80
// Switch over to double sparking
-
 
81
int const DOUBLE_SPARK_RPM = 1200;
80
// default atmospheric pressure
82
// default atmospheric pressure
81
uint32_t const DEFAULT_ATMOSPHERIC_PRESSURE = 1014 * 100;
83
uint32_t const DEFAULT_ATMOSPHERIC_PRESSURE = 1014 * 100;
82
 
84
 
83
uint32_t const DEFAULT_ATMOSPHERIC_TEMPERATURE = 25 * 100;
85
uint32_t const DEFAULT_ATMOSPHERIC_TEMPERATURE = 25 * 100;
-
 
86
 
-
 
87
// Serial buffers
-
 
88
#define TX_BUFFER_SIZE 128  
-
 
89
#define RX_BUFFER_SIZE 128
-
 
90
unsigned volatile char tx_buffer[TX_BUFFER_SIZE];
-
 
91
unsigned volatile char rx_buffer[RX_BUFFER_SIZE];
-
 
92
 
84
/* USER CODE END PV */
93
/* USER CODE END PV */
85
 
94
 
86
/* Private function prototypes -----------------------------------------------*/
95
/* Private function prototypes -----------------------------------------------*/
87
void SystemClock_Config(void);
96
void SystemClock_Config(void);
88
static void MX_GPIO_Init(void);
97
static void MX_GPIO_Init(void);
Line 94... Line 103...
94
static void MX_USART2_UART_Init(void);
103
static void MX_USART2_UART_Init(void);
95
static void MX_TIM3_Init(void);
104
static void MX_TIM3_Init(void);
96
static void MX_IWDG_Init(void);
105
static void MX_IWDG_Init(void);
97
/* USER CODE BEGIN PFP */
106
/* USER CODE BEGIN PFP */
98
 
107
 
-
 
108
void libPLXcallbackRecievedData(PLX_SensorInfo * info)
-
 
109
{ (void)info; }
99
 
110
 
100
void libPLXcallbackSendUserData()
111
void libPLXcallbackSendUserData()
101
{
112
{
102
  // send MAP
113
  // send MAP
103
  PLX_SensorInfo info;
114
  PLX_SensorInfo info;
Line 166... Line 177...
166
  MX_USART2_UART_Init();
177
  MX_USART2_UART_Init();
167
  MX_TIM3_Init();
178
  MX_TIM3_Init();
168
  MX_IWDG_Init();
179
  MX_IWDG_Init();
169
  /* USER CODE BEGIN 2 */
180
  /* USER CODE BEGIN 2 */
170
 
181
 
171
  init_usart_ctl(&uc2, &huart2);
182
  init_usart_ctl(&uc2, &huart2, tx_buffer,
-
 
183
                 rx_buffer,
-
 
184
                 TX_BUFFER_SIZE,
-
 
185
                 RX_BUFFER_SIZE);
172
 
186
 
173
  cc_init();
187
  cc_init();
174
 
188
 
175
  HAL_TIM_Base_MspInit(&htim1);
189
  HAL_TIM_Base_MspInit(&htim1);
176
 
190
 
Line 186... Line 200...
186
  // Start the input capture and the falling edge interrupt
200
  // Start the input capture and the falling edge interrupt
187
  HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_2);
201
  HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_2);
188
 
202
 
189
  __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 5); // delay of 5 uS
203
  __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 5); // delay of 5 uS
190
 
204
 
191
  HAL_I2C_ClearBusyFlagErrata_2_14_7(&hi2c1);
205
 // HAL_I2C_ClearBusyFlagErrata_2_14_7(&hi2c1);
192
  MX_I2C1_Init();
206
  MX_I2C1_Init();
193
  init_bmp(&hi2c1);
207
  init_bmp(&hi2c1);
194
  uint32_t lastTick = HAL_GetTick();
208
  uint32_t lastTick = HAL_GetTick();
195
 
209
 
196
  uint32_t displayOff = lastTick + 10000;
210
  uint32_t displayOff = lastTick + 10000;
Line 283... Line 297...
283
      {
297
      {
284
        cc_feed_rpm(rpm);
298
        cc_feed_rpm(rpm);
285
        // compute timing value, feed to display
299
        // compute timing value, feed to display
286
        timing = mapTiming(rpm, 1000 - comp_pres / 100);
300
        timing = mapTiming(rpm, 1000 - comp_pres / 100);
287
        cc_feed_timing(timing);
301
        cc_feed_timing(timing);
-
 
302
        // enable double spark below 1200 rpm
288
        int microsecs = mapTimingToMicroseconds(timing + TIMING_OFFSET, 0);
303
        int microsecs = mapTimingToMicroseconds(timing + TIMING_OFFSET, rpm > DOUBLE_SPARK_RPM);
289
        __HAL_TIM_SET_AUTORELOAD(&htim1, microsecs + SAW_DELAY);
304
        __HAL_TIM_SET_AUTORELOAD(&htim1, microsecs + SAW_DELAY);
290
      }
305
      }
291
    }
306
    }
292
 
307
 
293
    // Handle PLX
308
    // Handle PLX