src/main.cpp

changeset 26
86f099bda525
parent 23
daf26b083899
child 28
424d792fea4f
equal deleted inserted replaced
25:5b1e0b384d31 26:86f099bda525
13 #include "hp34comm.h" 13 #include "hp34comm.h"
14 14
15 #include "QEI.h" 15 #include "QEI.h"
16 #include "Keypad.h" 16 #include "Keypad.h"
17 17
18 /******************************************************/
19 /* L432KC */
20 /******************************************************/
21 #if (defined STM32L432xx)
22 // display
23 #define DSP_MOSI PA_7 //A6
24 #define DSP_MISO PA_6 //A5
25 #define DSP_SCLK PA_5 //A4
26 #define DSP_CS PB_0 //D3
27 #define DSP_RST PB_5 //D11
28 #define DSP_DC PB_4 //D12
29
30 // UART for RX (CPU->DP) and TX (DP->CPU) combined
31 #define HP_TX PA_9 // serial1 TX
32 #define HP_RX PA_10 // serial1 RX
33
34 // RST pin (handle this by hand)
35 #define HP_RST PA_0
36
37 // misc
38 #define DBGPIN NC
39
40 // encoder
41 #define KP_ENC1 PA_8
42 #define KP_ENC2 PA_11
43
44 // keypad
45 #define KP_R0 PA_1
46 #define KP_R1 PA_3
47 #define KP_R2 PA_4
48 #define KP_R3 PA_12
49
50 #define KP_C0 D4
51 #define KP_C1 D5
52 #define KP_C2 D6
53 #define KP_C3 D7
54 #define KP_C4 D8
55 18
56 /******************************************************/ 19 /******************************************************/
57 /* F446RE */ 20 /* F446RE */
58 /******************************************************/ 21 /******************************************************/
59 #elif defined STM32F446xx 22 #if defined STM32F446xx
60 // UART 23 // UART
61 // USBTX PA_2 24 // USBTX PA_2
62 // USBRX PA_3 25 // USBRX PA_3
63 // display 26 // display
64 #define DSP_MOSI PB_15 // blue 27 #define DSP_MOSI PB_15 // blue
65 #define DSP_MISO NC 28 #define DSP_MISO PB_14 // NC
66 #define DSP_SCLK PB_13 // yellow 29 #define DSP_SCLK PB_13 // yellow
67 #define DSP_CS PB_12 // green 30 #define DSP_CS PB_12 // green
68 #define DSP_RST PB_5 // green 31 #define DSP_RST PB_5 // green
69 #define DSP_DC PB_4 // red 32 #define DSP_DC PB_4 // red
70 33
93 #define KP_C4 PD_2 // II-1 56 #define KP_C4 PD_2 // II-1
94 57
95 // misc 58 // misc
96 #define DBGPIN PC_6 59 #define DBGPIN PC_6
97 60
61 #elif defined STM32F303xE // HP34970 replacement PCB
62
63 #define DSP_MOSI PA_7
64 #define DSP_MISO PA_6 // NC
65 #define DSP_SCLK PA_5
66 #define DSP_CS PA_2
67 #define DSP_RST PA_3
68 #define DSP_DC PA_4
69
70 // UART for RX (CPU->DP)
71 #define HP_RX PC_5
72 #define HP_TX PC_4
73
74 // RST pin (handle this by hand)
75 #define HP_RST PA_15
76
77 // encoder
78 #define KP_ENC1 PA_0
79 #define KP_ENC2 PA_1
80
81 // keypad
82 #define KP_R0 PB_5
83 #define KP_R1 PB_6
84 #define KP_R2 PB_7
85 #define KP_R3 PB_8
86
87 #define KP_C0 PC_2
88 #define KP_C1 PC_1
89 #define KP_C2 PC_0
90 #define KP_C3 PB_4
91 #define KP_C4 PB_0
92
98 #endif 93 #endif
94
99 95
100 #ifdef HAVE_PC 96 #ifdef HAVE_PC
101 Serial pc(USBTX, USBRX); 97 Serial pc(USBTX, USBRX);
102 #endif 98 #endif
103 99
162 void kp_cb(uint8_t row, uint8_t col); 158 void kp_cb(uint8_t row, uint8_t col);
163 void kr_cb(uint8_t row, uint8_t col); 159 void kr_cb(uint8_t row, uint8_t col);
164 160
165 Keypad *kpad; 161 Keypad *kpad;
166 uint8_t curchar; 162 uint8_t curchar;
167 uint8_t cmd; 163 //uint8_t curcmd;
168 uint8_t nchars; 164 uint8_t nchars;
169 char buffer[MAX_BUFF+1]; 165 char buffer[MAX_BUFF+1];
170 166
171 void timeout_h() { 167 void timeout_h() {
172 led = !led; 168 led = !led;
243 239
244 static const FLAG flags[] = 240 static const FLAG flags[] =
245 { 241 {
246 // flag, zone, x0, y0, reverse, msg, icon 242 // flag, zone, x0, y0, reverse, msg, icon
247 // right-side icons area 243 // right-side icons area
248 { 0x00, 246, 0, false, NULL, icon_alarm}, // F1.0 244 { 0x00, 246, 0, false, NULL, icon_alarm}, // F1.0
249 { 0x01, 246, 11, false, NULL, icon_curve}, // F1.1 245 { 0x01, 246, 11, false, NULL, icon_curve}, // F1.1
250 246
251 // F1.2 == Channel frame 247 // F1.2 == Channel frame
252 { 0x03, 197, 27, false, "Channel"}, // F1.3 248 { 0x03, 197, 27, false, "Channel"}, // F1.3
253 // F1.7 == Alarm frame 249 // F1.7 == Alarm frame
254
255 250
256 { 0x34, 0, 28+8, false, "MON"}, // F4.4 251 { 0x34, 0, 28+8, false, "MON"}, // F4.4
257 { 0x33, 0, 28+16, false, "VIEW"}, // F4.3 252 { 0x33, 0, 28+16, false, "VIEW"}, // F4.3
258 { 0x35, 0, 28, true, "SCAN"}, // F4.5 253 { 0x35, 0, 28, true, "SCAN"}, // F4.5
259 { 0x36, 0, 28+25, true, "CONFIG"}, // F4.6 254 { 0x36, 0, 28+25, true, "CONFIG"}, // F4.6
400 printf(" configure DSP\r\n"); 395 printf(" configure DSP\r\n");
401 dsp->background(Black); // set background to black 396 dsp->background(Black); // set background to black
402 dsp->foreground(0xF); 397 dsp->foreground(0xF);
403 dsp->cls(); 398 dsp->cls();
404 399
405 cmd = 0xFF; 400 //curcmd = 0xFF;
406 curchar = 0; 401 curchar = 0;
407 nchars = 0; 402 nchars = 0;
408 403
409 for (uint8_t i=0; i<sizeof(table)/sizeof(table[0]); ++i) 404 for (uint8_t i=0; i<sizeof(table)/sizeof(table[0]); ++i)
410 memset(table[i].buffer, 0, MAX_BUFF+1); 405 memset(table[i].buffer, 0, MAX_BUFF+1);
437 printf("SETUP DONE\r\n"); 432 printf("SETUP DONE\r\n");
438 } 433 }
439 434
440 void end_splashscreen(void) 435 void end_splashscreen(void)
441 { 436 {
442 printf("End of splash screen CB\r\n"); 437 // print is forbidden here because we are in an ISR context here
438 //printf("End of splash screen CB\r\n");
443 splashscreen = false; 439 splashscreen = false;
444 } 440 }
445 441
446 void reset_irq(void) 442 void reset_irq(void)
447 { 443 {
488 if (mask == 0) { 484 if (mask == 0) {
489 mask = 1; 485 mask = 1;
490 } 486 }
491 */ 487 */
492 pulse(0, false); 488 pulse(0, false);
493 Thread::wait(30); 489
490 ThisThread::sleep_for(30);
494 } 491 }
495 } 492 }
496 493
497 void show(uint8_t cmd, const char *intxt, uint8_t nchar=0) 494 void show(uint8_t cmd, const char *intxt, uint8_t nchar=0)
498 { 495 {
499 uint8_t i, len; 496 uint8_t i;
497 // uint8_t len;
500 uint16_t bgcolor, fgcolor; 498 uint16_t bgcolor, fgcolor;
501 char *oldv; 499 char *oldv;
502 char *txt, *txtp; 500 // char *txt;
501 char *txtp;
502 static char txt[256];
503 503
504 504
505 if (cmd == 0xFF) // cls 505 if (cmd == 0xFF) // cls
506 { 506 {
507 dsp->clrbuff(); 507 dsp->clrbuff();
508 } 508 }
509 else 509 else
510 { 510 {
511 txt = (char *)malloc(strlen(intxt)+1); 511 //txt = (char *)malloc(strlen(intxt)+1);
512 strcpy(txt, intxt); 512 strcpy(txt, intxt);
513 txtp = txt; 513 txtp = txt;
514 514
515 pulse(1, true); 515 pulse(1, true);
516 516
517 len = MAX_BUFF; 517 // len = MAX_BUFF;
518 518
519 for (i=0; i<sizeof(table)/sizeof(table[0]); ++i) { 519 for (i=0; i<sizeof(table)/sizeof(table[0]); ++i) {
520 if (table[i].cmd == cmd) { 520 if (table[i].cmd == cmd) {
521 bgcolor = table[i].bgcolor; 521 bgcolor = table[i].bgcolor;
522 fgcolor = table[i].color; 522 fgcolor = table[i].color;
525 dsp->set_font((unsigned char*) table[i].font); 525 dsp->set_font((unsigned char*) table[i].font);
526 oldv = table[i].buffer; 526 oldv = table[i].buffer;
527 527
528 dsp->locate(table[i].x0, table[i].y0); 528 dsp->locate(table[i].x0, table[i].y0);
529 529
530 if (table[i].fmt & 0x01 ) // ASCII text 530 if (table[i].fmt & 0x01) // ASCII text
531 { 531 {
532 if (strncmp(oldv, txt, table[i].maxsize) != 0) 532 if (strncmp(oldv, txt, table[i].maxsize) != 0)
533 { 533 {
534 if (table[i].width > 0) 534 if (table[i].width > 0)
535 dsp->fillrect(table[i].x0, 535 dsp->fillrect(table[i].x0,
536 table[i].y0, 536 table[i].y0,
537 table[i].x0 + table[i].width, 537 table[i].x0 + table[i].width,
538 table[i].y0 + table[i].font[2], 538 table[i].y0 + table[i].font[2],
539 bgcolor); 539 bgcolor);
540 for (uint8_t k=0; ;k++) 540 for (uint8_t k=0; ;k++)
541 { 541 {
542 if (txtp[k] == 0x00) 542 if (txtp[k] == 0x00)
543 { 543 {
544 dsp->printf(txtp); 544 dsp->printf(txtp);
637 for(uint8_t j=0; j<table[i].maxsize; j++) 637 for(uint8_t j=0; j<table[i].maxsize; j++)
638 oldv[j] = txt[j]; 638 oldv[j] = txt[j];
639 break; 639 break;
640 } 640 }
641 } 641 }
642 free(txt); 642 //free(txt);
643 //dsp->copy_to_lcd(); 643 //dsp->copy_to_lcd();
644 pulse(1, false); 644 pulse(1, false);
645 } 645 }
646 } 646 }
647 647
653 printf("TEST DSP #2\r\n"); 653 printf("TEST DSP #2\r\n");
654 show(0x00, "8g8g8g8g8g8g8", 13); // main dsp 654 show(0x00, "8g8g8g8g8g8g8", 13); // main dsp
655 show(0x0C, "888", 3); // channel dsp 655 show(0x0C, "888", 3); // channel dsp
656 show(0x0A, "\xFF\xFF\xFF\xFF", 4); // all flags 656 show(0x0A, "\xFF\xFF\xFF\xFF", 4); // all flags
657 dsp->copy_to_lcd(); 657 dsp->copy_to_lcd();
658 wait(3); 658 ThisThread::sleep_for(3);
659 dsp->cls(); 659 dsp->cls();
660 printf("TEST DSP #3\r\n"); 660 printf("TEST DSP #3\r\n");
661 661
662 for (uint8_t i=0; i<(sizeof(zones)/sizeof(zones[0])); i++) 662 for (uint8_t i=0; i<(sizeof(zones)/sizeof(zones[0])); i++)
663 { 663 {
679 printf("Done\n"); 679 printf("Done\n");
680 wait(2); 680 wait(2);
681 printf("Copy ALL\n"); 681 printf("Copy ALL\n");
682 dsp->copy_to_lcd(); 682 dsp->copy_to_lcd();
683 */ 683 */
684 wait(2); 684 ThisThread::sleep_for(2);
685 dsp->cls(); 685 dsp->cls();
686 printf("TEST DSP DONE\r\n"); 686 printf("TEST DSP DONE\r\n");
687 } 687 }
688 688
689 689
757 show(cmd.cmd, cmd.value, cmd.size); 757 show(cmd.cmd, cmd.value, cmd.size);
758 led = 0; 758 led = 0;
759 } 759 }
760 } 760 }
761 //else 761 //else
762 Thread::wait(1); 762 ThisThread::sleep_for(1);
763 } 763 }
764 } 764 }
765 765
766 void qei_cb(int dir) 766 void qei_cb(int dir)
767 { 767 {
790 setup(); 790 setup();
791 printf("Main loop (noop)\r\n"); 791 printf("Main loop (noop)\r\n");
792 while(1) 792 while(1)
793 { 793 {
794 timeout_h(); 794 timeout_h();
795 wait(1); 795 ThisThread::sleep_for(1);
796 } 796 }
797 } 797 }

mercurial