Hallo Community,
lange bevor ich ein Bascom-Projekt realisiere mache ich mir generell Gedanken zur Machbarkeit und des How-Do's. Genau an diesem Punkt bin ich gerade, weswegen ich noch kein Quelltext habe den ich einfügen könnte.
Ich möchte gerne über den Timer1 eines AT-Megas Tonfrequenzen messen, indem ich die Zeit zwischen zwei Nulldurchgängen erfasse.
Es geht um knapp 20 Tonfrequenzen zwischen 800Hz und 5kHz welche Halwellenabstände zwischen 625µs und 100µs aufweisen.
Es ist zwingend vorrausgesetzt das jede Halbwelle eines Eingangssignals vermessen wird, unabhängig ob es eine steigende oder fallende Flanke ist, die wahlweise am ICP1 (über externen Komperator) oder über AIN0 (interner Komperator).
Timer1 soll dann mit einer hohen Taktfrequenz (z.B. 16MHz) rauf zählen und bei jedem Pegelwechsel an ICP1 oder AIN0/1 in einer INT den aktuellen Zählerwert in eine Variable übergeben und genullt werden um erneut rauf zu zählen bis zum nächsten Pegelwechsel.
Da tauchen aber zunächst zwei Fragen auf:
Im Bascom-Handbuch finde ich zu "CONFIG TIMER1" die Funktionen "EDGE=Falling/Rising" und die Funktion "CAPTURE_EDGE=Falling/Rising"
Beides passt nicht auf mein anliegen, wo fallende und steigende Flanke gleichwertig sein sollen.
Wäre hier auch z.B. die Funktion "CAPTURE_EDGE=CHANGE" erlaubt?
Ich finde weder bei Bascom noch im Internet eine klare Dokumentation dazu.
Die nächste Frage wäre ganz ähnlich in der Thematik, betrifft aber die Zählgeschwindigkeit von Timer1:
Wenn ich den via "PRESCALE=1" direkt mit den 16MHz des Taktquarzes befeuere, zählt er dann nur aufsteigende Flanken der Clock, oder je Schritt abfallende und steigende Flanken gleichwertig.
Zählt er nur aufsteigende Flanken der Clock würde er bei 16MHz Takt alle 62,5ns herhöht.
Zählt er fallende und steigende Flanke gleichwertig, würde er bei 16MHz alle 31,25ns hoch zählen.
Heißt: im ersteren Fall würde der Timer1 alle 2,048ms überlaufen, im zweiteren Fall alle 1,024ms.
Ich finde weder bei Bascom noch in den Datenblättern der AT-Megas dazu aufschlussreiche Hinweise.
Wäre schön wenn mir hier jemand seine Erfahrungen dazu mitteilen könnte.
Grüße
Jürgen
lange bevor ich ein Bascom-Projekt realisiere mache ich mir generell Gedanken zur Machbarkeit und des How-Do's. Genau an diesem Punkt bin ich gerade, weswegen ich noch kein Quelltext habe den ich einfügen könnte.
Ich möchte gerne über den Timer1 eines AT-Megas Tonfrequenzen messen, indem ich die Zeit zwischen zwei Nulldurchgängen erfasse.
Es geht um knapp 20 Tonfrequenzen zwischen 800Hz und 5kHz welche Halwellenabstände zwischen 625µs und 100µs aufweisen.
Es ist zwingend vorrausgesetzt das jede Halbwelle eines Eingangssignals vermessen wird, unabhängig ob es eine steigende oder fallende Flanke ist, die wahlweise am ICP1 (über externen Komperator) oder über AIN0 (interner Komperator).
Timer1 soll dann mit einer hohen Taktfrequenz (z.B. 16MHz) rauf zählen und bei jedem Pegelwechsel an ICP1 oder AIN0/1 in einer INT den aktuellen Zählerwert in eine Variable übergeben und genullt werden um erneut rauf zu zählen bis zum nächsten Pegelwechsel.
Da tauchen aber zunächst zwei Fragen auf:
Im Bascom-Handbuch finde ich zu "CONFIG TIMER1" die Funktionen "EDGE=Falling/Rising" und die Funktion "CAPTURE_EDGE=Falling/Rising"
Beides passt nicht auf mein anliegen, wo fallende und steigende Flanke gleichwertig sein sollen.
Wäre hier auch z.B. die Funktion "CAPTURE_EDGE=CHANGE" erlaubt?
Ich finde weder bei Bascom noch im Internet eine klare Dokumentation dazu.
Die nächste Frage wäre ganz ähnlich in der Thematik, betrifft aber die Zählgeschwindigkeit von Timer1:
Wenn ich den via "PRESCALE=1" direkt mit den 16MHz des Taktquarzes befeuere, zählt er dann nur aufsteigende Flanken der Clock, oder je Schritt abfallende und steigende Flanken gleichwertig.
Zählt er nur aufsteigende Flanken der Clock würde er bei 16MHz Takt alle 62,5ns herhöht.
Zählt er fallende und steigende Flanke gleichwertig, würde er bei 16MHz alle 31,25ns hoch zählen.
Heißt: im ersteren Fall würde der Timer1 alle 2,048ms überlaufen, im zweiteren Fall alle 1,024ms.
Ich finde weder bei Bascom noch in den Datenblättern der AT-Megas dazu aufschlussreiche Hinweise.
Wäre schön wenn mir hier jemand seine Erfahrungen dazu mitteilen könnte.
Grüße
Jürgen