Autor Tópico: Usando Timer do PIC  (Lida 31768 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

Meca2010

  • Visitante
Usando Timer do PIC
« Online: 29 de Maio de 2010, 14:43 »
Boa Tarde a Todos!
Gostaria de saber se alguem poderia me ajudar com uma parte de um programa que eu nao estou conseguindo.

Eu preciso fazer um temporizador do pic contar 30 segundos....
do tipo

Se uma saida for ativada o temporizador vai começar a contar o tempo, se esta saida for desativada deve parar o tempo e seguir o programa...
Mas se continuar ativada e der os 30 segundos programados vai ativar outra saida...
a partes da saidas eu sei, soh nao sei fazer a configuraçao do timer...
se alguem puder me ajudar agradeço..
Att

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Usando Timer do PIC
« Resposta #1 Online: 29 de Maio de 2010, 15:07 »

Seguem algumas rotinas que parte eu aproveitei e parte eu desenvolvi (costumo manter e usar alguns comentários em inglês), para o PIC16F628, mas pode ser usadas por outros. Os valores devem ser ajustados conforme o clock que voce usar.

Se quiser 1 segundo, é só chamar 4 vezes a rotina de 250ms e se quiser 30s, é só chamar 30 vezes a rotina de 1 s. Atente que cada registrador vai até 255.

É necessário criar duas variáveis em RAM, definidas em "cblock".


;*******************************************************************
;
;   file register declarations: uses only registers in bank0
;   and at 0x20 in the 16F628
;
;*******************************************************************

   cblock   0x20

   ld_loop_ex
   ld_loop_in

   endc


;
;**********************************************************
;
;   Delay for about 400x cycles
;
;    Se w=1, temporiza 1ms @ fck = 4MHz
;
waitx400:
       movwf   ld_loop_ex
ld_loopex:
   movlw   (400-4)/4
   movwf   ld_loop_in
ld_loopin:
       decf    ld_loop_in,F
       skpz
       goto    ld_loopin
   decf    ld_loop_ex,F
       skpz
       goto    ld_loopex
   return
   
;**********************************************************
;
;   Delay for about 2 ms
;
delay2ms
       movlw   2
   goto   waitx400

;**********************************************************
;
;   Delay for about 250 ms
;
delay250ms
       movlw   250
   goto   waitx400

Meca2010

  • Visitante
Re: Usando Timer do PIC
« Resposta #2 Online: 29 de Maio de 2010, 15:14 »
Mas, esta nao seria a linguagem Ccs?

Estou precisando em Linguagem C para MikroC
msmo assim agradeço por ajudar =)

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Usando Timer do PIC
« Resposta #3 Online: 29 de Maio de 2010, 17:01 »
Mas, esta nao seria a linguagem Ccs?

Estou precisando em Linguagem C para MikroC
msmo assim agradeço por ajudar =)

O programa está em linguagem "assembly", também conhecida como linguagem de máquina.

O CCS é um compilador (um programa ou um ambiente de programação que gera o código ASM=assembly e/ou em HEX), e não possui, ou não é uma linguagem.


Offline robedany

  • Hobby
  • ****
  • Posts: 357
  • Sexo: Masculino
Re: Usando Timer do PIC
« Resposta #4 Online: 29 de Maio de 2010, 21:57 »
Boa noite Gil
Por acaso vc. tem algum programa ou rotina em ASM para o 12f629/12f675, com osc 4mhz e comando atravez de pot numa porta, possa sair em outra porta uma frequencia variavel aprox. de 100 a 1000hz, onda quadrada?
Equivalente ao temporizador 555

Grato Roberto

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Usando Timer do PIC
« Resposta #5 Online: 01 de Junho de 2010, 05:43 »
Olá Roberto,

Por acaso vc. tem algum programa ou rotina em ASM para o 12f629/12f675, com osc 4mhz e comando atravez de pot numa porta, possa sair em outra porta uma frequencia variavel aprox. de 100 a 1000hz, onda quadrada?
Equivalente ao temporizador 555

Não tenho pronto, mas dá pra fazer facilmente, usando o potenciômetro conectado aos comparadores do PIC, mas não seria melhor usar o 555?

Offline robedany

  • Hobby
  • ****
  • Posts: 357
  • Sexo: Masculino
Re: Usando Timer do PIC
« Resposta #6 Online: 01 de Junho de 2010, 14:26 »
Grato pela resposta Gil
Normalmente uso o 555, mas quando uso oscilador variavel, as vezes a onda não é simetrica.
Tenho um programinha de telegrafia no pic. mas não varia a frequenci, e a quantidade de componentes é muito menor.

Acredito que quando a gente fica mais velho, acho que tenta achar alguma coisa mais pronta, não sei se é preguiça ou a cabeça que não ajuda tanto.

Mas agradeço a gentileza, de repente vc. tinha alguma rotina já pronta e ficava mais facil. Mas não se preocupe.

Abraço
Roberto


Offline FB

  • "... Potência não é nada sem controle!"
  • Novato
  • *
  • Posts: 15
  • Sexo: Masculino
Re: Usando Timer do PIC
« Resposta #7 Online: 17 de Julho de 2010, 18:37 »
Estou precisando em Linguagem C para MikroC ...

Olá à todos. Se me permitem e o tópico não for antigo demais, posso ajudar com o mikroC na config do timer.
Abraço.

HSamuel

  • Visitante
Re: Usando Timer do PIC
« Resposta #8 Online: 04 de Agosto de 2010, 19:29 »
Boa noite a todos,

      FB, também utilizo o MikroC, e estou tendo problemas com TIMER e interrupção no PIC. Se vc ou alguém puder ajudar ficarei muito grato. Estou me dirigindo a vc, pq vc disse que tb programa com o MikroC e pode ajudar com TIMER, mas se alguém tb souber, tiver algumas dicas, se possível, por favor me ajudem.

Estou programando o PIC 16F627A, como disse antes utilizo o MikroC. O que precisso fazer é o seguinte:

Quando uma determinada entrada receber um pulso, iniciar um contador, e quando essa mesma entrada receber outro pulso, parar o contador, fazer os cálculos necessários e zerar o contador para que o processo se repita. Resumidamente, tenho uma entrada e preciso do tempo entre os pulsos que chegam a ela. Deu pra intender +/-?

Se alguém puder ajudar... qualquer ajuda é bem vinda! Grato desde já.


Abraço a todos.

Offline FB

  • "... Potência não é nada sem controle!"
  • Novato
  • *
  • Posts: 15
  • Sexo: Masculino
Re: Usando Timer do PIC
« Resposta #9 Online: 04 de Agosto de 2010, 21:27 »
Boa noite a todos ...
      FB, também utilizo o MikroC, e estou tendo problemas com TIMER e interrupção no PIC...
Abraço a todos.

Amigo, depois de iniciada a contagem, o incremento da variável será a cada 1 segundo?
Outra coisa, envie um esquema do seu circuito, e como deve saber, bases de tempo estão intimamente ligadas ao clock do sistema. Portanto, preciso saber exatamente qual é o cristal utilizado para calcular o timer.
Se as contagens não excederem 255, podemos utilizar o timer0.
Poste também quais calculos o programa deverá executar, ou o código que está trabalhando, desde que não seja para aplicação profissional  = )
Aguardo.
Abraço.

HSamuel

  • Visitante
Re: Usando Timer do PIC
« Resposta #10 Online: 05 de Agosto de 2010, 01:08 »
Bom dia FB,

       Primeiramente já quero agradecer pela atenção...

       O circuito é bem simples, está em anexo. Fiz o circuito no Proteus Isis. Estou utilizando crystal de 1MHz. O sensor que vai dar os pulsos na entrada é um reed switch, este vai estar preso em uma peça redonda, e como sei o diâmetro da peça, preciso do tempo gasto pra dar uma volta para assim calcular a velocidade da peça, por isso a necessidade de conseguir o tempo entre os pulsos (cada pulso uma volta). É praticamente um velocímetro né... Na verdade é um velocímetro. O cálculo é: V = (2 * pi * R) / T. R é o raio da peça em metros e T o tempo de uma volta em segundos. Depois preciso mostrar essa velocidade em dois displays de 7 segmentos. No Proteus não tem o reed switch, então liguei um botão para simular os pulsos.

A princípio estou usando um cristal de 1MHz mas pode ser que tenha que usar um de 4MHz. Por isso gostaria de aprender direito como configurar o PIC.

Novamente, muito obrigado pela atenção, fico realmente grato. Será que grande ajuda!


Até mais...

Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re: Usando Timer do PIC
« Resposta #11 Online: 05 de Agosto de 2010, 08:38 »
Na verdade é um velocímetro.

Qual é o raio da peça ? Qual a faixa de velocidades esperada ?

HSamuel

  • Visitante
Re: Usando Timer do PIC
« Resposta #12 Online: 05 de Agosto de 2010, 11:42 »
Bom dia,

       O raio da peça é de 0,33m, aproximadamente 13'. A velocidade máxima é aproximadamente 60km/h. Tanto o raio como a velocidade máxima podem variar um pouco, mas nesse projeto quero fazer com essas medidas. Por isso preciso aprender como configurar o PIC certinho pra se precisar fazer alguma alteração eu mesmo saber fazer. Procurei na internet, em apostilas e livros mas não achei muita coisa, e mesmo assim, o pouco material que achei estava em assembler, e não sei nada de assembler.

Sempre programei em C/C++ e C#. A alguns anos comecei com PIC mas nunca fiz curso sobre o assunto, o que eu sei aprendi "na raça" mesmo. Já fiz vários projetos com PIC mas nunca precisei utilizar interrupções ou TIMER. Vou começar a ver a matéria de microcontroladores nesse semestre na faculdade. Estou no 6º período de Engenharia de Controle e Automação.

Desde já agradeço pela atenção! Abraço...

Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re: Usando Timer do PIC
« Resposta #13 Online: 05 de Agosto de 2010, 12:09 »
O raio da peça é de 0,33m, aproximadamente 13'. A velocidade máxima é aproximadamente 60km/h.

O que corresponde a uma bicicleta com rodas de 26" ... poderia usar um desses "computadores de bordo" baratos que há por aí ... são ajustáveis ...

Citar
Sempre programei em C/C++ e C#.

Olha, eu sempre tento incentivar o povo a aprender assembly ... claro que as linguagens de alto nível são excelentes, mas sempre há uma coisinhas que são mais fáceis de resolver em nível mais baixo ...

Mas algo como vc quer é quase trivial pra quem usa C ... dê uma espiada no site da Microchip, vc vai encontrar um punhado de rotinas enlatadas ...

HSamuel

  • Visitante
Re: Usando Timer do PIC
« Resposta #14 Online: 05 de Agosto de 2010, 12:15 »
Obrigado pelas dicas, mas já tive a idéia de usar um computador de bordo para bicicletas, mas infelizmente não posso usar um desses. Terei que fazer o meu mesmo. Realmente reconheço que é importante saber assembler, mas nunca tive aula sobre essa linguagem e nunca conseguir parar um tempo, pegar um livro e estudar. Já havia ido no site da Microchip mas não achei praticamente nada, talvez não tenha achado o lugar certo, vou voltar lá agora e ver se acho as rotinas que vc mencionou.

Grato!

 

/** * */