Archiv verlassen und diese Seite im Standarddesign anzeigen : Geschwindigkeitsproblem
Hallo,
ich habe noch ein kleines Problem. Und zwar muss ich einen "relativ" schnellen Impuls zählen, ca. 2-3 impulse pro Sekunde. Nur werden immer eine Menge der Impulse übersprungen. Ich denke es liegt an meinem Programm.
Ich habe in der Hauptschleife einen Debouncebefehl, welcher dann ein Interrupt auslösen soll bei Änderung des Einganges. Ich denke nur, das mein Programm zu selten an der Stelle vorbei kommt um den Debouncebefehl abzufragen, wodurch mir sehr viele Impulse flöten gehen!
Gibt es da ne geschicktere Lösung für? Oder reicht es den Debouncebefehl in einen Timer zu setzen oder ähnliches?
Gruß
Sauerbruch
03.09.2011, 00:51
Und zwar muss ich einen "relativ" schnellen Impuls zählen, ca. 2-3 impulse pro Sekunde.
2-3 Impulse pro Sekunde ist soooo langsam, dass Dein Controller vielleicht einfach nur vor langer Weile stirbt ;) Nee, aber im Ernst: "Schnell" ist was anderes! Diese zeitlichen Größenordnungen sollten den Controller wirklich nicht vor unlösbare Aufgaben stellen!
Woher kommt denn der Impuls - von einem Taster? Wenn ja, besteht die Möglichkeit, ihn hardwaremäßig zu entprellen, z.B. mit einem Widerstand, einem Kondensator und ´nem Schmitt-Trigger?
Und hilfreich wäre es, wenn Du Deinen Programm-Code mal postest. Ohne den ist es schwer zu sagen wo der Fehler liegen könnte bzw. wie er sich beheben lässt-...
hallo,
wie wärs denn, wenn Du den Eingang direkt auf den Interrupt "wirken" lässt und in der ISR das Entprellen
bewerkstelligst ?
mfg
Achim
Hi, ich habe es zwar inzwischen hinbekommen, aber es würde mich trotzdem interessieren wie das aussehen würde?
Ich lasse die Abfrage jetzt wirklich über einen Timer laufen, scheinbar is mein Programm wirklich so lang, das die Abfrage in der Hauptschleife einfach zu selten kommt um den Impuls zu erfassen.
Der Impuls kommt übrigens von einer Lichtschranke.
Sauerbruch
03.09.2011, 20:16
Und zwar muss ich einen "relativ" schnellen Impuls zählen, ca. 2-3 impulse pro Sekunde.
Hast Du das vielleicht etwas genauer? Möchtest Du zählen wie viele Impulse pro Sekunde kommen, oder wie lang die Impulse sind, oder welcher Zeitabstand zwischen zwei Impulsen liegt?
Debouncen (d.h. entprellen) muss man eigentlich nur bei Tastern. Eine Lichtschranke müsste eine saubere Flanke abliefern, so dass Du den Debounce-Befehl gar nicht brauchen solltest.
Wie wär´s denn, wenn Du mit dem Lichtschranken-Signal direkt einen der externen Interrupts (INT0 oder INT1) auslöst? Dann wird die dazugehörige Aktion sofort ausgeführt, egal wo sich Dein Programm gerade befindet.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.