-
-
Erfahrener Benutzer
Fleißiges Mitglied
Hallo Nikola,
> Wie kann ich das machen ??? Hilfe!!!
Den Rowalt hast Du ja.
Die Frequenzmessung würde ich über den Capture Interrupt realisieren,
da die eigentliche Zeitmessung bei 200 - 400 kHz kaum Zeit verbrauchen darf.
Prinzip:
Während einer definierten Messzeit speicherst Du in der Capture Interrupt die Timerwerte z.B. der Low-Flanken.
Nach Ablauf der "Messzeit" wertest Du die gespeicherten Timerwerte aus.
Du ziehst dabei aufeinanderfolgende Timerwerte voneinander ab und erhältst so die Periodenzeiten.
Die Periodenzeitwerte die über einem Schwellenwert (**) liegen verwirfst Du, die anderen mittelst Du (*).
Aus den gemittelten Werten bestimmst Du anschließend Deine Frequenz.
Ciao,
Werner
(*) die Mittelung wird nötig, da Deine einzelnen Frequenzwerte heftig streuen werden. Bei 400 kHz Burst und 16MHz Takt hast Du gerade mal
eine Timeränderung um 40 Werte / Periode.
(**) den Schwellenwert würde ich erstmal fest vorgeben. In späteren Versionen kannst Du den Schwellenwert immer noch automatisch erzeugen.
(***) Nochwas, bei 40 Takten, die Du für den Interrupt zu Verfügung hast, musst Du den Capture Interrupt zwangsläufig in Assembler programmieren. In Bascom braucht alleine schon das Sichern der Register mehr Zeit. Der Rest kann in Bascom sein. Den Interrupt mit Nosave declarieren!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen