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

Temas similares

10/10/2010 #1


problema con tiempo de servo
Hola!! vereis estoy intentando controlar un servo, para controlarlo utilizo una señal de 50 Hz, con un ton que varia entre 1ms y 2 ms. . . hasta ahi todo perfecto. el problema lo tengo cuando intento sacar ese milisegundo por el microcontrolador. Utilizo una fosc de 8MHz, por lo que queda descartado utilizar el CCP, asi que lo hago con un timer. Como no tengo preescalar, para 1ms, el numero de cuentas que tiene que hacer el temporizador es de 2000 ( 2000*t_int=1ms), igual para 2ms que en este caso el numero de cuentas es de 4000, y el tiempo total es de 40000 que son 20ms. El problema es que haciendo esto. . no sale lo que tiene que salir. . por ejemplo. . para 1ms (2000 cuentas), sale un tiempo de 1.2ms. . que en un servoi es bastante distancia. . os pongo el codigo que utilizo. este es el fragmento de la interrupcion:
Código:
if(INTCONbits.TMR0IF){
		INTCONbits.TMR0IF=0;
		if(flag){
		TMR0H=(65536-toff)/255;
		TMR0L=(65536-toff);
		flag=0;
		control=0; //esto es la salida
		}
		else{
		TMR0H=(65536-ton)/255;
		TMR0L=(65536-ton);
		flag=1;
		control=1;
		}
	}
y este es el fragmento donde le doy el valor de ton y toff, donde para un valor de 255 seria ton=2ms y para 0, un ton de 1ms.
Código:
ton=entrada*8;
	ton=ton+2000;		//calculamos el valor de ton
	toff=40000-ton;		//calculamos el valor de toff
el codigo creo que est bien., . ademas teoricamente funciona. . . la variable entrada es la que yo vario.

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