Gast
#1589969
Hallo, ich messe im Moment mit ICP eine Frequenz ein. Nun möchte ich, dass bei der letzen Flanke (Endwert der Messung) einen Port Zustand wechseln. Der Port soll nach der halben Periodendauer (halbe Frequenz) wieder in seinen Ursprungszustand zurückgesetzt werden. Also den Port toggeln eine halbe Frequenz lang. Das erste toggeln kann ich direkt nach der letzten Flanke machen, das ist kein Problem. Aber das Rückversetzen (zurück toggeln). Soweit noch nichts dramatisch. Ich verwende für die Frequenz aufgrund der Auflösung einen 16-bit Timer. Da ich einen Attiny24 verwende, bleibt mir noch noch ein 8-bit Timer. Ich habe gedacht, das einfachste wäre, wenn ich den aus der Frequenz vorliegendenen Timerwert (Differenz Start-Ende) nehme, halbiere und in CTC einstelle. Nur kann ich das ja nicht beim 16-bit Timer machen, weil das mir meine Frequenzmessung durcheinander haut oder? Also bliebe doch nur noch die Möglichkeit, den 16-bit auf 8-bit umzurchenen, nämlich durch 256 zu teilen und den 16-bit Wert Modulo nehmen. Damit hätte ich dann die Anzahl overflows und den Wert (256-Modulo Wert) zum einmaligen Vorladen des 8-bit Timers. Gibt es noch eine bessere Lösung? Oder gar eine Lösung das mit dem 16-bit Timer zu bewerkstelligen? Was mir noch einfällt, den 16-bit Timer in sehr geringen Abständen (halbe max. Frequenz) Überlaufen zu lassen. Die Zeit für den Überlauf kann man ja vorab berechen. Und dann zähle ich im Überlauf eine Variable hoch. Wenn der Wert dann gleich der halben gewünschten Frequenz ist, wird der Port zurückgetoggelt (natürlich unter Berücksichtung des eingesetellen Overflow Zeitwerts). Für weitere Ideen bin ich offen oder Tipps bin ich offen. Es geht hier nicht um Code, sondern lediglich um Ideen und Möglichkeiten :-)