TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fastyx en 13 de Junio de 2006, 20:08:56
-
Amigos: tenia entendido que si uno colocaba en el timer 2 (div_by_1, 255,1) el numero 255 representaba el 100 % del duty de la variacion a la que se puede aspirar y el 0 % era 0.
pero estoy variando una variable que la introduzco en set_pwm1_duty( variable) que representa el modulo del duty, y los pasos de aumento los veo bien en la terminal (pasos de 10 en 10 hasta 250) pero en el osciloscopio tengo para la variable 250 un duty del 30 %
alguna sugerencia? :lol:
-
Es que el duty no acaba en 255, llega hasta 1023 porque es una variable de 10 bits.
Increméntalo hasta ahí, verás como el osciloscopio no te engaña ;-)
-
No se en que lenguaje estas programando pero en los pics el PWM tiene una resolución de 1024 , por lo que 250 es un 25% mas o menos, ahora eso también depende de la configuración del timer, en la hoja de aplicación de microchip esta explicado como debes configurar el timer
Suerte
Gustavo Tasquer
-
Amigos: estoy con mas dudas:
probe cambiar el tipo de dato de la variable del duty (int de 8 bits) y pasa esto:
para 255 de pr en el set del timer 2 , en el osciloscopio el pwm va de 0 a 100 %, pero en la terminal el modulo del duty cuando se incrementa pasa de 120 a -126. sin embargo si no le presto atencion e esto , el pwm se sigue incrementando. Será que debo colocarle a la variable alguna salvedad sobre el signo?
fijense que -126 y 120 sumados da casi 255 y yo tengo incrementos en el programa de 10 en 10 asi que por ahi cunado llega a 120 y el proximo es 130
pasa a -126.
espero haber sido claro.
otra duda: la resolucion de 10 bits no se refiere a la cantidad de divisiones en que podemos dividir el rango de variacion del duty?
Gracias por contestar!!!
-
En lugar de int prueba con unsigned int
-
nocturno: probe con unsigned int pero sigue haciendo lo mismo. voy a aprolijar un poco el programa y lo posteo a ver donde esta jodiendo.....
-
Tienes que poner en la visualización:
printf("PWM: %Lu",variable);
Donde: %Lu significa: L => variable Long (16 bits) y u => Unsigned.
Un saludo.
-
ok. es en tipo de dato en la visualizacion donde se arma el embrollo. :-/