Me gustaría cargar algunos datos de la memoria del programa (por ejemplo, una tabla sinusoidal) en mi t10. Al igual que en otros AVR, el comando lpm es para ese propósito, pero parece que no existe en el t10. Vi este proyecto loco ( enlace ) que es para un t9 (el mismo núcleo que t10 pero sin ADC). Tienen solo SRAM de 32 bytes y si se desplaza hacia abajo verá muchas tablas que definitivamente no cabrían en 32 bytes. Cargan sus tablas como tal:
157 ; note = notes[bassline[bassptr]]
158 ldi r30, lo8(bassline)
159 add r30, r20
160 ld r20, Z
161 ldi r30, lo8(notes)
162 add r30, r20
163 ld r21, Z+
164 ld r20, Z
y mi código parece:
ldi ZL, LOW(prog_mem*2) ; set pointer to
ldi ZH, HIGH(prog_mem*2) ; table address
ld r16, Z+ ; patern = (Z), post inc
prog_mem:
.db 0b11110000, 0b11001100
pero simulando que 0xF0 no aparece en r16. Ya eché un vistazo a atmel.com/webdoc/avrassembler/avrassembler.wb_LPM.html y atmel.com/webdoc/avrassembler/avrassembler.wb_LD.html, pero ambos no estaban iluminados.
¿Puede alguien decirme dónde cometí el error? ¿Usaron otro truco? ¿Es posible obtener datos de la memoria del programa?