Hi
Ich habe bei einer recht banalen Aufgabe ein großes Problem. Ich möchte
mit den Zählern eines Cortex (genauer dem LM3S9b92 Eval Kit) die
Frequenz eines rechteckigen Eingangssignals messen. Nehme ich den Timer0
der so konfiguriert werden kann, dass man seine internen TimerA und B
als seperate 16 Bit Timer/Counter nutzen kann. So habe ich den Timer0A
so konfiguriert, dass er mir nach 100 ms einen Interrupt erzeugt (ich
weiß, ich könnte auch den SysTickTimer nehmen) und der Timer0B soll im
"edge count mode", aufwärtszählend, die Flanken des Eingangssignals
zählen. Die 100 ms sind kein Problem und der Timer läuft gut. Auch in
die ISR wird richtig gesprungen. Aber die Flankenzählung erzeugt nur
schwachsinn. Im Timer0B Register steht nur schwachsinn drin, egal, wie
ich die Messzeit variiere. Das Messignal, mit einem Oszi nachgemessen,
ist ein sauberes Rechtecksignal mit 0V für low und 3,3V für high. Der
Cortex wird mit 80 MHz betrieben. Der Zähler hat einen Prescaler von
128, wird vorgeladen mit einem Wert von 62500 und zählt dann runter. Das
Eingangssignal liegt bei ca. 2,5kHz, sollte also kein Problem sein, ein
Wert um 250 Flanken sollten zählbar sein. Damit sind als Überläufe
ausgeschlossen.
Ich bin so langsam mit meinem Latein am Ende, woran es liegen könnte.
Ich habe auch schon den Timer1 Block genommen, das Problem ist aber das
gleiche. Hätte vielleicht jemand eine Idee? Meinen bisherigen Code habe
ich mal angehängt. Er ist aus meinem bisherigen Projekt herauskopiert,
als bitte nicht meckern, wenn da was unschön aussieht ;-)
Vielen Dank schon mal