-
Notifications
You must be signed in to change notification settings - Fork 1
/
Pulsauswertung.ino
36 lines (31 loc) · 1.03 KB
/
Pulsauswertung.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void receiveInterrupt() {
static unsigned long Time;
static unsigned long lastTime = micros();
static long duration;
static int sDuration;
Time = micros();
bool state = digitalRead(PIN_RECEIVE);
duration = Time - lastTime;
lastTime = Time;
if (duration >= pulseMin) {//kleinste zulässige Pulslänge
if (duration <= (32000)) {//größte zulässige Pulslänge, max = 32000
sDuration = int(duration/(float)scale); //das wirft bereits hier unnütige Nullen raus und vergrößert den Wertebereich
}else {
sDuration = 32001; // Maximalwert
}
if (state) { // Wenn jetzt high ist, dann muss vorher low gewesen sein, und dafür gilt die gemessene Dauer.
sDuration=sDuration*-1; //sDuration |= (1 << 15);
}
FiFo.addValue(&sDuration);
} // else => trash
}
void enableReceive() {
if (!enSender) {
attachInterrupt(0,receiveInterrupt,CHANGE);
enReceiver = true; // just for state info
}
}
void disableReceive() {
detachInterrupt(0);
enReceiver = false; // just for state info
}