Cálculo del retardo

2

Quiero crear un retraso de milisegundos. Pero, no sé cómo hacerlo porque no podría usar las siguientes tres variables en una ecuación, si las hay. ¿Puedes ayudarme a crear un retraso de milisegundos?

Tengo algún problema que considerar;

  • el kit de desarrollo funciona con z mhz
  • La herramienta

    , que se utiliza para codificar en la computadora, se ejecuta con y mhz

    f :
    
      movlw   X
      movwf   variable_temp
    loop: 
      nop 
      decfsz  variable_temp, 1
      goto    loop
    
pregunta

1 respuesta

3

Este tipo de retardo se escala de forma lineal inversa con la velocidad del reloj siempre y cuando no haya interrupciones o ejecuciones similares (es decir, doble velocidad de reloj y mitades de retardo).

  • Si una demora toma 1 mS en Z Mhz, tomará Y / Z mS en Y Mhz.

  • Si necesita un conteo de bucles X para retrasar, por ejemplo, 1 ms en Z MHz
    entonces necesitará X * Y / Z bucles en Y MHz.

Esto es útil: Rutinas de retardo de PIC .

Para calcular cuántos bucles se necesitan, primero debe saber el número de ciclos de reloj o de Estados Unidos por instrucción a la velocidad de reloj utilizada.

Para el PIC que has mostrado, la mayoría de las instrucciones toman una "unidad" de tiempo.
 Esto variará entre las familias de procesadores.
 Algunos toman 4 ciclos de reloj de cristal por instrucción, otros toman 1, otros toman más.
 Supongamos que sabe Tw = tiempo de unidad de instrucción básica en W Mhz.

En un PIC, la mayoría de las instrucciones se ejecutan en Tw en W Mhz donde Tw es generalmente 4 / F_Mhz en los PIC de 14 bits de estilo más antiguo. .
PERO compruebe esto para el procesador que está utilizando.

En un PIC, la instrucción de salto de decfsz toma una unidad de tiempo si la prueba falla (el registro no es cero) y dos unidades de tiempo si la prueba pasa, el registro es cero y se produce un salto.   Algunos procesadores pueden tomar una unidad si la prueba falla o pasa uno o dos si falla o pasa o ... - verifique qué se aplica al procesador que está utilizando.

Así que aquí el bucle de tiempo principal es 3 unidades de tiempo generalmente y 4 unidades solo cuando el registro llega a cero.

Calcule el tiempo de la unidad básica (por ejemplo, para la instrucción nop) a la velocidad de reloj W Mhz y una mS necesita un conteo de x en 'movlw x' de

  • cuenta = 1000 / Tw / 3

    donde Tw es el tiempo para una instrucción nop y el 3 se debe a 3 x instrucciones de longitud Tw individuales en el bucle.

Si un NOP tomó 0.5 uS entonces

  • Cuenta = 1000 / 0.5 / 4 = 500.

Como un contador de 8 bits solo puede contar hasta 255, si variable_temp es de 8 bits, esta cuenta es demasiado grande y se necesita un contador de doble byte.

Algo más parecido a continuación. Aquí tienes loops internos y externos. Cada bucle interno se ejecuta para K_Count_Low y el bucle interno se llama K_Count_High times. Los contadores son de 8 bits, por lo que se deben establecer en < = 255.
 El retraso máximo es ~~~ = 255 x 255 x 3 x Tw.
Manejo de bucles externos, nops incluidos, etc., cambian esto. Ver exactamente cómo es parte de aprender cómo funciona todo esto.

    movlw   K_count_High  
    movwf   Counter_High  
     

LoopOuter:

     movlw   K_count_Low
     movwf   Counter_Low
     

LoopInner:

     nop   
     decfsz  CounterLow, 1   
     goto    LoopInner  

     decfsz  CounterHigh, 1   
     goto    LoopOuter  

     Call "We are the Borg of Pentium. Division is futile! We will approximate you"  

E & OE.

    
respondido por el Russell McMahon

Lea otras preguntas en las etiquetas

Comentarios Recientes

m trans e - Trans fi cation - ex om e / Animate ives Development - Transi tational Initiations 1 2 mtt} trans LHere fi resulta en indecidibilidad, posible mutabilidad y error de operación, esencialmente incompatible con Diseño de tratamientos específicos de disipación temporal. Una vez más, nos gustaría ver el algoritmo creado, no solo usarlo por el autor de la primera sección.§ 5.3 Operaciones experimentales de diseño basadas en la lectura aleatoria de determinaciones [ed. notas] Con los componentes mejorados... Lees verder