Gast
#178556
Hallo, beim Lesen der AVR-libc 1.0.4, dem ATMega16-Manual und dem aktualisierten C-Tutorial im Wiki habe ich mal wieder einiges nicht verstanden: 1.) Im libc unter 5.17.1 steht, daß bei einer ISR (neben dem SREG) auch andere gerade verwendete Register gesichert und anschließend wieder zurückgeschrieben werden müssen. Dies sei mit __attribute__((interrupt)) in der ISR getan. Kurzum: Ist das im Macro SIGNAL(signame) nun schon integriert oder muß das noch per Hand gemacht werden? Mein Problem ist, daß ich diese ganze Geschichte mit den Unterstrichen (= "vom Compilerhersteller", define über mehrere Ecken) nicht schnalle. 2.) Im C-Tutorial steht, daß man bei z.B. 16 bit-Variablen, die im Programm und einer ISR genutzt werden, außerhalb der ISR vor einer Zuweisung dieser Variablen immer cli(); "machen" soll, da sonst bei diesem Zugriff (2*8 bit hintereinander) nach den ersten 8 bit in die ISR gesprungen werden könnte und der Wert der Variablen dann Quatsch wäre. Ich meine im Manual gelesen zu haben, daß ein Multicyclezugriff immer beendet wird, bevor der Interrupt greift. Oder ist mit "Multicycle" was anderes gemeint? Gruß Lutz