Hallo,
die Funktion hat nichts mit Flankenerkennung zu tun, weil man eher sagen kann das ein "Pegel" (low oder high) an die Funktion übergeben wird. Ich habe die Funktion einmal zusammen gekürzt, damit du selbst siehst was die eigentlich macht und damit eigentlich überflüssig ist. Schritt für Schritt wie in der Schule.
Flankenerkennung in dem Sinne funktioniert so, dass man den alten Zustand mit dem neuen vergleicht und den neuen dann wiederum als alten speichert für den nächsten Vergleich. Rising wäre vorher irgendein Signal hat Low, dann Wechsel auf High Pegel. Falling umgekehrt. Auf den gewünschten Richtungswechsel reagiert man dann.
im Syntax korrigiert mit lokaler Variablen Initialisierung
void rEdge(bool input, bool output)
{
bool rEdgeFlag = 0;
if(input == 1 && rEdgeFlag == 0){
output = 1;
}
if(input != rEdgeFlag) {
rEdgeFlag = output;
}
}
Vergleiche gekürzt
void rEdge(bool input, bool output)
{
bool rEdgeFlag = 0;
if(input == 1){
output = 1;
}
if(input == 1) {
rEdgeFlag = output;
}
}
letzten Vergleich weggekürzt
void rEdge(bool input)
{
bool rEdgeFlag = 0;
if(input == 1){
rEdgeFlag = 1;
}
}
return eingefügt
bool rEdge(bool input)
{
bool rEdgeFlag = 0;
if(input == 1) {
rEdgeFlag = 1;
}
return rEdgeFlag;
}
am Ende bleibt ohne Funktionsrumpf übrig
if(input) {
rEdgeFlag = 1;
}
else {
rEdgeFlag = 0;
}
und das nochmal gekürzt wäre am Ende
rEdgeFlag = input;
lustiges Ergebnis, oder? ![]()