Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 2115 → Rev 2116

/branches/dongfang_FC_fixedwing/arduino_atmega328/README.txt
27,14 → 27,3
 
ADC6 Battery voltage divider
ADC7 Airspeed sensor
 
 
 
To do:
- Throttle shut off in both versions
- Check rc.h in both versions
- Implement servo limiter
 
Big Wing:
- Redundant supply with separate batt and Trojan BEC
- XBee
/branches/dongfang_FC_fixedwing/arduino_atmega328/analog.c
6,7 → 6,6
#include "analog.h"
#include "configuration.h"
#include "attitude.h"
#include "sensors.h"
#include "printf_P.h"
#include "isqrt.h"
#include "twimaster.h"
/branches/dongfang_FC_fixedwing/arduino_atmega328/configuration.c
2,7 → 2,6
#include <stddef.h>
#include <string.h>
#include "configuration.h"
#include "sensors.h"
#include "rc.h"
#include "output.h"
#include "flight.h"
9,7 → 8,7
 
int16_t variables[VARIABLE_COUNT];
ParamSet_t staticParams;
channelMap_t channelMap;
ChannelMap_t channelMap;
IMUConfig_t IMUConfig;
volatile DynamicParams_t dynamicParams;
 
154,6 → 153,7
/* Default Values for R/C Channels */
/***************************************************/
void channelMap_default(void) {
channelMap.trim = 0;
channelMap.channels[CH_ELEVATOR] = 1;
channelMap.channels[CH_AILERONS] = 0;
channelMap.channels[CH_THROTTLE] = 2;
/branches/dongfang_FC_fixedwing/arduino_atmega328/configuration.h
111,9 → 111,11
*/
 
typedef struct {
uint8_t trim;
uint8_t variableOffset;
uint8_t channels[MAX_CHANNELS];
} channelMap_t;
extern channelMap_t channelMap;
} ChannelMap_t;
extern ChannelMap_t channelMap;
 
typedef struct {
int16_t offsets[3];
125,7 → 127,7
uint8_t minValue;
uint8_t maxValue;
uint8_t flags;
} servo_t;
} Servo_t;
 
#define SERVO_STABILIZATION_REVERSE 1
 
162,8 → 164,11
uint8_t controlServosReverse;
 
uint8_t servoCount;
uint8_t controlServoMinValue;
uint8_t controlServoMaxValue;
 
uint8_t servoManualMaxSpeed;
servo_t servoConfigurations[2]; // [PITCH, ROLL]
Servo_t servoConfigurations[2]; // [PITCH, ROLL]
 
// Outputs
output_flash_t outputFlash[2];
/branches/dongfang_FC_fixedwing/arduino_atmega328/eeprom.c
147,11 → 147,11
/* ChannelMap */
/***************************************************/
void channelMap_writeToEEProm(void) {
writeChecksummedBlock(CHANNELMAP_REVISION, (uint8_t*)&channelMap, EEPROM_ADR_CHANNELMAP, sizeof(channelMap_t));
writeChecksummedBlock(CHANNELMAP_REVISION, (uint8_t*)&channelMap, EEPROM_ADR_CHANNELMAP, sizeof(ChannelMap_t));
}
 
void channelMap_readOrDefault(void) {
if (readChecksummedBlock(CHANNELMAP_REVISION, (uint8_t*)&channelMap, EEPROM_ADR_CHANNELMAP, sizeof(channelMap_t))) {
if (readChecksummedBlock(CHANNELMAP_REVISION, (uint8_t*)&channelMap, EEPROM_ADR_CHANNELMAP, sizeof(ChannelMap_t))) {
printf("\n\rwriting default channel map");
channelMap_default();
channelMap_writeToEEProm();
/branches/dongfang_FC_fixedwing/arduino_atmega328/eeprom.h
23,7 → 23,7
#define EEPROM_ADR_IMU_CONFIG 100
#define EEPROM_ADR_PARAMSET_BEGIN 256
 
#define CHANNELMAP_REVISION 0
#define CHANNELMAP_REVISION 1
#define EEPARAM_REVISION 100
#define EEMIXER_REVISION 0
#define SENSOROFFSET_REVISION 0
/branches/dongfang_FC_fixedwing/arduino_atmega328/rc.c
99,7 → 99,7
if ((signal >= TIME(0.8)) && (signal < TIME(2.2))) {
// shift signal to zero symmetric range -154 to 159
//signal -= 3750; // theoretical value
signal -= (TIME(1.5) + RC_TRIM); // best value with my Futaba in zero trim.
signal -= (TIME(1.5) - 128 + channelMap.trim-128); // best value with my Futaba in zero trim.
// check for stable signal
if (abs(signal - PPM_in[index]) < TIME(0.05)) {
if (RCQuality < 200)
198,12 → 198,12
int16_t RC_getVariable(uint8_t varNum) {
if (varNum < 4)
// 0th variable is 5th channel (1-based) etc.
return (RCChannel(varNum + CH_POTS) >> 2) + VARIABLE_OFFSET;
return (RCChannel(varNum + CH_POTS) >> 2) + channelMap.variableOffset;
/*
* Let's just say:
* The RC variable i is hardwired to channel i, i>=4
*/
return (PPM_in[varNum] >> 2) + VARIABLE_OFFSET;
return (PPM_in[varNum] >> 2) + channelMap.variableOffset;
}
 
uint8_t RC_getSignalQuality(void) {