Gast
#177100
So noch einmal eine Frage zum Einbinden von Assembler-Funktionen in C-Programmen... Welche Register sollte mann in asm-Interrupt-Routinen verwenden? Und kann man falls nötig benötigte Register einfach pushen und popen? Ich suche jetzt schon bald den ganzen Tag nach dem Fehler in der Funktion im Anhang. Kann mir jemand mal auf die Sprünge helfen. Meine Orginalfunktion die ich in einem reinem Assembler-Programm benutze funktioniert super. Anscheinend habe ich bei der Umsetzun in eine C-taugliche Funktion irgendwo einen Bug drin. Ich bin da noch ziemlich neu auf dem Gebiet... Beschreibung: Die Interrupt Funktion decodiert die Positive-Flanke des Manchester-codierten Signals (Positive Flanke am Eingang).Es gibt auch noch das Gegenstück, eine Funktion die auf die negative Flanke reagiert.Eigentlich funktioniert das Programm, bis zu einen gewissen Zeitpunkt. Leider stimmt ab circa der neunten Flankenauswertung das Ergebnis nicht mehr. Im AVR-Studio debugge ich das Programm. Allerdings kommt da immer das richtige Ergebnis raus. Meine Vermutung ist ja, dass es irgendwann die globale Variable FlankeFlg zerlegt :-(.... Implementierung in C-Main: volatile extern void SIG_INTERRUPT (void); unsigned char FlankeFlg; void main (void) {......} Ich hab' die Assembler Dateien mit xxx.S eingebunden.... Danke schoen, bluemole PS:Hab' schon ziemlich viel rumprobiert, daher schaut die Funktion ein bisschen unkoordiniert aus.