Ir ao conteúdo
  • Cadastre-se

Periodo de uma onda


arthuki

Posts recomendados

Olá a todos,

 

Estou usando uma Beaglebone ligada a um temporizador LM555 que gera uma onda de período específico. Preciso calcular o período dessa onda através da variação de HIGH e LOW na porta digital da beaglebone.

Quando a entrada vai de LOW para HIGH e de novo para LOW, tem-se uma onda completa.

 

Estou usando o Qtcreator portanto programando em C++. gostaria de usar interrupções como no arduino, mas achei bastante confuso o uso de interrupções na beaglebone.

 

Alguém teria uma ideia de como medir esse tempo?

 

Obrigado

 


 

Link para o comentário
Compartilhar em outros sites

#include <stdio.h>
#include <time.h>

int main(int argc, char *argv[])
{
  clock_t t_ini, t_fin;
  double secs;

  t_ini = clock();  //Iniciamos o cronometro tomamos o tempo inicial
  
  
  printf("Aperte uma tecla");
  getchar();
  
  t_fin = clock();  //Tomamos o tempo final

  secs = (double)(t_fin - t_ini) / CLOCKS_PER_SEC;  //Tempo final - tempo inicial dividido por segundos obtemos os sengundos
  
  printf("passado: %.16g milisegundos\n", secs * 1000.0); // multiplicando por 1000 obtemos o tempo em milissegundos
  return 0;
}

Se usar o google e por algo como "medir tempo em C/C++" sairá algo como isso.

Explicando assim por em cima primeiro você deveria saber o que é o Era Unix, que simplificando é uma data especifica no tempo na qual se medi em segundos que passaram desde essa data. Por exemplo medimos quantos segundos passaram desde uma hora atrás e suponhamos que passou 300 segundos, esperamos 20 segundos e fazemos uma nova medição do tempo, dessa vez obtemos 300 + 20 segundos que passaram, então restamos a primeira leitura(300) da ultima(320), isso dará exatamente 20 segundos(320-300=20) que é o tempo que passou entre a primeira medição e a ultima, pois é exatamente o que faz a função clock, porém faz isso desde o Era Unix, não sei se ficou claro. Todas as funções de tempo no C/C++ tem muito que ver com o era unix, entenda isso e você poderá medir o tempo perfeitamente, calcular datas, etc.

Certamente exista outras formas de faze-lo porém essa é a única que conheço. Pode que exista bibliotecas ja prontas para isso, e o correto seria medir o tempo em milissegundos ou inclusive microsegundos para uma medição mais precisa.

Link para o comentário
Compartilhar em outros sites

Caro Vangodp. Muito obrigado pela resposta.

 

É isso mesmo que estou procurando. Entretanto no seu exemplo você usou o INPUT como se fosse o apertar de uma tecla.

No meu projeto, estou usando um timer LM555 para gerar uma onda e preciso saber o período desta onda. Para isso conectei a saída do timer 555 ao pino digital da Beaglebone e quero medir o tempo que leva para ir de LOW para HIGH e depois de HIGH para LOW, configurando uma onda completa. 

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!