Zitat Zitat von registriert Beitrag anzeigen
Aber meiner Meinung sind die C- und die Assembler-Version absolut gleichwertig.
Auch wenn du guten C-Code geschrieben hättest, sind C und Assemblerroutinen bestimmt nicht gleichwertig. 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?