Ir ao conteúdo
  • Cadastre-se

Precisão do timer 1


Posts recomendados

2 horas atrás, JonnyBoyG5 disse:

Eai galera, estou com m problema em relação ao timer 1, eu habilitei o modo de 16 bits dele, que a resolução é de 65mil, porém quando a contagem do timer 1 chega nos 32 mil ele passa a ser -32 mil, como faço para reverter este problema?

Qual compilador ?? No mikroC, declare a variavel de contagem como "unsigned"

Link para o comentário
Compartilhar em outros sites

Fiz um frequencímetro usando o TIMER0.

A base de tempo de um segundo poderia ser usada para o seu projeto.

Basicamente funciona assim:

1 - Usa o próprio cristal oscilador do PIC. A frequência é de 20MHz.

2 - Gera um segundo com a precisão do cristal. Gera este segundo contando 5.000.000 de ciclos de 200ns. A contagem é comprovada tanto via MPLAB, como no próprio equipamento.

3 - Considerando que o cristal possa apresentar erro a partir da quarta ou quinta casa decimal (5,000 MHz), incluí um ajuste mínimo de frequência do cristal. Caso necessário e de posse de um equipamento com maior precisão, pode-se fazer o ajuste da frequência.

4 - Para poder contar os exatos 5.000.000 de ciclos e perfazer 1,000.000 segundo, tive que fazer o programa em assembler. O problema é que o prescaler e o registro do TIMER0 só contam até 65.536 (ou 256 * 256). Para contar uma frequência de até 40.000.000 de ciclos em um segundo, tive que incluir mais dois registros de propósito geral.

Bom. acontece que tive que fazer TODOS os possíveis caminhos do programa que atualizam (ou não) os dois registros POSSUÍREM O MESMO NÚMERO DE MICROSSEGUNDOS. Somente assim pude garantir que o período de contagem de um segundo pudesse estar correto, independente do percurso que o programa seguisse.

Dá um bocado de trabalho. Hoje eu não faria mais deste modo.

Segue o link do frequencímetro, que comprova os 5.000.000 de ciclos durante o qual os pulsos do sinal são contados.

Alerto que só funciona para sinais com cerca de 17MHz. O sinal começa a ficar distorcido no CI que fica entre as entradas e o PIC.

O gerador que usei para medir a frequência é baseado no CI XR-2206, que é baseado em resistores e capacitores, portanto a estabilidade é uma m&$#@.

http://youtu.be/3aIugpKWxVg

MOR_AL

Link para o comentário
Compartilhar em outros sites

Em 18/04/2016 às 20:42, aphawk disse:

@JonnyBoyG5 ,

 

Creio que isso é devido ao tipo de variável que você está utilizando. No Bascom, eu uso variável tipo Word para isso, não sei qual o tipo no C, o importante é que represente valores entre 0 e 65535.

 

Paulo

unsigned short int

  • Curtir 1
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!