por qué muchos temporizadores en microcontroladores

0

Estaba revisando los temporizadores en la imagen y descubrí que hay muchos temporizadores disponibles en los microcontroladores. Por ejemplo, una base de tiempo PWM es controlada por Timer2. Mi duda es por qué hay tantos temporizadores? ¿Por qué no puede haber un solo temporizador, por ejemplo, solo el temporizador 1 solo para el microcontrolador completo?

    
pregunta rajesh

2 respuestas

5

Debido a que los sistemas integrados a menudo necesitan generar intervalos de tiempo con muchos periodos o frecuencias diferentes, para cosas como:

  • cronometraje interno
  • muestreo de señales analógicas
  • generar trenes de impulsos (incluido PWM)
  • comunicaciones serie de varios tipos (UART, SPI, I2C, etc.)

Tener temporizadores dedicados para cada uno de estos significa que la operación es más autónoma, y se necesitan menos ciclos de CPU para mantenerlos en funcionamiento.

    
respondido por el Dave Tweed
3

¿Por qué tener solo un temporizador, cuando puedes tener más de uno?

Hay más de un temporizador para diferentes funciones. Algunos temporizadores se aplican únicamente a ciertos periféricos, como ADC, USART, CCPWM, etc. Timer2 podría usarse arbitrariamente para una función, como "comprobar sensor cada x milisegundos", mientras que Timer1 también está trabajando para "enviar datos a otro dispositivo cada segundo." Con más temporizadores, se expande en gran medida la capacidad del diseñador para usar la sincronización del hardware (e interrumpe, muy rápido, muy repetible, muy periódico) en lugar de la muy mala sincronización y la periodicidad de un solo bucle de código principal.

Los temporizadores se utilizan para procesar eventos en un período de tiempo regular (intervalo). Para algunas aplicaciones, esto puede ser necesario. Por ejemplo, si tenía un ADC SAR externo conectado al PIC y la frecuencia de muestreo máxima era x, entonces tendría que esperar un poco de tiempo antes de intentar acceder al dispositivo de nuevo, de lo contrario, se producirá un error. Un temporizador es excelente para esto, ya que el tiempo es muy preciso y regular.

Si este código ADC estuviera en un bucle de código principal con pausas, el tiempo del código sería irregular para cualquier rama que ejecutara más código de lo normal. Por ejemplo, la impresión de caracteres cada segundo en una pantalla llevará tiempo, y en un bucle de código principal, la siguiente lectura de ADC se retrasará. Si se utilizan temporizadores e interrupciones, entonces el tiempo será preciso (siempre que el otro código no tarde más de lo que permiten los temporizadores).

    
respondido por el rdtsc

Lea otras preguntas en las etiquetas