EEPROM MIKRO C

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

EEPROM MIKRO C

Mensagempor Pask » 14 Dez 2014 18:17

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???)
}
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Re: EEPROM MIKRO C

Mensagempor MOR_AL » 15 Dez 2014 07:47

Será que precisa aguardar algum tempo de escrita na EEPROM?
Ou verificar se a escrita terminou (EECON1,WR)...
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Re: EEPROM MIKRO C

Mensagempor andre_luis » 15 Dez 2014 08:36

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.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: EEPROM MIKRO C

Mensagempor Pask » 15 Dez 2014 13:08

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.
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Re: EEPROM MIKRO C

Mensagempor Pask » 16 Dez 2014 13:03

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.
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19


Voltar para PIC

Quem está online

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

x