27,7 → 27,7 |
// + Benutzung auf eigene Gefahr |
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + Die Portierung oder Nutzung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur |
// + mit unserer Zustimmung zulässig |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen |
68,6 → 68,7 |
#include "uart.h" |
#include "timer0.h" |
#include "twislave.h" |
#include "printf_P.h" |
|
// slave addresses |
#define FC_ADDRESS 1 |
78,7 → 79,7 |
#define TRUE 1 |
|
// keep buffers as small as possible |
#define TXD_BUFFER_LEN 100 |
#define TXD_BUFFER_LEN 120 |
#define RXD_BUFFER_LEN 30 |
|
volatile uint8_t txd_buffer[TXD_BUFFER_LEN]; |
115,6 → 116,8 |
|
uint16_t DebugData_Timer; |
uint16_t DebugData_Interval = 500; |
uint16_t Display_Timer; |
uint16_t Display_Interval = 0; |
|
const prog_uint8_t ANALOG_LABEL[32][16] = |
{ |
153,7 → 156,6 |
"I2C Okay " |
}; |
|
|
/****************************************************************/ |
/* Initialization of the USART0 */ |
/****************************************************************/ |
561,8 → 563,17 |
break; |
|
case 'h': // request display data |
RemoteKeys |= pRxData[0]; |
if(RemoteKeys) DisplayLine = 0; |
if((pRxData[0] & 0x80) == 0x00) // old format |
{ |
DisplayLine = 2; |
Display_Interval = 0; |
} |
else |
{ |
RemoteKeys |= ~pRxData[0]; |
Display_Interval = (uint16_t) pRxData[1] * 10; |
DisplayLine = 4; |
} |
RequestFlags |= RQST_DISPLAY_DATA; |
PC_Connected = 2000; |
break; |
619,19 → 630,29 |
DebugData_Timer = SetDelay(DebugData_Interval); |
RequestFlags &= ~RQST_DEBUG_DATA; |
} |
else if((RequestFlags & RQST_DISPLAY_DATA) && txd_complete) |
else if(( ((Display_Interval > 0) && CheckDelay(Display_Timer)) || (RequestFlags & RQST_DISPLAY_DATA)) && txd_complete) |
{ |
LCD_PrintMenu(); |
SendOutData('H', FC_ADDRESS, 2, &DisplayLine, sizeof(DisplayLine), &DisplayBuff[DisplayLine * 20], 20); |
DisplayLine++; |
if(DisplayLine >= 4) DisplayLine = 0; |
if(DisplayLine > 3)// new format |
{ |
LCD_PrintMenu(); |
SendOutData('H', MK3MAG_ADDRESS, 1, (uint8_t *)DisplayBuff, 80); |
} |
else // old format |
{ |
LCD_printfxy(0,0,"!!! INCOMPATIBLE !!!"); |
SendOutData('H', MK3MAG_ADDRESS, 2, &DisplayLine, sizeof(DisplayLine), (uint8_t *)DisplayBuff, 20); |
if(DisplayLine++ > 3) DisplayLine = 0; |
} |
Display_Timer = SetDelay(Display_Interval); |
RequestFlags &= ~RQST_DISPLAY_DATA; |
} |
|
else if((RequestFlags & RQST_EXTERN_CTRL) && txd_complete) |
{ |
SendOutData('G', MK3MAG_ADDRESS, 1, (uint8_t *) &ExternControl,sizeof(ExternControl)); |
RequestFlags &= ~RQST_EXTERN_CTRL; |
} |
|
else if((RequestFlags & RQST_COMPASS_HEADING) && txd_complete) |
{ |
SendOutData('K', FC_ADDRESS, 1, (uint8_t *) &Heading, sizeof(Heading)); // send compass heading to FC |