Tengo algunos problemas al intentar ejecutar Fast PWM en los pines OC0A y OC2A.
El código es el siguiente:
TCNT0 = 0;
TCNT2 = 76/2;
OCR0B = 76;
OCR2B = 76;
OCR0A = 10;
OCR2A = 10;
TCCR0A = 0b11000011;
TCCR2A = 0b10000011;
TCCR0B = 0b1010;
TCCR2B = 0b1010;
Supongo que los temporizadores se ejecutarán con una velocidad de 1: 8 desde 0 (y 38 para el temporizador 2) hasta la parte superior definida por los registros OCRxB (76) y cambiarán el estado de los pines en TOP (76) y OCRxA (10).
Eso no funciona: los pines OC0A y OC2A se conectan a los temporizadores (ya que no puedo cambiar su estado al poner 1 y 0 para respetar los bits PORTD y PORTB) pero no hay señal PWM.
Sin embargo, si intento usar OC0 B y OC2 B , todo funciona:
TCNT0 = 0;
TCNT2 = 76/2;
OCR0A = 76;
OCR2A = 76;
OCR0B = 10;
OCR2B = 10;
TCCR0A = 0b00110011;
TCCR2A = 0b00100011;
TCCR0B = 0b1010;
TCCR2B = 0b1010;
Debo tener en cuenta que, en este caso, los pines OC0A y OC2A se pueden accionar directamente cambiando el estado del pin (lo que prueba que no tengo fallas esquemáticas).
Intenté reemplazar los valores de OCRxA y OCRxB en el primer código, pero eso no ayudó:
TCNT0 = 0;
TCNT2 = 76/2;
OCR0A = 76;
OCR2A = 76;
OCR0B = 10;
OCR2B = 10;
TCCR0A = 0b11000011;
TCCR2A = 0b10000011;
TCCR0B = 0b1010;
TCCR2B = 0b1010;
¿Alguna idea?
ACTUALIZACIÓN 1
Lo siento por omitir parte del código. Las definiciones de los puertos van antes del código principal:
DDRB = 0b00001010;
PORTB = 0b11110101;
DDRC = 0b0000000;
PORTC = 0b1111110;
DDRD = 0b01101000;
PORTD = 0b10010011;