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
Zum inline-Assembler kann ich Dir nicht viel sagen außer daß Du Dir vielleicht mal Eric Weddington's vorgeschlagenes neues Interface für pgmspace.h ansehen kannst. Hat er meines Wissens an die avr-libc-dev Liste geschickt, und in deren Archiven kannst Du über die Homepage des Projektes suchen. _AVR_ENHANCED_ wird für den »enhanced core« IMHO durch den Compiler selbst gesetzt. Das sind alle ATmegas außer dem ATmega103.
Vielen Dank Die Mailingliste habe ich gefunden. Ich werde es dort mal probieren. Gruß Klaus
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.