Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 2340 → Rev 2341

/trunk/eeprom.c
570,7 → 570,6
void ParamSet_Init(void)
{
uint8_t channel_backup = 0, bad_params = 0, ee_default = 0,i;
if(GetParamByte(PID_EE_REVISION) == EEPARAM_REVISION - 50) SetParamByte(PID_EE_REVISION,EEPARAM_REVISION); // remove the EEPARAM_REVISION_SUB from Version 0.90g
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
if(PlatinenVersion != GetParamByte(PID_HARDWARE_VERSION))
{
/trunk/fc.c
711,7 → 711,7
BeepMuster = 0xA400;
CareFree = 0;
}
if(CareFree) { FC_StatusFlags2 |= FC_STATUS2_CAREFREE; if(Parameter_AchsKopplung1 < 210) Parameter_AchsKopplung1 += 30;} else FC_StatusFlags2 &= ~FC_STATUS2_CAREFREE;
if(CareFree) { FC_StatusFlags2 |= FC_STATUS2_CAREFREE; /*if(Parameter_AchsKopplung1 < 210) Parameter_AchsKopplung1 += 30;*/} else FC_StatusFlags2 &= ~FC_STATUS2_CAREFREE;
}
 
//############################################################################
1526,7 → 1526,6
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Höhenregelung
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(UBat > BattLowVoltageWarning) GasMischanteil = ((unsigned int)GasMischanteil * BattLowVoltageWarning) / UBat; // Gas auf das aktuelle Spannungvieveau beziehen
GasMischanteil *= STICK_GAIN;
/trunk/jeti_ex.c
69,7 → 69,8
{
// Label[10] unit[3], data type, Data , position of decimal point
// "1234567890", "123",
{ "-=.M_K.=-" , " ", 1, 0 , 0 }, // first one is device name // datatype 1 = -8192...8192
// { "-=.M_K.=-" , " ", 1, 0 , 0 }, // first one is device name // datatype 1 = -8192...8192
{ "MK " , " ", 1, 0 , 0 }, // first one is device name // datatype 1 = -8192...8192
{ "Voltage " , "V ", 1, 0 , 1 }, // ID 1
{ "Current " , "A ", 1, 0 , 1 }, // ID 2
{ "Capacity " , "Ah ", 1, 0 , 2 }, // ID 3
/trunk/libfc1284.a
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/main.c
117,6 → 117,7
//############################################################################
{
unsigned int timer,i,timer2 = 0, timerPolling;
unsigned char update_spi = 1;
DDRB = 0x00;
PORTB = 0x00;
DDRD = 0x0A; // UART & J3 J4 J5
412,9 → 413,7
}
}
else if(!beeptime) FC_StatusFlags &= ~FC_STATUS_LOWBAT;
 
SPI_StartTransmitPacket();
SendSPI = 4;
SendSPI = SPI_BYTEGAP;
EEAR = EE_DUMMY; // Set the EEPROM Address pointer to an unused space
// +++++++++++++++++++++++++++++++++
// Sekundentakt
447,10 → 446,11
Capacity_Update();
} //else DebugOut.Analog[26]++;
}
}
if(!SendSPI) { SPI_TransmitByte(); }
if(update_spi) update_spi--;
} // 500Hz
if(update_spi == 0) { SPI_StartTransmitPacket(); update_spi = 12;} // 41Hz
else if(!SendSPI) { SPI_TransmitByte(); }
}
return (1);
}
//DebugOut.Analog[16]
 
/trunk/menu.c
191,7 → 191,7
break;
case 8:
LCD_printfxy(0,0,"Receiver");
LCD_printfxy(0,1,"RC-RSSI: %4i", PPM_in[0]);
// LCD_printfxy(0,1,"RC-RSSI: %4i", PPM_in[0]);
LCD_printfxy(0,2,"RC-Quality: %4i", SenderOkay);
LCD_printfxy(0,3,"RC-Channels:%4i", Channels-1);
break;
/trunk/rc.c
57,9 → 57,9
#include "rc.h"
#include "main.h"
// Achtung: ACT_S3D_SUMMENSIGNAL wird in der Main.h gesetzt
 
volatile int PPM_in[26+4];
volatile int PPM_diff[26+4]; // das diffenzierte Stick-Signal
#define MAX_RC_IN 16+12+3+4 // 16ch + 12ser + 3stages + 4 reserved
volatile int PPM_in[MAX_RC_IN];
volatile int PPM_diff[MAX_RC_IN]; // das differnzierte Stick-Signal
volatile char Channels,tmpChannels = 0;
volatile unsigned char NewPpmData = 1;
unsigned int PPM_Neutral = 466;
66,15 → 66,18
 
//############################################################################
// Clear the values
void rc_sum_init (void)
void rc_sum_init(void)
//############################################################################
{
unsigned char i;
for(i=0;i<sizeof(PPM_in);i++)
for(i=0;i<MAX_RC_IN;i++)
{
if(i < 5) PPM_in[i] = 0; else PPM_in[i] = -127;
PPM_diff[i] = 0;
}
PPM_in[PPM_IN_OFF] = -127;
PPM_in[PPM_IN_MID] = 0;
PPM_in[PPM_IN_MAX] = +127;
AdNeutralGier = 0;
AdNeutralRoll = 0;
AdNeutralNick = 0;
/trunk/rc.h
13,21 → 13,29
#define TIMER_RELOAD_VALUE 250
#endif
 
#define MAX_RC_IN 16+12+3+4 // 16ch + 12ser + 3stages + 4 reserved
 
extern void rc_sum_init (void);
 
extern volatile int PPM_in[26+4];
extern volatile int PPM_diff[26+4]; // das diffenzierte Stick-Signal
extern volatile int PPM_in[MAX_RC_IN];
extern volatile int PPM_diff[MAX_RC_IN]; // das diffenzierte Stick-Signal
extern volatile unsigned char NewPpmData;
extern volatile char Channels,tmpChannels;
extern unsigned int PPM_Neutral;
 
// 0 -> frei bzw. ACT rssi
// 1 - 16 -> 1-16
// 17 - 28 -> 12 Serial channels
// 29 -> WP-Event kanal
// 0 -> frei bzw. ACT rssi
// 1 - 16 -> 1-16
// 17 - 28 -> 12 Serial channels
// 29 -> WP-Event kanal
// 30 -> -127
// 31 -> 0
// 32 -> 128
 
#define SERIAL_POTI_START 17
#define WP_EVENT_PPM_IN 29
#define PPM_IN_OFF 30
#define PPM_IN_MID 31
#define PPM_IN_MAX 32
 
#define FromNC_WP_EventChannel PPM_in[WP_EVENT_PPM_IN] // WP_EVENT-Channel-Value
 
/trunk/spi.c
21,9 → 21,9
unsigned char SPI_RxDataValid,NaviDataOkay = 250;
 
unsigned char SPI_CommandSequence[] = { SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_PARAMETER1,
SPI_FCCMD_STICK, SPI_FCCMD_MISC, SPI_FCCMD_VERSION,
SPI_FCCMD_STICK, SPI_FCCMD_SERVOS, SPI_FCCMD_ACCU,
SPI_FCCMD_STICK, SPI_FCCMD_PARAMETER2
SPI_FCCMD_STICK, SPI_FCCMD_VERSION, SPI_FCCMD_BL_ACCU,
SPI_FCCMD_STICK, SPI_FCCMD_MISC,SPI_FCCMD_SERVOS,
SPI_FCCMD_STICK, SPI_FCCMD_PARAMETER2, SPI_FCCMD_BL_ACCU
};
unsigned char SPI_CommandCounter = 0;
unsigned char NC_ErrorCode = 0;
65,10 → 65,7
//------------------------------------------------------
void SPI_StartTransmitPacket(void)
{
//if ((SLAVE_SELECT_PORT & (1 << SPI_SLAVE_SELECT)) == 0) return; // transfer of prev. packet not completed
if (!SPITransferCompleted) return;
// _delay_us(30);
 
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave
SPI_TX_Buffer = (unsigned char *) &ToNaviCtrl;
 
77,17 → 74,9
 
SPITransferCompleted = 0;
UpdateSPI_Buffer(); // update buffer
 
SPI_BufferIndex = 1;
// -- Debug-Output ---
//----
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
ToNaviCtrl.Chksum = ToNaviCtrl.Sync1;
SPDR = ToNaviCtrl.Sync1; // Start transmission
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave
 
}
 
//------------------------------------------------------
100,8 → 89,7
 
if (SPITransferCompleted) return;
if (!(SPSR & (1 << SPIF))) return;
SendSPI = 4;
 
SendSPI = SPI_BYTEGAP;
// _delay_us(30);
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave
 
109,7 → 97,6
switch ( SPI_RXState)
{
case 0:
 
SPI_RxBufferIndex = 0;
rxchksum = rxdata;
if (rxdata == 0x81 ) { SPI_RXState = 1; } // 1. Syncbyte ok
126,7 → 113,6
//DebugOut.Analog[19]++;
if (SPI_RxBufferIndex >= sizeof(FromNaviCtrl))
{
 
if (rxdata == rxchksum)
{
unsigned char *ptr = (unsigned char *)&FromNaviCtrl;
137,8 → 123,6
{
SPI_RxDataValid = 0;
}
 
 
SPI_RXState = 0;
}
else rxchksum += rxdata;
149,15 → 133,10
if (SPI_BufferIndex < sizeof(ToNaviCtrl))
{
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
 
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
SPDR = SPI_TX_Buffer[SPI_BufferIndex];
ToNaviCtrl.Chksum += SPI_TX_Buffer[SPI_BufferIndex];
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave
 
}
}
else SPITransferCompleted = 1;
 
SPI_BufferIndex++;
197,11 → 176,11
ToNaviCtrl.Param.Byte[11] = FC_StatusFlags2;
break;
 
case SPI_FCCMD_ACCU:
case SPI_FCCMD_BL_ACCU:
ToNaviCtrl.Param.Int[0] = Capacity.ActualCurrent; // 0.1A
ToNaviCtrl.Param.Int[1] = Capacity.UsedCapacity; // mAh
ToNaviCtrl.Param.Byte[4] = (unsigned char) UBat; // 0.1V
ToNaviCtrl.Param.Byte[5] = (unsigned char) BattLowVoltageWarning; //0.1V
ToNaviCtrl.Param.Byte[5] = EE_Parameter.NaviGpsModeControl; // GPS-Mode
ToNaviCtrl.Param.Byte[6] = VarioCharacter;
ToNaviCtrl.Param.Byte[7] = motorindex;
ToNaviCtrl.Param.Byte[8] = Motor[motorindex].MaxPWM;
211,8 → 190,8
motorindex %= 12;
break;
case SPI_FCCMD_PARAMETER1:
ToNaviCtrl.Param.Byte[0] = EE_Parameter.NaviGpsModeControl; // Parameters for the Naviboard
ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviGpsGain;
ToNaviCtrl.Param.Byte[0] = (unsigned char) BattLowVoltageWarning; //0.1V
ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviGpsGain; // Parameters for the Naviboard
ToNaviCtrl.Param.Byte[2] = EE_Parameter.NaviGpsP;
ToNaviCtrl.Param.Byte[3] = EE_Parameter.NaviGpsI;
ToNaviCtrl.Param.Byte[4] = EE_Parameter.NaviGpsD;
273,7 → 252,8
ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviGpsILimit;
ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviGpsDLimit;
ToNaviCtrl.Param.Byte[9] = (unsigned char) SenderOkay;
ToNaviCtrl.Param.Byte[10] = (unsigned char) PPM_in[0];
// ToNaviCtrl.Param.Byte[10] = (unsigned char) PPM_in[0]; // ACT RSSI
ToNaviCtrl.Param.Byte[10] = 0;
ToNaviCtrl.Param.Byte[11] = DebugOut.Analog[7] / 4; //GasMischanteil
break;
case SPI_FCCMD_VERSION:
/trunk/spi.h
6,7 → 6,7
#include "vector.h"
 
#define USE_SPI_COMMUNICATION
 
#define SPI_BYTEGAP 3
//-----------------------------------------
#define DDR_SPI DDRB
#define SLAVE_SELECT_DDR_PORT DDRC
62,7 → 62,7
#define SPI_FCCMD_PARAMETER1 13
#define SPI_FCCMD_VERSION 14
#define SPI_FCCMD_SERVOS 15
#define SPI_FCCMD_ACCU 16
#define SPI_FCCMD_BL_ACCU 16
#define SPI_FCCMD_PARAMETER2 17
 
struct str_ToNaviCtrl
/trunk/version.txt
589,8 → 589,12
- Checking the ACC-Z value in flight and report ACC-Z if out of range
- disable Altitude hold in case of ACC-Z error
0.91a
0.91b
- NC-SPI communication from 25Hz to 41Hz
- MotorTemperature and GPS-Mode-Switch more often to NC
- Auto-Start/Landing
- JetiEX: Name set to 'MK'
- if(CareFree) Parameter_AchsKopplung1 += 30; removed
- StickNeutral setting per default 127
- UART-Buffer increased from 175 to 220 Bytes
- no. of channels increased from 12 to 16
598,4 → 602,7
// 1 - 16 -> 1-16
// 17 - 28 -> 12 Serial channels
// 29 -> WP-Event kanal
// 30 -> -127
// 31 -> 0
// 32 -> 128