Цитата(bloodden @ Feb 15 2008, 13:35)

Писать во флеш можно ТОЛЬКО из области бутлоадера.
В том то и дело, что процедуры записи размещаю в бутлоадере.Во флешку данные записываются, но после я не могу ничего больше выполнить, на некоторое время МК подвисает.
Я работаю с ключами, мне нужно их считывать и запоминать.Как часто будут обновляться ключи-этого мне неизвестно.
2 KRS
Значит еепром надёжней чем флешка?
#pragma location = "loader"
void read_fash_to_temp_buf(unsigned char *temp_buf,unsigned char NumPage)
{
unsigned const char __flash *flash_adr;
unsigned char i;
flash_adr=&flash_buf_read[NumPage][0];
for(i=0;i<64;i++)
{
*temp_buf = __load_program_memory(flash_adr);
temp_buf++;
flash_adr++;
}
}
#pragma location = "loader"
void erase_flash_page(unsigned char NumPage)
{
unsigned const char __flash *flash_adr;
flash_adr=&flash_buf_read[NumPage][0];
_ENABLE_RWW_SECTION();
_WAIT_FOR_SPM();
while(EECR&(1<<1));
_PAGE_ERASE(flash_adr);
}
#pragma location = "loader"
void update_flash_page(unsigned char *temp_buf,unsigned char NumPage)
{
unsigned const char __flash *flash_adr;
unsigned char Buf_Adres = 0;
flash_adr=&flash_buf_read[NumPage][0];
do
{ fl_data=*(temp_buf+Buf_Adres+1);
fl_data<<=8;
fl_data|=*(temp_buf+Buf_Adres);
_FILL_TEMP_WORD(Buf_Adres,fl_data);
Buf_Adres+=2;
} while (Buf_Adres<64);
_WAIT_FOR_SPM();
while(EECR&(1<<1));
_PAGE_ERASE(flash_adr);
_WAIT_FOR_SPM();
_PAGE_WRITE(flash_adr);
}
Вот так я работаю с флешкой, может написано что-то криво?Просто это первый мой прект..может чего и не так пишу