/branches/v0.60_MicroMag3_Nick666/compass.c |
---|
48,7 → 48,6 |
if (MM3.AXIS == MM3_X) SPDR = 0x51; // Schreiben ins SPDR löst automatisch Übertragung (MOSI und MISO) aus |
else if (MM3.AXIS == MM3_Y) SPDR = 0x52; // Micromag Period Select ist auf 1024 (0x50) |
else if (MM3.AXIS == MM3_Z) SPDR = 0x53; // 1: x-Achse, 2: Y-Achse, 3: Z-Achse |
else {MM3.STATE == MM3_IDLE;break;} |
MM3.DRDY = SetDelay(15); // Laut Datenblatt max. Zeit bis Messung fertig (bei PS 1024) |
MM3.STATE = MM3_WAIT_DRDY; |
80,7 → 79,6 |
case MM3_X_BYTE2: // 2. Byte der entsprechenden Achse ist da. |
MM3.x_axis |= SPDR; |
MM3.x_axis -= OFF_X; // Sofort Offset aus der Kalibrierung berücksichtigen |
//MM3.x_axis /= GAIN_X; |
MM3.AXIS = MM3_Y; |
MM3.STATE = MM3_RESET; |
break; |
88,7 → 86,6 |
case MM3_Y_BYTE2: |
MM3.y_axis |= SPDR; |
MM3.y_axis -= OFF_Y; |
//MM3.y_axis /= GAIN_Y; |
MM3.AXIS = MM3_Z; |
MM3.STATE = MM3_RESET; |
break; |
96,7 → 93,6 |
case MM3_Z_BYTE2: |
MM3.z_axis |= SPDR; |
MM3.z_axis -= OFF_Z; |
//MM3.z_axis /= GAIN_Z; |
MM3.AXIS = MM3_X; |
MM3.STATE = MM3_RESET; |
// Zeitnahe Speicherung der aktuellen Nick-/Rollneigung in ° |
121,6 → 117,7 |
//Neigungskompensation |
y_corr = ((cos_roll * MM3.y_axis) + (sin_roll * MM3.z_axis)); |
x_corr = (((sin_roll * MM3.y_axis) - (cos_roll * MM3.z_axis)) * sin_nick) + (cos_nick * MM3.x_axis); |
//Winkelberechnung |
heading = arctan_i(x_corr, y_corr); |
/branches/v0.60_MicroMag3_Nick666/fc.c |
---|
384,12 → 384,6 |
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
/branches/v0.60_MicroMag3_Nick666/fc.h |
---|
29,6 → 29,9 |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
void Piep(unsigned char Anzahl); |
void DefaultKonstanten1(void); |
void DefaultKonstanten2(void); |
unsigned char h,m,s; |
volatile unsigned char Timeout ; |
/branches/v0.60_MicroMag3_Nick666/menu.h |
---|
1,3 → 1,5 |
void LcdClear(void); |
extern void Menu(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
/branches/v0.60_MicroMag3_Nick666/timer0.c |
---|
43,24 → 43,8 |
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV) MM3_timer0(); |
/* |
if(PINC & 0x10) |
{ |
cntKompass++; |
} |
else |
{ |
if((cntKompass) && (cntKompass < 4000)) |
{ |
KompassValue = cntKompass; |
} |
// if(cntKompass < 10) cntKompass = 10; |
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
cntKompass = 0; |
} |
//KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
}*/ |
} |
/branches/v0.60_MicroMag3_Nick666/uart.h |
---|
4,6 → 4,8 |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
void BearbeiteRxDaten(void); |
extern unsigned char DebugGetAnforderung; |
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |