Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 341 → Rev 340

/MikroBlink/Blitzdings/main.c
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);
}