Hallo,
ich habe eine Frage zu meinem Programmabschnitt, welcher folgendermaßen
aussieht:
1 | if (adc_MITTEL(0 , 255) > 1020) //Druck bei 255 Samples über 1020
|
2 | {
|
3 |
|
4 | while(b <= 200) //Warteschleife
|
5 | {
|
6 | while(adc_MITTEL(0 , 100) > 1020) //Abfrage ob immer noch Druck
|
7 | {
|
8 | PORTC = pumpe;
|
9 | b = 0;
|
10 | }
|
11 | PORTC = 0x00;
|
12 | b++;
|
13 | }
|
14 |
|
15 |
|
16 | uart_WRITEC("Spuelen\n\r");
|
17 | PORTC |= (1 << DDC4); //Spülvorgang
|
18 | _delay_ms(100); // Einstellen der Spüldauer
|
19 | PORTC &= ~(1 << PC4);
|
20 |
|
21 | }
|
22 | }
|
Es ist quasi so, dass durch den Druck am ADC erst eine Pumpe1 ausgelöst
wird und nach einer gewissen Zeit, fett wenn der Benutzer nicht
nochmal den Sensor aktiviert fett, soll eine Pumpe zum Spülen
ausgelöst werden. Ich habe das ganze jetzt mit einer Zählvariable
gelöst, da mir kein anderer Weg eingefallen ist um diesen
"reentry"-Mechanismus zu realisiern.
Frage 1: Gibt es dafür bessere Lösungen?
-Ich habe auch schon an ISR gedacht, aber ich glaube die wäre zu lange,
da man ISRs ja so kurz wie möglich halten soll
Frage 2: Wie kann ich die Zeit berechnen, welche der µC zum hochzählen
der Laufvariable braucht? (Ich steh bei der Frage echt neben mir
irgendwie...)