Gast
#100717
hi, ich habe eine avr applikation als frequenzzähler mit entsprechend zeitkritischem externen interrupt. bisher in assembler mit dem avr studio programmiert, dementsprechend war das interrupt-ansprech-verhalten determiniert und im datenblatt nachlesbar. bin jetzt auf avr-gcc umgestiegen um komfortabler die menüführung programmieren zu können. nun habe ich festgestellt, dass der compiler ernorm viele freiheiten hat und z.B. selbst dann noch, wenn ich meine interrupt-funktion in assembler schreibe die freiheit hat, vor der ausführung der funktion noch diverse register zu pushen und andere spässchen zu machen, sprich ich hab keine ahnung nach wieviel takten nach interruptauslösung im kompilierten programm meine interruptfunktion abgearbeitet wird. auf diese weise habe ich eine nicht einschätzbare zähler-ungenauigkeit. gibt es eine möglichkeit beim avr-gcc determiniertes interruptverhalten zu erzwingen? kann ich irgendwie bewirken, dass aus der interruptvektortabelle direkt und ohne zwischensprünge, ohne vorheriges gepushe oder sonstirgendwas mein assembler-code angesprungen wird? oder kann man irgendwie "invertiert" arbeiten und den programmkörper samt interruptvektortabelle wie gewohnt manuell in assembler programmieren und dann für bestimmte aufgaben c-funktionen einbinden? danke, dingens