Página 1 de 1

EEPROM MIKRO C

MensagemEnviado: 14 Dez 2014 18:17
por Pask
Amigos, estou tentando fazer um pequeno programa em que uma única variável é incrementada e seu valor é gravador sempre na mesma posição de um endereço da eeprom do PIC, ou seja, a cada vez que o PIC é inicializado o incremento da variável é gravado no mesmo endereço de antes. Mas, ao fazer a simulação, o programa não roda corretamente entrando em um loop infinito na segunda operação de escrita. Alguém poderia me dizer o que poderia estar dando errado?

cpp code
void main( ) {
char i;
while(1){
i=eeprom_read(0); // lê endereço 0 da eeprom
i=i+1; // incrementa a variável inteira i
eeprom_write(0,i); // escreve seu valor no endereço 0
} // retorna ao loop para fazer tudo novamente (neste retorno, o programa se perde. Por que???)
}

Re: EEPROM MIKRO C

MensagemEnviado: 15 Dez 2014 07:47
por MOR_AL
Será que precisa aguardar algum tempo de escrita na EEPROM?
Ou verificar se a escrita terminou (EECON1,WR)...
MOR_AL

Re: EEPROM MIKRO C

MensagemEnviado: 15 Dez 2014 08:36
por andre_luis
O problema parece estar na lógica, pois voce está usando a mesma variável i tanto como indexador de endereço, como também do conteúdo do dado lido/gravado. Não é uma boa prática usar variáveis sem nome. Eu já teria feito algo assim :

cpp code
void main( ) {
char cEndereco = 0 ;
char cDado ;
while(1){
Delay_ms ( 1 ) ; // valor hipotetico
cDado =eeprom_read( cEndereco ); // lê endereço 0 da eeprom
cDado++ ; // incrementa a variável
Delay_ms ( 1 ) ; // valor hipotetico
eeprom_write( cEndereco , cDado ); // escreve valor incrementado no endereço 0
} // retorna ao loop para fazer tudo novamente
}

A dica do MOR_AL é fundamental, pois não sabemos se essas APIs que voce tá usando já implementam alguma verificação do status da Flash.

Re: EEPROM MIKRO C

MensagemEnviado: 15 Dez 2014 13:08
por Pask
Bem amigos. Simulando no Proteus, aparentemente funcionou. Mas, preciso fazer a simulação com componentes reais numa matriz de contatos. Quando tiver os resultados, passo para vocês.

Re: EEPROM MIKRO C

MensagemEnviado: 16 Dez 2014 13:03
por Pask
Amigos, realmente já estava funcionando corretamente. Foi apenas um erro de interpretação meu de como é a "mecânica" do software em execução.

Valeu a todos pela ajuda.