зачем столько условной компиляции не могу разобраться.
// Executes self-programming command
spmSPM:
movw r31:r30, r17:r16
rcall spmWait
in r20, SREG
cli
#ifdef __RAMPZ__
in r21, RAMPZ
out RAMPZ, r18
#endif
#ifdef __MEMSPM__
sts SPMREG, r22
#else
out SPMREG, r22
#endif
#ifdef __RAMPZ__
espm
#else
spm
#endif
dw 0xFFFF
nop
#ifdef __RAMP__
out RAMPZ, r21
#endif
out SREG, r20
ret
1. что такое и зачем __RAMPZ__ - если МК больше 64Кб?
2. что такое и зачем __MEMSPM__
3. зачем размещается слово в памяти «dw 0xFFFF», при отладке в AVR Studio попадая, на эту команду выдает предупреждение – что команда не известна.