Forum: Mikrocontroller und Digitale Elektronik Atmega ICP1 Messfehler?


von Nils (Gast)


Lesenswert?

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

von spess53 (Gast)


Lesenswert?

Hi

>Daraus schließe ich, dass der Interrupt quasi 2mal ausgelöst wird. Aber
>wieso?

Signal nicht sauber?

MfG Spess

von Peter D. (peda)


Lesenswert?

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
Noch kein Account? Hier anmelden.