Цитата(Сергей Борщ @ Jan 27 2010, 16:15)

А посмотрите эррату. Насколько помню, там багов было - "мама дорогая".
Простите - внутрисхемным отладчиком или в симуляторе?
Прошиваю контроллер программатором MSP-FET430UIF. Пользуюсь внутрисхемным отладчиком.
Юрий Санвальд, сделал так как вы предложили. Теперь записывается, но ничего не удаляется)))) mdmitry, я как раз пользуюсь примером, на который вы дали ссылку. Но ничего ттам не нашел. Теперь пойду эррату смотреть. спасибо всем кто откликнулся, буду пробовать еще. О результатах напишу.
Сразу хочу попросить прощения. Я сам виноват, дурак, допустил такую ошибку. Вот код который я пишу в свое программе:
CODE
#include "msp430x54x.h"
#define Memstart 0x10000 // Адрес с которого начну запись в FLASH
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
unsigned long g = Memstart;
do
{
while(FCTL3 & BUSY)
{}
FCTL3 = FWKEY;
while(FCTL3 & BUSY)
{}
FCTL1 = FWKEY + WRT;
__data20_write_char(g, 0x15);
g += 0x0001;
}
while(g <= 0x45BFF);
FCTL1 = FWKEY;
FCTL3 = FWKEY + LOCK;
do
{
//while(FCTL3 & BUSY)
//{}
FCTL3 = FWKEY;
while ( FCTL3 & BUSY );
FCTL1 = FWKEY + ERASE;
__data20_write_char(g, 0x00);
//while (FCTL3 & BUSY );
g += 0x0200;
}
while(g <= 0x10FF0);
FCTL1 = FWKEY;
FCTL3 = FWKEY + LOCK;
}
Теперь хочу указать на ошибку которую я допустил. Во втором цикле do/while я использую ту же самую перемену g, что и в первом цикле. Но после выполнения первого цикла в этой переменной уже записано не 0x10000 (как я определил в начале программы), а 0x45BFF. Соответственно цикл стирания у меня начинается с адреса 0x45BFF. А это адрес самого последнего бита в памяти. Поэтому я ничего и не мог стереть. Как только я объявил еще одну переменную k, и во втором цикле заменил g на k. Все заработало как надо.
Еще раз прошу прощения, всем спасибо.