Arduino Precisión debida con micros de funciones

2

Leí en arduino.cc/en/reference/micros que puedo saber la cantidad de microsegundos desde el Arduino Comencé a ejecutar el programa.

En mi placa Arduino Uno de 16 MHz, la función tiene una resolución de cuatro microsegundos y menos con una placa de 8 MHz. Encontré el Arduino Due y tiene una velocidad de reloj de 84 MHz.

¿Podría tener una resolución mejor que 4 μs? Me gustaría tener una precisión con nano segundos.

    
pregunta user34294

3 respuestas

4

El intervalo de tiempo más pequeño que puede medir con el hardware integrado de Arduino Due es de aproximadamente 23.8 nanosegundos.

El intervalo de tiempo más pequeño que puede medir con el hardware integrado de Arduino Uno es de aproximadamente 62,5 nanosegundos.

Temporizadores Arduino Due

Arduino Due utiliza un microprocesador Atmel SAM3X8E Atmel SAM3X8E . Tiene 3 periféricos de contador-temporizador idénticos, cada uno de los cuales tiene 3 canales de temporizador independientes. En la fecha de vencimiento, esta es la mejor forma de medir pequeñas cantidades de tiempo si desea una resolución en nanosegundos. Cada contador de temporizador puede usar diferentes fuentes de reloj como entrada, esto determina los incrementos de tiempo que puede medir el contador de temporizador. La fuente de reloj más rápida es MCK / 2, el reloj maestro (sistema) dividido por 2.

En el Arduino Due, MCK es 84MHz.

Esto significa que el intervalo de tiempo más pequeño que puede medir el contador de temporizador es 2 / 84,000,000 , o alrededor de 23.8 ns .

Puede leer más sobre los contadores de temporizador SAM3X8E en SAM3X8E manual de referencia , sección 37, página 868.

Aquí hay una biblioteca de código abierto que proporciona una buena API para los contadores de tiempo de Arduino Due . Aquí hay una explicación bastante clara de cómo funcionan los temporizadores de SAM3X8E , una alternativa a la lectura del manual de referencia de SAM3X8E. .

También puede escribir código de ensamblaje ARM para medir las duraciones en nanosegundos, pero es probable que los contadores de temporizadores tengan una resolución más alta.

Temporizadores Arduino Uno

El Arduino Uno utiliza el microprocesador Atmega328. Tiene dos temporizadores / contadores que pueden usar diferentes fuentes de reloj como entrada, la fuente más rápida es FCLK_I / O (reloj del sistema, 16MHz). Esto significa que el intervalo más pequeño que puede medir es 1 / 16,000,000 segundos o 62.5 nanosegundos.

Puede leer más sobre los temporizadores en la Hoja de datos de AVR , Sección 16, página 141. O consulte este resumen de cómo usar los temporizadores nativos AVR .

    
respondido por el Adam F
1

Arduino Uno / Nano micros () funciona (resolución 4us) y mi función de reemplazo con resolución 0.5us:

No puedo responder la pregunta sobre la precisión de la función micros () de Arduino cuando se usa en un Due. Sin embargo, quería presentar mi trabajo sobre los Arduinos usando el microcontrolador Atmega328 (como el Uno, Nano, Ethernet, etc.), ya que puede ser útil para otros también.

Aquí está: "Escribí un" libary "para obtener una precisión de 0,5us en una función de reemplazo de" micros () ", de modo que puedo obtener resultados repetibles al leer una señal PWM o PPM, hasta 1us. en Internet y no pude encontrar algo comparable (o fue fácil de usar, y mantuvo la capacidad de Arduino para escribir señales PWM a través de Servo Libary), así que creo que esta es mi primera contribución real al mundo de Arduino y Radio Control. "

El código se puede descargar aquí: enlace

    
respondido por el Gabriel Staples
0

No puedo decir nada sobre las bibliotecas de arduino, pero cada procesador ARM Cortex-M tiene un temporizador SysTick que se incrementa en cada ciclo de reloj del sistema. Trabajo con el Cortex-M3, que tiene un contador de 24 bits para SysTick, por lo que puede medir fácilmente la duración de varios milisegundos con una precisión de un período de reloj, o aproximadamente 12 ns para un reloj del sistema de 84 MHz. El uso normal de SysTick es configurar interrupciones periódicas para realizar múltiples tareas.

    
respondido por el Joe Hass

Lea otras preguntas en las etiquetas

Comentarios Recientes

para un fácil acceso 3G + dos entradas analógicas analógicas ousbBase 3.3v Batería de iones de litio de 4500 mAh Wi-Fi, GPS, NFC, GPS solar y códigos AR incluidos Si tiene alguna pregunta, puede ponerse en contacto conmigo a través de nuestro Página "Contáctenos" Consulte estas características a continuación :( Haga clic para ver las características) Transmisor Con compatibilidad QRP en su dispositivo, obtenga más información aquí: http://interorg.github.io/get-RPSpecifications Nombre del modelo: Marlin... Lees verder