Rev 1591 | Rev 1603 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1591 | Rev 1598 | ||
---|---|---|---|
Line 50... | Line 50... | ||
50 | // + POSSIBILITY OF SUCH DAMAGE. |
50 | // + POSSIBILITY OF SUCH DAMAGE. |
51 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
51 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
52 | #include "main.h" |
52 | #include "main.h" |
Line 53... | Line -... | ||
53 | - | ||
54 | 53 | ||
55 | unsigned char EEPromArray[E2END+1] EEMEM; |
54 | |
56 | unsigned char PlatinenVersion = 10; |
55 | unsigned char PlatinenVersion = 10; |
57 | unsigned char SendVersionToNavi = 1; |
56 | unsigned char SendVersionToNavi = 1; |
58 | unsigned char BattLowVoltageWarning = 94; |
57 | unsigned char BattLowVoltageWarning = 94; |
Line 63... | Line 62... | ||
63 | // -- Parametersatz aus EEPROM lesen --- |
62 | // -- Parametersatz aus EEPROM lesen --- |
64 | // number [1..5] |
63 | // number [1..5] |
65 | void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
64 | void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
66 | { |
65 | { |
67 | if((number > 5)||(number < 1)) number = 3; |
66 | if((number > 5)||(number < 1)) number = 3; |
68 | eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length); |
67 | eeprom_read_block(buffer, (void*)(EEPROM_ADR_PARAM_BEGIN + length * (number - 1)), length); |
69 | LED_Init(); |
68 | LED_Init(); |
70 | } |
69 | } |
Line 71... | Line 70... | ||
71 | 70 | ||
72 | // -- Parametersatz ins EEPROM schreiben --- |
71 | // -- Parametersatz ins EEPROM schreiben --- |
73 | // number [1..5] |
72 | // number [1..5] |
74 | void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
73 | void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
75 | { |
74 | { |
76 | if(number > 5) number = 5; |
75 | if(number > 5) number = 5; |
77 | if(number < 1) return; |
76 | if(number < 1) return; |
78 | eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length); |
77 | eeprom_write_block(buffer, (void*)(EEPROM_ADR_PARAM_BEGIN + length * (number - 1)), length); |
79 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_PARAM_LENGTH], length); // Länge der Datensätze merken |
78 | eeprom_write_byte((unsigned char*)(EEPROM_ADR_PARAM_LENGTH), length); // Länge der Datensätze merken |
80 | eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_CHANNELS], 12); // 12 Kanäle merken |
79 | eeprom_write_block(buffer, (void*)(EEPROM_ADR_CHANNELS), 12); // 12 Kanäle merken |
81 | SetActiveParamSetNumber(number); |
80 | SetActiveParamSetNumber(number); |
82 | LED_Init(); |
81 | LED_Init(); |
Line 83... | Line 82... | ||
83 | } |
82 | } |
84 | 83 | ||
85 | unsigned char GetActiveParamSetNumber(void) |
84 | unsigned char GetActiveParamSetNumber(void) |
86 | { |
85 | { |
87 | unsigned char set; |
86 | unsigned char set; |
88 | set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
87 | set = eeprom_read_byte((unsigned char*)(EEPROM_ADR_ACTIVE_SET)); |
89 | if((set > 5) || (set < 1)) |
88 | if((set > 5) || (set < 1)) |
90 | { |
89 | { |
91 | set = 3; |
90 | set = 3; |
Line 96... | Line 95... | ||
96 | 95 | ||
97 | void SetActiveParamSetNumber(unsigned char number) |
96 | void SetActiveParamSetNumber(unsigned char number) |
98 | { |
97 | { |
99 | if(number > 5) number = 5; |
98 | if(number > 5) number = 5; |
100 | if(number < 1) return; |
99 | if(number < 1) return; |
101 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
100 | eeprom_write_byte((unsigned char*)(EEPROM_ADR_ACTIVE_SET), number); // diesen Parametersatz als aktuell merken |
Line 102... | Line 101... | ||
102 | } |
101 | } |
103 | 102 | ||
Line 207... | Line 206... | ||
207 | sei(); |
206 | sei(); |
Line 208... | Line 207... | ||
208 | 207 | ||
Line 209... | Line 208... | ||
209 | ReadParameterSet(3, (unsigned char *) &EE_Parameter.Kanalbelegung[0], 13); // read only the first bytes |
208 | ReadParameterSet(3, (unsigned char *) &EE_Parameter.Kanalbelegung[0], 13); // read only the first bytes |
210 | 209 | ||
211 | 210 | ||
212 | if((eeprom_read_byte(&EEPromArray[EEPROM_ADR_MIXER_TABLE]) == MIXER_REVISION) && // Check Revision in the first Byte |
211 | if((eeprom_read_byte((unsigned char*)(EEPROM_ADR_MIXER_TABLE)) == MIXER_REVISION) && // Check Revision in the first Byte |
213 | (eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 0xff)) // Settings reset via Koptertool |
212 | (eeprom_read_byte((unsigned char*)(EEPROM_ADR_VALID)) != 0xff)) // Settings reset via Koptertool |
214 | { |
213 | { |
215 | unsigned char i; |
214 | unsigned char i; |
216 | eeprom_read_block(&Mixer, &EEPromArray[EEPROM_ADR_MIXER_TABLE], sizeof(Mixer)); |
215 | eeprom_read_block(&Mixer, (unsigned char*)(EEPROM_ADR_MIXER_TABLE), sizeof(Mixer)); |
217 | for(i=0; i<16;i++) { if(Mixer.Motor[i][0] > 0) RequiredMotors++;} |
216 | for(i=0; i<16;i++) { if(Mixer.Motor[i][0] > 0) RequiredMotors++;} |
218 | } |
217 | } |
Line 226... | Line 225... | ||
226 | Mixer.Motor[1][0] = 64; Mixer.Motor[1][1] = -64; Mixer.Motor[1][2] = 0; Mixer.Motor[1][3] = +64; |
225 | Mixer.Motor[1][0] = 64; Mixer.Motor[1][1] = -64; Mixer.Motor[1][2] = 0; Mixer.Motor[1][3] = +64; |
227 | Mixer.Motor[2][0] = 64; Mixer.Motor[2][1] = 0; Mixer.Motor[2][2] = -64; Mixer.Motor[2][3] = -64; |
226 | Mixer.Motor[2][0] = 64; Mixer.Motor[2][1] = 0; Mixer.Motor[2][2] = -64; Mixer.Motor[2][3] = -64; |
228 | Mixer.Motor[3][0] = 64; Mixer.Motor[3][1] = 0; Mixer.Motor[3][2] = +64; Mixer.Motor[3][3] = -64; |
227 | Mixer.Motor[3][0] = 64; Mixer.Motor[3][1] = 0; Mixer.Motor[3][2] = +64; Mixer.Motor[3][3] = -64; |
229 | Mixer.Revision = MIXER_REVISION; |
228 | Mixer.Revision = MIXER_REVISION; |
230 | memcpy(Mixer.Name, "Quadro\0", 11); |
229 | memcpy(Mixer.Name, "Quadro\0", 11); |
231 | eeprom_write_block(&Mixer, &EEPromArray[EEPROM_ADR_MIXER_TABLE], sizeof(Mixer)); |
230 | eeprom_write_block(&Mixer, (void*)(EEPROM_ADR_MIXER_TABLE), sizeof(Mixer)); |
232 | } |
231 | } |
233 | printf("\n\rMixer-Config: '%s' (%u Motors)",Mixer.Name,RequiredMotors); |
232 | printf("\n\rMixer-Config: '%s' (%u Motors)",Mixer.Name,RequiredMotors); |
Line 234... | Line 233... | ||
234 | 233 | ||
235 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
234 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Line 264... | Line 263... | ||
264 | //printf("\n size: %u",STRUCT_PARAM_LAENGE); |
263 | //printf("\n size: %u",STRUCT_PARAM_LAENGE); |
Line 265... | Line 264... | ||
265 | 264 | ||
266 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
265 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
267 | // + Check Settings |
266 | // + Check Settings |
268 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
267 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
269 | if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) |
268 | if(eeprom_read_byte((unsigned char*)(EEPROM_ADR_VALID)) != EE_DATENREVISION) |
270 | { |
269 | { |
271 | DefaultKonstanten1(); |
270 | DefaultKonstanten1(); |
272 | printf("\n\rInit. EEPROM"); |
271 | printf("\n\rInit. EEPROM"); |
273 | for (unsigned char i=1;i<6;i++) |
272 | for (unsigned char i=1;i<6;i++) |
Line 282... | Line 281... | ||
282 | EE_Parameter.GyroAccFaktor = 27; |
281 | EE_Parameter.GyroAccFaktor = 27; |
283 | EE_Parameter.WinkelUmschlagNick = 78; |
282 | EE_Parameter.WinkelUmschlagNick = 78; |
284 | EE_Parameter.WinkelUmschlagRoll = 78; |
283 | EE_Parameter.WinkelUmschlagRoll = 78; |
285 | } |
284 | } |
286 | // valid Stick-Settings? |
285 | // valid Stick-Settings? |
287 | if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]) < 12) |
286 | if(eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS)) < 12 && eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+1)) < 12 && eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+2)) < 12 && eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+3)) < 12) |
288 | { |
287 | { |
289 | EE_Parameter.Kanalbelegung[0] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+0]); |
288 | EE_Parameter.Kanalbelegung[0] = eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+0)); |
290 | EE_Parameter.Kanalbelegung[1] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]); |
289 | EE_Parameter.Kanalbelegung[1] = eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+1)); |
291 | EE_Parameter.Kanalbelegung[2] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]); |
290 | EE_Parameter.Kanalbelegung[2] = eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+2)); |
292 | EE_Parameter.Kanalbelegung[3] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]); |
291 | EE_Parameter.Kanalbelegung[3] = eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+3)); |
293 | EE_Parameter.Kanalbelegung[4] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+4]); |
292 | EE_Parameter.Kanalbelegung[4] = eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+4)); |
294 | EE_Parameter.Kanalbelegung[5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+5]); |
293 | EE_Parameter.Kanalbelegung[5] = eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+5)); |
295 | EE_Parameter.Kanalbelegung[6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+6]); |
294 | EE_Parameter.Kanalbelegung[6] = eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+6)); |
296 | EE_Parameter.Kanalbelegung[7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+7]); |
295 | EE_Parameter.Kanalbelegung[7] = eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+7)); |
Line 297... | Line 296... | ||
297 | 296 | ||
298 | if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+8]) < 255) |
297 | if(eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+8)) < 0xFF) |
299 | { |
298 | { |
300 | EE_Parameter.Kanalbelegung[K_POTI5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+8]); |
299 | EE_Parameter.Kanalbelegung[K_POTI5] = eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+8)); |
301 | EE_Parameter.Kanalbelegung[K_POTI6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+9]); |
300 | EE_Parameter.Kanalbelegung[K_POTI6] = eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+9)); |
302 | EE_Parameter.Kanalbelegung[K_POTI7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+10]); |
301 | EE_Parameter.Kanalbelegung[K_POTI7] = eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+10)); |
303 | EE_Parameter.Kanalbelegung[K_POTI8] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+11]); |
302 | EE_Parameter.Kanalbelegung[K_POTI8] = eeprom_read_byte((unsigned char*)(EEPROM_ADR_CHANNELS+11)); |
304 | } |
303 | } |
305 | else |
304 | else |
306 | { |
305 | { |
307 | EE_Parameter.Kanalbelegung[K_POTI5] = 9; |
306 | EE_Parameter.Kanalbelegung[K_POTI5] = 9; |
Line 312... | Line 311... | ||
312 | if(i==1) printf(": Generating Default-Parameter using old Stick Settings"); |
311 | if(i==1) printf(": Generating Default-Parameter using old Stick Settings"); |
313 | } else DefaultStickMapping(); |
312 | } else DefaultStickMapping(); |
314 | WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
313 | WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
315 | } |
314 | } |
316 | SetActiveParamSetNumber(3); // default-Setting |
315 | SetActiveParamSetNumber(3); // default-Setting |
317 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); |
316 | eeprom_write_byte((unsigned char*)(EEPROM_ADR_VALID), EE_DATENREVISION); |
318 | } |
317 | } |
Line 319... | Line 318... | ||
319 | 318 | ||
320 | FlugMinuten = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_MINUTES2]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_MINUTES2+1]); |
319 | FlugMinuten = (int)eeprom_read_byte((unsigned char*)(EEPROM_ADR_MINUTES2)) * 256 + (int)eeprom_read_byte((unsigned char*)(EEPROM_ADR_MINUTES2+1)); |
321 | FlugMinutenGesamt = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_MINUTES]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_MINUTES+1]); |
320 | FlugMinutenGesamt = (int)eeprom_read_byte((unsigned char*)(EEPROM_ADR_MINUTES)) * 256 + (int)eeprom_read_byte((unsigned char*)(EEPROM_ADR_MINUTES+1)); |
322 | if(FlugMinutenGesamt == 0xffff || FlugMinuten == 0xffff) |
321 | if(FlugMinutenGesamt == 0xffff || FlugMinuten == 0xffff) |
323 | { |
322 | { |
324 | FlugMinuten = 0; |
323 | FlugMinuten = 0; |
325 | FlugMinutenGesamt = 0; |
324 | FlugMinutenGesamt = 0; |
326 | } |
325 | } |
Line 327... | Line 326... | ||
327 | printf("\n\rFlight-time %u min Total:%u min" ,FlugMinuten,FlugMinutenGesamt); |
326 | printf("\n\rFlight-time %u min Total:%u min" ,FlugMinuten,FlugMinutenGesamt); |
328 | 327 | ||
329 | if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
328 | if(eeprom_read_byte((unsigned char*)(EEPROM_ADR_ACC_NICK)) > 4) |
330 | { |
329 | { |
Line 331... | Line 330... | ||
331 | printf("\n\rACC not calibrated !"); |
330 | printf("\n\rACC not calibrated !"); |
Line 469... | Line 468... | ||
469 | if(++timer2 == 2930) // eine Minute |
468 | if(++timer2 == 2930) // eine Minute |
470 | { |
469 | { |
471 | timer2 = 0; |
470 | timer2 = 0; |
472 | FlugMinuten++; |
471 | FlugMinuten++; |
473 | FlugMinutenGesamt++; |
472 | FlugMinutenGesamt++; |
474 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2],FlugMinuten / 256); |
473 | eeprom_write_byte((unsigned char*)(EEPROM_ADR_MINUTES2),FlugMinuten / 256); |
475 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2+1],FlugMinuten % 256); |
474 | eeprom_write_byte((unsigned char*)(EEPROM_ADR_MINUTES2+1),FlugMinuten % 256); |
476 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES],FlugMinutenGesamt / 256); |
475 | eeprom_write_byte((unsigned char*)(EEPROM_ADR_MINUTES),FlugMinutenGesamt / 256); |
477 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES+1],FlugMinutenGesamt % 256); |
476 | eeprom_write_byte((unsigned char*)(EEPROM_ADR_MINUTES+1),FlugMinutenGesamt % 256); |
478 | timer = SetDelay(20); // falls "timer += 20;" mal nicht geht |
477 | timer = SetDelay(20); // falls "timer += 20;" mal nicht geht |
479 | } |
478 | } |
480 | } |
479 | } |
481 | LED_Update(); |
480 | LED_Update(); |
482 | Capacity_Update(); |
481 | Capacity_Update(); |