Hallo zusammen

In Sachen AVR und Bascom bin ich noch ein ziemlicher Anfänger. Trotzdem wollte ich einen Frequenzzähler bauen und habe folgende Lösung gefunden:

Timer/Counter0 funktioniert als Zähler, er zählt also die externen Impulse. Bei jedem Überlauf wird in einem Interrupthandler ein Byte (oder evtl. ein Word) um eins hochgezählt.

Timer/Counter1 stellt die Torzeit (z. B. eine Sekunde) zur Verfügung. Dazu wird die Taktfrequenz (4 MHz) mit dem Prescaler durch 64 geteilt und der Compare-Wert auf 65200 gesetzt. Zwischen je zwei Compare-Ereignissen vergeht so genau eine Sekunde.

In einer weiteren Interrupt-Routine wird nun bei jedem solchen Compare-Ereignis Timer0 ausgelesen. Die Frequenz ergibt sich dann aus der Anzahl Überläufe von Timer0 mal 256 plus dem Schlussstand von Timer0. Dann wird Timer0 zurückgesetzt und alles beginnt von neuem.

Diese Lösung funktioniert, soweit ich das bis jetzt getestet habe, gut. Zugegebenermassen werden bei hohen Frequenzen die Interrupts etwas häufig aufgerufen.
Falls irgendein "alter Hase" mir verborgene Schwächen dieser Methode aufzeigen könnte, würde mich das sehr interressieren