18f2550 PWM transmision serial

Holas como estamos espero que bien, miren la verdad es que necesito ayuda en lo siguiente, quiero obtener una señal PWM de un pic 18f2550, este contiene 2 modulos especiales para este proposito, CCP1 Y CCP2, el problema que tengo es que no se como inicializarlos como tal, ya que estos ademas son puertos...
RC1/T10SI/CCP2/UOE
RC2/CCP1

Lo debo hacer en lenguaje C, pero la verdad solo me manejo con lo básico de este lenguaje.

Lo otro ademas es iniciar el puerto serial para trasmitir y recibir datos, el pic trae uno por defecto, pero por ahi he oido que cualquier puerto puede ser usado para este proposito, solo lo debo indicar en la programacion, es tan asi?..un saludo y gracias de antemano.
 
2 cosas:

1) el pwm se puede generar incluso en integrados que no tengan incluido un modulo para tal fin

2) la transmisión serie es solo un monton de bits yendo y viniendo uno detrás del otro, se puede hacer por cualqueir puerto...

Como ultima recomendación: el pwm no se puede transmitir por comunicación serie...porque el pwm en sí es un tipo de codificación en que varía el ancho del estado logico alto y bajo, por ende, los bits de la comunicación serie serían todos diferentes, y a velocidades diferentes...y no se transmitiria nada.
 
gracias por responder..la verdad es que quiza me malentendiste.. quiero hacer pwm mediante 2 puertos especificos, los que mencione el CCP1 y CCP2, obviamente generar el codigo en c,lo de la comunicacion serial lo quiero para cualquier otro puerto diferente.

he investigado el datasheet del 18f2550 y la verdad es que no entendi nada de como obtener la pwm desde los CCPX..
un saludo
 
Depende mucho del compilador en el que etes trabajando, en ccs, por ejemplo se inicializan los modulos con las siguientes instrucciones:

setup_timer_2(T2_DIV_BY_4, 255, 1); aca se determina el valor de la frecuencia (depende de la velocidad del bus), y el numero de bits de resolucion del pwm.

setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);
activan los modulos pwm del dispositivo

y simplemente con las instrucciones

set_pwm1_duty(variable1*);
set_pwm2_duty(variable2*);

*variable1 y variable2 son proporcionales al ancho de pulso deseado y al numero de bits con el que trabaje el modulo pwm ejemplo:

set_pwm1_duty(10);
set_pwm2_duty(175);
 
gracias, la verdad es que por ahi leyendo me dice que debo inicializar el valor del Timer2 es asi..o no es necesario, lo otro relevante es que estoy utilizando un cristal de 20Mhz , ya que no he sabido como utilizar el oscilador interno, me equivoco en los fuses...saludos y gracias
PD :Estoy utilizando el CCS..asi que gracias
 
Si, el timer 2 es la base del pwm, para el 18f2550, hay que tener mucho cuidado, debido a que utiliza un pll para el usb, el oscilador se debe cuadrar muy bien
 
El oscilador interno se utiliza con la linea #fuse INTRC_IO, luego declaras normalmente la velocidad del reloj, puedes usar 8Mhz, 4Mhz, y alguna velocidad más que admite el oscilador interno:
#use delay(clock=8000000).
 
gracias por su ayuda...la verdad he logrado generar una pwm con el CCS, el problema da que necesito un periodo de tiempo de a lo minimo 20 ms, donde el tiempo alto sea solo 1,5 ms, mi problema se da que para generar este tipo de señal, necesito una frecuencia de 50 Hz, [para obtener un periodo de 20 ms], sin embargo he probado distintos metodos con [oscilador interno, externo de 4 Mhz o 20 Mhz y no logro dar con la frecuencia]. la minima es de 200Hz. y con ello obtengo una señal con un periodo de 0.8 ms
En resumen quiero obtener una señal periodo de 20 ms.
 
Atrás
Arriba