Gast
#94874
Hi! Habe kein Problem aber so langsam bald einen Frust. Hatte ursprünglich folgenden ASM-Code im Prog: adiw zl,MPMin lpm r18,z+ lpm r19,z+ lpm r20,z Eigentlich ganz praktisch mit dem "LPM rd,z+". Byte wird vom Flash in Register rd geladen und die Adresse in Z um 1 erhöht. Also, warum nicht benutzen. Tja, nur funktionierte das gesammte Prog dann nicht richtig und ich begab mich natürlich an anderer Stelle im Code auf stundenlange Fehlersuche. Bis ich in der Online-Hilfe von AVR-Studio mir den Befehl LPM rd,z genau angesehen hatte und ich mußte sehr frustriert feststellen, das es im ATTiny26 zwar "LPM" und "LPM rd,z" gibt aber nicht "LPM rd,z+". Nicht mal der depperte Compiler im AVR-Studio konnte mich trotz Device-Angabe im tn26def.inc darauf hinweisen. Mußte den Code wie folgt ändern damit alles wieder funtzte: adiw zl,MPMin lpm r18,z adiw zl,1 lpm r19,z adiw zl,1 lpm r20,z Dieser Umstand kostet halt wieder 2 Words (4 Bytes) mehr im Flash wo von die kleinen AVR´s ja nicht viel haben. Vielleicht ist ja mein Vorhaben zu groß für den Tiny26. "Not all variants of the LPM instruction are available in all devices." steht in der Online-Hilfe. Was soll das eigentlich einen simplen Befehl wie diesen einfach wegzulassen wo die Core doch bestimmt nicht größer als ein Stecknadelknopf ist? Wieviele verschiedene Core´s gibt es eigentlich vom kleinsten bis zum größten AVR und welche Bezeichnungen haben die Core´s? Gibs darüber irgend wo eine Übersicht? Was bezwegt ATMEL damit, gerade bei den kleinen AVR´s solch simplen aber hilfreichen Befehle wie "LPM rd,z+", "MOVEW..." etc. einfach wegzulassen? Frustrierter Gruß Andi