Moin, ich habe folgendes Problem, welches ich mir nicht erklären kann. 1. Ein Array mit X Werten liegt vor 2. Dieses Array wird nun bei jedem Interrupt vom ICP1 von vorne mit dem Wert von TCNT1 gefüllt; array[0] .. array[x-1] 3. Wenn das Array voll ist, werden die absoluten Abstände zwischen den benachbarten Werten berechnet: array[x-1] = array[x-1]-array[x-2] .. array[1] = array[1]-array[0] Das ganze soll also die Periodenlängen bei einem Sinus etc. berechnen. Nun das Problem: Ab und zu kommt es nun dabei vor (ich habe einen Sinus angelegt), dass in einem Arrayfeld der Wert 0 auftaucht. Also bei zwei folgenden Interrupts wird der selbe Wert von ICP1 gespeichert bzw. kann es sein, dass ein Interrupt zweimal hintereinander ausgelöst wird? Aber es kommt ja exakt 0 raus. Die Messung an sich scheint ja zu funktionieren, denn es wird die angelegte Freqeunz auch erkannt nur flackert diese ständig mal hin und her, wenn wiedermal eine 0 im Array vorliegt (es wird der Durchschnitt der Werte ermittelt) Ich habe mir die Werte im Array vom µC ausgeben lassen, es handelt sich nicht um eine Vermutung :). Z.B. liegen im Array dann folgende Werte vor: 12000, 48000, 96000, 144000, 192000, 240000, 240000, 288000 Daraus schließe ich, dass der Interrupt quasi 2mal ausgelöst wird. Aber wieso? Die Abarbeitung des Interrupts dauert nur einen Bruchteil, der zu messenden Frequenz. mfg Nils
Hi >Daraus schließe ich, dass der Interrupt quasi 2mal ausgelöst wird. Aber >wieso? Signal nicht sauber? MfG Spess
Nils schrieb: > Daraus schließe ich, dass der Interrupt quasi 2mal ausgelöst wird. Aber > wieso? Du mußt den Sinus vorher in ein Rechteck umwandeln. Sonst kommt es in der Nähe der Schaltschwelle zu Schwingungen und Du kriegst mehrere Interrupts. Peter
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.