Rev 52 | Rev 56 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 52 | Rev 53 | ||
|---|---|---|---|
| Line 110... | Line 110... | ||
| 110 | int itemIndex = dial_pos[dial] % PLXItems; |
110 | int itemIndex = dial_pos[dial] % PLXItems; |
| 111 | 111 | ||
| 112 | return cc_display (dial, itemIndex, suppress); |
112 | return cc_display (dial, itemIndex, suppress); |
| 113 | } |
113 | } |
| 114 | 114 | ||
| - | 115 | void |
|
| - | 116 | setBaud (usart_ctl *ctl, uint32_t baud) |
|
| - | 117 | { |
|
| - | 118 | ctl->handle->Init.BaudRate = baud; |
|
| - | 119 | __disable_irq (); |
|
| - | 120 | HAL_UART_Init (ctl->handle); |
|
| - | 121 | __enable_irq (); |
|
| - | 122 | } |
|
| - | 123 | ||
| - | 124 | void |
|
| - | 125 | sendString (usart_ctl *ctl, char *string, int length) |
|
| - | 126 | { |
|
| - | 127 | int i; |
|
| - | 128 | for (i = 0; i < length; i++) |
|
| - | 129 | PutCharSerial (ctl, string[i]); |
|
| - | 130 | ||
| - | 131 | } |
|
| - | 132 | ||
| - | 133 | ||
| - | 134 | // this code doesnt work so it leaves speed as 9600. |
|
| - | 135 | void |
|
| - | 136 | initModule (usart_ctl *ctl, uint32_t baudRate) |
|
| - | 137 | { |
|
| - | 138 | char initBuf[30]; |
|
| - | 139 | // switch to command mode |
|
| - | 140 | HAL_GPIO_WritePin (BT_BUTTON_GPIO_Port, BT_BUTTON_Pin, GPIO_PIN_RESET); |
|
| - | 141 | HAL_Delay (500); |
|
| - | 142 | int initLen = small_sprintf (initBuf, "AT+UART=%d,1,2\n", baudRate); |
|
| - | 143 | setBaud (ctl, 38400); |
|
| - | 144 | sendString (ctl, initBuf, initLen); |
|
| - | 145 | TxWaitEmpty (ctl); |
|
| - | 146 | // switch back to normal comms at new baud rate |
|
| - | 147 | ||
| - | 148 | HAL_GPIO_WritePin (BT_BUTTON_GPIO_Port, BT_BUTTON_Pin, GPIO_PIN_SET); |
|
| - | 149 | setBaud (ctl, baudRate); |
|
| - | 150 | HAL_Delay (100); |
|
| - | 151 | ||
| - | 152 | } |
|
| - | 153 | ||
| 115 | /* USER CODE END PFP */ |
154 | /* USER CODE END PFP */ |
| 116 | 155 | ||
| 117 | /* Private user code ---------------------------------------------------------*/ |
156 | /* Private user code ---------------------------------------------------------*/ |
| 118 | /* USER CODE BEGIN 0 */ |
157 | /* USER CODE BEGIN 0 */ |
| 119 | 158 | ||
| Line 180... | Line 219... | ||
| 180 | /* turn on USART3 IRQ */ |
219 | /* turn on USART3 IRQ */ |
| 181 | HAL_NVIC_SetPriority (USART3_IRQn, 4, 0); |
220 | HAL_NVIC_SetPriority (USART3_IRQn, 4, 0); |
| 182 | HAL_NVIC_EnableIRQ (USART3_IRQn); |
221 | HAL_NVIC_EnableIRQ (USART3_IRQn); |
| 183 | 222 | ||
| 184 | /* setup the USART control blocks */ |
223 | /* setup the USART control blocks */ |
| 185 | init_usart_ctl (&uc1, huart1.Instance); |
224 | init_usart_ctl (&uc1, &huart1); |
| 186 | init_usart_ctl (&uc2, huart2.Instance); |
225 | init_usart_ctl (&uc2, &huart2); |
| 187 | init_usart_ctl (&uc3, huart3.Instance); |
226 | init_usart_ctl (&uc3, &huart3); |
| 188 | 227 | ||
| 189 | EnableSerialRxInterrupt (&uc1); |
228 | EnableSerialRxInterrupt (&uc1); |
| 190 | EnableSerialRxInterrupt (&uc2); |
229 | EnableSerialRxInterrupt (&uc2); |
| 191 | EnableSerialRxInterrupt (&uc3); |
230 | EnableSerialRxInterrupt (&uc3); |
| 192 | 231 | ||
| Line 195... | Line 234... | ||
| 195 | HAL_TIM_Encoder_Start (&htim9, TIM_CHANNEL_ALL); |
234 | HAL_TIM_Encoder_Start (&htim9, TIM_CHANNEL_ALL); |
| 196 | 235 | ||
| 197 | // Switch handler called on sysTick interrupt. |
236 | // Switch handler called on sysTick interrupt. |
| 198 | InitSwitches (); |
237 | InitSwitches (); |
| 199 | 238 | ||
| - | 239 | initModule(&uc3,9600); |
|
| - | 240 | ||
| - | 241 | ||
| 200 | cc_init (); |
242 | cc_init (); |
| 201 | 243 | ||
| 202 | int i; |
244 | int i; |
| 203 | for (i = 0; i < 2; i++) |
245 | for (i = 0; i < 2; i++) |
| 204 | { |
246 | { |
| Line 245... | Line 287... | ||
| 245 | 287 | ||
| 246 | int PLXPtr = 0; |
288 | int PLXPtr = 0; |
| 247 | 289 | ||
| 248 | while (1) |
290 | while (1) |
| 249 | { |
291 | { |
| 250 | // Handle the bluetooth pairing function by pressing both buttons. |
292 | // Handle the bluetooth pairing / reset function by pressing both buttons. |
| 251 | if ((push_pos[0] == 1) && (push_pos[1] == 1)) |
293 | if ((push_pos[0] == 1) && (push_pos[1] == 1)) |
| 252 | { |
294 | { |
| 253 | HAL_GPIO_WritePin (BT_BUTTON_GPIO_Port, BT_BUTTON_Pin, |
295 | HAL_GPIO_WritePin (BT_BUTTON_GPIO_Port, BT_BUTTON_Pin, |
| 254 | GPIO_PIN_RESET); |
296 | GPIO_PIN_RESET); |
| 255 | } |
297 | } |
| Line 265... | Line 307... | ||
| 265 | { |
307 | { |
| 266 | timeout++; |
308 | timeout++; |
| 267 | if (timeout % 1000 == 0) |
309 | if (timeout % 1000 == 0) |
| 268 | { |
310 | { |
| 269 | const char msg[] = "Timeout\r\n"; |
311 | const char msg[] = "Timeout\r\n"; |
| 270 | char *p = msg; |
- | |
| 271 | while (*p) |
- | |
| 272 | { |
- | |
| 273 | PutCharSerial (&uc3, *p++); |
312 | sendString (&uc3, msg, sizeof(msg)); |
| 274 | } |
- | |
| 275 | 313 | ||
| 276 | } |
314 | } |
| 277 | 315 | ||
| 278 | if (timeout > 60000) |
316 | if (timeout > 60000) |
| 279 | { |
317 | { |
| Line 309... | Line 347... | ||
| 309 | 347 | ||
| 310 | int DataVal; |
348 | int DataVal; |
| 311 | // process min/max |
349 | // process min/max |
| 312 | for (i = 0; i < PLXItems; i++) |
350 | for (i = 0; i < PLXItems; i++) |
| 313 | { |
351 | { |
| 314 | // Send item to BT |
- | |
| 315 | uint16_t addr = ConvPLX (Data.Sensor[i].AddrH, |
- | |
| 316 | Data.Sensor[i].AddrL); |
- | |
| 317 | uint8_t inst = Data.Sensor[i].Instance; |
- | |
| 318 | uint16_t reading = ConvPLX (Data.Sensor[i].ReadingH, |
- | |
| 319 | Data.Sensor[i].ReadingL); |
- | |
| 320 | 352 | ||
| 321 | if (log) |
353 | if (log) |
| 322 | { |
354 | { |
| - | 355 | // Send item to BT |
|
| - | 356 | uint16_t addr = ConvPLX (Data.Sensor[i].AddrH, |
|
| - | 357 | Data.Sensor[i].AddrL); |
|
| - | 358 | uint8_t inst = Data.Sensor[i].Instance; |
|
| - | 359 | uint16_t reading = ConvPLX ( |
|
| - | 360 | Data.Sensor[i].ReadingH, |
|
| - | 361 | Data.Sensor[i].ReadingL); |
|
| 323 | char outbuff[100]; |
362 | char outbuff[100]; |
| 324 | 363 | ||
| 325 | int cnt = small_sprintf (outbuff, "$LOG%d,%d,%d", addr, |
364 | int cnt = small_sprintf (outbuff, "$LOG,%d,%d,%d", |
| 326 | inst, reading); |
365 | addr, inst, reading); |
| 327 | - | ||
| 328 | - | ||
| 329 | 366 | ||
| - | 367 | //checksum |
|
| 330 | int ck; |
368 | int ck; |
| 331 | int sum = 0; |
369 | int sum = 0; |
| 332 | for (ck=1 ; ck < cnt ; ck++) |
370 | for (ck = 1; ck < cnt; ck++) |
| 333 | sum += outbuff[ck]; |
371 | sum += outbuff[ck]; |
| 334 | cnt += small_sprintf(outbuff+cnt,"*%02X\n",sum & 0xFF); |
372 | cnt += small_sprintf (outbuff + cnt, "*%02X\n", |
| 335 | for (ck = 0; ck <cnt; ck++) |
373 | sum & 0xFF); |
| 336 | PutCharSerial (&uc3, outbuff[ck]); |
374 | sendString (&uc3, outbuff, cnt); |
| 337 | 375 | ||
| 338 | } |
376 | } |
| 339 | DataVal = ConvPLX (Data.Sensor[i].ReadingH, |
377 | DataVal = ConvPLX (Data.Sensor[i].ReadingH, |
| 340 | Data.Sensor[i].ReadingL); |
378 | Data.Sensor[i].ReadingL); |
| 341 | if (DataVal > Max[i]) |
379 | if (DataVal > Max[i]) |