Escrita na Eeprom interna PIC se "perde"

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Escrita na Eeprom interna PIC se "perde"

Mensagempor elzirobotelho » 11 Set 2008 17:39

Pessoal, estou tendo o seguinte problema, estou querendo gravar 12 variáveis, na memória eeprom interna do pic, quando eu chamo a rotina para gravação através de um botão, as variáveis são gravadas na Eeprom, mas, o programa se perde, tendo que ser ressetado o pic 18F452 clock 8MHz.
Após o resset o programa volta a funcionar normalmente, e atualiza o lcd com os mesmos valores que estavam antes da gravação na eeprom.
Segue uma parte do código se alguém puder me ajudar eu agradeço
Foi escrito no Mikroc 6.2

void escreve_eeprom()
{
Eeprom_Write(0x10,fator_u);
Delay_ms(10);
Eeprom_Write(0x11,fator_d);
Delay_ms(10);
Eeprom_Write(0x12,un);
Delay_ms(10);
Eeprom_Write(0x13,dz);
Delay_ms(10);
Eeprom_Write(0x14,ct);
Delay_ms(10);
Eeprom_Write(0x15,ml);
Delay_ms(10);
Eeprom_Write(0x16,dzml);
Delay_ms(10);
Eeprom_Write(0x17,end0);
Delay_ms(10);
Eeprom_Write(0x18,end1);
Delay_ms(10);
Eeprom_Write(0x19,end2);
Delay_ms(10);
Eeprom_Write(0x1A,end3);
Delay_ms(10);
Eeprom_Write(0x1B,end4);
Delay_ms(10);
Eeprom_Write(0x1C,end5);
Delay_ms(10);
}

do
{
if (Ps2_Key_Read(&dados, &especial, &down)) { //Foi pressionada alguma tecla?
if (down && (dados == 1)) trata_cursor(); //Sim, verifica se foi F1, caso verdadeiro
if (down && (dados == 2)) trata_fator(); //Sim, verifica se foi F2, caso verdadeiro
}
if (down && dados) { //Se foi selecionado um caracter alfa numérico
trata_teclado(); // e no LCD estiver a tela 1 Chama Sub-Rotina trata_teclado
}
atualiza_lcd();
x=0;
if (Usart_Data_Ready()) {
rx_endereco();
}
if (Button(&PORTB, 0, 10, 1)) j = 1;
if (j && Button(&PORTB, 0, 10, 0))
{
INTCON = 0; //Desabilita interrupção global e a de periféricos
escreve_eeprom();
j=0;
INTCON = 0b11010000; //Habilita interrupção global e a de periféricos
}
}
while(1); // Loop
} :?: :?: :?: :?:
elzirobotelho
Bit
 
Mensagens: 31
Registrado em: 22 Fev 2008 23:00
Localização: Santos - SP

Mensagempor zielpunkt » 11 Set 2008 18:16

Sem pensar muito no teu código, vc está tratando (debounce) as teclas/botões de forma adequada? Apesar de vc ter um baita tempo entre as gravações (10ms), e como não se sabe a finalidade e atuação das demais teclas, pode ser o caso.




Abço.
"Talento é mais barato que sal. O que separa a pessoa talentosa da bem-sucedida é muito trabalho duro." [ Stephen King ]
zielpunkt
Byte
 
Mensagens: 376
Registrado em: 12 Out 2006 11:36
Localização: Sao Paulo - SP

Mensagempor microcontrolador.pic » 11 Set 2008 21:05

Olá amigo,

Se eu não me engano, as versões anteriores do Mikroc está cheia de BUGs.
Tente compilar seu programa usando o mikroC v8.2.0.0.

(os compiladores da Mikroe são cheio de paus...)

Atenciosamente microcontrolador.pic
Avatar do usuário
microcontrolador.pic
Nibble
 
Mensagens: 50
Registrado em: 08 Set 2008 19:51

Mensagempor elzirobotelho » 11 Set 2008 22:03

microcontrolador.pic escreveu:Olá amigo,

Se eu não me engano, as versões anteriores do Mikroc está cheia de BUGs.
Tente compilar seu programa usando o mikroC v8.2.0.0.

(os compiladores da Mikroe são cheio de paus...)

Atenciosamente microcontrolador.pic



Obrigado pela dica, vou tentar obter a versão 8.2
Estou usando um deboucing de 10ms
elzirobotelho
Bit
 
Mensagens: 31
Registrado em: 22 Fev 2008 23:00
Localização: Santos - SP

Mensagempor microcontrolador.pic » 11 Set 2008 23:11

elzirobotelho escreveu:Obrigado pela dica, vou tentar obter a versão 8.2
Estou usando um deboucing de 10ms


Eh amigo,
faça os testes aí e veja se vai funcionar...
:D

Teve uma vez que eu apanhei desses compiladores da Mikroe, depois fui ver que era problemas na versão do compilador.
Avatar do usuário
microcontrolador.pic
Nibble
 
Mensagens: 50
Registrado em: 08 Set 2008 19:51

Mensagempor phophollety » 12 Set 2008 08:23

microcontrolador.pic escreveu:Olá amigo,

Se eu não me engano, as versões anteriores do Mikroc está cheia de BUGs.
Tente compilar seu programa usando o mikroC v8.2.0.0.

(os compiladores da Mikroe são cheio de paus...)

Atenciosamente microcontrolador.pic


Ou use o C18 e não use bibliotecas(não que sejam ruins.. mas...), procure fazer suas próprias rotinas de tudo, I2C, SPI, UART etc...

Gasta-se um pouco de tempo no começo, depois tem-se algo muito funcionar e menor.
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil


Voltar para PIC

Quem está online

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

cron

x