Autor Tema: Duda con Medición de Ancho de Pulso con TMR0  (Leído 2238 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Roos21

  • PIC10
  • *
  • Mensajes: 2
Duda con Medición de Ancho de Pulso con TMR0
« en: 28 de Octubre de 2014, 20:31:34 »
Hola a todos! Me gustaría que alguien me ayudara a terminar un ejercicio. Necesito hacer una medición del ancho de pulso de una señal.
Tengo dos señales de 5V y 60 Hz, pero la segunda esta desfasada 45°(es decir 2.08333 ms de desfase). Las dos señales las paso a través de una compuerta XOR, y asi obtengo el Ancho de Pulso del desfase que necesito medir. El problema es que no se si esta bueno, no se como corroborarlo, si alguien sabe me serviría mucho que me ayudaran, si tienen otras opciones de como resolverlo, mejor.
Adjunto el código del programa y la simulación:

#include <16f877a.h>

#use delay(clock=4M)

#fuses HS,NOWDT
#include <LCD420D.C>

int16 TFB; //Tiempo flanco de bajada
float PW; //Valor final del ancho de pulso
int1 nuevopulso=0; //Entra otro pulso
int1 cambio=0;

#INT_EXT
void funcion_ext_int()
{ //Funcion Interrupcion
if(cambio==0) //Flanco de subida
{
set_timer1(0); //Inicializa TMR1
ext_int_edge(0,H_TO_L); //Configura para flanco de bajada
cambio=1;
}
else{
TFB=get_timer1(); //Valor del Timer 1 para flanco de bajada
ext_int_edge(0,L_TO_H); //Configura para flanco de subida
cambio=0; //Control de cambio de flanco
if(nuevopulso==0) //Fin de pulso
{
nuevopulso=1; //Pulso a calcular
}
}
}

void main(void)
{

lcd_init();
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); //Configuracion TIMER1
ext_int_edge(0,L_TO_H); //Configura para flanco de subida
cambio=0; //Control de cambio de flanco
enable_interrupts(int_ext); //Habilitacion interrupcion RB0
enable_interrupts(global); //Habilitacion general
do
{
if(nuevopulso==1) //Si ¿nuevo pulso?
{
PW=TFB*1.0; //Ancho de pulso en us de TIMER1 a 4MHZ el T=1us*Timer1
printf(lcd_putc,"\f");
printf(lcd_putc,"\n\n\tPulso=%6.1fus",PW); //Visualiza medida en LCD
delay_ms(1000);
}
nuevopulso=0; //Pulso medido
}

while(TRUE);
}

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Duda con Medición de Ancho de Pulso con TMR0
« Respuesta #1 en: 28 de Octubre de 2014, 20:50:15 »
Habia un tema hace poco de esto...

Aqui:
http://www.todopic.com.ar/foros/index.php?topic=43594.0

Y tambien encontre por internet, ya que ese PIC trae CCP:
http://www.electro-tech-online.com/threads/measuring-pulse-width-via-ccp.132331/

Seguro que hay mas ejemplos por el foro

// EDIT:

Te dejo un Tip's and Trick de Microchip que habla del modulo CCP y como hacer para medir pulsos con este.
http://ww1.microchip.com/downloads/en/DeviceDoc/41214a.pdf


Y lo que no me queda claro es si queres corroborar el tiempo medido, y eso nomas con un osciloscopio.
« Última modificación: 28 de Octubre de 2014, 20:58:00 por KILLERJC »


 

anything