¿Cuáles son las diferentes funciones de los tres pines de salida pwm del chip ATmega8?
OC1A y OC1B usan el temporizador 1, y OC2 usa el temporizador 2.
La diferencia esencial es que OC1A y OC1B usan el temporizador 1 para simular la salida PWM, mientras que OC2 corresponde a La cosa es Para saber que el temporizador 2 se puede configurar como salida PWM, puede consultar la hoja de datos.
La generación de PWM rápido consiste en establecer primero un valor SUPERIOR y luego un valor de comparación. Luego, el contador comienza a contar, como por ejemplo manteniendo la salida de 1. Cuando el conteo alcanza el valor de comparación establecido, el contador. el nivel se vuelve 0, se mantiene y luego continúa contando hasta ARRIBA
El nivel cambia a 1 nuevamente y el ciclo se repite
1.T/C1 puede generar 2 canales (OC1A). es PB1 OC1B es PB2). T/C2 genera un canal (OC2 es PB3). Hay cuatro registros que deben configurarse para el temporizador/C1: TCCR1A TCCR1B (estos dos registros juntos determinan). el método de generación de las dos señales PWM, frecuencia y valor TOP) OCR1A (este valor/TOP es el ciclo de trabajo) OCR1B (establece el ciclo de trabajo del segundo PWM)
2. es necesario configurar el temporizador/C2 TCCR2 (de manera similar, este registro determina el método de generación, la frecuencia y el valor SUPERIOR de la tercera señal PWM) OCR2 (este registro determina el ciclo de trabajo)
Lo anterior solo puede generar unos pocos Señal PWM de frecuencia fija (el ciclo de trabajo se puede ajustar a voluntad), y las frecuencias de los dos primeros canales son las mismas. Si desea generar PWM con la frecuencia que desea, debe usar OCR1A para establecer el valor SUPERIOR de. OCR1B y OCR1B generarán PWM. En este momento, solo OCR1A puede generar PWM con un ciclo de trabajo de 50.
El siguiente es un programa que uso ATmega8 para generar PWM de tres canales con una frecuencia. de 31,25K y un ciclo de trabajo de 1/3 1/2 2/3
#include lt; avr/io.hgt
void main(void)
p>{
PORTB=0x00;
DDRB=0x0E
// Inicialización T/C1
TCCR1A= 0xA1;
TCCR1B=0x09; //Se borra al hacer coincidir, SUPERIOR: 255, frecuencia: 8M/256=31.25K
OCR1A=85;
OCR1B=128; //Ciclo de trabajo: 1/2
//Inicialización de T/C2
TCCR2=0x69 //Se borra al coincidir, TOP : 255, frecuencia: 31,25K
OCR2=170; //Ciclo de trabajo: 2/3
mientras
}
¡Este programa se refiere a nuestro foro avr!