Subversion Repositories DashDisplay

Rev

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

Rev 17 Rev 18
Line 52... Line 52...
52
UART_HandleTypeDef huart1;
52
UART_HandleTypeDef huart1;
53
UART_HandleTypeDef huart2;
53
UART_HandleTypeDef huart2;
54
 
54
 
55
/* USER CODE BEGIN PV */
55
/* USER CODE BEGIN PV */
56
/* Private variables ---------------------------------------------------------*/
56
/* Private variables ---------------------------------------------------------*/
57
#define MAXRDG 10
57
#define MAXRDG 32
58
 
58
 
59
int OldObservation[2] =
59
int OldObservation[2] =
60
{ -1, -1 }; // illegal initial value
60
{ -1, -1 }; // illegal initial value
61
int OldObservationIndex[2] =
61
int OldObservationIndex[2] =
62
{ -1, -1 }; // if more than one sensor this will be printed
62
{ -1, -1 }; // if more than one sensor this will be printed
63
int16_t dial0[2] =
63
int16_t dial0[2] =
64
{ 0, 0 };
64
{ 0, 0 };
65
int16_t dial1[2] =
65
int16_t dial1[2] =
66
{ -1, -1 };
66
{ -1, -1 };
67
 
67
 
-
 
68
uint16_t dial_timer[2] =
-
 
69
{ 0, 0 };
-
 
70
 
-
 
71
static const int DialTimeout = 50; // about 20 seconds after twiddle, save the dial position.
-
 
72
 
68
/* Virtual address defined by the user: 0xFFFF value is prohibited */
73
/* Virtual address defined by the user: 0xFFFF value is prohibited */
69
uint16_t VirtAddVarTab[NumbOfVar] = {0x1111,0x2222 }  ;
74
uint16_t VirtAddVarTab[NumbOfVar] = {0x1111,0x2222 }  ;
70
 
75
 
71
union
76
union
72
{
77
{
Line 101... Line 106...
101
// suppress is the ItemIndex we wish to suppress on this display
106
// suppress is the ItemIndex we wish to suppress on this display
102
int  DisplayCurrent(int dial,int suppress)
107
int  DisplayCurrent(int dial,int suppress)
103
{
108
{
104
        char buff[10];
109
        char buff[10];
105
        int i;
110
        int i;
-
 
111
        int rc;
106
        select_display(dial); // pick the display we are using
112
        select_display(dial); // pick the display we are using
107
        int ItemIndex = dial_pos[dial]/4;
113
        int ItemIndex = dial_pos[dial]/4;
108
 
114
 
109
        // wrap around count if dial too far to the right
115
        // wrap around count if dial too far to the right
110
        if (ItemIndex >= PLXItems)
116
        if (ItemIndex >= PLXItems)
Line 157... Line 163...
157
                {
163
                {
158
                        if (Observation != OldObservation[dial]
164
                        if (Observation != OldObservation[dial]
159
                                        || ObservationIndex != OldObservationIndex[dial])
165
                                        || ObservationIndex != OldObservationIndex[dial])
160
                        {
166
                        {
161
 
167
 
-
 
168
                dial_timer[dial] = DialTimeout;
162
 
169
 
163
                                dial1[dial] = -1;
170
                                dial1[dial] = -1;
164
                                clearDisplay();
171
                                clearDisplay();
165
                                dial_draw_scale(
172
                                dial_draw_scale(
166
                                                DisplayInfo[Observation].Low,
173
                                                DisplayInfo[Observation].Low,
Line 185... Line 192...
185
                                OldObservationIndex[dial] = ObservationIndex;
192
                                OldObservationIndex[dial] = ObservationIndex;
186
                                //
193
                                //
187
                                display();
194
                                display();
188
 
195
 
189
                        }
196
                        }
-
 
197
                        else
-
 
198
                        {
-
 
199
                                // check for timer timeout on consistent timer
-
 
200
                                if(dial_timer[dial])
-
 
201
                                {
-
 
202
                                        dial_timer[dial]--;
-
 
203
 
-
 
204
                                        if(dial_timer[dial]==0  )
-
 
205
                                        {
-
 
206
                                                uint16_t curr_val = dial_pos[dial];
-
 
207
                                                rc = EE_ReadVariable(VirtAddVarTab[dial],&curr_val);
-
 
208
                                                if((rc !=0) || (curr_val != dial_pos[dial]))
-
 
209
                                                {
-
 
210
                                                  EE_WriteVariable(VirtAddVarTab[dial],dial_pos[dial]);
-
 
211
                                            }
-
 
212
                                        }
-
 
213
                                }
-
 
214
 
-
 
215
                        }
190
 
216
 
191
                        double max_rdg;
217
                        double max_rdg;
192
                        double min_rdg;
218
                        double min_rdg;
193
                        double cur_rdg;
219
                        double cur_rdg;
194
                        int int_rdg;
220
                        int int_rdg;
Line 307... Line 333...
307
        init_usart_ctl(&uc1, huart1.Instance);
333
        init_usart_ctl(&uc1, huart1.Instance);
308
        init_usart_ctl(&uc2, huart2.Instance);
334
        init_usart_ctl(&uc2, huart2.Instance);
309
 
335
 
310
        EnableSerialRxInterrupt(&uc1);
336
        EnableSerialRxInterrupt(&uc1);
311
        EnableSerialRxInterrupt(&uc2);
337
        EnableSerialRxInterrupt(&uc2);
-
 
338
        /* Unlock the Flash to enable the flash control register access *************/
-
 
339
        HAL_FLASH_Unlock();
312
 
340
 
313
        EE_Init();
341
        EE_Init();
314
 
342
 
-
 
343
 
-
 
344
 
315
        int i;
345
        int i;
-
 
346
        uint16_t rc;
316
        for(i=0;i<2;i++)
347
        for(i=0;i<2;i++)
317
        {
348
        {
318
          uint16_t val;
349
          uint16_t val;
319
 
350
 
320
          uint16_t rc =  EE_ReadVariable(i, &val);
351
          uint16_t rc =  EE_ReadVariable(VirtAddVarTab[i], &val);
321
 
352
 
322
          if (rc == 0)
353
          if (rc == 0)
323
          {
354
          {
324
                  dial_pos[i] = val;
355
                  dial_pos[i] = val;
325
          }
356
          }
-
 
357
          else
-
 
358
          {
-
 
359
                  break;
-
 
360
          }
326
        }
361
        }
327
 
362
 
-
 
363
 
-
 
364
 
328
        ap_init(); // set up the approximate math library
365
        ap_init(); // set up the approximate math library
329
 
366
 
330
        int disp;
367
        int disp;
331
 
368
 
332
        ssd1306_begin(1, 0);
369
        ssd1306_begin(1, 0);