lunes, 4 de febrero de 2013

Características generales del PIC 16f877

El PIC 16f877 es un microcontrolador de la familia PIC creada por Microchip Technology de gama media.

Los puntos a desarrollar son los siguientes:

- Patillaje
- Memoria/s del microcontrolador
- Reloj (oscilador)
-Ciclo máquina




Patillaje

En este caso únicamente nos vamos a centrar en el modelo con el encapsulado PDIP


Como podemos observar el chip cuenta con un total de 40 pines que nos ofrece, entre otras cosas:

- 5 Puertos I/O (A, B, C, D y E).
- 3 Timers (0, 1 y 2).
- 8 Conversiones analógico-digital (AN0,1,2,3,4,5,6 y 7) de 10 bits
- 2 Módulos CCP (Capture-Compare-PWM)

Vemos que pese a ser un PIC de gama media nos da bastante con lo que trabajar y podremos sacarle infinidad de utilidades.

Memorias

El PIC 16f877 tiene tres memorias internas con unas funciones bien diferenciadas para cada una.

Memoria Flash: En esta memoria es donde el programador guardará su programa. Esta memoria es de 8K. Cada posición de memoria tiene una capacidad de 14bits por lo que se suele usar la expresión "8K x 14" para describir esta memoria. A su vez, esta memoria, está subdividida en 4 páginas de memoria (0,1,2 y 3) de 2k cada una.

Páginas de la memoria flash


Memorias SRAM: En esta memoria se encuentran los llamados registros de funciones especiales "SFR" y los registros de funciones generales "SGR". Esta memoria es de tipo volátil por lo que cuando quitemos la alimentación del PIC se borrarán los datos guardados en ella.

Esta memoria está dividida en 4 bancos de memoria de 128 bytes cada uno. En estos bancos de memoria las primeras posiciones están dedicadas para los SFR mientras que los últimos lo están para los SGR. Cada registro es de 8 bits.

Detalle de la memoria SRAM
Como se ve en la imágen si quisiéramos acceder al registro del timer 0 deberíamos dirigirnos a la dirección 01h (en el primer banco) o a la dirección 101h (en el tercer banco).

Memoria EEPROM: Es una pequeña memoria de 256 bytes de tipo no volátil donde se guardarán datos los vitales que no queramos perder cuando quitemos la corriente de nuestro PIC.

Reloj

El PIC 16f877 tiene hasta 8 modos diferentes para el oscilador, como se puede ver en la siguiente imagen:



En la tabla superior vemos las frecuencias a las que puede oscilar el oscilador en cada modo de trabajo. LP de baja frecuencia, XT para medias frecuencias y HS para altas frecuencias. Además también nos muestra los condensadores recomendados para las diferentes velocidades. El montaje del cristal y de los condensadores será el siguiente:

Circuito para modos LP, XT y HS
Además de estos modos, hay otro más denominado RC (resistor-capacitor) por el cual se consigue una frecuencia mediante una resistencia y un condensador conectados a la patilla OSC1. La frecuencia de este modo de trabajo depende de muchas variables: la resistencia, el condensador, la temperatura, el voltaje de Vdd...Por lo que no es un modo muy fiable. Este modo se usará únicamente para casos en los que no necesitemos mucha precisión. La parte positiva es que es el modo más económico.

Circuito para el modo RC
 Los valores admitidos de Rext y de Cext variarán entre los siguientes rangos:
Rext: de 3K a 100K
Cext: mayor de 20pf

Además de todos estos modos de trabajo podemos meter directamente una señal externa por la patilla OSC1 del PIC y conectar la patilla OSC2 a tierra para reducir ruidos. Para hacer uso de esa señal externa deberemos de programar el PIC en el modo LP, XT o HS según corresponda.


Ciclo máquina

Un ciclo máquina es el tiempo que se tarda en ejecutar una instrucción. Este tiempo está estrechamente emparejado con el tiempo de oscilación:



4 ciclos de reloj = 1 ciclo máquina.

Q1: Decodificación de la instrucción
Q2: Lectura del dato
Q3: Procesa el dato
Q4: Escribe el dato

Para calcular cuánto tiempo tarda en ejecutarse una instrucción usaremos la siguiente ecuación:

Tiempo=4.(1/Fosc)

Por lo tanto, ya que hemos visto anteriormente que la frecuencia de oscilación va desde los 32Khz a los 20Mhz podemos concluir que el tiempo en ejecutar una instrucción variará entre:

4(1/32000)= 0,000125 segundos-------> 125 microsegundos
4(1/20000000)=0,0000002 segundos---> 200 nanosegundos

NOTA: Todas las instrucciones tardan en ejecutarse 1 ciclo máquina excepto las instrucciones de que tardan 2 ciclos máquina.

Extra:
Datasheet 16f877


1 comentario:

  1. amigo me podrias decir los tipos de comunicacion con los que cuenta este pic, y alguana aplicacion en la que intervenga algun tipo de comunicacion? Gracias =)

    ResponderEliminar