Haz una pregunta
  Foros de Electrónica » Temas de Interés » Dudas en general
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

26/04/2009 #1


Interrupcion timer0 1 microsegundo
Hola a tod@s!

Estoy haciendo un proyecto para terminar mi carrera de electrónica, una parte de mi proyecto consiste en usar el Timer0 para que en la interrupcion de overflow incremente una variable ada 1 us, estoy utilizando el PIC 16F876 y lenguaje C, para introducir el software uso MPlab.

Estoy intentando medir distancia, la fórmula genérica para us y cm sería esta:
Distancia(cm) = 340 m/s * (1s/1000000us)*(100cm/1m)*t(us) = (0.034cm/us)*t(us)


Esa es la fórmula real que hay que usar para que haciendo overflow cada 1 us obtenga la distancia en cm, pero creo que he configurado mal la interrupción porque para que me de el valor bueno de distancia en cm he de usar:

Distancia(cm) = (3.4cm/unid)*t(unid) // *****// unid es una unidad que no se cual es.

Uso un prescaler de 1:1 y una carga de 256, teniendo en cuenta que es de 00h-FFh

He configurado de esta manera el timer0 y la interrupción y no consigo obtener la cuenta del timer0 cada microsegundo:

#INT_RTCC
void overflowtimer0()
{
overflow++;
}

//*********************MAIN*************

while(1)
{
setup_counters(RTCC_INTERNAL,RTCC_DIV_1); // overflow cada 1 us? creo que si...
enable_interrupts(GLOBAL);
set_timer0(0XFF);
//Inicio cuenta del tiempo cada microsegundo
overflow=0;
enable_interrupts(INT_RTCC);

while( condición cualquiera)
{
}

disable_interrupts(INT_RTCC);

P = (overflow*3.4); //usando 3.4 me da el valor de P correcto pero debería tilizar 0.034!
//¿cuales son las unidades de overflow? teoricamente son us pero realmente no

}


Gracias de antemano.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Dudas en general

Aquí se tratan todos los temas relacionados con la electrónica en general.

Cerrar
Foros de Electrónica » Temas de Interés » Dudas en general

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