Техника самопрограммирования флэш-памяти MSP430


Flash_wb_length EQU (Flash_wb_end-Flash_wb_start+2)/2 ENDMOD

MODULE flash_ww

PUBLIC Flash_ww

RSEG CODE

#define _CPU_ 5 /* определение микроконтроллера:

5=MSP430F1121, 6=MSP430F149 */ #include <Std def.s43>

Запись слова во Flash память ***************************************************

Программирование 1 слова во Flash память путем копирования небольшой (18 байт) функции в ОЗУ динамической памяти, расположенной в стеке. Определение функции: void Flash_ww( int *Data_ptr, int word) рабочий регистр: R12 = int *Data ptr

R14 = слово

R13,R15 = общего назначения


Flash_ww ~dint mov
предотвращение повреждение стека

#Flash ww end,R13

mov

#Flash_ww_length, R15

 

  mov #0A500h,&FCTL3
copy push @R13
  deed R13
  dec R15
  jnz copy
  mov SP,R15
  mov #0A540h,&FCTLl
  call R15
  mov #0A500h,&FCTLl
  mov #0A510h,&FCTL3

определение конечного адреса и размера ; функции, которая копируется в ОЗУ LOCK = О

копирование функции в ОЗУ

WRT = 1

вызов функции записи

во Flash память из

ОЗУ

WRT = С

LOCK = 1