Subversion Repositories Projects

Rev

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)