¿Qué es exactamente una resolución de contador?

0

Estoy usando STM32F411CE. Tiene 2 tipos de contadores, un tipo tiene una resolución de contador de 16 bits, mientras que el otro tiene una resolución de 32 bits. ¿Cuál es exactamente la diferencia? Supongo que será mejor tomarlo con una resolución mayor.

EDIT: Entonces, ¿qué va a ser exactamente la ventaja de una resolución mayor? ¿Podré generar PWM más precisos?

    
pregunta Lugi

4 respuestas

4

Esto simplemente se refiere al valor máximo de conteo. Depende de lo que esté contando, pero con frecuencia es posible preescala la entrada al contador (por ejemplo, incrementarlo cada 256 ciclos de reloj en lugar de cada reloj). Si usa un preescalador, todavía puede contar intervalos de tiempo grandes utilizando un contador con menos bits, pero la precisión se reducirá (el intervalo más pequeño será el reloj preescalado, en lugar del reloj original).

Si necesita una fracción precisa, sin potencia de dos, más bits de conteo lo hacen más fácil. Si se necesita menos precisión, un contador "más barato" estará bien (y el fabricante cambia la complejidad periférica proporcionada por el costo y el consumo de energía).

    
respondido por el Sean Houlihane
2

Son caballos para cursos, es decir, depende de lo que quieras hacer.

Un contador de 16 bits contará de 0 a 65535, un contador de 32 bits contará de 0 a más de 4G, pero requerirá más transferencias para leer.

En general, use el contador más pequeño que pueda para cualquier tarea, para ahorrar los más grandes para cuando necesite el tamaño adicional.

Dependiendo de cómo se implementen, es posible que se especifiquen que los contadores más cortos puedan contar más rápido que los grandes (tiene que ver con cómo se implementa internamente el acarreo).

    
respondido por el Neil_UK
2

Un contador de 16 bits puede contar hasta \ $ 2 ^ {16} \ $ = 65,536 sin firmar o con -32768 a 32767 firmado.

Un contador de 32 bits puede contar hasta \ $ 2 ^ {32} \ $ = 4,294,967,296 sin firmar o -2,147,483,648 a 2,147,483,647 firmados.

Use el de 32 bits si necesita rastrear números mayores a \ $ 2 ^ {16} \ $.

  

EDIT: Entonces, ¿qué va a ser exactamente la ventaja de una resolución mayor? ¿Podré generar PWM más precisos?

Todavía estás confundido acerca de la "resolución". La resolución de un contador es de un bit, independientemente de la altura del contador. El término se usa de manera diferente para las conversiones de ADC o DAC en las que el convertidor puede "resolverse" en un bit en \ $ 2 ^ 8 = \ frac {1} {256} \ $ de escala completa, por ejemplo.

Su resolución PWM estará determinada por la función de salida PWM en los pines relevantes de ese chip.

Los contadores son (es probable que lo sean, pero no he leído la hoja de datos) solo son contadores de propósito general. A veces, 65,535 no es suficiente, por ejemplo, si cuenta milisegundos, se ajustará a 65,535 s, por lo que su código solo durará un minuto.

    
respondido por el Transistor
1

Es como un reloj / cronómetro que solo cuenta los segundos hasta un minuto o un reloj que cuenta los minutos y los segundos pero no las horas. Seguro que puedes usar un temporizador de cocina como un reloj de alarma, pero debes configurarlo y despertarte cada hora aproximadamente, porque solo tiene esa resolución. O puede obtener un reloj que puede medir horas, minutos y segundos.

Otra forma de ver esto es una cinta métrica que tiene tictac hasta una décima de pulgada, en comparación con una cinta métrica que solo tiene tics cada pulgada o una que solo tiene tictac en cada pie. Debido a que la regla para esa cinta métrica es que solo puede soportar una resolución de N unidades de distancia por tic.

Un temporizador de 16 bits se desplaza después de 65536 tics del temporizador. Un 32 bit cada 4 billones y algunos. Más garrapatas en la cinta métrica vs menos. Lo que no puede hacer con el temporizador de su cocina es cambiar la unidad de tiempo, no puede hacer un temporizador de cocina que haga minutos y segundos y cambiar las unidades de tiempo a horas y minutos, no tiene una opción para un prescaler. Muchos de estos dispositivos pueden cambiar un preescalador, tal vez puede cambiarlo de dividir por 1 a dividir por 4. Así que el temporizador de 16 bits ahora puede medir 65536 veces 4 unidades de tiempo pero solo puede representar eso en unidades de cuatro relojes, tipo De como una cinta métrica con pulgadas pero no 16ths. Si solo tuviera un temporizador de 20 bits, podría tener la resolución y la distancia.

Diga que el reloj que alimenta a los periféricos es 1Mhz, que es una resolución de 1 microsegundo. Cada 1 microsegundo el temporizador marca. Con un temporizador de 16 bits con un preescalador de división por 1, puede medir en unidades de 1 microsegundo, hasta 65536 microsegundos, pero ese temporizador se transfiere cada 0.065536 segundos, por lo que si desea esa resolución pero durante más tiempo necesita más bits, se puede manejar con interrupciones e incrementando algunos otros conjuntos de bits, un registro en una ubicación de memoria, pero eso es simplemente agregar más bits. Si tiene un temporizador de 20 bits a 1Mhz y un prescaler de dividir por 1, todavía puede tener la precisión de 1us, pero puede pasar ahora a 1.0486 ... segundos. Para que pueda medir las cosas hasta un segundo con una precisión o resolución de 1us. Un temporizador de 32 bits 4295-ish segundos antes de que se reinicie, por lo que tenemos una resolución de más de una hora. Con este ejemplo, el temporizador de 16 bits, si en cambio usa un prescaler dividido por 4, ahora puede medir hasta 0.2621 ... segundos pero con una resolución de 4us.

Entonces, a partir de su ejemplo de PWM, puede soportar periodos de pwm más largos con la misma resolución con más bits. usando el ejemplo anterior de 1Mhz, no podría tener un período de pwm de 1 segundo con una resolución de 1us utilizando el temporizador de 16 bits, o bien podría tener un período de pwm de 1 segundo con una resolución de 16us utilizando el temporizador de 16 bits o podría tener su pastel y comérselo también, un período de pwm de 1 segundo con una resolución de 1us.

Más marcas en la regla significa que puede tener una cinta métrica más larga Y una resolución de 16 pulgadas (o resolución de mm pero más metros de cinta en general). Menos marcas en general significa menos precisión o menor longitud general.

Este es un stm32, no hay ninguna penalización por leer un temporizador de 32 bits en comparación con un bit de 16 bits, si es que la medición de 16 bits cuesta más, ya que los registros del brazo son de 32 bits y el código generado deberá firmar la extensión o la máscara.

    
respondido por el old_timer

Lea otras preguntas en las etiquetas