Esas no son las únicas frecuencias disponibles para las señales PWM. Sin embargo, son las frecuencias determinadas por el preescalador aplicado (que puede cambiar fácilmente como se detalla a continuación).
Cada uno de los 3 pares de pines PWM está vinculado a un temporizador, cada uno de los cuales tiene su propia frecuencia base, de la siguiente manera:
- Los pines 5 y 6 están emparejados en el temporizador 0, con una frecuencia base de 62500Hz
- Los pines 9 y 10 están emparejados en el temporizador 1, con una frecuencia base de 31250Hz
- Los pines 3 y 11 están emparejados en el temporizador 2, con una frecuencia base de 31250Hz
Luego, cada conjunto de pines tiene una serie de valores de preescalador que se pueden elegir, que dividirán la frecuencia base de ese par de pines. Los valores disponibles del preescalador son:
- Los pines 5 y 6 tienen valores de preescalador de 1, 8, 64, 256 y 1024
- Los pines 9 y 10 tienen valores de preescalador de 1, 8, 64, 256 y 1024
- Los pines 3 y 11 tienen valores de preescalador de 1, 8, 32, 64, 128, 256 y 1024
Las diferentes combinaciones producen diferentes frecuencias en un pin PWM dado. Observe que el temporizador 2 (vinculado a los pines 3 y 11) tiene más valores de preescalador disponibles, lo que resulta en más frecuencias disponibles.
Ahora, por qué el temporizador 2 es diferente, esa es una pregunta separada.
Editar: Aquí hay una lista de posibles frecuencias PWM por pin (de este artículo ):
Para los pines 6 y 5 (OC0A y OC0B):
- Si TCCR0B = xxxxx001, la frecuencia es de 64 kHz
- Si TCCR0B = xxxxx010, la frecuencia es de 8 kHz
- Si TCCR0B = xxxxx011, la frecuencia es de 1 kHz (este es el valor predeterminado del gestor de arranque Diecimila)
- Si TCCR0B = xxxxx100, la frecuencia es 250Hz
- Si TCCR0B = xxxxx101, la frecuencia es 62.5 Hz
Para los pines 9, 10, 11 y 3 (OC1A, OC1B, OC2A, OC2B):
- Si TCCRnB = xxxxx001, la frecuencia es de 32 kHz
- Si TCCRnB = xxxxx010, la frecuencia es de 4 kHz
- Si TCCRnB = xxxxx011, la frecuencia es 500Hz (este es el valor predeterminado del gestor de arranque Diecimila)
- Si TCCRnB = xxxxx100, la frecuencia es 125Hz
- Si TCCRnB = xxxxx101, la frecuencia es 31.25 Hz
TCCRnB
es donde establece los bits de preescalador para el temporizador n
, reemplazándolos n
por 0, 1 o 2, según el temporizador que desee configurar. Si aún no está seguro acerca de las operaciones bit a bit, lea este tutorial de matemáticas de bits .
Mis fuentes:
Tenga en cuenta que parece haber divergencia en esas fuentes sobre si los pines 9 y 10 tienen el mismo comportamiento que 5 y 6 o 3 y 11, pero de todos modos se entiende la idea. Estoy leyendo el datashet para tratar de descubrir cuál es el correcto, o si esto es una diferencia entre los tableros.