Achso, es handelt sich um gar kein wirkliches Problem, sondern nur
irgendeine Klausuraufgabe. Ohne die Anforderungen zu kennen (und dafür
müssen meine Fragen beantwortet werden!), kann man da aber nicht
sinnvoll helfen.
Dein Ansatz ist also nicht besonders durchdacht, weil er sofort
problematisch wird, wenn das Signal nicht wirklich exakt so kommt, aber
im Sinne der Klausuraufgabe sicher nicht "falsch."
Einige Anmerkungen habe ich noch:
1) Deine Variablenbenennung sollte überdacht werden. Variablen werden
heutzutage ausschließlich englisch benannt. Ja, auch von
deutschsprachigen Programmierern in deutschen Programmen.
2) Vielleicht kann es sich lohnen, die Variablen mit einem
Kleinbuchstaben anzufangen. Großbuchstaben sind eher für andere Zwecke
gebräuchlich. Das ändert am Programm nichts, macht es jedoch für geübte
Programmierer leichter verständlich.
3) Dein Flankenzustand wird in einer interrupt-routine verwendet, sollte
also volatile sein.
4) Vorsicht, schlimmer Vorschlag: Den Zeitmerker brauchst du nicht, wenn
davon auszugehen ist, dass sich der Zustand des Timers zwischen den
Fallunterscheidungen nicht ändert. Mit einem langsameren Timer und
angepassten Werten kannst du dann direkt TAR abfragen. Wichtig: DAS
MACHT MAN NICHT! Es führt allerdings zweifelsohne zu kürzerem, kleinerem
Code, der schneller ausgeführt werden kann.
5) Vorsicht, weiterer Vorschlag: Weil deine Eingangssignale unfehlbar
sind, kannst du auch den Timer wegschmeißen und lediglich Flanken
zählen. Dafür musst du nur einmal auf einen Übergang synchronisieren und
kannst dann einfach im Flanken-Interrupt deine Ports setzen. Macht man
auch nicht, da fehleranfällig (Glitches etc.), ist aber extrem schnell,
weil das Programm, wenn es einmal läuft, einfach Daten raushaut.