Gast
#2768449
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