Página 1 de 1
pic16f628/tempo de escrita eprom

Enviado:
19 Set 2008 14:22
por alex1000
Surgiu um problema e gostaria de saber se alguem tem solução:
tenho um programa que sai em um pino uma onda ciclica de 10ms em nivel alto(sendo esse tempo variavel) e 20ms em nivel baixo.
Após a execução da intrução se saida do sinal no pino executa uma instrução de escrita de eprom(write_eeprom) para guardar uma variavel.
Pois bem esta escrita faz com que o tempo do nivel 0 faz com que o tempo de 20ms passe a ser de 30 ms.
Há algum jeito de executar a escrita na eprom e não afetar o tempo de nivel 0?
Re: pic16f628/tempo de escrita eprom

Enviado:
19 Set 2008 14:41
por Djalma Toledo Rodrigues
Facil amigo
t(off) = 20ms - t(w_eeprom)
t(off) = 20ms - 10ms
t(off) = 10 ms
Abraço e bom tempo off.

Enviado:
19 Set 2008 17:50
por RobL
Eu não entendí bem o seu problema.
Quantos bytes está sendo gravado? Cada byte leva em torno de 4ms.
Você tem um período de 30ms a cada gravação ?
Se sua saída é um nível que dura 10ms alta e 20ms baixa e ao final desses 20ms chama a rotina para gravar, pergunto, por que sua gravação tem que ficar presa?
Se for o caso, chame a rotina para gravar e vai para outras tarefas.
Se for um monte de bytes, primeiro coloque nível alto e aí chame a rotina de gravação, pois terá até 30ms gravando.
Está usando interrupção?

Enviado:
19 Set 2008 21:35
por Renie
Olá Alex,
Você está gravando na Eeprom do PIC a cada 30 ms?
Se for, seu PIC terá uma vida útil de pouco mais de 8 horas!!!

Enviado:
20 Set 2008 10:08
por RobL
Renie
Boa observação. Está aí, ninguém percebeu essa impossibilidade.
Isto é que é ajuda com qualidade.
Refiz as contas e parece que não chega a uma hora (100.000 gravações)!!!
O jeito seria usar essas novas flashs externas que podem ser gravadas sei lá quantas vezes (deu branco, não lembro do nome delas nem do fabricante) ou se possível, mudar o procedimento.

Enviado:
20 Set 2008 10:48
por zielpunkt
Então, Alex,
Além do que o Renie afirmou (corretíssimo - gravar eeprom dessa forma f... tudo) e da dica do Robl e do Djama, de calcular o tempo perdido numa gravação, o ideal é fazer por timer. Mas, mesmo assim, terá que tomar cuidado entre as tarefas de gravação, seja ou não numa memória mais sofisticada (que aceite o volume de gravações que parece querer utilizar), ou seja, garantir que uma gravação só ocorra entre os intervalos da temporização. Ou, também, buferizar os dados e escolher o melhor momento para gravar. Ou estruturar o seu programa de outra forma mas, sem saber o que está fazendo, não dá pra opinar.
Abço.

Enviado:
21 Set 2008 13:56
por Renie
Olá RobL,
No Dxit do 628 não tem essa informação mas, no do 877 diz
100.000 gravações para a flash, para a eeprom são 1.000.000 gravações.

Enviado:
22 Set 2008 19:34
por alex1000
Senhores, depois das observações percebi que estava tratando o problema de maneira errada, afinal não seria necessário esta quantidade de gravações.
No final adicionei duas chaves ao projeto onde uma escreve na eprom e outra obtem o resultado da escrita, todas acionando rotinas conforme o Robl sugeriu.
Vo executar a gravação do programa amanhã e verei como se comporta.
Obrigado pela ajuda.