Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

29/09/2012 #1


interrupcion que cuente microsegundos
Hola ,necesito un temporizador con resolucion de 1 microsegundo, se activa por A0 y se desactiva por A1, por el momento tengo esté, pero solo cuenta centenas de microsegundos, alguien que me pueda ayudar ?

Código:
#include <18f452.h>    
#fuses NOWDT,HS, NOPROTECT, NOOSCSEN, NOBROWNOUT, PUT, STVREN
#use delay (clock=20000000)         //Fosc=20Mhz

#include <lcd.c>                  //libreria lcd
double useg=0;
double th=0;

#int_TIMER0
void TIMER0_isr()
{
   delay_cycles(1);  // es igual a un NOP
   set_timer0(33); 
   useg=useg+1;
}

void main()
{
   port_b_pullups(TRUE);        //Habilitacion Pull_up PUERTO B
   lcd_init();
   lcd_putc("Prueba\nmicroseg");
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2|RTCC_8_BIT);
   enable_interrupts(int_timer0);
   enable_interrupts(global);
   WHILE (1)
   {
     while (input(PIN_A0)==1){}//Espera activación de primer sensor SALIDA INVERSOR
     useg=0;
     set_timer0(33);
     enable_interrupts(INT_TIMER0);
       printf(lcd_putc,"\focupado");
     while (input(PIN_A1)==1){}//Espera activación de segundo sensor SALIDA INVERSOR
     disable_interrupts(int_timer0);
     th=useg*0.0001;
     printf(lcd_putc,"\fTiempo:\n%01.4g",th);
     useg=0;
     }
}
29/09/2012 #2

Avatar de chclau

Es practicamente imposible que llegues a esa resolucion por interrupciones. Solamente las instrucciones que ejecutas dentro de la interrupcion duraran mucho mas que ese tiempo (son apenas 10 a 30 ciclos del procesador), y la latencia de las interrupciones en si tambien estan en ese orden.

Para contar tiempos tan cortos, en los microprocesadores se usa hardware, no software. Por ejemplo el MSP430 tiene puertos conectados a timers de hardware que te permiten medir tiempos del orden de microsegundos. No se si los PIC tienen capacidades similares.
29/09/2012 #3

Avatar de Scooter

Al recibir un pulso arranca un timer y páralo al recibir otro, pero perderás toso el tiempo que emplean esas instrucciones.
06/10/2012 #4


No està completo la compilaciòn
06/10/2012 #5


Efectivamente es difícil. Porque el ciclo de ejecución de una instrucción es de 0.2uS para 20MHz.
06/10/2012 #6


Muchas gracias por las respuestas ,saludos !!!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.