Subversion Repositories Projects

Rev

Rev 310 | Rev 312 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 310 Rev 311
1
/*
1
/*
2
 * Blitzdings main.c
2
 * Blitzdings main.c
3
 * (c) pangu
3
 * (c) pangu
4
 */
4
 */
5
 
5
 
-
 
6
/******************************************************************/
-
 
7
/* WICHTIG: Fusebits in Ponyprog für 8MHz setzen:
-
 
8
 
-
 
9
                Häkchen in Ponyprog:
-
 
10
                CKSEL3 gesetzt
-
 
11
                CKSEL2 nicht gesetzt
-
 
12
                CKSEL1 gesetzt
-
 
13
                CKSEL0 gesetzt
-
 
14
 
-
 
15
 */
-
 
16
/******************************************************************/
6
 
17
 
7
#include "main.h"
18
#include "main.h"
8
#include "timer.h"
19
#include "timer.h"
9
#include "lprg.h"
20
#include "lprg.h"
10
 
21
 
11
/* Strings zum definieren von Dauer-Ein Dauer-Aus */
22
/* Strings zum definieren von Dauer-Ein Dauer-Aus */
12
const char l_on[]="A";
23
const char l_on[]="A";
13
const char l_off[]="a";
24
const char l_off[]="a";
14
 
25
 
15
// Wait flags:
26
// Wait flags:
16
// .  10 ms
27
// .  10 ms
17
// :  20 ms
28
// :  20 ms
18
// ;  50 ms
29
// ;  50 ms
19
// I 100 ms
30
// I 100 ms
20
// N 200 ms
31
// N 200 ms
21
// M 300 ms
32
// M 300 ms
22
// V 500 ms
33
// V 500 ms
23
// S 1s
34
// S 1s
24
// LED:
35
// LED:
25
// A-an a-aus
36
// A-an a-aus
26
 
37
 
27
// Rot+Grün blitzen dreimal kurz, zeitlich leicht versetzt, alle 1,5s
38
// Rot+Grün blitzen dreimal kurz, zeitlich leicht versetzt, alle 1,5s
28
// 2 weisse und 2 blaue LEDs sind an und gehen alle 3s reihum kurz aus
39
// 2 weisse und 2 blaue LEDs sind an und gehen alle 3s reihum kurz aus
29
char *led_posflash[] = {    
40
char *led_posflash[] = {    
30
"A:aIA:aIA:aSV",                // LED #1    rot
41
"A:aIA:aIA:aSV",                // LED #1    rot
31
".",                                    // LED #2    
42
".",                                    // LED #2    
32
"NNaIASSNNN",                   // LED #3    blau
43
"NNaIASSNNN",                   // LED #3    blau
33
".",                                    // LED #4
44
".",                                    // LED #4
34
"NaIASSNNNN",                   // LED #5    weiss
45
"NaIASSNNNN",                   // LED #5    weiss
35
"NA:aIA:aIA:aMS",               // LED #6    grün
46
"NA:aIA:aIA:aMS",               // LED #6    grün
36
".",                                    // LED #7
47
".",                                    // LED #7
37
"aIASSNNNNN",                   // LED #8    weiss
48
"aIASSNNNNN",                   // LED #8    weiss
38
".",                                    // LED #9 
49
".",                                    // LED #9 
39
"NNNaIASSNN"                    // LED #10   blau
50
"NNNaIASSNN"                    // LED #10   blau
40
};
51
};
41
 
52
 
42
 
53
 
43
char *led_aus[] = {
54
char *led_aus[] = {
44
l_off,          // LED #1    rot
55
l_off,          // LED #1    rot
45
l_off,          // LED #2    blau
56
l_off,          // LED #2    blau
46
l_off,          // LED #3    blau
57
l_off,          // LED #3    blau
47
l_off,          // LED #4
58
l_off,          // LED #4
48
l_off,          // LED #5    weiss
59
l_off,          // LED #5    weiss
49
l_off,          // LED #6    grün
60
l_off,          // LED #6    grün
50
l_off,          // LED #7
61
l_off,          // LED #7
51
l_off,          // LED #8    weiss
62
l_off,          // LED #8    weiss
52
l_off,          // LED #9 
63
l_off,          // LED #9 
53
l_off           // LED #10
64
l_off           // LED #10
54
};
65
};
55
 
66
 
56
char *led_an[] = {
67
char *led_an[] = {
57
l_on,           // LED #1    rot
68
l_on,           // LED #1    rot
58
l_on,           // LED #2    blau
69
l_on,           // LED #2    blau
59
l_on,           // LED #3    blau
70
l_on,           // LED #3    blau
60
l_on,           // LED #4
71
l_on,           // LED #4
61
l_on,           // LED #5    weiss
72
l_on,           // LED #5    weiss
62
l_on,           // LED #6    grün
73
l_on,           // LED #6    grün
63
l_on,           // LED #7
74
l_on,           // LED #7
64
l_on,           // LED #8    weiss
75
l_on,           // LED #8    weiss
65
l_on,           // LED #9 
76
l_on,           // LED #9 
66
l_on            // LED #10
77
l_on            // LED #10
67
};
78
};
68
 
79
 
69
// alle LEDs toggeln synchron, 300ms Leucht/Aus-Dauer
80
// alle LEDs toggeln synchron, 300ms Leucht/Aus-Dauer
70
char *led_flash1[] = {
81
char *led_flash1[] = {
71
"aMAM",         // LED #1    rot
82
"aMAM",         // LED #1    rot
72
"aMAM",         // LED #2    blau
83
"aMAM",         // LED #2    blau
73
"aMAM",         // LED #3    blau
84
"aMAM",         // LED #3    blau
74
"aMAM",         // LED #4
85
"aMAM",         // LED #4
75
"aMAM",         // LED #5    weiss
86
"aMAM",         // LED #5    weiss
76
"aMAM",         // LED #6    grün
87
"aMAM",         // LED #6    grün
77
"aMAM",         // LED #7
88
"aMAM",         // LED #7
78
"aMAM",         // LED #8    weiss
89
"aMAM",         // LED #8    weiss
79
"aMAM",         // LED #9 
90
"aMAM",         // LED #9 
80
"aMAM"          // LED #10
91
"aMAM"          // LED #10
81
};
92
};
82
 
93
 
83
// alle LEDs toggeln mit verschiednen Zykluszeiten
94
// alle LEDs toggeln mit verschiednen Zykluszeiten
84
char *led_flash2[] = {
95
char *led_flash2[] = {
85
"a.A.",         // LED #1    rot
96
"a.A.",         // LED #1    rot
86
"a:A:",         // LED #2    blau
97
"a:A:",         // LED #2    blau
87
"a;A;",         // LED #3    blau
98
"a;A;",         // LED #3    blau
88
"aIAI",         // LED #4
99
"aIAI",         // LED #4
89
"aNAN",         // LED #5    weiss
100
"aNAN",         // LED #5    weiss
90
"aMAM",         // LED #6    grün
101
"aMAM",         // LED #6    grün
91
"aMIAMI",               // LED #7
102
"aMIAMI",               // LED #7
92
"aVAV",         // LED #8    weiss
103
"aVAV",         // LED #8    weiss
93
"aVIAVI",               // LED #9 
104
"aVIAVI",               // LED #9 
94
"aSAS"          // LED #10
105
"aSAS"          // LED #10
95
};
106
};
96
 
107
 
97
 
108
 
98
// Hier die zu verwendenden LichtProgramme einfach eintragen.
109
// Hier die zu verwendenden LichtProgramme einfach eintragen.
99
void *modes[]= { led_an, led_posflash, led_aus, led_flash1, led_flash2 };
110
void *modes[]= { led_an, led_posflash, led_aus, led_flash1, led_flash2 };
100
 
111
 
101
void nextMode() {
112
void nextMode() {
102
 
113
 
103
static int current = 0;
114
static int current = 0;
104
   
115
   
105
        lprg_init(modes[current]);     
116
        lprg_init(modes[current]);     
106
        current = ++current % (sizeof(modes)/sizeof(void *));
117
        current = ++current % (sizeof(modes)/sizeof(void *));
107
 
118
 
108
}
119
}
109
 
120
 
110
ISR(INT1_vect)      
121
ISR(INT1_vect)      
111
{
122
{
112
 
123
 
113
  nextMode();
124
  nextMode();
114
 
125
 
115
}
126
}
116
 
127
 
117
 
128
 
118
 
129
 
119
int main() {
130
int main() {
120
 
131
 
121
        int tim10s, tim1s;
132
        int tim10s, tim1s;
122
       
133
       
123
        // Ports einstellen
134
        // Ports einstellen
124
        // Pin B |7|6|5|4|3|2|1|0
135
        // Pin B |7|6|5|4|3|2|1|0
125
    // Binär:|0|0|0|0|0|1|0|1 (b) => #05 (h)
136
    // Binär:|0|0|0|0|0|1|0|1 (b) => #05 (h)
126
        // Pin B0 und B2 als Ausgänge festlegen   
137
        // Pin B0 und B2 als Ausgänge festlegen   
127
    DDRB = 0x05;
138
    DDRB = 0x05;
128
 
139
 
129
        // Pin C |7|6|5|4|3|2|1|0
140
        // Pin C |7|6|5|4|3|2|1|0
130
    // Binär:|0|0|1|1|1|1|1|0 (b) => #3E (h)
141
    // Binär:|0|0|1|1|1|1|1|0 (b) => #3E (h)
131
        // Pin C1 bis C5 als Ausgänge festlegen   
142
        // Pin C1 bis C5 als Ausgänge festlegen   
132
    DDRC = 0x3E;
143
    DDRC = 0x3E;
133
       
144
       
134
        // Pin D |7|6|5|4|3|2|1|0
145
        // Pin D |7|6|5|4|3|2|1|0
135
    // Binär:|1|1|1|1|0|0|0|0 (b) => #F0 (h)
146
    // Binär:|1|1|1|1|0|0|0|0 (b) => #F0 (h)
136
        DDRD = 0xF0;
147
        DDRD = 0xF0;
137
        //Pullup für PD3 aktivieren
148
        //Pullup für PD3 aktivieren
138
        PORTD |= (1 << PD3);
149
        PORTD |= (1 << PD3);
139
       
150
       
140
       
151
       
141
        //interrupt konfigurueren
152
        //interrupt konfigurueren
142
        GIMSK = 1<<INT1;
153
        GIMSK = 1<<INT1;
143
        MCUCR = 1<<ISC10;
154
        MCUCR = 1<<ISC10;
144
 
155
 
145
        ALLES_OFF;
156
        ALLES_OFF;
146
       
157
       
147
        STATUS_ON;
158
        STATUS_ON;
148
 
159
 
149
        Timer_Init();
160
        Timer_Init();
150
        nextMode();
161
        nextMode();
151
        tim10s = SetDelay(10000);
162
        tim10s = SetDelay(10000);
152
        tim1s  = SetDelay(1000);
163
        tim1s  = SetDelay(1000);
153
       
164
       
154
        sei();  //interrupts einschalten
165
        sei();  //interrupts einschalten
155
 
166
 
156
        while (1) {
167
        while (1) {
157
 
168
 
158
                if(flag10ms) {    // every 10ms
169
                if(flag10ms) {    // every 10ms
159
                   flag10ms = 0;
170
                   flag10ms = 0;
160
                   lprg_step();   // next step in light prog
171
                   lprg_step();   // next step in light prog
161
                }
172
                }
162
 
173
 
163
        if(CheckDelay(tim10s)) {   // alle 10 sec programm wechseln
174
        if(CheckDelay(tim10s)) {   // alle 10 sec programm wechseln
164
                        nextMode();
175
                        nextMode();
165
                        tim10s = SetDelay(10000);  
176
                        tim10s = SetDelay(10000);  
166
                }
177
                }
167
        if(CheckDelay(tim1s)) {   // alle 1 sec STatus-LED toggeln
178
        if(CheckDelay(tim1s)) {   // alle 1 sec STatus-LED toggeln
168
                        STATUS_TOGGLE;
179
                        STATUS_TOGGLE;
169
                        tim1s = SetDelay(1000);  
180
                        tim1s = SetDelay(1000);  
170
                }
181
                }
171
        }
182
        }
172
 
183
 
173
}
184
}
174
 
185
 
175
 
186
 
176
 
187
 
177
 
188
 
178
 
189
 
179
 
190