90,14 → 90,26 |
#define RQST_DEBUG_LABEL 0x04 |
#define RQST_COMPASS_HEADING 0x08 |
#define RQST_EXTERN_CTRL 0x10 |
#define RQST_DISPLAY_DATA 0x20 |
|
|
uint8_t RequestFlags = 0x00; |
uint8_t RequestDebugLabel = 0; |
uint8_t ConfirmFrame = 0; |
uint8_t RemoteKeys = 0; |
uint8_t DisplayLine = 0; |
uint8_t DisplayBuff[80]; |
/* |
const uint8_t DisplayBuff[4][20] = |
{ |
"++ MK3MAG ++", |
" ", |
" ", |
" " |
};*/ |
|
uint8_t PC_Connected = 0; |
uint8_t FC_Connected = 0; |
uint16_t PC_Connected = 0; |
uint16_t FC_Connected = 0; |
|
|
DebugOut_t DebugOut; |
151,6 → 163,7 |
/****************************************************************/ |
void USART0_Init (void) |
{ |
uint8_t i; |
uint8_t sreg = SREG; |
uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/(8 * BAUD_RATE) - 1); |
|
225,7 → 238,7 |
UART_VersionInfo.ProtoMajor = VERSION_SERIAL_MAJOR; |
UART_VersionInfo.ProtoMinor = VERSION_SERIAL_MINOR; |
|
// Version beim Start ausgeben (nicht schön, aber geht... ) |
// send version info at startup |
USART0_putchar ('\n'); |
USART0_putchar ('C'); |
USART0_putchar ('P'); |
238,6 → 251,26 |
USART0_putchar ('a' + VERSION_PATCH); |
USART0_putchar ('\n'); |
|
// prepare display buffer |
for(i=0; i < 80; i++) DisplayBuff[i] = ' '; |
DisplayBuff[0] = '+'; |
DisplayBuff[1] = '+'; |
DisplayBuff[7] = 'M'; |
DisplayBuff[8] = 'K'; |
DisplayBuff[9] = '3'; |
DisplayBuff[10] = 'M'; |
DisplayBuff[11] = 'A'; |
DisplayBuff[12] = 'G'; |
DisplayBuff[18] = '+'; |
DisplayBuff[19] = '+'; |
|
DisplayBuff[47] = 'V'; |
DisplayBuff[48] = (0x30 + VERSION_MAJOR); |
DisplayBuff[49] = '.'; |
DisplayBuff[50] = (0x30 + VERSION_MINOR/10); |
DisplayBuff[51] = (0x30 + VERSION_MINOR%10); |
DisplayBuff[52] = ('a' + VERSION_PATCH); |
|
// restore global interrupt flags |
SREG = sreg; |
} |
519,7 → 552,7 |
break; |
} // case MK3MAG_ADDRESS: |
|
default: // any Slave Adress |
default: // any Slave Address |
|
switch(rxd_buffer[2]) // check for CmdID |
{ |
537,33 → 570,36 |
if(ExternData.CalState == 6) ExternData.CalState = 0; |
} |
ConfirmFrame = ExternControl.Frame; |
PC_Connected = 255; |
PC_Connected = 2000; |
break; |
|
case 'd': // request for the debug data |
DebugData_Interval = (uint16_t) pRxData[0] * 10; |
if(DebugData_Interval>0) RequestFlags |= RQST_DEBUG_DATA; |
PC_Connected = 255; |
PC_Connected = 2000; |
break; |
|
case 'v': // request version and board release |
RequestFlags |= RQST_VERSION_INFO; |
PC_Connected = 255; |
PC_Connected = 2000; |
break; |
|
case 'h': // request lcd data |
PC_Connected = 255; |
case 'h': // request display data |
RemoteKeys |= pRxData[0]; |
if(RemoteKeys) DisplayLine = 0; |
RequestFlags |= RQST_DISPLAY_DATA; |
PC_Connected = 2000; |
break; |
|
case 'a':// Labels of the Analog Debug outputs |
RequestDebugLabel = pRxData[0]; |
RequestFlags |= RQST_DEBUG_LABEL; |
PC_Connected = 255; |
PC_Connected = 2000; |
break; |
|
case 'g':// get extern control data |
RequestFlags |= RQST_EXTERN_CTRL; |
PC_Connected = 255; |
PC_Connected = 2000; |
break; |
|
default: |
608,6 → 644,13 |
RequestFlags &= ~RQST_DEBUG_DATA; |
} |
|
if((RequestFlags & RQST_DISPLAY_DATA) && txd_complete) |
{ |
SendOutData('H', MK3MAG_ADDRESS, 2, &DisplayLine, sizeof(DisplayLine), &DisplayBuff[DisplayLine * 20], 20); |
DisplayLine++; |
if(DisplayLine >= 4) DisplayLine = 0; |
RequestFlags &= ~RQST_DISPLAY_DATA; |
} |
|
if((RequestFlags & RQST_EXTERN_CTRL) && txd_complete) |
{ |