Busqué información sobre mi microcontrolador AT89S52 y parece que no puedo averiguar la velocidad máxima a la que puedo operar un pin GPIO.
Lo estoy ejecutando con un reloj de 22,1184 Mhz y, a veces, noto que cuando modifico el valor de un 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 la 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 confiable de procesamiento de pines?
La hoja de datos especifica una corriente alta de salida de 60 uA a 2,4 V para los puertos 1-3 y 800 uA para el puerto 0 (pero solo en modo de bus externo). A partir de esto se pueden calcular las resistencias equivalentes. 5,0 V-2,4 V = 2,6 V. 2.6V/60uA = ~43kΩ. 2,6 V/800 uA = ~3,3 kΩ.
En el modo de E/S, el puerto 0 está abierto, por lo que se deben aplicar resistencias pull-up externas. ¿Cuál es la resistencia pull-up de valor más bajo que todavía permite que el pin baje a la lógica TTL 0? Los pines del puerto 0 pueden absorber 3,2 mA a 0,45 V. 5V-0,45V = 4,55V. 4,55 V/3,2 mA = ~1,4 KΩ. Los otros pines del puerto pueden absorber 1,6 mA, por lo que podrían tener resistencias pull-up externas tan bajas como ~2,8 kΩ.
El 89S52 necesita 12 relojes por ciclo de máquina. A 22,1184MHz esto corresponde a 0,543us. 43kΩ x 10pF = 0,43us, por lo que incluso los pull-ups débiles en los puertos 1-3 deberían ser lo suficientemente fuertes como para alternar a toda velocidad. Sin embargo, cualquier cosa conectada a un pin (incluso una sonda de alcance) tendrá su propia capacitancia que aumentará el tiempo de subida.
anything connected to a pin will have its own capacitance which will increase the rise time.
... Eso tiene sentido. Entonces, si conecté un pin GPIO de un 89S52 a un pin GPIO de otro 89S52, y un 89S52 cambió el estado de ese pin, entonces tengo que hacer que mi programa en ambos 89S52 espere 0.86uS (2 ciclos de máquina) para poder hacerlo. reconocer los cambios en el pin?
Andrés Pikul
Bhura
Ale..chenski
Ale..chenski
Ale..chenski
usuario152879
MOV P2,A
exactamente al mismo tiempo que los otros procesosMOV A,P2
)Ale..chenski
marcelmo