Gast
#40077
Hallo zusammen Ich beschäftige mich erst seit kurzem mit dem AVR /GCC und habe ein paar Fragen zum inline-Assembler. Ich will mit einem Zeiger auf einen 16Bit Wert im PRGMEM zugreifen. Also so etwas wie PRG_RDB() aber für 16bit Ich habe es auch fast geschafft, kann aber das zweite Register nicht ansprechen. lengthMin ist die in einem Register liegende Zielvariable, aktRectP der Zeiger auf den Programmspeicher. _asm_ ( \ "lpm %[reg0in],z+" "\n\t" \ "lpm %[reg1in],z+" "\n\t" \ : [reg0out] "=r" (lengthMin) \ : [inAdr] "z" (aktRectP), [reg0in] "r" (lengthMin), [reg1in] "r" (lengthMin) \ ); reg1in sollte das Register über reg0in sein. Wie bekomme Ich das hin? Gibt eine Möglichkeit die Warnung über das uninitialisierte lengthMin weg zu bekommen, ohne dieser Variablen vorher einen Wert zuweisen zu müssen? Dann habe Ich noch ein Problem in prgmspace.h. Dort wird ein define '__AVR_ENHANCED__' angesprochen, das Ich nirgendwo finden kann, das aber wohl gesetzt ist. Ich arbeite auf einem Mega16. Wo kann Ich diese Definition finden? Vielen Dank schon mal fürs nachdenken. gruß Klaus