Velocidad máxima confiable del pin GPIO dado solo capacitancia y sin resistencia

0

Busqué información sobre mi microcontrolador AT89S52 y parece que no puedo calcular la velocidad máxima en la que puedo operar un pin GPIO.

Lo estoy ejecutando con un reloj de 22.1184 MHz, y a veces me doy cuenta de que cuando modifico un valor de puerto, no se actualiza de inmediato sin agregar varias declaraciones NOP, pero no quiero adivinar. Quiero saber los valores para poder ajustar el código.

Esta es información de la hoja de datos que obtuve:

Enumera la capacitancia del pin, pero no veo nada sobre la resistencia del pin. ¿Cómo calculo la resistencia aquí? ¿O hay otra forma de calcular la velocidad máxima de procesamiento de pin confiable?

    
pregunta

1 respuesta

1

La hoja de datos especifica la corriente de salida alta de 60uA a 2.4V para los puertos 1-3 y 800uA para el puerto 0 (pero solo en el modo de bus externo). A partir de esto se pueden calcular las resistencias equivalentes. 5.0V-2.4V = 2.6V. 2.6V / 60uA = ~ 43k & ohm ;. 2.6V / 800uA = ~ 3.3k & ohm ;.

En el modo de E / S, el puerto 0 es un drenaje abierto, por lo que tendrían que aplicarse resistencias pull-up externas. ¿Cuál es la resistencia de pull-up de valor más bajo que aún permite que el pin baje a la lógica TTL 0? Los pines del puerto 0 pueden hundir 3.2mA a 0.45V. 5V-0.45V = 4.55V. 4.55V / 3.2mA = ~ 1.4K & ohm ;. Los otros pines del puerto pueden hundir 1,6 mA, por lo que podrían tener resistencias de arranque externas tan bajas como ~ 2.8k & ohm ;.

El 89S52 necesita 12 relojes por ciclo de máquina. A 22.1184MHz esto corresponde a 0.543us. 43k & ohm; x 10pF = 0.43us, por lo que incluso los débiles pull-ups en los puertos 1-3 deberían ser lo suficientemente fuertes como para alternar a la velocidad máxima. Sin embargo, cualquier cosa conectada a un pin (incluso una sonda de alcance) tendrá su propia capacitancia que aumentará el tiempo de subida.

    
respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas