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.