Estoy empezando a aprender a programar una foto. Estoy prácticamente enseñándome esto. Estoy usando el pic16f1829. Estoy jugando con los ejemplos y tratando de hacer PWM. Obviamente, funciona y el código está bien. Pero me gustaría (solo para uso futuro y averiguar cómo hacerlo) para que la señal PWM salga de cualquier pin. Actualmente, sale de RC3. He intentado cambiar el TRISC y el LATC a valores diferentes (aún no conozco los términos reales), pero no he tenido ningún resultado. ¿Hay algo en la hoja de datos que me falta al asignar los pines?
void main(void) {
OSCCON = 0b00111000; //500KHz clock speed
TRISC = 0; //all LED pins are outputs
LATC = 0;
//setup ADC
TRISAbits.TRISA4 = 1; //Potentiamtor is connected to RA4...set as input
ANSELAbits.ANSA4 = 1; //analog
ADCON0 = 0b00001101; //select RA4 as source of ADC and enable the module (AN3)
ADCON1 = 0b00010000; //left justified - FOSC/8 speed - Vref is Vdd
//setup the PWM
CCP2CON = 0b00001100; //PWM mode single output
PR2 = 255; //Frequency at 486Hz. Anything over ~60Hz will get rid of any flicker
//PWM Period = [PR2 + 1]*4*Tosc*T2CKPS = [255 + 1] * 4 * (1 / 500KHz) * 1
CCPTMRSbits.C2TSEL = 0b00; //select timer2 as PWM source
T2CONbits.T2CKPS = 0b00; //1:1 prescaler
T2CONbits.TMR2ON = 1; //start the PWM
while (1) {
__delay_us(5); //wait for ADC charging cap to settle
GO = 1; //start the ADC conversion
while (GO) continue; //wait for conversion to be finished
CCPR2L = ADRESH; //put the top 8 MSbs into CCPR2L
CCP2CONbits.DC2B = (ADRESL>>6); //put the 2 LSbs into DC2B register to complete the 10bit resolution
}
}
Como he dicho, el código es un ejemplo directo. ¿Alguien estaría dispuesto a indicarme en la dirección correcta sobre cómo cambiar el pin de salida?
Estoy en este sitio varias veces todos los días, y en lugar de votarme (estoy tratando de poder comentar cosas) simplemente diga "¡aquí en los comentarios está tu respuesta! ¡Ahora borra esta pregunta!" y lo haré.