Estou tentando escrever na memoria de programa com a funcao
- Código: Selecionar todos
write_program_eeprom(endereco, valor)
//aqui escrevo o valor 0x1010 no endereco 1860 da memoria de programa, (rom)
- Código: Selecionar todos
write_program_eeprom(1860,0x1010);
a linha 1860 eh ignorada nao eh gravado nada neste linha
linha 1861 0x1010
linha 1862 0x1010
linha 1863 0x1010
linha 1864 0x1010
sao gravadas estas linhas mas nao a desejada 1860, e sao gravadas 4 linhas consecutivas sendo que somente queria gravar uma. O outro problema segue no momento de ler estes enderecos.
- Código: Selecionar todos
iPageWidth=read_program_eeprom(1860);// tento ler o endereco 1860
iPageWidth eh uma varialvel que declarei afim de guardar o valor lido. Como ja visto , no momento de escrever o endereco 1860 eh ignorado entao a leitura nao vai dar certo neste endereco, mas se eu tento ler o endereco seguinte:
- Código: Selecionar todos
iPageWidth=read_program_eeprom(1861);//tento ler o endereco 1861
nao leio nada, a variavel iPageWidth continua intacta. Coloquei a simulacao do mplab com o codigo assembler gerado e vi que no momento de gravar usa uma macro GOTO @FLASHLOAD do compilador ccs(eu acho) que esta macro escreve na memoria de programa mas nao encontrei nenhuma indicacao , ou seja de chamada ou desvio a uma funcao que leia este valor da memoria de programa na simulacao. Eu testei este codigo com varios enderecos da memoria do pic e os resultados sao os mesmos. Alguem sabe efetivamente como posso fazer que esta funcao funcione? minha memoria eeprom ja nao suporta os dados que necesito para avancar no meu projeto e se tem esta capacidade de escrever e ler na memoria de programa com o pic16f877a melhor faco bom uso dela doque trocar de micro ou colocar uma memoria externa.
muito obrigado