Applets "Utilidades"
2 participantes
Página 1 de 1.
Applets "Utilidades"
Abro este tema para comentar todo lo relacionado con los applets en el bloque "Utilidades".
Informar de errores, dudas, mejoras, ideas para nuevos applets.. lo que sea.
Aprovecho para comentar que he actualizado el Calculador PWM y le he añadido un fragmento de código SDCC de ejemplo.
Un saludo.
Informar de errores, dudas, mejoras, ideas para nuevos applets.. lo que sea.
Aprovecho para comentar que he actualizado el Calculador PWM y le he añadido un fragmento de código SDCC de ejemplo.
Un saludo.
Favor con la ecuacion
Hola te puedo molestar con la ecuación que utilizas a partir de
Fosc (MHz):
Frec. PWM (Hz):
Duty Cycle (%):
y obtener estos resultados???
Registro DEC HEX BIN
PR2:
T2CON:
CCPR1L:
CCP1CON:
gracias!!!
Fosc (MHz):
Frec. PWM (Hz):
Duty Cycle (%):
y obtener estos resultados???
Registro DEC HEX BIN
PR2:
T2CON:
CCPR1L:
CCP1CON:
gracias!!!
tony8a87- Participante Activo
- Mensajes : 34
Fecha de inscripción : 10/08/2010
Re: Applets "Utilidades"
Si claro...
Todo parte de la formulita que puedes encontrar en los datasheet de cualquier Pic:
PWM Period = [(PR2) + 1] • 4 • TOSC • (TMR2 Prescale Value)
Se despeja PR2 y te queda esta formulita:
PR2 = (pwm_period)/(prescale * tosc * 4)-1
Primero se calculan los periodos a partir de las frecuencias
tosc = 1/fosc;
pwm_period = 1/pwm_freq;
Y ahora se empiezan a darle valores al prescaler 1, 4, 16 y si PR2 > 256 se pasa al siguiente valor, si se llega a prescaler 16 y PR2 sigue mayor que 256 es que la frecuencia pwm elegida es demasiado baja para esa velocidad de reloj. Si PR2 < 1 es que la frecuencia pwm es demasiado alta.
Algo así:
for( prescale=1; prescale<=16; prescale *= 4)
{
PR2 = pwm_period/(prescale * tosc * 4)-1;
if (PR2 < 256 ) break; // tenemos un resultado válido
}
Para calcular la frecuencia real:
pwm_freq_actual = 1/((PR2 + 1) * osc_period * 4 * prescale)
Y el máximo valor de duty:
duty_Max = pwm_period / (tosc * prescale)
Para T2CON:
Bits 0 y 1 configuran el prescaler.
Bit 2 activa el Timer2.
CCPR1L:
Guarda los 8 bits más significativos de duty.
CCP1CON:
Bits 5 y 4 guardan los 2 bits menos significativos de duty.
Bits 0 a 3 configuración del módulo CAPTURE/COMPARE/PWM:
11xx = modo PWM
Creo que más o menos eso es todo.
Todo parte de la formulita que puedes encontrar en los datasheet de cualquier Pic:
PWM Period = [(PR2) + 1] • 4 • TOSC • (TMR2 Prescale Value)
Se despeja PR2 y te queda esta formulita:
PR2 = (pwm_period)/(prescale * tosc * 4)-1
Primero se calculan los periodos a partir de las frecuencias
tosc = 1/fosc;
pwm_period = 1/pwm_freq;
Y ahora se empiezan a darle valores al prescaler 1, 4, 16 y si PR2 > 256 se pasa al siguiente valor, si se llega a prescaler 16 y PR2 sigue mayor que 256 es que la frecuencia pwm elegida es demasiado baja para esa velocidad de reloj. Si PR2 < 1 es que la frecuencia pwm es demasiado alta.
Algo así:
for( prescale=1; prescale<=16; prescale *= 4)
{
PR2 = pwm_period/(prescale * tosc * 4)-1;
if (PR2 < 256 ) break; // tenemos un resultado válido
}
Para calcular la frecuencia real:
pwm_freq_actual = 1/((PR2 + 1) * osc_period * 4 * prescale)
Y el máximo valor de duty:
duty_Max = pwm_period / (tosc * prescale)
Para T2CON:
Bits 0 y 1 configuran el prescaler.
Bit 2 activa el Timer2.
CCPR1L:
Guarda los 8 bits más significativos de duty.
CCP1CON:
Bits 5 y 4 guardan los 2 bits menos significativos de duty.
Bits 0 a 3 configuración del módulo CAPTURE/COMPARE/PWM:
11xx = modo PWM
Creo que más o menos eso es todo.
Última edición por Admin el Mar 20 Sep 2011 - 18:45, editado 1 vez
Re: Applets "Utilidades"
Muchas gracias.
Saludos cordiales!!
Saludos cordiales!!
tony8a87- Participante Activo
- Mensajes : 34
Fecha de inscripción : 10/08/2010
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.