Ir ao conteúdo
  • Cadastre-se
Guilherme Benincá Fernandes

RESOLVIDO Perca de pulsos e de dados de leitura

Recommended Posts

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

 

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×