Novamente, depois de quase ter um infarto de raiva, decidi pedir socorro pros Caras.
Estou a dois dias tentando fazer a programação e leitura da Flash para salvar alguns valores de calibração, como segue;
- Código: Selecionar todos
//constantes que foram utilizadas com base nos links que irei mostrar a frente
#define CK_FLASH_END (getenv("PROGRAM_MEMORY")-1)
#define CK_FLASH_PAGE_SIZE (getenv("FLASH_ERASE_SIZE")/2)
#define CK_NUM_PAGES (CK_FLASH_END/CK_FLASH_PAGE_SIZE)
#define CK_USER_PAGE (CK_FLASH_PAGE_SIZE*(CK_NUM_PAGES-1))
#org (unsigned int32)CK_USER_PAGE,CK_FLASH_END {} //não entendi para que serve...
//Variavel que eu quero fazer o o storage na flash para ao iniciar fazer o load.
struct{
unsigned int16 Calibrated; // sinaliza que está calibrado
unsigned int16 Ofset; //valor do ofset de tensão do circuito
float Calibration_Const; //constante de multiplicação
}Cal_Params;
O que ocorre é que, eu faço a gravação dos dados utilizando as constantes como seguiram.
Quando eu faço a leitura novamente, todos os valores que eu leio são 0....
Estou utilizando os comandos como seguem abaixo:
Write_Program_Memory(CK_USER_PAGE, &Cal_Params, sizeof(Cal_Params));
Read_Program_Memory(CK_USER_PAGE, &Cal_Params, sizeof(Cal_Params));
Conforme o manual do CCS, estes comandos deveriam ler e escrever na flash, pelo ponteiro de entrada e saida &Cal_Params, e a quantidade de bytes sizeof(Cal_Params));
Já fiz casting, já fiz dezenas de cálculos ja fiz de tudo e não funciona.
Li dois tópicos conforme abaixo:
https://ccsinfo.com/forum/viewtopic.php?p=162228
https://www.ccsinfo.com/forum/viewtopic.php?t=49089
Ja lí, reli, desreli, e mesmo assim não consigo saber onde estou errando.
Alguém consegue ver algo que eu não vi, ou já passou por algo parecido ?
Obrigado!!