Ir ao conteúdo
  • Cadastre-se

Perca de pulsos e de dados de leitura


Ir à solução Resolvido por Nao Sei,

Posts recomendados

Olá, estou com uma dificuldade em um programa que eu estou fazendo utilizando o timer0 e os dois ccps do pic16f877a. Estou desenvolvendo o painel de um veículo e estou criando toda a telemetria do mesmo. Só que quando eu estou no meio de uma rotina que salva na eeprom do pic alguns pulsos de dados de velocidade são perdidos. Ele tem uma função para salvar a distançia total na eeprom. E quando eu utilizo esse "salvamento" na eeprom os pulsos de velocidade são perdidos. Já aconteceu isso no programa de alguem ou alguem tem ideia do que possa ser?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

não salve enquanto lê os pulsos e/ou não leia pulsos enquanto está salvando uai. Ou seja, hás de bolar um sistema para "sincronizar" a mente do mc "dessincronizando" os eventos.  aff acho que nem eu entendi. Algo como... os pulsos são contados pelo hw provavelmente. Que a gravação seja feita no início da contagem enquanto o mc tem algum tempo livre. Ou acumule dados para gravar e neste tempo de gravação nem dê bola pro contador.

São muuiitas maneiras de sair dessa... São tantas emoções... mas nenhuma se compara a "perca" de pulso

Continuo achando que vale a pena publicar esquemas e fontes...

.

Link para o comentário
Compartilhar em outros sites

  • Solução

@Guilherme Benincá Fernandes A eeprom demora em media 4ms para gravar cada byte.Caso você utiliza o ccs ,ele desabilitar a interrupção enquanto está gravando na memoria eeprom(os datasheets da microchip recomenda isto também).

Provavelmente você recebe pulso enquanto está gravando na eeprom. Há varias opçõe:

1°)Você poderia utilizar uma memoria eeprom externa ou mesmo um sd card.

2°)Gravar apenas quando desligar o sistema ou falta de energia

3°)Desconsiderar amostras de velocidade quando gravar na eeprom

4°)Gravar aos poucos na memoria caso tenha muito dados

 

Link para o comentário
Compartilhar em outros sites

@Guilherme Benincá Fernandes ,

 

Tem outra possibilidade :

 

voce tem de saber o tempo exato que seu programa fica sem poder capturar esses pulsos.Por exemplo, se está gravando dois bytes, seriam cerca de 8 milissegundos ( depende do seu clock esse tempo... ) , então você pode criar uma função simples de média móvel com os últimos 10 pulsos recebidos ( dependendo da taxa mude a quantidade ), que indicam a sua velocidade "atual", e considerar que durante esses 8 milissegundos essa velocidade se manteve a mesma, acrescentando os pulsos necessários quando terminar de gravar a EEprom. Não deve mudar quase nada em relação ao cálculo real.

 

Paulo

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!