Hi zusammen, die Frage steht sozusagen im Betreff. So wie ich mitbekommen habe, gibt es mehrere Arten, wie ein Interrupt generiert wird. Die eine Methode ist wohl schneller als die andere und hat mit Kontext Kopie zu tun. Wenn man unter µVision programmiert und Programmblöcke teilweise mit Dave bildet, da steht bei der Funktion für das Interrupt "using RB_LEVEL.. ". Durch das Auskommentieren von dieser Zeile schaltet man angeblich zwischen den Methoden um. Weiß einer was das für Methoden sind und worin die sich unterscheiden? Danke im vorab
Toller Beitrag... und wir sollen jetzt erraten, um welche Hardware und welche Plattform es sich hier handelt, ja?
also wie gesagt, ich programmier mit µVision von Keil; Hardware : XC167
Hi, using hat aber nix mit der 'Interruptgenerierung' zu tun, sondern mit der ISR. Beim C167 gibt es ein Feature, mit dem man den kompletten Registersatz an eine andere Adresse im RAM legen kann. Das hat den Vorteil, dass man nicht alle Register, die man in der ISR verwendet und die alten Werte wieder braucht auf den Stack sichern braucht. Und dieses Feature benutzt Du, wenn Du hinter die ISR ein 'using' setzt. Viele Grüße
ich hab schon irgendwo gelesen, dass man dann nur den Context Pointer sichern braucht, aber wieso muss man die Register dann nicht auf den Stack sichern?
Hi, also, nochmal. Die Register werden über einen Pointer referenziert. Ist ein spezielles Register (den Namen kann ich Dir leider nicht sagen, könnte aber der ContextPointer sein). Wenn Du also z.B. R1 benutzt wird der Offset von R1 auf den Wert des Pointers dazu addiert und diese Stelle ist R1. Wenn Du jetzt diesen Pointer auf eine andere Adresse zeigen lässt (mit Hilfe von using), so hast Du einen anderen Registersatz, der nicht die Werte des alten Satzes beinhaltet und diese damit auch nicht überschreiben kann. Deswegen brauchst Du auch die Register nicht auf den Stack sichern, da deren Inhalt nicht überschrieben wird.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.