Hallo Ihr,
Da sag ich jetzt mal ganz pingelig: bei den Interrupten sticht der Unter (die untere Adresse) den Ober. Einfacher ausgedrückt: wer zuerst (in der Vektorliste) kommt, mahlt zuerst.Zitat von mare_crisium
... deshalb bin ich bei meinem Programm bemüht:Zitat von mare_crisium
a) Hohe Quarzfrequenz. Ist bei mir ein Entscheidungskriterium für den m168! Damit kann ich in einer Zeiteinheit 25 % mehr Arbeitstakte erledigen als mit einem M16 oder M32 *gggg* - und noch etwas mehr, als mit dem doch sehr pfiffigen asuro-Controller.
b) Alle ISR müssen in kürzerer Zeit abzuarbeiten sein, als der kürzeste Interruptabstand. Ausserdem: meine sehr hoch priorisierten extINT0 und ~1 sind theoretisch garnicht in der Lage, den Timerinterrupt - Mittelfeld der Priorisierung - zu überholen; sonst wäre ja bei denen die Zeitmessung fehlerebehaftet. Wobei ich als Zeitbasis den Timer2 genommen hatte - das ist der höchstpriorisierte Timer!
c) Meine Interruptroutinen (derzeit bis auf die CIR) habe ich zeitlich ausgemessen als Nicht-ISR und zwar: Pin(x=test) einschalten, Routine aufrufen, Pin(x=test) ausschalten. Das heisst, ich messe die Zeitdauer mit dem kompletten "Routinen-Register-Rettungs-Aufwand". Das in einer for( ; ; ) gibt ein hübsches Flimmern im Oskar *ggggg*.
d) Schließlich habe ich noch ein ungutes Gefühl und noch keine klare Meinung über die Verwendung von cli(); und sei();. Wenn ich diese Kombination verwende und vorher war kein sei(); - dann sind die jetzt die Interrupts global zugelassen . . . . . ich glaube, dass müsste ich mit einem eigenen Verwaltungsflag abfangen. Derzeit versuche ich, ohne diese Kombination auszukommen.
Die ISR sollte doch immer nur gerade das Allernötigste machen!? Der "Rest" muss anderswie organisiert sein. Ok, ich bin noch nicht so sehr in die ganze µC-Technik eingestiegen, aber ich glaube diese Regel ist sehr wichtig.Zitat von mare_crisium
Sternthaler - viel Glück, ich halte Dir die Daumen [OT] - auch wenn ich jetzt auf eine Löwenfete gehe (beim Segelklub - oh jeeee, hoffentlich falle ich nicht ins Wasser) [/OT] .
Lesezeichen