Rev 56 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 56 | Rev 57 | ||
---|---|---|---|
Line 12... | Line 12... | ||
12 | 12 | ||
13 | #include "main.h" |
13 | #include "main.h" |
14 | #include "uart.h" |
14 | #include "uart.h" |
15 | #include "twislave.h" |
15 | #include "twislave.h" |
16 | 16 | ||
17 | volatile unsigned int PPM_SIGNAL = 1500; |
17 | volatile unsigned int PPM_SIGNAL = 1520; |
18 | volatile unsigned char PPM_NEW = 0; |
18 | volatile unsigned char PPM_NEW = 0; |
19 | volatile unsigned char TMR1OvF = 0; |
19 | volatile unsigned char TMR1OvF = 0; |
20 | volatile unsigned int TMR1MS; |
20 | volatile unsigned int TMR1MS; |
21 | volatile unsigned char CH0; |
21 | volatile unsigned char CH0; |
22 | volatile unsigned char CH1; |
22 | volatile unsigned char CH1; |
Line 226... | Line 226... | ||
226 | #define MUL 1 |
226 | #define MUL 1 |
227 | #define REDUCE 2 |
227 | #define REDUCE 2 |
228 | 228 | ||
229 | #define EEPSIGNATURE 0x55aa |
229 | #define EEPSIGNATURE 0x55aa |
230 | 230 | ||
- | 231 | #define inimin 1200 |
|
- | 232 | #define inimax 1800 |
|
- | 233 | ||
231 | unsigned int ppm; |
234 | unsigned int ppm; |
232 | signed int color; |
235 | signed int color; |
233 | unsigned int setupdly; |
236 | unsigned int setupdly; |
234 | unsigned int ppmtodly; |
237 | unsigned int ppmtodly; |
235 | unsigned int flashdly; |
238 | unsigned int flashdly; |
236 | unsigned char setup; |
239 | unsigned char setup; |
237 | unsigned int lmax; |
240 | unsigned int lmax; |
238 | unsigned int lmin; |
241 | unsigned int lmin; |
239 | unsigned int max; |
242 | unsigned int max; |
240 | unsigned int min; |
243 | unsigned int min; |
241 | signed long temp1; |
244 | signed long temp1; |
242 | signed long temp2; |
245 | signed long temp2; |
243 | 246 | ||
244 | DDRB = (CH0_B|CH1_B|CH2_B); |
247 | DDRB = (CH0_B|CH1_B|CH2_B); |
245 | PORTB = 0x00; |
248 | PORTB = 0x00; |
246 | 249 | ||
247 | DDRC = (ledred); |
250 | DDRC = (ledred); |
Line 258... | Line 261... | ||
258 | CH5 = 0; |
261 | CH5 = 0; |
259 | 262 | ||
260 | lmax = 0x0000; |
263 | lmax = 0x0000; |
261 | lmin = 0xffff; |
264 | lmin = 0xffff; |
262 | 265 | ||
263 | StartUART(); |
266 | // StartUART(); |
264 | StartPPM(); |
267 | StartPPM(); |
265 | //StartI2C(); |
268 | //StartI2C(); |
266 | StartPWM(); |
269 | StartPWM(); |
267 | sei(); |
270 | sei(); |
268 | 271 | ||
- | 272 | min = inimin; //default min |
|
- | 273 | max = inimax; //default max |
|
- | 274 | ||
269 | if (eeprom_read_word(&EEPSIG) != EEPSIGNATURE) //check eep if signature is there |
275 | if (eeprom_read_word(&EEPSIG) != EEPSIGNATURE) //check eep if signature is there |
270 | { |
276 | { |
271 | min = 1100; //default min |
- | |
272 | max = 1900; //default max |
- | |
273 | eeprom_write_word(&EEPMIN, min); //no, write initial min |
277 | eeprom_write_word(&EEPMIN, min); //no, write initial min |
274 | eeprom_write_word(&EEPMAX, max); //and max values |
278 | eeprom_write_word(&EEPMAX, max); //and max values |
275 | eeprom_write_word(&EEPSIG, EEPSIGNATURE); //along with eep signature |
279 | eeprom_write_word(&EEPSIG, EEPSIGNATURE); //along with eep signature |
276 | } |
280 | } |
277 | else |
281 | else |
278 | { |
282 | { |
- | 283 | ||
279 | min = eeprom_read_word(&EEPMIN); //signature ok |
284 | min = eeprom_read_word(&EEPMIN); //signature ok |
280 | max = eeprom_read_word(&EEPMAX); //read min and max |
285 | max = eeprom_read_word(&EEPMAX); //read min and max |
281 | } |
286 | } |
282 | 287 | ||
- | 288 | ||
283 | setup = 0; //reset setup toggle counter |
289 | setup = 0; //reset setup toggle counter |
284 | setupdly = SetDelay(5000); |
290 | setupdly = SetDelay(5000); |
285 | ppmtodly = SetDelay(5000); |
291 | ppmtodly = SetDelay(5000); |
286 | flashdly = SetDelay(1000); |
292 | flashdly = SetDelay(1000); |
287 | 293 | ||
Line 353... | Line 359... | ||
353 | { |
359 | { |
354 | setup = 8; //lockdown setup |
360 | setup = 8; //lockdown setup |
355 | PORTD clrbit ledgreen; |
361 | PORTD clrbit ledgreen; |
356 | } |
362 | } |
357 | 363 | ||
358 | printf("ppm: %d / min: %d / max: %d\n",ppm,min,max); |
- | |
359 | - | ||
360 | - | ||
361 | 364 | ||
362 | if (setup == 8) |
365 | if (setup == 8) |
363 | { |
366 | { |
364 | 367 | ||
- | 368 | ||
- | 369 | ||
365 | temp1 = (STEP * (signed long)30000 * (signed long)6) / ((max-REDUCE) - (min+REDUCE)); |
370 | temp1 = ((long)STEP * 6 * 20000) / ((max-REDUCE) - (min+REDUCE)); |
366 | temp2 = ((ppm - (min+REDUCE)) * temp1); |
371 | temp2 = (((int)ppm - ((int)min+REDUCE)) * temp1); |
367 | color = temp2 / 30000; |
372 | color = temp2 / 20000; |
368 | 373 | ||
369 | if (color < 0) color = 0; |
374 | if (color < 0) color = 0; |
370 | if (color > (STEP * 6)) color = (STEP * 6); |
375 | if (color > ((STEP*6)+1)) color = ((STEP*6)+1); |
- | 376 | ||
- | 377 | ||
- | 378 | //printf("p %u ",ppm); |
|
- | 379 | //printf("pm %u ",(min+REDUCE)); |
|
- | 380 | //printf("t1 %li ",temp1); |
|
- | 381 | //printf("t2 %li ",temp2); |
|
- | 382 | //printf("c %i\n ",color); |
|
371 | 383 | ||
372 | printf("color: %d\n",color); |
- | |
373 | 384 | ||
374 | // Farbablauf: rot > Violett > blau > tuerkis > gruen > gelb > |
385 | // Farbablauf: rot > Violett > blau > tuerkis > gruen > gelb > |
375 | if ((color >= (STEP * 0)) && (color < (STEP * 1))) |
386 | if ((color >= (STEP * 0)) && (color < (STEP * 1))) |
376 | { |
387 | { |
377 | CH0 = MUL * ((color - (STEP * 0))); //fade in red > red (red only) |
388 | CH0 = MUL * ((color - (STEP * 0))); //fade in red > red (red only) |