Como gravar dados flash msp430 via software

Software e Hardware para uC Texas

Moderadores: andre_luis, 51

Como gravar dados flash msp430 via software

Mensagempor veioloko » 27 Abr 2009 09:55

Ola pessoal

Alguem ja fez ou sabe se é muito complicado gravar dados na flash do Msp430 com o programa rodando?

Encontrei o app note abaixo

http://www.gaw.ru/pdf/TI/app/msp430/slaa103.pdf

No meu caso eu queria gravar somente 2 offsets para adicionar na conversao AD. Ou seja, um dado para calibração.

Seria mais facil colocar uma memoria externa ou gravar via software mesmo?
veioloko
Byte
 
Mensagens: 348
Registrado em: 10 Nov 2006 06:01
Localização: São Bernardo do Campo

Mensagempor alessandro » 30 Abr 2009 12:42

Se não for muita coisa, é mais prático colocar na FLASH, há quase 2 anos utilizei este recurso devido a falta de espaço fisico e ficou muito bom.
Alessandro
Avatar do usuário
alessandro
Byte
 
Mensagens: 278
Registrado em: 12 Out 2006 19:32

Mensagempor HC908 » 15 Mai 2009 12:19

//***************************************
//* Programa para trabalhar com a Flash *
//* *
//* Projeto TIX *
//***************************************

//Rotina para apagar a Flash
void erase_flash(void)
{
uint8 *Flash_ptr; //Aloca ponteiro para Flash

WDTCTL = WDTPW + WDTHOLD; //Pára Watch Dog Timer
_disable_interrupts(); //Desbilita interrupções
Flash_ptr = (uint8 *)0xFA00; //Ponteiro para Flash
FCTL2 = FWKEY + FSSEL0 + 20; //Define senha, fonte de CLK, Fator div CLK
FCTL1= FWKEY + ERASE; //Apagamento apenas do segmento específico
FCTL3 = FWKEY + LOCKA; //Senha, Desabilita proteção
*Flash_ptr=0; //Limpa ponteiro
FCTL1 = FWKEY; //Senha
FCTL3 = FWKEY + LOCKA + LOCK; //
Flash_ptr = (uint8 *)0xFC00; //Aponta outro segmento
FCTL2 = FWKEY + FSSEL0 + 20; //Define senha, fonte de CLK, Fator div CLK
FCTL1= FWKEY + ERASE; //Apagamento apenas do segmento específico
FCTL3 = FWKEY; //Senha
*Flash_ptr=0; //Limpa ponteiro
FCTL1 = FWKEY; //Senha
FCTL3 = FWKEY + LOCKA + LOCK; //
_enable_interrupts(); //Habilita interrupções

}
//Rotina para gravar na Flash
void write_flash(uint16 endereco, uint8 value)
{
uint8 *Flash_ptr; //Aloca ponteiro

_disable_interrupts(); //Desabilita interrupções
FCTL2 = FWKEY + FSSEL0 + 20; //Senha, Fonte de CLK, Fator div CLK
FCTL3 = FWKEY + LOCKA;
FCTL1= FWKEY + WRT;
Flash_ptr=(uint8 *)0xFA00 + endereco; //Aponta para end. no segmento A
*Flash_ptr=value; //Coloca valor no end
FCTL1= FWKEY; //Senha
FCTL3 = FWKEY + LOCKA + LOCK; //
_enable_interrupts(); //Habilita interrupções
}

//Rotina para ler conteúdo da Flash
uint8 read_flash(uint16 endereco)
{
uint8 *Flash_ptr; //Aloca ponteiro
Flash_ptr=(uint8 *)0xFA00 + endereco; //Aponta para valor
return(*Flash_ptr); //Retorna valor apontado
}
HC908
Byte
 
Mensagens: 248
Registrado em: 26 Mar 2007 09:55

Mensagempor veioloko » 27 Mai 2009 16:27

OPAAA assim fica facil ein!

Muito obrigado ein! funcionou!
veioloko
Byte
 
Mensagens: 348
Registrado em: 10 Nov 2006 06:01
Localização: São Bernardo do Campo

Mensagempor HC908 » 27 Mai 2009 23:27

q bom q funcionou. qualquer coisa da um grito
HC908
Byte
 
Mensagens: 248
Registrado em: 26 Mar 2007 09:55

Mensagempor veioloko » 28 Mai 2009 10:16

bom deixa eu gritar entao rs

0xFA00

como determino este valor...ele varia conforme o msp430?
como faço para saber se o local onde estou escrevendo não ira sobrepor a memoria de programa.
veioloko
Byte
 
Mensagens: 348
Registrado em: 10 Nov 2006 06:01
Localização: São Bernardo do Campo

Mensagempor veioloko » 09 Jun 2009 16:15

fui usar a mesma rotina no msp430f235 e nao funcionou
antes estava usando no msp430f2619 que tem memoria maior

como vejo o endereco a ser escrito no msp?
veioloko
Byte
 
Mensagens: 348
Registrado em: 10 Nov 2006 06:01
Localização: São Bernardo do Campo


Voltar para Texas

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x