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;
Así que 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 poniendo 1 y 0 respetando los bits PORTD y PORTB) pero no hay señal PWM.
Sin embargo, si trato de usar los pines 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;
Es necesario tener en cuenta que, en este caso, los pines OC0A y OC2A se pueden controlar directamente cambiando el estado del pin (lo que prueba que no tengo fallas esquemáticas).
Traté de 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?
ACTUALIZAR 1
Perdón por omitir parte del código. Las definiciones de puertos van antes del código principal:
DDRB = 0b00001010;
PORTB = 0b11110101;
DDRC = 0b0000000;
PORTC = 0b1111110;
DDRD = 0b01101000;
PORTD = 0b10010011;
Malas noticias para mí:
'No obtendrá un PWM útil en el pin OCnA en un AVR8 si selecciona un modo que tiene OCRnA como TOP. Como ha descubierto, puede usar OCR0A como TOP y OCR0B para el servicio y la salida en OC0B. O use un modo con un TOP fijo, y luego puede obtener PWM en ambos pines OC.
Esto lo recibí en el foro AVRFreaks de un miembro.
Entonces parece que no podré configurar el PWM para que funcione en pines OCxA con registros OCxA como valor TOP. :(((
usuario103993
romano matveev
usuario103993
romano matveev
usuario103993
romano matveev