Hi Leute, ich habe ein größeres Array im Flash abgelegt.
Ich greife unter C folgendermaßen darauf zu:
--------------------------------------------------------- DataArray[0] = pgm_read_byte_near(Adr); Adr++; DataArray[1] = pgm_read_byte_near(Adr); Adr++;
---------------------------------------------------------
idealerweise müsste der Compiler das hier in lpm Rd, Z+ übersetzen. Macht er aber leider nicht, der macht das so:
--------------------------------------------------------- movw r30,r16 lpm r24, Z std Y+1,r24 subi r16,lo8(-(1)) sbci r17,hi8(-(1)) movw r30,r16 lpm r24, Z std Y+2,r24 subi r16,lo8(-(1)) sbci r17,hi8(-(1))
----------------------------------------------------------
Er inkrementiert den Z-Pointer also viel zu umständlich. bekommt man das ohne Inline-Assembler effektiver hin?
Mit dem Y-Pointer geht der Compiler deutlich effizienter um.
Gruß Michael