Ein (spätes) Danke für die ersten Beiträge.


Zitat Zitat von witkatz Beitrag anzeigen
Der Maschinencode, den der Compiler aus der C-Routine gemacht hat ist sicherlich länger und dauert in der Ausführung auch länger als der Assembler-Code.
Außerdem hast du im Assembler ein 8-bit Register verwendet, in C aber uint16_t. Weißt du was der Compiler aus 16-Bit Zuweisungen, Arithmetik- und Vergleichsoperatoren für einen unnötigen Maschinencode - Overhead erzeugt und was das für die Ausführungszeit bedeutet? Vielleicht liegt in der Ausführungszeit der Routine, die im Interrupt aufgerufen wird die Ursache des Problems?

Das sind natürlich gute Punkte. Die Zählvariable war zuerst eine 8-Bit-Zahl. Ich hab dann eine 16-Bit-Zahl draus gemacht, um die Entprellzeit verlängern zu können. Aber in beiden Fällen macht mein Schalter das gleiche.

Und wenn die Ausführungszeit der C-Variante deutlich länger ist: Sollte das dem Entprellen nicht zu gute kommen? Das ist ja hier keine zeitkritische Anwendung, kann meinetwegen auch ne halbe Sekunde dauern