¿Se pueden configurar pines digitales del PIC18F2550 como PWM?

Cordial saludo.
Tengo una duda, estoy haciendo un proyecto con el microcontrolador PIC18F2550, en su datasheet dice que tiene dos modulos PWM (CCP1 y CCP2) y quisiera saber si se puede configurar otros pines digitales como PWM tambien, ya que necesito 4 señales de salida.
18F2550%20PINES.jpg

Agradezco vuestra colaboración. ...
 
Si se puede, pero tendrías que hacer el PWM por software y puede ser por cualquier pin I/O.
 
Si se puede, utilizando timers o delays, tendrias que calcular los tiempos, otra opción serian los PIC16f877 o PIC16f887, los cuales traen una opción para multiplexar sus salidas CCP/PWM (creo que igual lo trae el PIC18F4550), si pusieras que proyecto harás podriamos darte ideas...
 
Pero cundo hagas un pwm por delays ya sabes que no puedes hacer absolutamente nada mas
Si necesitas muchos pon una interrupción cíclica y un contador. Activas y desactivado pines según la cuenta.
Cuanto más lento sea el pwm mejor para tu sistema, .as tiempo tendrás para otras cosas.
 
Para no matarte la cabeza, si o si utiliza la version de 40 pines del 18F o los 16F que te mensione, ya que traen registros especificos para obtener 4-6 salidas de PWM, y no se vera afectado tu código (ya que maneja timers)
 
Solo tiene 2 salidas PWM por hardware y las 2 salidas tienen la misma frecuencia pero puedes ajustar el Duty cycle de cada una.

Lo otro es usar un micro con mas pwm hardware o realizarlos por software.

Si utilizas el modo PWM Enhanced tienes las 4 salidas para controlar motor u otra cosa, pero no puedes ajustar frecuencias diferentes,son salidas complementarias.

Saludos!
 
por software puedes tener los pwm que quieras hasta superar el patillaje del micro

lo unico que lo limita son los ticks de la frecuencia de trabajo del CPU
 
En estas discusiones siempre me acuerdo del más que obsoleto 80c537 con sus 12 líneas controladas por la CCU, todavía no he visto nada parecido, aunque seguramente lo habrá.
 
Estoy realizando un PWM con el PIC18f4550 y he conseguido hacerlo funcionar.
Pero solo consigo activar una salida variando el valor de CCP1CON.
Lo que quiero conseguir es tener tres salidas PWM y luego poder desfasarlas para controlar un motor BLDC.

Adjunto la parte del codigo donde inicializo el PWM:

void PWM_Initialize()
{
PR2 = ("%#x", (_XTAL_FREQ/(PWM_freq*4*TMR2PRESCALE)) - 1);
CCPR1L = 0x1F;
TRISCbits.RC1 = 0;
TRISCbits.RC2 = 0;
TRISDbits.RD5 = 0;
TRISDbits.RD6 = 0;
TRISDbits.RD7 = 0;
T2CON = 0x03;

//CCP1CON = 0b01001100;
CCP1CON = 0b11001100;

TMR2 = 0;
T2CONbits.TMR2ON = 1; //Timer 2 ON
}
 
Atrás
Arriba