Gast
#5275580
Hallo, ich taste eine löchrige Metallscheibe mit einen induktiven Näherungssensor ab. Die Anzahl der detektierten Löcher pro Zeit ist ein Maß für die Geschwindigkeit. Diese "Zählergebnisse" werte ich jede Sekunde aus. Dazu nutze ich noch einen CTC Timer Interrupt (16 Bit). Den habe ich jetzt mal im Code weggelassen. In meinen ersten Programm habe ich einfach alle 1ms den Näherungssensor gepollt. Das klappte Prima ohne Probleme ! Jetzt nutze ich den externen Interrupt INT0 und bekomme leider schwankende Werte und mitunter sogar doppelt so hohe Werte. Gleichzeitig nutze ich noch den externen Interrupt INT1. Diese Zählwerte sind o.k. Das Interrupt auslösende Signal stammt allerdings von einen anderen Microcontroller. Beim INT0 vermut ich, dass die Flanken des Näherungssensors unsauber sind, oder sonstige EMV Probleme die Ursache sind? Ich habe die Auslöseart des externen Interrupts auch umgestellt auf "fallende Flanke" und "Pegeländerung". Jeweils mit denselben Ergebnis, dass sehr schwankend gezählt wird. Zum Beispiel müsste ich pro Sekunde 40 Pegeländerungen erfassen. Es werden meistens auch Werte um 40 angezeigt, aber sehr oft Aussreisser, teilweise bis zu 80. Vorsichtshalber hänge ich mal den Code an, ich denke aber es liegt eher am Signal des Induktiven Näherungssensors. Jetzt ist meine Frage, wie man das am geschicktesten repariert? Vielleicht sobald eine steigende Flanke erkannt wird den Interrupt für ein paar µs sperren? Über ein paar Tipps wäre ich sehr dankbar. Grüße Frank

