Rev 1167 | Rev 1172 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1167 | Rev 1171 | ||
---|---|---|---|
Line 68... | Line 68... | ||
68 | void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
68 | void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
69 | { |
69 | { |
70 | if(number > 5) number = 5; |
70 | if(number > 5) number = 5; |
71 | if(number < 1) return; |
71 | if(number < 1) return; |
72 | eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length); |
72 | eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length); |
- | 73 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_PARAM_LENGTH], length); // Länge der Datensätze merken |
|
- | 74 | eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_CHANNELS], 8); // 8 Kanäle merken |
|
73 | SetActiveParamSetNumber(number); |
75 | SetActiveParamSetNumber(number); |
74 | LED_Init(); |
76 | LED_Init(); |
75 | } |
77 | } |
Line 76... | Line 78... | ||
76 | 78 | ||
Line 140... | Line 142... | ||
140 | DDRB = 0x1B; // LEDs und Druckoffset |
142 | DDRB = 0x1B; // LEDs und Druckoffset |
141 | PORTB = 0x01; // LED_Rot |
143 | PORTB = 0x01; // LED_Rot |
142 | DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
144 | DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
143 | DDRD |=0x80; // J7 -> Servo signal |
145 | DDRD |=0x80; // J7 -> Servo signal |
144 | PORTD = 0x47; // LED |
146 | PORTD = 0x47; // LED |
145 | - | ||
- | 147 | HEF4017R_ON; |
|
146 | MCUSR &=~(1<<WDRF); |
148 | MCUSR &=~(1<<WDRF); |
147 | WDTCSR |= (1<<WDCE)|(1<<WDE); |
149 | WDTCSR |= (1<<WDCE)|(1<<WDE); |
148 | WDTCSR = 0; |
150 | WDTCSR = 0; |
Line 149... | Line 151... | ||
149 | 151 | ||
Line 154... | Line 156... | ||
154 | ROT_OFF; |
156 | ROT_OFF; |
Line 155... | Line 157... | ||
155 | 157 | ||
156 | Timer_Init(); |
158 | Timer_Init(); |
157 | TIMER2_Init(); |
159 | TIMER2_Init(); |
- | 160 | UART_Init(); |
|
158 | UART_Init(); |
161 | Uart1Init(); |
159 | rc_sum_init(); |
162 | rc_sum_init(); |
160 | ADC_Init(); |
163 | ADC_Init(); |
161 | i2c_init(); |
164 | i2c_init(); |
Line 165... | Line 168... | ||
165 | 168 | ||
166 | printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR,VERSION_PATCH + 'a'); |
169 | printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR,VERSION_PATCH + 'a'); |
Line 167... | Line 170... | ||
167 | printf("\n\r=============================="); |
170 | printf("\n\r=============================="); |
168 | - | ||
169 | GRN_ON; |
171 | |
170 | - | ||
171 | ReadParameterSet(3, (unsigned char *) &EE_Parameter.Kanalbelegung[0], 9); // read only the first bytes |
- | |
172 | // valid Stick-Settings? |
- | |
173 | if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) == 255 || eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) < EE_DATENREVISION || |
- | |
174 | EE_Parameter.Kanalbelegung[0] > 9 || EE_Parameter.Kanalbelegung[1] > 9 || EE_Parameter.Kanalbelegung[2] > 9 || EE_Parameter.Kanalbelegung[3] > 9) |
- | |
175 | { |
- | |
176 | printf("\n\rInit. EEPROM"); |
- | |
177 | DefaultStickMapping(); |
- | |
Line 178... | Line 172... | ||
178 | } |
172 | GRN_ON; |
179 | else if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) printf("\n\rInit. EEPROM: Generating Default-Parameter using old Stick Settings"); |
173 | ReadParameterSet(3, (unsigned char *) &EE_Parameter.Kanalbelegung[0], 9); // read only the first bytes |
180 | 174 | ||
- | 175 | if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) |
|
181 | if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) |
176 | { |
182 | { |
177 | DefaultKonstanten1(); |
183 | DefaultKonstanten1(); |
178 | printf("\n\rInit. EEPROM"); |
184 | for (unsigned char i=1;i<6;i++) |
179 | for (unsigned char i=1;i<6;i++) |
185 | { |
180 | { |
Line 191... | Line 186... | ||
191 | EE_Parameter.Gyro_D = 5; |
186 | EE_Parameter.Gyro_D = 5; |
192 | EE_Parameter.Driftkomp = 0; |
187 | EE_Parameter.Driftkomp = 0; |
193 | EE_Parameter.GyroAccFaktor = 27; |
188 | EE_Parameter.GyroAccFaktor = 27; |
194 | EE_Parameter.WinkelUmschlagNick = 78; |
189 | EE_Parameter.WinkelUmschlagNick = 78; |
195 | EE_Parameter.WinkelUmschlagRoll = 78; |
190 | EE_Parameter.WinkelUmschlagRoll = 78; |
196 | - | ||
197 | } |
191 | } |
- | 192 | // valid Stick-Settings? |
|
- | 193 | 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) |
|
- | 194 | { |
|
- | 195 | EE_Parameter.Kanalbelegung[0] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+0]); |
|
- | 196 | EE_Parameter.Kanalbelegung[1] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]); |
|
- | 197 | EE_Parameter.Kanalbelegung[2] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]); |
|
- | 198 | EE_Parameter.Kanalbelegung[3] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]); |
|
- | 199 | EE_Parameter.Kanalbelegung[4] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+4]); |
|
- | 200 | EE_Parameter.Kanalbelegung[5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+5]); |
|
- | 201 | EE_Parameter.Kanalbelegung[6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+6]); |
|
- | 202 | EE_Parameter.Kanalbelegung[7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+7]); |
|
- | 203 | if(i==1) printf(": Generating Default-Parameter using old Stick Settings"); |
|
- | 204 | } else DefaultStickMapping(); |
|
198 | WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
205 | WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
199 | } |
206 | } |
200 | SetActiveParamSetNumber(3); // default-Setting |
207 | SetActiveParamSetNumber(3); // default-Setting |
201 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); |
208 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); |
202 | } |
209 | } |
Line 238... | Line 245... | ||
238 | WinkelOut.Orientation = 1; |
245 | WinkelOut.Orientation = 1; |
239 | while (1) |
246 | while (1) |
240 | { |
247 | { |
241 | if(UpdateMotor && AdReady) // ReglerIntervall |
248 | if(UpdateMotor && AdReady) // ReglerIntervall |
242 | { |
249 | { |
243 | J3High; |
- | |
244 | UpdateMotor=0; |
250 | UpdateMotor=0; |
- | 251 | J3High; |
|
245 | if(WinkelOut.CalcState) CalMk3Mag(); |
252 | if(WinkelOut.CalcState) CalMk3Mag(); |
246 | else MotorRegler(); |
253 | else MotorRegler(); |
- | 254 | J3Low; |
|
247 | SendMotorData(); |
255 | SendMotorData(); |
248 | ROT_OFF; |
256 | ROT_OFF; |
249 | J3Low; |
- | |
250 | if(PcZugriff) PcZugriff--; |
257 | if(PcZugriff) PcZugriff--; |
251 | else |
258 | else |
252 | { |
259 | { |
253 | ExternControl.Config = 0; |
260 | ExternControl.Config = 0; |
254 | ExternStickNick = 0; |
261 | ExternStickNick = 0; |