Hi,
hatte mir letztens ein Alles-Mögliche-Messgerät gebaut.
Den Frequenz-Zähler darin habe ich auch mit Spruts ASM-Code
realisiert. ( Ist neben der Freq-Ausgabe auch das einzige
präzise in dem Gerät

)
Da ich das Projekt grösstenteils in C programmiert habe,
habe ich Spruts Code zur Frequenz-Zählung einfach mit
#asm
... assemblercode ...
#endasm
innerhalb einer Funktion eingebaut.
Ein paar Variablen muss man dann wohl anpassen,
aber das ging doch recht einfach.
Zuerst wird mit einer Grobmessung der passende Vorteiler
selektiert und dann für 500ms die Takte gezählt.
Ich denke, man bekommt es mit einer reinen Umsetzung des
ASM-Codes in C fast nicht 100% zeitgenau hin, weil der
CC5X-Compiler nicht exakt die Befehlssequenzen erzeugen
wird. (Die 500ms Wartezeit werden bei Spruts Programm
durch Ausführungszyklen abgezählt, nicht durch Timer)
Generell gilt wohl, dass man bei niedrigen Frequenzen
besser die Zeit auszählt und bei hohen Frequenzen besser
die Takte über einen Zeitraum.
Was hoch und was niedrig ist hängt von der Prozessor-
Geschwindigkeit ab
Auch bei der Takte-Zählung kommt man natürlich nicht
wirklich auf 0 Hz herunter. ( Es sei denn man wartet
unendlich lange

)
Wenn die Torzeit 250ms ist, können Frequenzen unter <=4 Hz schon als 0 angezeigt werden.
Gruss,
Stefan