Rev 325 | Rev 327 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 325 | Rev 326 | ||
---|---|---|---|
Line 398... | Line 398... | ||
398 | ClearFCStatusFlags = 0; |
398 | ClearFCStatusFlags = 0; |
399 | } |
399 | } |
400 | FC.StatusFlags |= FromFlightCtrl.Param.Byte[8]; |
400 | FC.StatusFlags |= FromFlightCtrl.Param.Byte[8]; |
401 | if(FC.StatusFlags & FC_STATUS_CALIBRATE && !FCCalibActive) |
401 | if(FC.StatusFlags & FC_STATUS_CALIBRATE && !FCCalibActive) |
402 | { |
402 | { |
- | 403 | HeadFreeStartAngle = Compass_Heading * 10; |
|
403 | Compass_Init(); |
404 | Compass_Init(); |
404 | FCCalibActive = 1; |
405 | FCCalibActive = 1; |
405 | HeadFreeStartAngle = FromFlightCtrl.GyroHeading; |
- | |
406 | } |
406 | } |
407 | else |
407 | else |
408 | { |
408 | { |
409 | FCCalibActive = 0; |
409 | FCCalibActive = 0; |
410 | } |
410 | } |
411 | if(FC.StatusFlags & FC_STATUS_START) HeadFreeStartAngle = FromFlightCtrl.GyroHeading; |
411 | if(FC.StatusFlags & FC_STATUS_START) if(Compass_Heading != -1) HeadFreeStartAngle = Compass_Heading * 10; else HeadFreeStartAngle = FromFlightCtrl.GyroHeading; |
Line 412... | Line 412... | ||
412 | 412 | ||
413 | if((Parameter.ExtraConfig & CFG_LEARNABLE_CAREFREE) && (NCFlags & NC_FLAG_GPS_OK)) |
413 | if((Parameter.ExtraConfig & CFG_LEARNABLE_CAREFREE)) |
414 | { |
414 | { |
415 | if(!(FC.StatusFlags2 & FC_STATUS2_CAREFREE)) // CF ist jetzt ausgeschaltet -> neue Richtung lernen |
415 | if(!(FC.StatusFlags2 & FC_STATUS2_CAREFREE)) // CF ist jetzt ausgeschaltet -> neue Richtung lernen |
416 | { |
416 | { |
417 | if(NaviData.HomePositionDeviation.Distance > 200) // nur bei ausreichender Distance -> 20m |
417 | if((NaviData.HomePositionDeviation.Distance > 200) && (NCFlags & NC_FLAG_GPS_OK)) // nur bei ausreichender Distance -> 20m |
418 | { |
418 | { |
419 | HeadFreeStartAngle = (10 * NaviData.HomePositionDeviation.Bearing + 1800 + 3600 - Parameter.OrientationAngle * 150) % 3600; // in 0.1° |
419 | HeadFreeStartAngle = (10 * NaviData.HomePositionDeviation.Bearing + 1800 + 3600 - Parameter.OrientationAngle * 150) % 3600; // in 0.1° |
420 | } |
420 | } |
421 | else // Ansonsten die aktuelle Richtung übernehmen |
421 | else // Ansonsten die aktuelle Richtung übernehmen |
422 | HeadFreeStartAngle = (3600 + FromFlightCtrl.GyroHeading /*+ Parameter.OrientationAngle * 150*/) % 3600; // in 0.1° |
422 | HeadFreeStartAngle = (3600 + FromFlightCtrl.GyroHeading /*+ Parameter.OrientationAngle * 150*/) % 3600; // in 0.1° |
423 | } |
423 | } |
Line -... | Line 424... | ||
- | 424 | } |
|
- | 425 | ||
424 | } |
426 | //DebugOut.Analog[16] = HeadFreeStartAngle; |
425 | 427 | ||
426 | Parameter.ActiveSetting = FromFlightCtrl.Param.Byte[9]; |
428 | Parameter.ActiveSetting = FromFlightCtrl.Param.Byte[9]; |
427 | DebugOut.Analog[5] = FC.StatusFlags; |
429 | DebugOut.Analog[5] = FC.StatusFlags; |
428 | FC.StatusFlags2 = FromFlightCtrl.Param.Byte[11]; |
430 | FC.StatusFlags2 = FromFlightCtrl.Param.Byte[11]; |