DoSpm //*************fill temp bufer*************
PUSH R31 PUSH R30
ldi r18,96// load data from mem ldi r19,0 st Z,R18 std Z+1,R19
ldi R26, low(flash_data) ldi R27, high(flash_data) ldi R23,0x32 fill_temp: LD R0,X+ LD R1,X+ ST Z, R0 STD Z+1,R1 wait_spm: IN R18,0x37 MOV R19,R18 SBRC R19, 0 RJMP wait_spm
LDI R18, 1 LDI R30, flash_data LD R20, Z LDD R21,Z+1 mov R30, R17 LDI R31,0 MOVW R1:R0,R21:R20 OUT 0x37,R18 SPM
LDI R16,1 OUT SPMCR,R16 SPM
dec R23 dec R23 cpi R23,0 brne fill_temp
//***************************************** //******* save data to programm memory***** LDI R16,low(flash_adr)//load address in prog.mem. LDI R17,high(flash_adr) MOVW R31:R30,R17:R16
LDI R16,5 OUT SPMCR,R16 SPM POP R30 POP R31
//***************************************** RET END DoSpm Вот накалякала вот такую штуку.В результате записывается один байт, во второй просто нули и всё
Сообщение отредактировал Len_OK - May 22 2008, 14:28
|