53,15 → 53,15 |
|
// dasselbe, nur sind w/b dauer-an |
char *led_posflash[] = { |
"A", // LED #1 rot |
"A", // LED #2 |
"A:aIA:aIA:aSV", // LED #1 rot |
".", // LED #2 |
"A", // LED #3 blau |
"A", // LED #4 |
"A:aIA:aIA:aSV", // LED #5 weiss |
".", // LED #4 |
"A", // LED #5 weiss |
"NA:aIA:aIA:aMS", // LED #6 grün |
"A", // LED #7 |
".", // LED #7 |
"A", // LED #8 weiss |
"A", // LED #9 |
".", // LED #9 |
"A" // LED #10 blau |
}; |
|
138,10 → 138,9 |
// Hier die zu verwendenden LichtProgramme einfach eintragen. |
|
int current = 0; |
|
void *modes[]= { led_posflash, led_an, led_aus }; |
|
void nextMode(void) { |
void nextMode() { |
|
current = ++current % (sizeof(modes)/sizeof(void *)); |
lprg_init(modes[current]); |
156,14 → 155,12 |
} |
|
|
int main(void) { |
|
int tim1s, tim3s, tim10s, analog_state=0; |
int main() { |
|
int tim1s, tim3s, tim10s; |
int Vcurr; |
|
SFIOR = 0x00; // Analog Comperator aus |
ADCSRA = 0xD3; // Converter ein, single |
|
// Ports einstellen |
// Pin B |7|6|5|4|3|2|1|0 |
// Binär:|0|0|0|0|0|1|0|1 (b) => #05 (h) |
203,31 → 200,16 |
while (1) { |
|
if(flag10ms) { // every 10ms |
flag10ms = 0; |
lprg_step(); // next step in light prog |
|
if(!analog_state) { // Sampling der SPannung starten |
ADMUX = 0 | 0xC0; // Kanal 0, interne Referenz |
ADCSRA |= 0x10; // Ready löschen |
ADCSRA |= 0x40; // Start |
analog_state++; // erst wieder sampeln, wenn der Wert ausgelesen wurde |
} |
|
flag10ms = 0; |
lprg_step(); // next step in light prog |
} |
|
// 1s-Task: Status-LED toggeln, Spannung checken |
if(CheckDelay(tim1s)) { |
if (ADCSRA & 0x10) { // Spannungs-Messung beendet? |
ADCSRA = 0xD3; |
Vcurr = ADCW; // Wert merken |
analog_state = 0; |
} |
Vcurr = getVcurr(); |
if(Vcurr < 180) { |
lprg_init(led_lowVolt); |
lprg_init(led_lowVolt); |
} |
if(Vcurr>=180) { |
lprg_init(modes[current]); |
} |
STATUS_TOGGLE; |
tim1s = SetDelay(1000); |
} |
234,7 → 216,9 |
|
// 3s-Task: Unterspannungswarnung ggf. zurücknehmen |
if(CheckDelay(tim3s)) { |
|
if(Vcurr>=180) { |
lprg_init(modes[current]); |
} |
tim3s = SetDelay(3000); |
} |
|