Microcontroladores PIC en Linux.
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Applets "Utilidades"

2 participantes

Ir abajo

Applets "Utilidades" Empty Applets "Utilidades"

Mensaje por Admin Mar 20 Sep 2011 - 14:41

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.

Admin
Admin

Mensajes : 5
Fecha de inscripción : 25/11/2008

https://pic-linux.forosactivos.net

Volver arriba Ir abajo

Applets "Utilidades" Empty Favor con la ecuacion

Mensaje por tony8a87 Mar 20 Sep 2011 - 17:11

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!!!
tony8a87
tony8a87
Participante Activo
Participante Activo

Mensajes : 34
Fecha de inscripción : 10/08/2010

Volver arriba Ir abajo

Applets "Utilidades" Empty Re: Applets "Utilidades"

Mensaje por Admin Mar 20 Sep 2011 - 17:53

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.


Última edición por Admin el Mar 20 Sep 2011 - 18:45, editado 1 vez

Admin
Admin

Mensajes : 5
Fecha de inscripción : 25/11/2008

https://pic-linux.forosactivos.net

Volver arriba Ir abajo

Applets "Utilidades" Empty Re: Applets "Utilidades"

Mensaje por tony8a87 Mar 20 Sep 2011 - 18:40

Muchas gracias.

Saludos cordiales!!
tony8a87
tony8a87
Participante Activo
Participante Activo

Mensajes : 34
Fecha de inscripción : 10/08/2010

Volver arriba Ir abajo

Applets "Utilidades" Empty Re: Applets "Utilidades"

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.