Rev 1 | Rev 188 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1 | Rev 173 | ||
---|---|---|---|
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... | ||
53 | 53 | ||
- | 54 | unsigned char EEPromArray[E2END+1] EEMEM; |
|
Line 54... | Line 55... | ||
54 | unsigned char EEPromArray[E2END+1] EEMEM; |
55 | unsigned char PlatinenVersion = 10; |
55 | 56 | ||
56 | // -- Parametersatz aus EEPROM lesen --- |
57 | // -- Parametersatz aus EEPROM lesen --- |
57 | // number [0..5] |
58 | // number [0..5] |
Line 73... | Line 74... | ||
73 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
74 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
74 | } |
75 | } |
Line 75... | Line 76... | ||
75 | 76 | ||
76 | unsigned char GetActiveParamSetNumber(void) |
77 | unsigned char GetActiveParamSetNumber(void) |
- | 78 | { |
|
77 | { |
79 | unsigned char set; |
- | 80 | set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
|
- | 81 | if(set > 5) |
|
- | 82 | { |
|
- | 83 | set = 2; |
|
- | 84 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], set); // diesen Parametersatz als aktuell merken |
|
- | 85 | } |
|
78 | return(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET])); |
86 | return(set); |
Line 79... | Line 87... | ||
79 | } |
87 | } |
80 | 88 | ||
81 | //############################################################################ |
89 | //############################################################################ |
82 | //Hauptprogramm |
90 | //Hauptprogramm |
83 | int main (void) |
91 | int main (void) |
84 | //############################################################################ |
92 | //############################################################################ |
85 | { |
93 | { |
86 | unsigned int timer; |
- | |
- | 94 | unsigned int timer; |
|
87 | unsigned int timer2 = 0; |
95 | unsigned int timer2 = 0; |
88 | 96 | if(PINB & 0x01) PlatinenVersion = 11; else PlatinenVersion = 10; |
|
89 | DDRC = 0x01; // SCL |
97 | DDRC = 0x81; // SCL |
90 | PORTC = 0xff; // Pullup SDA |
98 | PORTC = 0xff; // Pullup SDA |
91 | DDRB = 0x1B; // LEDs und Druckoffset |
99 | DDRB = 0x1B; // LEDs und Druckoffset |
92 | PORTB = 0x01; // LED_Rot |
100 | PORTB = 0x01; // LED_Rot |
Line 116... | Line 124... | ||
116 | 124 | ||
117 | VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
125 | VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
118 | VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
126 | VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
Line 119... | Line 127... | ||
119 | VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
127 | VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
120 | 128 | ||
121 | printf("\n\rFlightControl V%d.%d ", VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
129 | printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d ",PlatinenVersion/10,PlatinenVersion%10, VERSION_HAUPTVERSION, VERSION_NEBENVERSION); |
Line -... | Line 130... | ||
- | 130 | printf("\n\r=============================="); |
|
122 | printf("\n\r=============================="); |
131 | GRN_ON; |
123 | GRN_ON; |
132 | |
124 | 133 | #define EE_DATENREVISION 62 // wird angepasst, wenn sich die EEPROM-Daten geƤndert haben |
|
125 | if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != 59) // seit V 0.60 |
134 | if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) |
126 | { |
135 | { |
127 | printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
136 | printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
128 | DefaultKonstanten1(); |
137 | DefaultKonstanten1(); |
129 | for (unsigned char i=0;i<6;i++) |
138 | for (unsigned char i=0;i<6;i++) |
130 | { |
139 | { |
131 | if(i==2) DefaultKonstanten2(); |
140 | if(i==2) DefaultKonstanten2(); |
132 | WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
141 | WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
133 | } |
142 | } |
Line 134... | Line 143... | ||
134 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 1); |
143 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 2); |
135 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], 59); |
144 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); |
Line 136... | Line 145... | ||
136 | } |
145 | } |
137 | 146 | ||
138 | ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
147 | ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
139 | printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber()); |
148 | printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber()); |
140 | 149 | ||
141 | 150 | ||
142 | if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
151 | if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG) |
143 | { |
152 | { |
Line 162... | Line 171... | ||
162 | else printf("Neutral"); |
171 | else printf("Neutral"); |
Line 163... | Line 172... | ||
163 | 172 | ||
Line 164... | Line 173... | ||
164 | printf("\n\n\r"); |
173 | printf("\n\n\r"); |
- | 174 | ||
165 | 175 | LcdClear(); |
|
166 | LcdClear(); |
176 | I2CTimeout = 5000; |
167 | while (1) |
- | |
168 | { |
177 | while (1) |
169 | 178 | { |
|
170 | if (UpdateMotor) // ReglerIntervall |
179 | if (UpdateMotor) // ReglerIntervall |
171 | { |
180 | { |
172 | UpdateMotor=0; |
181 | UpdateMotor=0; |
173 | MotorRegler(); |
182 | MotorRegler(); |
174 | SendMotorData(); |
183 | SendMotorData(); |
175 | ROT_OFF; |
- | |
176 | if(PcZugriff) PcZugriff--; |
184 | ROT_OFF; |
177 | - | ||
178 | if(SenderOkay) SenderOkay--; |
185 | if(PcZugriff) PcZugriff--; |
179 | 186 | if(SenderOkay) SenderOkay--; |
|
180 | if (UBat < EE_Parameter.UnterspannungsWarnung) |
187 | if(!I2CTimeout) |
181 | { |
188 | { |
182 | beeptime = 2000; |
- | |
183 | } |
189 | I2CTimeout = 5; |
184 | 190 | i2c_reset(); |
|
- | 191 | if((BeepMuster == 0xffff) && MotorenEin) |
|
- | 192 | { |
|
185 | if(!Timeout) |
193 | beeptime = 10000; |
186 | { |
194 | BeepMuster = 0x0080; |
187 | i2c_init(); |
195 | } |
188 | } |
196 | } |
- | 197 | else |
|
189 | else |
198 | { |
190 | { |
199 | I2CTimeout--; |
191 | ROT_OFF; |
200 | ROT_OFF; |
192 | } |
- | |
193 | } |
- | |
194 | 201 | } |
|
195 | 202 | } |
|
196 | if(SIO_DEBUG) |
203 | if(SIO_DEBUG) |
197 | { |
204 | { |
198 | DatenUebertragung(); |
205 | DatenUebertragung(); |
199 | BearbeiteRxDaten(); |
206 | BearbeiteRxDaten(); |
200 | } |
207 | } |
201 | else BearbeiteRxDaten(); |
208 | else BearbeiteRxDaten(); |
202 | if(CheckDelay(timer2)) |
209 | if(CheckDelay(timer)) |
- | 210 | { |
|
- | 211 | if(UBat < EE_Parameter.UnterspannungsWarnung) |
|
- | 212 | { |
|
- | 213 | if(BeepMuster == 0xffff) |
|
- | 214 | { |
|
- | 215 | beeptime = 6000; |
|
- | 216 | BeepMuster = 0x0300; |
|
203 | { |
217 | } |
204 | if(MotorenEin) PORTC ^= 0x10; else PORTC &= ~0x10; |
218 | } |
205 | timer = SetDelay(500); |
219 | timer = SetDelay(100); |
206 | } |
220 | } |
207 | } |
221 | } |