Cálculo del retardo requerido antes de que se reconozca el valor del pin en 8051

1

Miré lo siguiente con la esperanza de que mi pregunta sea respondida:

podemos usar 8051 pines como entrada y salida a la vez?

Pero la respuesta fue vaga. Declaró:

"aunque hay un transistor de fuente 'fuerte' que se enciende brevemente cuando el pin se cambia de '0' a '1' para cargar la capacidad parásita conectada al pin rápidamente"

Esto me sugiere que tan pronto como establezca un valor de pin GPIO alto en mi AT89C2051 (asumiendo que lo externo conectado es alta impedancia o nada), hay un retardo que necesito en mi código antes de que el pin esté reconocido oficialmente como alto.

Incluí un esqueleto básico de mi código a continuación. Básicamente, un pin "ack" sigue el reloj cuando se completan las operaciones. Si ese pin "ack" es forzado bajo externamente, entonces se fuerza un bit de reinicio. El problema es que no sé cuánta demora incluir en mi programa.

Lo que sí sé es que cada "nop" tarda aproximadamente 0.54uS en ejecutarse porque estoy usando un cristal de 22.1184 MHz en mi AT89C2051.

clr 20h ;turn reset off
clr P1.1 ;turn ack off
setb P1.2 ;allow clock as input only

mainloop:
    main1:
      acall someasyncfunction
      clr P1.1     ;ack=current clock state
    jnb P1.2,main1 ;wait till clock switches

    netmain2:
      acall someasyncfunction
      setb P1.1          ;ack=current clock state
      ;how many nops???
      jb P1.1,notrip     ;If user pulls ack low then set reset
        setb 20h
      notrip:
    jb P1.2,netmain2    ;wait till clock switches

    acall postprocessing
sjmp mainloop

Mi estimación inmediata para el cálculo es encontrar el mayor valor de capacitancia mencionado en la hoja de datos y multiplicar por la resistencia conectada al pin GPIO (o si no hay ninguna resistencia conectada, multiplicar por lo que sea la resistencia interna)?

También estoy alimentando la cosa con 5VDC regulado.

¿Alguien sabe los cálculos para esto, así que sé el número mínimo de "nop" que necesito agregar entre cuando el pin se establece internamente alto y cuándo se pueden leer datos válidos?

Y, por favor, sea más específico que solo una 2 * R * C porque necesito saber la R y la C a las que se refiere.

    
pregunta Mike

1 respuesta

0

El enfoque mucho más productivo de esto, porque los valores de R y C para cada placa y diseño son diferentes, es observar las formas de onda en un osciloscopio. Debería poder medir el pin del puerto que va alto en relación al pin XTAL2 para inferir la relación entre el flujo de instrucciones del programa y el cambio de estado del pin.

También puede ser informativo tener un programa de prueba compuesto que solo alterna el pin de puerto alto y bajo y luego lo compara con el XTAL2 para ver si hay una diferencia entre las dos transiciones.

Si no tiene acceso a un osciloscopio, debe obtener uno. Cuando se trabaja en electrónica integrada es una herramienta casi esencial.

Por último, permítame comentar que el retraso necesario para su ACK podría ser tan simple como probar un NOP. El FET interno dinámico que mejora el tiempo de aumento de la salida tiene una impedancia bastante baja y cargará la capacitancia externa en las pocas decenas de picofaradios muy rápidamente. Si recuerdo correctamente, el FET de aceleración solo se mantiene durante un ciclo de reloj (quizás 2).

    
respondido por el Michael Karas

Lea otras preguntas en las etiquetas