Subversion Repositories MK3Mag

Rev

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
        {