Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 2526 → Rev 2527

/trunk/hottmenu.c
63,9 → 63,9
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
 
#define HoTT_printf(format, args...) { _printf_P(&LIBFC_HoTT_Putchar, PSTR(format) , ## args);}
#define HoTT_printfxy(x,y,format, args...) { LIBFC_HoTT_SetPos(y * 21 + x); _printf_P(&LIBFC_HoTT_Putchar, PSTR(format) , ## args);}
#define HoTT_printfxy_INV(x,y,format, args...) { LIBFC_HoTT_SetPos(y * 21 + x); _printf_P(&LIBFC_HoTT_Putchar_INV, PSTR(format) , ## args);}
#define HoTT_printfxy_BLINK(x,y,format, args...) { LIBFC_HoTT_SetPos(y * 21 + x); _printf_P(&LIBFC_HoTT_Putchar_BLINK, PSTR(format) , ## args);}
#define HoTT_printfxy(x,y,format, args...) { LIBFC_HoTT_SetPos((y) * 21 + (x)); _printf_P(&LIBFC_HoTT_Putchar, PSTR(format) , ## args);}
#define HoTT_printfxy_INV(x,y,format, args...) { LIBFC_HoTT_SetPos((y) * 21 + (x)); _printf_P(&LIBFC_HoTT_Putchar_INV, PSTR(format) , ## args);}
#define HoTT_printfxy_BLINK(x,y,format, args...) { LIBFC_HoTT_SetPos((y) * 21 + (x)); _printf_P(&LIBFC_HoTT_Putchar_BLINK, PSTR(format) , ## args);}
#define HoTT_printf_BLINK(format, args...) { _printf_P(&LIBFC_HoTT_Putchar_BLINK, PSTR(format) , ## args);}
#define HoTT_printf_INV(format, args...) { _printf_P(&LIBFC_HoTT_Putchar_INV, PSTR(format) , ## args);}
 
185,7 → 185,61
{SPEAK_ERR_COMPASS,0} // "compass sensor" // 34
};
 
 
/*
//------------------------------------------------------------------------------------------
// HoTT-Plus
//------------------------------------------------------------------------------------------
char dummy=0;
const Parameter_List_t Parameter_List[] =
{ //offset,min,max,name,variable
{127, 0, 247,"SP1", (unsigned char *) &PPM_in[13] },
{127, 0, 247,"SP2", (unsigned char *) &PPM_in[14] },
{127, 0, 247,"SP3", (unsigned char *) &PPM_in[15] },
{127, 0, 247,"SP4", (unsigned char *) &PPM_in[16] },
{ 0, 0, 247,"HD ", (unsigned char *) &EE_Parameter.Luftdruck_D },
{ 0, 0, 247,"HP ", (unsigned char *) &EE_Parameter.Hoehe_P },
{ 0, 0, 247,"HA ", (unsigned char *) &EE_Parameter.Hoehe_ACC_Wirkung },
{ 0, 0, 247,"HM ", (unsigned char *) &EE_Parameter.Hoehe_MinGas },
{ 0, 0, 247,"HV ", (unsigned char *) &EE_Parameter.Hoehe_HoverBand },
{ 0, 0, 247,"HG ", (unsigned char *) &EE_Parameter.Hoehe_Verstaerkung },
{ 0, 0, 247,"NG ", (unsigned char *) &EE_Parameter.NotGas },
{ 0, 0, 247,"StP", (unsigned char *) &EE_Parameter.Stick_P },
{ 0, 0, 247,"StD", (unsigned char *) &EE_Parameter.Stick_D },
{ 0, 0, 247,"SGP", (unsigned char *) &EE_Parameter.StickGier_P },
{ 0, 0, 247,"DrC", (unsigned char *) &EE_Parameter.Driftkomp },
{ 0, 0, 247,"GYP", (unsigned char *) &EE_Parameter.Gyro_P },
{ 0, 0, 247,"GYD", (unsigned char *) &EE_Parameter.Gyro_D },
{ 0, 0, 247,"GYI", (unsigned char *) &EE_Parameter.Gyro_I },
{ 0, 0, 247,"MaI", (unsigned char *) &EE_Parameter.I_Faktor },
{ 0, 0, 247,"GGP", (unsigned char *) &EE_Parameter.Gyro_Gier_P },
{ 0, 0, 247,"GGI", (unsigned char *) &EE_Parameter.Gyro_Gier_I },
{ 0, 0, 15,"GSt", (unsigned char *) &EE_Parameter.Gyro_Stability },
{ 0, 0, 247,"DSt", (unsigned char *) &EE_Parameter.DynamicStability },
{ 0, 0, 247,"NGG", (unsigned char *) &EE_Parameter.NaviGpsGain },
{ 0, 0, 247,"NWC", (unsigned char *) &EE_Parameter.NaviWindCorrection },
{ 0, 0, 247,"NSC", (unsigned char *) &EE_Parameter.NaviAccCompensation },
{ 0, 0, 247,"NAL", (unsigned char *) &EE_Parameter.NaviAngleLimitation },
{ 0, 0, 247,"NP ", (unsigned char *) &EE_Parameter.NaviGpsP },
{ 0, 0, 247,"ND ", (unsigned char *) &EE_Parameter.NaviGpsI },
{ 0, 0, 247,"NI ", (unsigned char *) &EE_Parameter.NaviGpsD },
{ 0, 0, 247,"LGL", (unsigned char *) &EE_Parameter.LoopGasLimit },
{ 0, 0, 247,"LHy", (unsigned char *) &EE_Parameter.LoopHysterese },
{ 0, 0, 247,"LTh", (unsigned char *) &EE_Parameter.LoopThreshold },
{ 0, 0, 0," ", (unsigned char *) &dummy },
{ 0, 0, 247,"FGP", (unsigned char *) &EE_Parameter.AchsKopplung1},
{ 0, 0, 247,"FNR", (unsigned char *) &EE_Parameter.AchsKopplung2},
{ 0, 0, 247,"CYC", (unsigned char *) &EE_Parameter.CouplingYawCorrection},
{ 0, 0, 247,"MSH", (unsigned char *) &EE_Parameter.MotorSmooth},
{ 0, 0, 247,"NCT", (unsigned char *) &EE_Parameter.ServoNickControl },
{ 0, 0, 247,"NCP", (unsigned char *) &EE_Parameter.ServoNickComp },
{ 0, 0, 247,"RCT", (unsigned char *) &EE_Parameter.ServoRollControl },
{ 0, 0, 247,"RCP", (unsigned char *) &EE_Parameter.ServoRollComp }
};
unsigned char settingdest = 0;
//------------------------------------------------------------------------------------------
// HoTT-Plus
//------------------------------------------------------------------------------------------
*/
void GetHottestBl(void)
{
static unsigned char search = 0,tmp_max,tmp_min,who;
762,9 → 816,9
case 16:
if(HottKeyboard == HOTT_KEY_SET) { if(show_current) show_current = 0; else show_current = 1; Hott_ClearLine(5); Hott_ClearLine(6);}
else
if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page = 2; line = 0;}
if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page++; line = 0;}
else
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page = 0; line = 0;}
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page--; line = 0;}
//if(HottKeyboard) HoTT_printfxy(15,6,"%KEY:%02x ",HottKeyboard);
HottKeyboard = 0;
break;
855,9 → 909,9
case 16:
if(HottKeyboard == HOTT_KEY_SET) { if(show_poti) show_poti = 0; else show_poti = 1; Hott_ClearLine(6); Hott_ClearLine(7);}
else
if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page = 3; line = 0;}
if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page++; line = 0;}
else
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page = 1; line = 0;};
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page--; line = 0;};
HottKeyboard = 0;
break;
default: line = 0;
905,8 → 959,8
}
if(HottKeyboard == HOTT_KEY_UP && load_waypoint_tmp2 < NaviData_MaxWpListIndex) { changed2 = 1; load_waypoint_tmp2++;HoTTBlink = 0;}
if(HottKeyboard == HOTT_KEY_DOWN && load_waypoint_tmp2 > 1) { changed2 = 1; load_waypoint_tmp2--;HoTTBlink = 0;};
if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page = 4; line = 0;}
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page = 2; line = 0;};
if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page++; line = 0;}
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page--; line = 0;};
HottKeyboard = 0;
break;
default: line = 0;
1066,7 → 1120,7
if(HottKeyboard == HOTT_KEY_UP && wp_tmp < NaviData_MaxWpListIndex) { changed = 1; wp_tmp++; HoTTBlink = 0;}
if(HottKeyboard == HOTT_KEY_DOWN && wp_tmp > 1) { changed = 1; wp_tmp--; HoTTBlink = 0;};
if(HottKeyboard == HOTT_KEY_SET) { if(wp_tmp) ToNC_Load_SingePoint = wp_tmp; changed = 0;}
// if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page++; line = 0;}
if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page++; line = 0;}
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page--; line = 0;};
HottKeyboard = 0;
break;
1074,6 → 1128,424
break;
}
break;
case 7:
switch(line++)
{
static unsigned char i=0,test=0,set=0;
case 0: HoTT_printfxy(0,0,"Motortest / Setpoints");break;
case 1: //HoTT_printfxy(0,1,"Motor Setpoint Strom ");
case 2:
case 3:
case 4: i=((line-2)*2)+1;
if(MotorenEin)
{
HoTT_printfxy(0,line,"M%i=%2i%2i.%iA M%i=%2i%2i.%iA",i,Motor[i-1].SetPoint,Motor[i-1].Current/10,Motor[i-1].Current%10,i+1,Motor[i].SetPoint,Motor[i].Current/10,Motor[i].Current%10);
}
else
{
HoTT_printfxy(0,line,"M%i=%2i%2i.%iA M%i=%2i%2i.%iA",i,MotorTest[i-1],Motor[i-1].Current/10,Motor[i-1].Current%10,i+1,MotorTest[i],Motor[i].Current/10,Motor[i].Current%10);
}
break;
case 5: if(test)
{
HoTT_printfxy(0,6,"!!!Motortest Aktiv!!!");
}
case 6: if(test)
{
PC_MotortestActive = 254;
HoTT_printfxy(0,7,"Motor %i",test);
MotorTest[test-1]=set;
}
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
if(HottKeyboard == HOTT_KEY_RIGHT)
{
if(test)
{
set=0;
MotorTest[test-1]=set;
if(test<8) test++;
}
else
{
LIBFC_HoTT_Clear();
page--;
line=0;
}
}
else
if(HottKeyboard == HOTT_KEY_LEFT)
{
if(test)
{
set=0;
MotorTest[test-1]=set;
if(test>1) test--;
}
else
{
LIBFC_HoTT_Clear();
page++;
line = 0;
}
}
else
if((HottKeyboard == HOTT_KEY_UP) && (set <98 ) && test) set+=2;//GESCHW
else
if((HottKeyboard == HOTT_KEY_DOWN) && (set >0 ) && test) set-=2;
else
if((HottKeyboard == HOTT_KEY_SET) && !MotorenEin)
{
if(test) test = 0; else test = 1;
set=0;
Hott_ClearLine(6); Hott_ClearLine(7);
}
HottKeyboard = 0;
break;
default: line = 0;
break;
//HoTT_printfxy(10 ,line,"I");
//line++;
}
break;
case 8:
switch(line++)
{
#define MD_OFF 1
#define MD_CAL 2
#define MD_SAV 3
static unsigned char mode=MD_OFF,cursor=MD_OFF;
 
case 0: HoTT_printfxy(0,0,"ACC calibration");break;
case 1: HoTT_printfxy(0,1," ACC Stick");break;
case 2: HoTT_printfxy(0,2,"Nick = %3i %4i",NeutralAccX,ChannelNick);break;
case 3: HoTT_printfxy(0,3,"Roll = %3i %4i",NeutralAccY,ChannelRoll);break;
case 4: HoTT_printfxy(2,4,"Off");break;
case 5: HoTT_printfxy(2,5,"Calibrate");break;
case 6: HoTT_printfxy(2,6,"Save");
if(mode == MD_SAV && cursor == MD_SAV) HoTT_printfxy(7,6,"(SET)");
break;
case 7:
case 8: HoTT_printfxy(0,cursor+3,">");break;
case 9: HoTT_printfxy(1,mode+3,"*");break;
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
if(HottKeyboard == HOTT_KEY_RIGHT)
{
switch(mode)
{
case MD_OFF: LIBFC_HoTT_Clear();
page--; // leave menu
line = 0;
break;
case MD_CAL: NeutralAccY++;
break;
case MD_SAV: break;
default: mode=MD_OFF;break;
}
}
else
if(HottKeyboard == HOTT_KEY_LEFT)
{
switch(mode)
{
case MD_OFF: LIBFC_HoTT_Clear();
page++; // leave menu
line = 0;
break;
case MD_CAL: NeutralAccY--;
break;
case MD_SAV: break;
default: mode=MD_OFF;
break;
}
}
else
if(HottKeyboard == HOTT_KEY_UP)
{
switch(mode)
{
case MD_CAL: NeutralAccX++;
break;
case MD_OFF:
case MD_SAV: if(cursor>1) {HoTT_printfxy(0,cursor+3," ");cursor--;}
HoTT_printfxy(2,6," ");
break;
default: mode=MD_OFF;
break;
}
}
else
if(HottKeyboard == HOTT_KEY_DOWN)
{
switch(mode)
{
case MD_CAL: NeutralAccX--;
break;
case MD_SAV:
case MD_OFF: if(cursor<MD_SAV) {HoTT_printfxy(0,cursor+3," ");cursor++;}
break;
default: mode=MD_OFF;
break;
}
}
else
if(HottKeyboard == HOTT_KEY_SET)
{
switch(mode)
{
case MD_OFF: HoTT_printfxy(1,mode+3," ");
mode = cursor;
if(mode == MD_CAL && !EE_Parameter.Driftkomp) EE_Parameter.Driftkomp = 6; // enables the Gyro-Drift compensation to make sure that a litlte calibration error won't effect the attitude
break;
case MD_CAL: HoTT_printfxy(1,mode+3," ");
mode = MD_OFF;
break;
case MD_SAV:
Hott_ClearLine(7);
if(cursor == MD_SAV)
{
if(!MotorenEin)
{
SetParamWord(PID_ACC_NICK, (uint16_t)NeutralAccX);
SetParamWord(PID_ACC_ROLL, (uint16_t)NeutralAccY);
BoatNeutralNick = AdNeutralNick;
BoatNeutralRoll = AdNeutralRoll;
BoatNeutralGier = AdNeutralGier;
SetParamWord(PID_GYRO_NICK,(uint16_t)BoatNeutralNick);
SetParamWord(PID_GYRO_ROLL,(uint16_t)BoatNeutralRoll);
SetParamWord(PID_GYRO_YAW,(uint16_t)BoatNeutralGier);
HoTT_printfxy(7,6," okay ");
HoTT_printfxy(1,mode+3," ");
mode = MD_OFF;
}
else
{
HoTT_printfxy(0,7,"Motors running!!!");
mode = MD_OFF;
}
}
else
{
HoTT_printfxy(1,mode+3," ");
mode=cursor;
}
break;
default: mode=MD_OFF;
break;
}
}
HottKeyboard = 0;
break;
default: line = 0;
break;
//HoTT_printfxy(10 ,line,"I");
//line++;
}
break;
/*
//------------------------------------------------------------------------------------------
// HoTT-Plus
//------------------------------------------------------------------------------------------
case 9:
switch(line++)
{
case 0: HoTT_printfxy(0,0,"I2C Schwerpunkt GAS");
break;
case 1: HoTT_printfxy(0,1,"I2C%3i%3i%3i%3i",Motor[0].State & MOTOR_STATE_ERROR_MASK,Motor[1].State & MOTOR_STATE_ERROR_MASK, Motor[2].State & MOTOR_STATE_ERROR_MASK, Motor[3].State & MOTOR_STATE_ERROR_MASK);
break;
case 2: HoTT_printfxy(0,2," %3i%3i%3i%3i",Motor[4].State & MOTOR_STATE_ERROR_MASK,Motor[5].State & MOTOR_STATE_ERROR_MASK, Motor[6].State & MOTOR_STATE_ERROR_MASK, Motor[7].State & MOTOR_STATE_ERROR_MASK);
break;
case 3: { //0123456789ABCDEF
int r=0;
int n=0;
int g=0;
n=SummeNick >> 9;
r=SummeRoll >> 9;
g=Mess_Integral_Gier >> 9;
 
HoTT_printfxy(0,5,"%3iN %3iR %3iG",n ,r ,g);
}
 
break;
case 4: { //0123456789ABCDEF
HoTT_printfxy(0,4,"+ ^ + <");
}
break;
case 5: { //0123456789ABCDEF
HoTT_printfxy(0,6,"- v - >");
}
break;
case 6: HoTT_printfxy(0,7,"%3i=HG/4 %3i=Gas",HoverGas/4,StickGas);
 
break;
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page--; line = 0;}
else
if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page++; line = 0;}
HottKeyboard = 0;
break;
default: line = 0;
break;
}
break;
//---------------------------------------------------------------------------------------------------
case 10:
{
static signed char i=0,j=0,Changepos=0;
if(line==9)
{
line=0;
if(HottKeyboard == HOTT_KEY_SET ) { if(Changepos) Changepos = 0; else Changepos = 1;}
else
if(Changepos)
{
unsigned char temp=0;
temp=(Changepos+j)-1;
if((HottKeyboard == HOTT_KEY_RIGHT) && !((unsigned char)(*Parameter_List[temp].Variable + Parameter_List[temp].offset) >= Parameter_List[temp].max )) {*Parameter_List[temp].Variable += 1;}
else
if((HottKeyboard == HOTT_KEY_LEFT) && !((unsigned char)(*Parameter_List[temp].Variable + Parameter_List[temp].offset) <= Parameter_List[temp].min )) {*Parameter_List[temp].Variable -= 1;}
else
if(HottKeyboard == HOTT_KEY_UP )
{
Changepos--;
line = Changepos/2;
if(Changepos< 1 ) {Changepos=16;}
}
else
if(HottKeyboard == HOTT_KEY_DOWN)
{
Changepos++;
line = Changepos/2;
if(Changepos >= 17 ) {Changepos=1;}
}
}
else
{
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page--; line = 0;}
else
if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page++; line = 0;}
else
if(HottKeyboard == HOTT_KEY_UP )
{
j-=16;
line = 0;
if(j< 0 ) {j=0;}
}
else
if(HottKeyboard == HOTT_KEY_DOWN)
{
LIBFC_HoTT_Clear();
j+=16;
line = 0;
if(j+14> MAXPARAM ) {j=MAXPARAM-15;}
}
}
Debug("line=%i Changepos=%i j=%i Key=%i",line,Changepos,j,HottKeyboard);
HottKeyboard = 0;
}
HoTT_printfxy(10 ,line,"I");
i=(line*2)+(j);
if(Changepos==(line*2)+1)
{
HoTT_printfxy(0 ,line,">%3i=%-5.5s%",(unsigned char)(*Parameter_List[i ].Variable + Parameter_List[i ].offset),&Parameter_List[i ].name);
}
else
{
HoTT_printfxy(0 ,line," %3i=%-5.5s%",(unsigned char)(*Parameter_List[i ].Variable + Parameter_List[i ].offset),&Parameter_List[i ].name);
}
if(Changepos==(line*2)+2)
{
HoTT_printfxy(11,line,">%3i=%-5.5s%",(unsigned char)(*Parameter_List[i+1].Variable + Parameter_List[i+1].offset),&Parameter_List[i+1].name);
}
else
{
HoTT_printfxy(11,line," %3i=%-5.5s%",(unsigned char)(*Parameter_List[i+1].Variable + Parameter_List[i+1].offset),&Parameter_List[i+1].name);
}
 
line++;
}
break;
case 11:
switch(line++)
{
case 0: HoTT_printfxy(0,0,"Setting speichern");
break;
case 1: HoTT_printfxy(0,1,"Setting%1i= %-11.11s",GetActiveParamSet(),EE_Parameter.Name);
break; //123456789012345678901
case 2: HoTT_printfxy(0,2,"Speichern nach Set %i",settingdest);
break;
case 3: HoTT_printfxy(0,4,"\"SET\" zum speichern");
break;
case 4: HoTT_printfxy(0,5,"^ v zum auswaehlen");
break;
case 5: HoTT_printfxy(0,6," HOTT+ sponsored by ");
break;
case 6: HoTT_printfxy(0,7,"--- Flyinghigh.ch ---");
break;
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
if(HottKeyboard == HOTT_KEY_RIGHT) { LIBFC_HoTT_Clear(); page--; line = 0;}
else
if(HottKeyboard == HOTT_KEY_LEFT) { LIBFC_HoTT_Clear(); page++; line = 0;}
else
if((HottKeyboard == HOTT_KEY_UP) & (settingdest <5 )) settingdest++;
else
if((HottKeyboard == HOTT_KEY_DOWN) & (settingdest >1 )) settingdest--;
else
if((HottKeyboard == HOTT_KEY_SET) && !MotorenEin)
{
ParamSet_WriteToEEProm(settingdest);
//JetiBeep = jetibeepcode[GetActiveParamSet()-1];
Piep(GetActiveParamSet(),120);
HoTT_printfxy(0,7,"Gespeichert!");
}
HottKeyboard = 0;
break;
default: line = 0;
break;
}
break;
//------------------------------------------------------------------------------------------
// HoTT-Plus
//------------------------------------------------------------------------------------------
*/
default: page = 0;
break;
}
/trunk/hottmenu.h
234,6 → 234,19
#define JETI_GPS_PACKET_ID2 0x02
#define HOTT_WPL_NAME 0x03
 
//---------------------------------------------------------------------------------------------------
typedef struct{
char offset;
unsigned char min;
unsigned char max;
char name[4];
unsigned char *Variable;
} Parameter_List_t;
 
#define MAXPARAM 41 //Muss eine ungerade Zahl sein
extern const Parameter_List_t Parameter_List[];
//---------------------------------------------------------------------------------------------------
 
#endif
#endif
 
/trunk/led.c
7,7 → 7,7
unsigned char J17Blinkcount = 0, J17Mask = 1;
unsigned char NC_Wait_for_LED = 0; // signal to NC: Wait for the LAD PAtter before switching to the next WP
unsigned int ShutterCounter = 0;
 
unsigned char Out1ChangedFlag = 0; // can be 0 or 0x80
// initializes the LED control outputs J16, J17
void LED_Init(void)
{
129,7 → 129,11
 
if(PORTC & (1<<PORTC2)) // output is on
{
if(!(last_portC & (1<<PORTC2))) ShutterCounter++; // count if output swiched to high
if(!(last_portC & (1<<PORTC2)))
{
Out1ChangedFlag = 0x80;// this Flag marks a changed Out1;
ShutterCounter++; // count if output swiched to high
}
FC_StatusFlags2 |= FC_STATUS2_OUT1_ACTIVE; //else FC_StatusFlags2 &= ~FC_STATUS2_OUT1_ACTIVE; // Out1 (J16) -> wird in der SPI zurück gesetzt
}
if(PORTC & (1<<PORTC3)) FC_StatusFlags2 |= FC_STATUS2_OUT2_ACTIVE; else FC_StatusFlags2 &= ~FC_STATUS2_OUT2_ACTIVE; // Out2 (J17)
/trunk/led.h
11,3 → 11,4
extern void LED_Update(void);
extern unsigned char NC_Wait_for_LED;
extern unsigned int ShutterCounter;
extern unsigned char Out1ChangedFlag; // can be 0 or 0x80
/trunk/libfc1284.a
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/main.c
240,9 → 240,9
FoundMotors++;
vers = Motor[i].VersionMajor * 100 + Motor[i].VersionMinor; // creates 104 from 1.04
if(vers && VersionInfo.BL_Firmware > vers) VersionInfo.BL_Firmware = vers;
// if(Motor[i].Version & MOTOR_STATE_FAST_MODE) printf("(fast)\n\r");
// else if(Motor[i].Version & MOTOR_STATE_NEW_PROTOCOL_MASK) printf("(new)\n\r");
// printf(":V%03d\n\r",vers);
//if(Motor[i].Version & MOTOR_STATE_FAST_MODE) printf("(fast)");
//if(Motor[i].Version & MOTOR_STATE_NEW_PROTOCOL_MASK) printf("(new)");
//printf(":V%03d\n\r",vers);
}
}
for(i=0; i < MAX_MOTORS; i++)
/trunk/spi.c
181,7 → 181,7
break;
case SPI_FCCMD_BL_ACCU:
ToNaviCtrl.Param.Int[0] = Capacity.ActualCurrent; // 0.1A
ToNaviCtrl.Param.Byte[2] = motorindex;
ToNaviCtrl.Param.Byte[2] = motorindex | Out1ChangedFlag; // 0x80 this Flag marks a changed Out1
ToNaviCtrl.Param.Byte[3] = Capacity.MinOfMaxPWM;
ToNaviCtrl.Param.Byte[4] = GetChannelValue(EE_Parameter.NaviGpsModeChannel); // GPS-Mode control
ToNaviCtrl.Param.Byte[5] = VarioCharacter;
191,9 → 191,9
ToNaviCtrl.Param.Byte[9] = Motor[motorindex].State;
ToNaviCtrl.Param.Byte[10] = Motor[motorindex].Temperature;
ToNaviCtrl.Param.Byte[11] = Motor[motorindex].Current;
 
if(Mixer.Motor[++motorindex][0] <= 0) // next motor is not used ?
while(Mixer.Motor[motorindex][0] <= 0 && motorindex) motorindex = (motorindex + 1) % 13;
Out1ChangedFlag = 0;
break;
case SPI_FCCMD_SLOW:
switch(slow_command)
/trunk/uart.c
871,8 → 871,8
if(PC_MotortestActive) SendRedundantMotor[0] |= 0x80;
SendRedundantMotor[i+1] = Motor[i].SetPoint;
}
Kompass_Timer = SetDelay(25);
SendOutData('!', FC_ADDRESS, 1, (unsigned char *) &SendRedundantMotor, RequiredMotors+1);
Kompass_Timer = SetDelay(25);
}
#endif
 
/trunk/version.txt
765,12 → 765,16
- allows Yawing without CareFree (Yawing at Coming Home)
- Bugfix: Output LED Blinking when RC-Lost
 
2.09e (13.02.2015)
2.09e (13.03.2015)
- bugfix: uBat in 16Bit
- AnalogLable CRC implemented
- AnalogLable CRC implemented -> KopterTool doesn't need to read them every time
- ShutterCounter -> counts up when the output switches from low to high
- transmit LipoCount to NC
- Config "Disable CameraCompensation" disables also Roll-Compensation now
- AccZ in 3D-Datastructure (for Ben)
- new Parameter: LandingAccZ
- 16 Motors
- HoTT+: Motortest and ACC-Calibration
 
toDo:
- CalAthmospheare nachführen