Tenés que declarar una variable:
char brillo, cuentabrillo;
Y luego en el bucle del programa principal o en una función de
interrupción (la de algún timer) incluir estas dos líneas:
if (cuentabrillo++==0) PIN = 1; // Incrementa la cuenta,
pone el pin en 1 cuando se alcanza el 0.
if (brillo==cuentabrillo) PIN = 0; // Cuando la cuenta llega al
valor deseado, cambia el pin a 0 nuevamente.
Donde PIN
es, por ejemplo GP0. Si vas a referir el LED a VCC en lugar de a masa, deberías
cambiar 0 por 1 y viceversa para que cuanto más grande sea brillo más brillante
esté el LED. Luego, cambiando la variable brillo,
el brillo del LED será distinto.
Tené en cuenta que la luminosidad percibida es logarítmica (por cómo
funciona el ojo), así que poniendo primero 128 en brillo y 255 luego, el LED dará el doble de luz, aunque tu ojo va a ver un aumento del 30%.
Aún con el PWM, es necesario el uso de un resistor en serie y un
capacitor (el capacitor es opcional en el caso del LED).
-----Mensaje original-----
De: electronica_desaplicada@...
[mailto:electronica_desaplicada@...] En nombre de plozano74
Enviado el: Jueves, 18 de Septiembre de 2008 22:24
Para: electronica_desaplicada@...
Asunto: [E_Desaplicada] PIC12F675 PWM
Estimandos co-listeros:
Estoy aprendiendo a usar el PIC12f675 programandolo en C con el
compilador de CCS.
Necesito generar una señal de PWM para encender un led y variar su
brillo.
Les quería pedir ayuda si alguine ha realizado algo similar si puede
darme una mano con el código, pues este microcontrolador no cuenta con
modulo PWM, y se debe implementar en forma tradicional.
Saludos
Pablo
------------------------------------
*************************************************************
Direcciones Útiles:
Envió de mensajes: electronica_desaplicada@...
Subscribirse: electronica_desaplicada-subscribe@...
Desuscribirse: electronica_desaplicada-unsubscribe@...
Mensaje al Owner: electronica_desaplicada-owner@...
Para recibir ayuda: electronica_desaplicada-ayuda@...
Resumen diario: electronica_desaplicada-digest@...
Cancelar resumen diario:
electronica_desaplicada-normal@...
Solo acceso Web: electronica_desaplicada-nomail@...
Pagina en Yahoo!:
http://ar.groups.yahoo.com/group/electronica_desaplicada
*************************************************************
Enlaces a Yahoo! Grupos
<*> Para visitar tu grupo en la web, ve a:
http://ar.groups.yahoo.com/group/electronica_desaplicada/
<*> La configuración de tu correo:
Mensajes individuales | Tradicional
<*> Para modificar la configuración desde la Web, visita:
http://ar.groups.yahoo.com/group/electronica_desaplicada/join
(ID de Yahoo! obligatoria)
<*> Para modificar la configuración mediante el correo:
mailto:electronica_desaplicada-digest@...
mailto:electronica_desaplicada-fullfeatured@...
<*> Para cancelar tu suscripción en este grupo, envía
un mensaje en blanco a:
electronica_desaplicada-unsubscribe@...
<*> El uso que hagas de Yahoo! Grupos está sujeto a
las Condiciones del servicio de Yahoo!:
http://ar.docs.yahoo.com/info/utos.html