Ir ao conteúdo
  • Cadastre-se

Contar pulsos de clock usando pic


Tosado

Posts recomendados

Olá pessoal!

Estou fazendo um projeto em uma disciplina do meu curso em que eu precisarei contar e guardar numa variavel os pulsos de clocks gerados por um led junto com um fototransistor para serem usados posteriormente. Por exemplo, a cada 1 segundo, eu leio os pulsos de clock e trato o valor lido no resto do programa. Eu ouvi dizer que eu posso usar o timer1 pra fazer isso, porém não tenho a mínima ideia de como fazer isso, parece que o timer1 já tem uma variável interna que conta esses pulsos não sei ao certo.. Gostaria de saber se alguém sabe como fazer isso e poderia me explicar por favor, ou talvez tenha até algum código que faça isso, que alguém já possa ter usado anteriormente. Ah, aqui na faculdade o compilador que tem é o CCS PICC.

Desde já agradeço a todos.

Link para o comentário
Compartilhar em outros sites

Você deverá configurar o TMR1 como contador.

Os pulsos devem ser aplicados no pino T1CKI.

A tensão destes pulsos não pode ultrapassar VDD + 0,3v.

A configuração do TMR1 é feita no registrador T1CON onde:

bits 7 e 6 não são usados.

bits 5 e 4 definem o prescaler:

11 = incrementa o TMR1 a cada 8 pulsos na entrada

10 = incrementa o TMR1 a cada 4 pulsos na entrada

01 = incrementa o TMR1 a cada 2 pulsos na entrada

00 = incrementa o TMR1 a cada pulso na entrada

bit 3 = 0 (oscilador do TMR1 desativado)

bit 2 = 0 (sicroniza o TMR1 com o pulso na entrada)

bit 1 = 1 (clock externo via RC0/T1OSO/T1CKI)

bit 0 = 1 (ativa o TMR1)

O TMR1 é de 16 bits, sendo que valor da contagem é escrito nos registradores TMR1H e TMR1L.

Portanto, com um prescaler de 1:8, ele pode contar até 524288.

Usando este prescaler, o registrador TMR1L irá estourar quando a contagem chegar a 2048 e então, o TMR1H é incrementado.

Link para o comentário
Compartilhar em outros sites

Recomendo também que você leia o Manual de Referência da Microchip, na parte que fala do TMR1, pois, tem um exemplo de código para efetuar a leitura dos registradores TMR1L e TMR1H, especificamente para evitar o problema da leitura ser efetuada no momento em que ocorre o estouro do TMR1L, reportando uma leitura incorreta:

http://ww1.microchip.com/downloads/en/DeviceDoc/33023a.pdf

Link para o comentário
Compartilhar em outros sites

Olá mais uma vez!!

eu falei que voltava aqui pra postar o resultado e aqui estou...

Na verdade eu fiz um pouco diferente eu acho, fiz do jeito que um professor me passou...

fiz assim... criei um timer0 pra a cada 1 seg receber a frequencia. Dai eu criei uma variavel int pra freq. E então a cada 1 seg. eu dava o comando

freq = get_timer1();

e mostrava no display, tomando o cuidado de zerar sempre pra mostrar

e foi isso, funcionou legal

espero que possa ajudar a quem precise.. ah... e a onda que gera os pulsos estava ligada na porta T1CKI.

valeu a todos pela ajuda

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...