Rev 49 | Rev 53 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 49 | Rev 52 | ||
---|---|---|---|
Line 88... | Line 88... | ||
88 | #define RQST_VERSION_INFO 0x01 |
88 | #define RQST_VERSION_INFO 0x01 |
89 | #define RQST_DEBUG_DATA 0x02 |
89 | #define RQST_DEBUG_DATA 0x02 |
90 | #define RQST_DEBUG_LABEL 0x04 |
90 | #define RQST_DEBUG_LABEL 0x04 |
91 | #define RQST_COMPASS_HEADING 0x08 |
91 | #define RQST_COMPASS_HEADING 0x08 |
92 | #define RQST_EXTERN_CTRL 0x10 |
92 | #define RQST_EXTERN_CTRL 0x10 |
- | 93 | #define RQST_DISPLAY_DATA 0x20 |
|
Line 93... | Line 94... | ||
93 | 94 | ||
94 | 95 | ||
95 | uint8_t RequestFlags = 0x00; |
96 | uint8_t RequestFlags = 0x00; |
- | 97 | uint8_t RequestDebugLabel = 0; |
|
- | 98 | uint8_t ConfirmFrame = 0; |
|
- | 99 | uint8_t RemoteKeys = 0; |
|
- | 100 | uint8_t DisplayLine = 0; |
|
- | 101 | uint8_t DisplayBuff[80]; |
|
- | 102 | /* |
|
- | 103 | const uint8_t DisplayBuff[4][20] = |
|
- | 104 | { |
|
- | 105 | "++ MK3MAG ++", |
|
- | 106 | " ", |
|
- | 107 | " ", |
|
Line 96... | Line 108... | ||
96 | uint8_t RequestDebugLabel = 0; |
108 | " " |
97 | uint8_t ConfirmFrame = 0; |
109 | };*/ |
Line 98... | Line 110... | ||
98 | 110 | ||
99 | uint8_t PC_Connected = 0; |
111 | uint16_t PC_Connected = 0; |
100 | uint8_t FC_Connected = 0; |
112 | uint16_t FC_Connected = 0; |
Line 149... | Line 161... | ||
149 | /****************************************************************/ |
161 | /****************************************************************/ |
150 | /* Initialization of the USART0 */ |
162 | /* Initialization of the USART0 */ |
151 | /****************************************************************/ |
163 | /****************************************************************/ |
152 | void USART0_Init (void) |
164 | void USART0_Init (void) |
153 | { |
165 | { |
- | 166 | uint8_t i; |
|
154 | uint8_t sreg = SREG; |
167 | uint8_t sreg = SREG; |
155 | uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/(8 * BAUD_RATE) - 1); |
168 | uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/(8 * BAUD_RATE) - 1); |
Line 156... | Line 169... | ||
156 | 169 | ||
157 | // disable all interrupts before configuration |
170 | // disable all interrupts before configuration |
Line 223... | Line 236... | ||
223 | UART_VersionInfo.SWMinor = VERSION_MINOR; |
236 | UART_VersionInfo.SWMinor = VERSION_MINOR; |
224 | UART_VersionInfo.SWPatch = VERSION_PATCH; |
237 | UART_VersionInfo.SWPatch = VERSION_PATCH; |
225 | UART_VersionInfo.ProtoMajor = VERSION_SERIAL_MAJOR; |
238 | UART_VersionInfo.ProtoMajor = VERSION_SERIAL_MAJOR; |
226 | UART_VersionInfo.ProtoMinor = VERSION_SERIAL_MINOR; |
239 | UART_VersionInfo.ProtoMinor = VERSION_SERIAL_MINOR; |
Line 227... | Line 240... | ||
227 | 240 | ||
228 | // Version beim Start ausgeben (nicht schön, aber geht... ) |
241 | // send version info at startup |
229 | USART0_putchar ('\n'); |
242 | USART0_putchar ('\n'); |
230 | USART0_putchar ('C'); |
243 | USART0_putchar ('C'); |
231 | USART0_putchar ('P'); |
244 | USART0_putchar ('P'); |
232 | USART0_putchar (':'); |
245 | USART0_putchar (':'); |
Line 236... | Line 249... | ||
236 | USART0_putchar (0x30 + VERSION_MINOR/10); |
249 | USART0_putchar (0x30 + VERSION_MINOR/10); |
237 | USART0_putchar (0x30 + VERSION_MINOR%10); |
250 | USART0_putchar (0x30 + VERSION_MINOR%10); |
238 | USART0_putchar ('a' + VERSION_PATCH); |
251 | USART0_putchar ('a' + VERSION_PATCH); |
239 | USART0_putchar ('\n'); |
252 | USART0_putchar ('\n'); |
Line -... | Line 253... | ||
- | 253 | ||
- | 254 | // prepare display buffer |
|
- | 255 | for(i=0; i < 80; i++) DisplayBuff[i] = ' '; |
|
- | 256 | DisplayBuff[0] = '+'; |
|
- | 257 | DisplayBuff[1] = '+'; |
|
- | 258 | DisplayBuff[7] = 'M'; |
|
- | 259 | DisplayBuff[8] = 'K'; |
|
- | 260 | DisplayBuff[9] = '3'; |
|
- | 261 | DisplayBuff[10] = 'M'; |
|
- | 262 | DisplayBuff[11] = 'A'; |
|
- | 263 | DisplayBuff[12] = 'G'; |
|
- | 264 | DisplayBuff[18] = '+'; |
|
- | 265 | DisplayBuff[19] = '+'; |
|
- | 266 | ||
- | 267 | DisplayBuff[47] = 'V'; |
|
- | 268 | DisplayBuff[48] = (0x30 + VERSION_MAJOR); |
|
- | 269 | DisplayBuff[49] = '.'; |
|
- | 270 | DisplayBuff[50] = (0x30 + VERSION_MINOR/10); |
|
- | 271 | DisplayBuff[51] = (0x30 + VERSION_MINOR%10); |
|
- | 272 | DisplayBuff[52] = ('a' + VERSION_PATCH); |
|
240 | 273 | ||
241 | // restore global interrupt flags |
274 | // restore global interrupt flags |
242 | SREG = sreg; |
275 | SREG = sreg; |
Line 243... | Line 276... | ||
243 | } |
276 | } |
Line 517... | Line 550... | ||
517 | default: |
550 | default: |
518 | // unsupported command |
551 | // unsupported command |
519 | break; |
552 | break; |
520 | } // case MK3MAG_ADDRESS: |
553 | } // case MK3MAG_ADDRESS: |
Line 521... | Line 554... | ||
521 | 554 | ||
Line 522... | Line 555... | ||
522 | default: // any Slave Adress |
555 | default: // any Slave Address |
523 | 556 | ||
524 | switch(rxd_buffer[2]) // check for CmdID |
557 | switch(rxd_buffer[2]) // check for CmdID |
525 | { |
558 | { |
Line 535... | Line 568... | ||
535 | { |
568 | { |
536 | ExternData.CalState++; |
569 | ExternData.CalState++; |
537 | if(ExternData.CalState == 6) ExternData.CalState = 0; |
570 | if(ExternData.CalState == 6) ExternData.CalState = 0; |
538 | } |
571 | } |
539 | ConfirmFrame = ExternControl.Frame; |
572 | ConfirmFrame = ExternControl.Frame; |
540 | PC_Connected = 255; |
573 | PC_Connected = 2000; |
541 | break; |
574 | break; |
Line 542... | Line 575... | ||
542 | 575 | ||
543 | case 'd': // request for the debug data |
576 | case 'd': // request for the debug data |
544 | DebugData_Interval = (uint16_t) pRxData[0] * 10; |
577 | DebugData_Interval = (uint16_t) pRxData[0] * 10; |
545 | if(DebugData_Interval>0) RequestFlags |= RQST_DEBUG_DATA; |
578 | if(DebugData_Interval>0) RequestFlags |= RQST_DEBUG_DATA; |
546 | PC_Connected = 255; |
579 | PC_Connected = 2000; |
Line 547... | Line 580... | ||
547 | break; |
580 | break; |
548 | 581 | ||
549 | case 'v': // request version and board release |
582 | case 'v': // request version and board release |
550 | RequestFlags |= RQST_VERSION_INFO; |
583 | RequestFlags |= RQST_VERSION_INFO; |
Line 551... | Line 584... | ||
551 | PC_Connected = 255; |
584 | PC_Connected = 2000; |
- | 585 | break; |
|
- | 586 | ||
- | 587 | case 'h': // request display data |
|
552 | break; |
588 | RemoteKeys |= pRxData[0]; |
553 | 589 | if(RemoteKeys) DisplayLine = 0; |
|
Line 554... | Line 590... | ||
554 | case 'h': // request lcd data |
590 | RequestFlags |= RQST_DISPLAY_DATA; |
555 | PC_Connected = 255; |
591 | PC_Connected = 2000; |
556 | break; |
592 | break; |
557 | 593 | ||
558 | case 'a':// Labels of the Analog Debug outputs |
594 | case 'a':// Labels of the Analog Debug outputs |
Line 559... | Line 595... | ||
559 | RequestDebugLabel = pRxData[0]; |
595 | RequestDebugLabel = pRxData[0]; |
560 | RequestFlags |= RQST_DEBUG_LABEL; |
596 | RequestFlags |= RQST_DEBUG_LABEL; |
561 | PC_Connected = 255; |
597 | PC_Connected = 2000; |
562 | break; |
598 | break; |
Line 563... | Line 599... | ||
563 | 599 | ||
564 | case 'g':// get extern control data |
600 | case 'g':// get extern control data |
565 | RequestFlags |= RQST_EXTERN_CTRL; |
601 | RequestFlags |= RQST_EXTERN_CTRL; |
Line 606... | Line 642... | ||
606 | SendOutData('D', MK3MAG_ADDRESS, 1, (uint8_t *) &DebugOut, sizeof(DebugOut)); |
642 | SendOutData('D', MK3MAG_ADDRESS, 1, (uint8_t *) &DebugOut, sizeof(DebugOut)); |
607 | DebugData_Timer = SetDelay(DebugData_Interval); |
643 | DebugData_Timer = SetDelay(DebugData_Interval); |
608 | RequestFlags &= ~RQST_DEBUG_DATA; |
644 | RequestFlags &= ~RQST_DEBUG_DATA; |
609 | } |
645 | } |
Line -... | Line 646... | ||
- | 646 | ||
- | 647 | if((RequestFlags & RQST_DISPLAY_DATA) && txd_complete) |
|
- | 648 | { |
|
- | 649 | SendOutData('H', MK3MAG_ADDRESS, 2, &DisplayLine, sizeof(DisplayLine), &DisplayBuff[DisplayLine * 20], 20); |
|
- | 650 | DisplayLine++; |
|
- | 651 | if(DisplayLine >= 4) DisplayLine = 0; |
|
- | 652 | RequestFlags &= ~RQST_DISPLAY_DATA; |
|
Line 610... | Line 653... | ||
610 | 653 | } |
|
611 | 654 | ||
612 | if((RequestFlags & RQST_EXTERN_CTRL) && txd_complete) |
655 | if((RequestFlags & RQST_EXTERN_CTRL) && txd_complete) |
613 | { |
656 | { |