La hora más rápida en que un PIC puede establecer y borrar un pin

4

¿Cuál es el tiempo más rápido para configurar y borrar un microcontrolador (PIC16 en este caso)? Está definido por la frecuencia, pero no conozco la fórmula para calcular el tiempo más rápido en que se puede establecer y borrar un solo pin.

Suponiendo que la frecuencia (XTAL) es de 20MHz, y no hay retrasos intermedios, ¿cuál es el tiempo necesario para que el pin se configure y se borre?

Por ejemplo:

RB2=0;  
RB2=1;  
RB2=0;

¿Cuál es el tiempo que RB2 está alto?

    
pregunta Triak

2 respuestas

6

Depende del PIC en particular, ya que algunos PIC pueden ejecutar una instrucción por ciclo y otras, por ejemplo, ejecutar una instrucción por cada cuatro ciclos del reloj del sistema.

Aunque el OP solicitó información sobre un PIC16 de 20 MHz, como ya se ha abordado, estoy mostrando información para la versión más rápida en todas las diferentes familias de PIC. Donde hay diferencias significativas entre partes en varias subfamilias, como PIC24F / PIC24EP y PIC32MX / PIC32MZ, las muestro por separado.

Obtuve los números yendo al sitio web Digi-Key , buscando partes para cada familia y luego seleccionando la velocidad más alta . Luego saqué una hoja de datos en una parte de ejemplo, que también verificó el valor MIPS.

Family       Clock    Speed    I/O toggle time

PIC10F      16 MHz    4 MIPS    250 ns
PIC12F      20 MHz    5 MIPS    200 ns
PIC16F      20 MHz    5 MIPS    200 ns  <--- example in the original question
PIC16F      48 MHz   12 MIPS     83 ns
PIC18F      64 MHz   16 MIPS     62 ns
PIC24F      32 MHz   16 MIPS     62 ns
PIC24EP     70 MHz   70 MIPS     28 ns
dsPIC30     40 MHZ   30 MIPS     33 ns        
dsPIC33EP   70 MHz   70 MIPS     28 ns
PIC32MX    100 MHz  100 MIPS     10 ns
PIC32MZ    200 MHz  200 MIPS      5 ns

Si alguien tiene que hacer correcciones en esta tabla, no dude en editarla.

MIPS es de millones de instrucciones por segundo. El tiempo de conmutación de E / S es la cantidad de tiempo que el pin de E / S estará activado o desactivado en nanosegundos (ns), y se calcula como un millón dividido por el número MIPS.

Todos estos procesadores tienen la capacidad de activar o desactivar un pin de E / S en una sola instrucción. Las instrucciones varían según el procesador.

    
respondido por el tcrosley
7

Si estás usando un cristal de 20MHz, eso significa que tienes 5MIPS (5 millones de instrucciones por segundo), porque internamente el 20MHz se divide por 4.

Eso significa que una instrucción toma \ $ \ frac {1s} {5000000} = 200ns \ $.

Puedes lograr lo que quieres en ensamblaje, de esta manera:

bcf PORTB, 2   // Sets the pin state to 0
bsf PORTB, 2   // Sets the pin state to 1
bcf PORTB, 2   // Sets the pin state to 0

Esto muestra que cambiar el estado del pin toma una instrucción, por lo tanto, el tiempo mínimo en que el pin estará encendido es de 200 ns (si lo borras directamente de nuevo).

Solo tengo experiencia con PIC16 y PIC18, no estoy seguro sobre dsPIC, PIC32 y todas las otras variedades. Pero en general, si conoce el número de instrucciones por segundo (puede calcularlo desde la configuración del oscilador), puede calcular el tiempo de encendido mínimo, como lo dice.

    
respondido por el Keelan

Lea otras preguntas en las etiquetas