Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
Entre para seguir isso  
Tosado

[Resolvido] Contar pulsos de clock usando pic

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Qual modelo de PIC pretende usar?

To usando o 16F877

Compartilhar este post


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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado Mulder_Fox, esclareceu bastante pra mim, amanha vou tentar implementar isso e qualquer coisa eu volto aqui, mas acho que agora ficou tranquilo...

valeu!!

Compartilhar este post


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

Compartilhar este post


Link para o post
Compartilhar em outros sites

nossa que droga eu não sabia da existencia deste tmr1 e nem do registrador t1con.... e eu dividindo interrupções do estouro do tmr0.....

Compartilhar este post


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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  





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

×