No se puede configurar en modo PWM OCRA rápido

3

Intentando tener el modo PWM rápido cuando TOP == ORCA .

FuncionabienconOCAtoggle(midiendolafrecuenciacorrecta),peronofuncionaenmodonoinversor.

cli();

// Fast PWM Mode 
TCCR2A = 0;
TCCR2A |= _BV(WGM20) | _BV(WGM21) | _BV(COM2A0) | _BV(COM2A1); // Inverting mode fails
//TCCR2A |= _BV(WGM20) | _BV(WGM21) | _BV(COM2A1); // Non-Inverting mode fails
//TCCR2A |= _BV(WGM20) | _BV(WGM21) | _BV(COM2A0); // Toggle mode OK

// Prescaler set to 1024 (p.162)
TCCR2B = 0;
TCCR2B |= _BV(CS20) | _BV(CS21) | _BV(CS22) | _BV(WGM22);

// Enable interrupt on counter match
TIMSK2 |= _BV(OCIE2A);

OCR2A = 127;

sei();

Actualizar con más información:

MCU = Atmega328. En el modo de no inversión acabo de obtener un 1 estable en la salida y el modo de inversión da un 0 lógico. Estaba esperando ver la frecuencia

$$ F = 16 * 10 ^ 6 / (1024 * 127) = 123Hz $$

    
pregunta Pablo

2 respuestas

3

Me responderé yo mismo. El pin OC2A no está generando frecuencia, porque OCR2A está ocupado manteniendo el valor TOP. Puede contener tanto el valor TOP como el valor de comparación de salida. Así que debería usar OCR2B.

    
respondido por el Pablo
0

Para resolver el problema de tu controlador, prueba esto:

Acabo de usar el ejemplo del código fuente de

enlace

y funcionó. Pero gracias a tus explicaciones, entiendo por qué funciona ;-)

    
respondido por el David

Lea otras preguntas en las etiquetas