cómo obtener un retardo fraccional en picmicrocontroller

0

Estoy usando el reloj de 4MHz para pic18f452. por lo tanto, 250ns es 1 ciclo de instrucción. ¿Hay alguna manera de obtener un retraso de 375ns? usando temporizadores, no puedo definir el conteo en fracciones. uso de la función de retardo inbuit retardo (1) = 250ns retardo (2) = 500ns. si uso el retardo (1.5), seguirá siendo 250ns, ya que solo puedo usar un entero como parámetro de paso.

    
pregunta Yamunashree

2 respuestas

1

Creo que no estás calculando el tiempo de instrucción correctamente. Un reloj de 4 MHz está dividido por 4 fases (captura, decodificación, ejecución, almacenamiento), por lo que tiene un tiempo de instrucción de 1 us, el menor retraso a 4 MHz.

Sin embargo, miré la hoja de especificaciones del PIC18F452 y dice que ejecutará un oscilador externo de DC a 40 MHz. 40MHZ significa un tiempo de instrucción de 100 ns.

4 de esos ciclos te dan exactamente 400 ns. O puede ejecutar 3 ciclos durante 300 ns y usar una red RC para extender otros 75 ns.

Si alternar un pin de E / S, lo mejor que puedes hacer en una ráfaga es 10 MHz / 2.

Tenga en cuenta que podría comprar un buen oscilador de 32 MHz que le daría exactamente 375 ns ciclos de instrucciones, como sugiere @winny.

Esto se cita en la hoja de datos PIC18F4xx :

  

• Operación de hasta 10 MIPs:

     
  • DC - 40 MHz osc./clock input

  •   
  • 4 MHz - 10 MHz osc./clock input con PLL activo

  •   

• Instrucciones de 16 bits de ancho, ruta de datos de 8 bits de ancho

     

• Niveles de prioridad para interrupciones

     

• 8 x 8 Multiplicador de hardware de ciclo único

    
respondido por el Sparky256
0

No estoy familiarizado con las partes 18F, pero ...

Se pueden usar comparadores analógicos para agregar retardo a los pines, y dac podría hacer que esto sea sintonizable. Esto no puede cambiar el tiempo de instrucción sin embargo. Los módulos CLC también podrían ser utilizados

TMR1 se puede sincronizar externamente sin sincronización, por lo que es posible que pueda sincronizarlo con el cristal. Sin embargo, esto no puede cambiar el tiempo de instrucción.

Tienes un PLL de reloj de 4x, por lo que podrías subir un poco el reloj interno. Esto cambiará el tiempo de instrucción.

BTW 4MHz xtal = 1000ns ciclo

    
respondido por el Henry Crun

Lea otras preguntas en las etiquetas