Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 1800 → Rev 1801

/branches/dongfang_FC_rewrite/backup/main.h
File deleted
/branches/dongfang_FC_rewrite/backup/readme.txt
File deleted
\ No newline at end of file
/branches/dongfang_FC_rewrite/backup/controlMixer.h
File deleted
/branches/dongfang_FC_rewrite/backup/dongfangMath.c
File deleted
/branches/dongfang_FC_rewrite/backup/commands.txt
File deleted
/branches/dongfang_FC_rewrite/backup/commands.c
File deleted
/branches/dongfang_FC_rewrite/backup/dongfangMath.h
File deleted
/branches/dongfang_FC_rewrite/backup/commands.h
File deleted
/branches/dongfang_FC_rewrite/backup/navi-lang.txt
File deleted
\ No newline at end of file
/branches/dongfang_FC_rewrite/backup/invenSense.c
File deleted
/branches/dongfang_FC_rewrite/backup/dynamic_calibration_scrap.txt
File deleted
/branches/dongfang_FC_rewrite/backup/printf_P.c
File deleted
/branches/dongfang_FC_rewrite/backup/invenSense.h
File deleted
/branches/dongfang_FC_rewrite/backup/printf_P.h
File deleted
/branches/dongfang_FC_rewrite/backup/gps.c
File deleted
/branches/dongfang_FC_rewrite/backup/fc-0.74_bugs.txt
File deleted
/branches/dongfang_FC_rewrite/backup/spi.c
File deleted
/branches/dongfang_FC_rewrite/backup/uart1.c
File deleted
/branches/dongfang_FC_rewrite/backup/ubx.c
File deleted
/branches/dongfang_FC_rewrite/backup/gps.h
File deleted
/branches/dongfang_FC_rewrite/backup/spi.h
File deleted
/branches/dongfang_FC_rewrite/backup/uart1.h
File deleted
/branches/dongfang_FC_rewrite/backup/analog.c
File deleted
/branches/dongfang_FC_rewrite/backup/ubx.h
File deleted
/branches/dongfang_FC_rewrite/backup/rc.c
File deleted
/branches/dongfang_FC_rewrite/backup/menu.c
File deleted
/branches/dongfang_FC_rewrite/backup/analog.h
File deleted
/branches/dongfang_FC_rewrite/backup/configuration.c
File deleted
/branches/dongfang_FC_rewrite/backup/rc.h
File deleted
/branches/dongfang_FC_rewrite/backup/menu.h
File deleted
/branches/dongfang_FC_rewrite/backup/configuration.h
File deleted
/branches/dongfang_FC_rewrite/backup/flight.c
File deleted
/branches/dongfang_FC_rewrite/backup/userparams.txt
File deleted
\ No newline at end of file
/branches/dongfang_FC_rewrite/backup/ENC-03_FC1.3.c
File deleted
/branches/dongfang_FC_rewrite/backup/twimaster.c
File deleted
/branches/dongfang_FC_rewrite/backup/License.txt
File deleted
/branches/dongfang_FC_rewrite/backup/mk3mag.c
File deleted
/branches/dongfang_FC_rewrite/backup/flight.h
File deleted
/branches/dongfang_FC_rewrite/backup/externalControl.c
File deleted
/branches/dongfang_FC_rewrite/backup/ENC-03_FC1.3.h
File deleted
/branches/dongfang_FC_rewrite/backup/twimaster.h
File deleted
/branches/dongfang_FC_rewrite/backup/attitudeControl.c
File deleted
/branches/dongfang_FC_rewrite/backup/mk3mag.h
File deleted
/branches/dongfang_FC_rewrite/backup/displays.txt
File deleted
/branches/dongfang_FC_rewrite/backup/externalControl.h
File deleted
/branches/dongfang_FC_rewrite/backup/attitudeControl.h
File deleted
/branches/dongfang_FC_rewrite/backup/makefile
File deleted
/branches/dongfang_FC_rewrite/backup/mm3.c
File deleted
/branches/dongfang_FC_rewrite/backup/output.c
File deleted
/branches/dongfang_FC_rewrite/backup/timer0.c
File deleted
/branches/dongfang_FC_rewrite/backup/ADXRS610_FC2.0.c
File deleted
/branches/dongfang_FC_rewrite/backup/mm3.h
File deleted
/branches/dongfang_FC_rewrite/backup/timer2.c
File deleted
/branches/dongfang_FC_rewrite/backup/H_and_I_AxisCoupling.txt
File deleted
/branches/dongfang_FC_rewrite/backup/flexcontrol.h
File deleted
/branches/dongfang_FC_rewrite/backup/output.h
File deleted
/branches/dongfang_FC_rewrite/backup/timer0.h
File deleted
/branches/dongfang_FC_rewrite/backup/ADXRS610_FC2.0.h
File deleted
/branches/dongfang_FC_rewrite/backup/timer2.h
File deleted
/branches/dongfang_FC_rewrite/backup/TODO-list.txt
File deleted
\ No newline at end of file
/branches/dongfang_FC_rewrite/backup/control.c
File deleted
/branches/dongfang_FC_rewrite/backup/attitude.c
File deleted
/branches/dongfang_FC_rewrite/backup/control.h
File deleted
/branches/dongfang_FC_rewrite/backup/eeprom.c
File deleted
/branches/dongfang_FC_rewrite/backup/attitude.h
File deleted
/branches/dongfang_FC_rewrite/backup/GPSControl.c
File deleted
/branches/dongfang_FC_rewrite/backup/uart0.c
File deleted
/branches/dongfang_FC_rewrite/backup/eeprom.h
File deleted
/branches/dongfang_FC_rewrite/backup/bugs.txt
File deleted
/branches/dongfang_FC_rewrite/backup/GPSControl.h
File deleted
/branches/dongfang_FC_rewrite/backup/uart0.h
File deleted
/branches/dongfang_FC_rewrite/backup/sensors.h
File deleted
/branches/dongfang_FC_rewrite/backup/spectrum.c
File deleted
/branches/dongfang_FC_rewrite/backup/naviControl.h
File deleted
/branches/dongfang_FC_rewrite/backup/ports.txt
File deleted
/branches/dongfang_FC_rewrite/backup/spectrum.h
File deleted
/branches/dongfang_FC_rewrite/backup/heightControl.c
File deleted
/branches/dongfang_FC_rewrite/backup/sendOutData.c
File deleted
/branches/dongfang_FC_rewrite/backup/heightControl.h
File deleted
/branches/dongfang_FC_rewrite/backup/yaw-analysis.txt
File deleted
/branches/dongfang_FC_rewrite/backup/dsl.c
File deleted
/branches/dongfang_FC_rewrite/backup/main.c
File deleted
/branches/dongfang_FC_rewrite/backup/controlMixer.c
File deleted
/branches/dongfang_FC_rewrite/backup/gyro.h
File deleted
/branches/dongfang_FC_rewrite/backup/old_macros.h
File deleted
/branches/dongfang_FC_rewrite/backup/dsl.h
File deleted
/branches/dongfang_FC_rewrite/backup/encoding-tester.txt
File deleted
/branches/dongfang_FC_rewrite/makefile
15,8 → 15,8
#OPTIONS
 
# Use one of the extensions for a gps solution
EXT = NAVICTRL
#EXT = MK3MAG
#EXT = NAVICTRL
EXT = MK3MAG
 
# Use optional one the RCs if EXT = NAVICTRL has been used
#RC = DSL
28,17 → 28,17
#GYRO_PITCHROLL_CORRECTION=0.83f
#GYRO_YAW_CORRECTION=0.93f
 
GYRO=ADXRS610_FC2.0
GYRO_HW_NAME=ADXR
GYRO_HW_FACTOR=1.2288f
GYRO_PITCHROLL_CORRECTION=1.0f
GYRO_YAW_CORRECTION=1.0f
#GYRO=ADXRS610_FC2.0
#GYRO_HW_NAME=ADXR
#GYRO_HW_FACTOR=1.2288f
#GYRO_PITCHROLL_CORRECTION=1.0f
#GYRO_YAW_CORRECTION=1.0f
 
#GYRO=invenSense
#GYRO_HW_NAME=Isense
#GYRO_HW_FACTOR=0.6827f
#GYRO_PITCHROLL_CORRECTION=0.93f
#GYRO_YAW_CORRECTION=0.97f
GYRO=invenSense
GYRO_HW_NAME=Isense
GYRO_HW_FACTOR=0.6827f
GYRO_PITCHROLL_CORRECTION=0.93f
GYRO_YAW_CORRECTION=0.97f
 
#GYRO=
#GYRO=invenSense
255,7 → 255,6
##LDFLAGS += -T./linkerfile/avr5.x
 
 
 
# Programming support using avrdude. Settings and variables.
 
# Programming hardware: alf avr910 avrisp bascom bsd
/branches/dongfang_FC_rewrite/mk3mag.c
52,80 → 52,77
#include <stdlib.h>
#include <inttypes.h>
#include "timer0.h"
// #include "rc.h"
#include "attitude.h"
#include "eeprom.h"
#include "mk3mag.h"
 
// For the DebougOut alone.
#include "output.h"
 
uint8_t PWMTimeout = 12;
ToMk3Mag_t ToMk3Mag;
 
 
/*********************************************/
/* Initialize Interface to MK3MAG Compass */
/*********************************************/
void MK3MAG_Init(void)
{
// Port PC4 connected to PWM output from compass module
DDRC &= ~(1<<DDC4); // set as input
PORTC |= (1<<PORTC4); // pull up to increase PWM counter also if nothing is connected
void MK3MAG_Init(void) {
// Port PC4 connected to PWM output from compass module
DDRC &= ~(1 << DDC4); // set as input
PORTC |= (1 << PORTC4); // pull up to increase PWM counter also if nothing is connected
 
PWMTimeout = 0;
PWMTimeout = 0;
 
ToMk3Mag.CalState = 0;
ToMk3Mag.Orientation = 1;
ToMk3Mag.CalState = 0;
ToMk3Mag.Orientation = 1;
}
 
 
/*********************************************/
/* Get PWM from MK3MAG */
/*********************************************/
void MK3MAG_Update(void) // called every 102.4 us by timer 0 ISR
{
static uint16_t PWMCount = 0;
static uint16_t BeepDelay = 0;
// The pulse width varies from 1ms (0°) to 36.99ms (359.9°)
// in other words 100us/° with a +1ms offset.
// The signal goes low for 65ms between pulses,
// so the cycle time is 65mS + the pulse width.
void MK3MAG_Update(void) {// called every 102.4 us by timer 0 ISR
static uint16_t PWMCount = 0;
static uint16_t BeepDelay = 0;
static uint16_t debugCounter = 0;
// The pulse width varies from 1ms (0°) to 36.99ms (359.9°)
// in other words 100us/° with a +1ms offset.
// The signal goes low for 65ms between pulses,
// so the cycle time is 65mS + the pulse width.
 
// pwm is high
// pwm is high
 
if(PINC & (1<<PINC4))
{ // If PWM signal is high increment PWM high counter
// This counter is incremented by a periode of 102.4us,
// i.e. the resoluton of pwm coded heading is approx. 1 deg.
PWMCount++;
// pwm overflow?
if (PWMCount > 400)
{
if(PWMTimeout) PWMTimeout--; // decrement timeout
compassHeading = -1; // unknown heading
PWMCount = 0; // reset PWM Counter
if (PINC & (1 << PINC4)) {
// If PWM signal is high increment PWM high counter
// This counter is incremented by a periode of 102.4us,
// i.e. the resoluton of pwm coded heading is approx. 1 deg.
PWMCount++;
// pwm overflow?
if (PWMCount > 400) {
if (PWMTimeout)
PWMTimeout--; // decrement timeout
compassHeading = -1; // unknown heading
PWMCount = 0; // reset PWM Counter
}
} else { // pwm is low
// ignore pwm values values of 0 and higher than 37 ms;
if ((PWMCount) && (PWMCount < 362)) { // 362 * 102.4us = 37.0688 ms
if (PWMCount < 10)
compassHeading = 0;
else
compassHeading = ((uint32_t) (PWMCount - 10) * 1049L) / 1024; // correct timebase and offset
compassOffCourse = ((540 + compassHeading - compassCourse) % 360) - 180;
PWMTimeout = 12; // if 12 periodes long no valid PWM was detected the data are invalid
// 12 * 362 counts * 102.4 us
}
PWMCount = 0; // reset pwm counter
DebugOut.Digital[0] ^= DEBUG_MK3MAG;
DebugOut.Digital[1] &= ~DEBUG_MK3MAG;
} if (!PWMTimeout) {
if (CheckDelay(BeepDelay)) {
if (!BeepTime)
BeepTime = 100; // make noise with 10Hz to signal the compass problem
BeepDelay = SetDelay(100);
DebugOut.Digital[1] |= DEBUG_MK3MAG;
}
}
 
}
else // pwm is low
{ // ignore pwm values values of 0 and higher than 37 ms;
if((PWMCount) && (PWMCount < 362)) // 362 * 102.4us = 37.0688 ms
{
if(PWMCount <10) compassHeading = 0;
else compassHeading = ((uint32_t)(PWMCount - 10) * 1049L)/1024; // correct timebase and offset
compassOffCourse = ((540 + compassHeading - compassCourse) % 360) - 180;
PWMTimeout = 12; // if 12 periodes long no valid PWM was detected the data are invalid
// 12 * 362 counts * 102.4 us
}
PWMCount = 0; // reset pwm counter
}
if(!PWMTimeout)
{
if(CheckDelay(BeepDelay))
{
if(!BeepTime) BeepTime = 100; // make noise with 10Hz to signal the compass problem
BeepDelay = SetDelay(100);
}
}
}
 
 
 
/branches/dongfang_FC_rewrite/output.c
92,7 → 92,7
* Set to 0 for using outputs as the usual flashing lights.
* Set to one of the DEBUG_... constants in output.h for using the outputs as debug lights.
*/
#define DIGITAL_DEBUG_MASK 0
#define DIGITAL_DEBUG_MASK DEBUG_MK3MAG
 
// invert means: An "1" bit in digital debug data will feed NO base current to output transistor.
#define DIGITAL_DEBUG_INVERT 0
/branches/dongfang_FC_rewrite/output.h
19,6 → 19,7
#define DEBUG_ACC0THORDER 8
#define DEBUG_COMMANDREPEATED 16
#define DEBUG_PRESSURERANGE 32
#define DEBUG_MK3MAG 64
 
void output_init(void);
void output_update(void);