Hallo zusammen, ich möchte den Analog Comparator des ATmega324P ansprechen. Das heißt ein Signal(Sinus mit niedriger Frequenz) einlesen und mit dem Komparator die Frequenz zählen. Dazu möchte ich den Timer/Counter1 verwenden. Laut Datenblatt gibt es die im ACSR - Register die Bits: ACIE und ACIC. Mit dem ACIC-Bit schalte ich den Komparator auf den Timer/Counter1, muss ich jetzt das ACIE-Bit aktivieren oder läuft die Zählung im Timer/Counter1 ?? Freue mich auf eine Antwort. Beste Grüße Frank
Wenn du nicht gerade noch zusätzlich einen Komparator-Interrupt haben willst, lässt du ACIE ausgeschaltet. Selbst wenn du einen haben willst, kommst du besser, stattdessen den input capture interrupt zu aktivieren. Vorsicht bei niedrigen Frequenzen: Jitter oder eine leichte Überlage- rung einer zweiten Frequenz könnten schnell dazu führen, dass der Interrupt mehrmals triggert, weil das Signal über die Schaltschwelle ein paarmal hin und her "hüpft".
Hallo Jörg, danke für die schnelle Antwort. Ich möchte mir einen Violinenstimmer bauen, es ist also gut möglich das ich die Harmonischen mitverstärke und das Signal verfälschen können. Ich würde behaupten das setzen des ICF (Input Capture Flag) reicht zum entprellen des Interrupts? Beste Grüße Frank
Frank(d*m#m.) schrieb: > Ich möchte mir einen Violinenstimmer bauen, ... Dafür gibt's doch Stimmgabeln :), und den Rest bekommt man mit Gehör hin. ;-) > Ich würde behaupten das setzen des ICF (Input Capture Flag) reicht zum > entprellen des Interrupts? Nein, du könntest in der ISR für den input capture den Interrupt selbst sperren (und den Timestamp schnell vorher sichern), und ein Timer gibt ihn erst dann wieder frei, wenn es sinnvoll ist. Du musst ja nur Frequenzen von etwa 190 Hz (kleines g) bis 660 Hz (zweigestrichenes e) erkennen können. Möglicherweise wäre es ein sinnvollerer Ansatz, das Signal in einen AD-Wandler zu stopfen und eine FFT drüber laufen zu lassen. Bei diesen Frequenzen könnte ein ATmega das gerade noch so schaffen.
Hi Jörg, deine Anmerkung mit der Stimmgabel und dem Gehör ist natürlich richtig, aber ich brauche das auch für ein Projekt in der Uni. Habe mir hier ein zwei Problemlösungen für einen Gitarrenstimmer durchgelesen. Da wurde grundsätzlich davon abgeraten eine FFT versuchen zu wollen, da ein Instrument eine viel größere Amplitude der Grundfrequenz als die Harmonischen aufweist. Wenn FFT, dann weiß ich leider nicht wie ich das anzustellen habe. Kannst du mir da mal die nötigen Programmschritte(grob) aufschreiben? Ich habe natürlich Fourier-Transformation in Mathe3 gehabt und auch per Hand durchgerechnet. Weiß also das man die Funktion mit exp(*) multipliziert und integriert (den *-Ausdruck habe ich gerade nicht bei der Hand), die diskrete Fourier-Transformation (DFT) ist dann die Summenbildung anstelle der Integrale. (Bitte um Korrektur, wenn Falsch) Äh wenn du also zufällig eine FFT in C hast wäre das Traumhaft. Beste Grüße Frank
Frank(d*m#m.) schrieb: > Habe mir hier ein zwei Problemlösungen für einen Gitarrenstimmer > durchgelesen. Da wurde grundsätzlich davon abgeraten eine FFT versuchen > zu wollen, da ein Instrument eine viel größere Amplitude der > Grundfrequenz als die Harmonischen aufweist. Ja, und, wo ist dabei das Problem? Dann sollte man doch einen sauberen Peak bekommen... > Wenn FFT, dann weiß ich leider nicht wie ich das anzustellen habe. > Kannst du mir da mal die nötigen Programmschritte(grob) aufschreiben? Nicht wirklich, weil ich's auch nur theoretisch kenne. ;-) Du musst in gleichmäßigen Abständen sampeln, natürlich entsprechend dem (Nyquist/Shannon/Whittaker/Kotelnikow)-Abtasttheorem mit mehr als der doppelten Frequenz der höchsten Signalfrequenz. Das kannst du dadurch erreichen, dass du den ADC im auto-trigger-Modus laufen lässt und als Triggerquelle ein Timer-Ereignis nimmst. Da die ADC-Wandlungszeit ab der 2. Wandlung konstant ist, erreichst du damit eine äquidistante Abtastung. Für den eigentlichen FFT-Algorithmus gibt es von Atmel eine Appnote, hätte ich jetzt gesagt... Hmm, finde ich nicht, möglicherweise verwechsle ich das gerade mit der Appnote für digitale Filter. Was ich aber finden konnte ist: http://elm-chan.org/works/akilcd/report_e.html Ich denke, damit solltest du weiter kommen können.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.