¿Es correcto decir que un programa que se ejecuta en una CPU atmega8 (escrito en C incrustado en avr studio) puede ejecutarse de principio a fin en menos de un milisegundo?
Me refiero al código C en el "bucle para siempre" en ATMEGA 8. Para simplificar el análisis del programa, hay un máximo de 40 variables (entero) en él, no en un punto flotante. Todas las instrucciones en el bucle leen los pines, hacen algunas operaciones matemáticas con la entrada de los pines, y luego escriben en los pines, no hay otro bucle en el ciclo para siempre. Las operaciones matemáticas son +, -, * y / y hay un máximo de 40 variables. Todos los demás códigos pueden tomarse como instrucciones de decisión, por lo que es solo una secuencia de instrucciones en el bucle para siempre y no saltar en ningún lugar. Así que las instrucciones se procesan en secuencia y el programa no se detiene. También asumimos que dicho programa llena toda la memoria del programa para un programa en C.
El atmega8 funciona a 8Mhz (8 millones de ciclos de máquina por segundo) con el reloj incorporado, por lo que parece razonable decir que en 1 ms un programa en C ejecutará al menos unos cientos de veces, si no es un número masivamente grande.
¿O necesito usar un cristal para decir que se ejecutará de principio a fin al menos una vez en 1 ms?
La respuesta no es obvia para mí.
Si no puede calcular la respuesta, ¿cuál es una buena suposición?
8 mhz significa 8000 instrucciones de código de máquina en 1 ms. Entonces, la pregunta es si el programa (de la forma anterior) se ejecuta más lentamente, ¿llevará más de 8000 instrucciones hacer el ciclo una vez que esté en 1 ms? Esto parece razonable para los guerss de que esto es cierto.
Para usar una analogía, en algunos motores del juego se ofrece la posibilidad de ejecutar el ciclo para siempre a 60 veces (o cuadros) por segundo como mínimo, con cualquier código codificado para el juego en el circuito por el programador