universidad nacional de colombia sede … · rango de voltajes de trabajo: hay dos rangos: l (2 a...

46
UNIVERSIDAD NACIONAL DE COLOMBIA SEDE BOGOTÁ FACULTAD DE INGENIERÍA INGENIERÍA MECATRÓNICA

Upload: vonhu

Post on 01-Oct-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDAD NACIONAL DE COLOMBIA

SEDE BOGOTÁ

FACULTAD DE INGENIERÍA

INGENIERÍA MECATRÓNICA

INTRODUCCIÓN AL PIC

NOMENCLATURA

ARQUITECTURA.

TEMPORIZACIÓN.

SET DE INSTRUCCIONES.

MODOS DE DIRECCIONAMIENTO.

PIC (PERIPHERAL INTERFACE CONTROLLER) es el microcontrolador desarrollado por Microchip Technology Inc.

Son microcontroladores RISC con arquitectura Harvard, con variedad de módulos, tamaños y tipos de memorias, empaquetados y cantidad de pines.

Programables en Assembler y C. Gran variedad de IDEs, compiladores,

simuladores y software programadores en Windows, Linux, MACos y BSD.

Entorno en Windows suministrado gratis por Microchip (MPLAB IDE), con compilador gratuito de Assembler y compiladores no gratuitos de C para algunas familias.

En 1975 la división de microelectrónica de la empresa General Instruments empezó a diseñar circuitos para mejorar el funcionamiento de E/S de la CPU CP16000, de esto surgió la necesidad de los microcontroladores y como primer desarrollo se creo el PIC1650. En 1985 esta división se vendió a Venture Capital Investors quienes la convirtieron en Arizona Microchip Technology Inc.

Microcontroladores PIC mas usados en aplicaciones de controladores embebidos sin requerimientos altos de tiempo real.

De bajo costo, variedad de herramientas de desarrollo, programador sencillo de diseñar y/o implementar, opción de debug y programación en circuito.

La nomenclatura del PIC esta compuesta por:

Nombre de dispositivo.

Familia.

Tipo de memoria de programa.

Rango de voltajes de trabajo.

Modelo especifico.

Rango de temperaturas de trabajo.

Empaquetado.

El nombre del dispositivo es PIC (Peripheral integrated controller). Hay otros como EEPROM, DsPIC, etc.

La familia representa varios modelos que comparten la misma arquitectura de la CPU: 10,14,16 y 18.

Tipo de memoria de programa: solo existen dos tipos: C (OTP) y F (FLASH).

Rango de voltajes de trabajo: Hay dos rangos: L (2 a 5.5 V) y sin indicador (4 a 5.5 V).

Modelo especifico: Distingue un microcontrolador en especifico de otro: 877A, 84A, 819, etc.

Rango de temperaturas de trabajo: Comercialmente solo se ofrece en un rango: I (Industrial de -40 a 85 °C).

Empaquetado: Se ofrecen varias: P (PDIP), ML (QFN), PT (TQFP), SO (SOIC), SP (SPDIP), S (SSOP) y L (PLCC).

Suele haber un indicador mas al final que corresponde al patrón.

Ejemplos:

PIC16C877A I/P

PIC de la familia 16, memoria OTP, rango de voltaje 4 a 5.5 V, modelo 877A, temperatura industrial, empaquetado PDIP.

PIC18LF4550 I/S #320

PIC de la familia 18, memoria flash, rango de voltaje 2 a 5.5 V, modelo 4550, temperatura industrial, empaquetado TSSOP.

CARACTERÍSTICAS Arquitectura Harvard.

Solo 35 instrucciones para aprender (RISC). Máxima velocidad de reloj de 20 Mhz

Capacidad de memoria de programa de 8 Kw de memoria.

Ejecución de cada instrucción en solo un ciclo de bus a excepción de las que involucren salto.

3 Modos de direccionamiento.

Memoria de datos y registros organizado en 4 bancos.

Unidad de control

ALU

RAM

ROM

Unidades de

entrada

salida

Unidad de Memoria CPU U de I / O

MCU = MICROCONTROLLER UNIT

Acumulador de 8 bits. (W)

Registros de apuntado indirecto de 8 bits. (FSR y INDF)

Pila de 8 niveles de 13 bits. (STACK)

Contador de programa de 13 bits. (PC)

Registro de código de condición 8 bits. (STATUS)

Registro de propósito general de 8 bits.

Utilizado por la CPU para almacenar operandos y resultados de operaciones lógicas y aritméticas.

Por medio del opcode la instrucción se puede especificar como destino del resultado de la instrucción.

El registro que permite direccionar a un registro de la memoria de datos de forma indirecta o sea que la dirección no esta de forma directa en la instrucción es el FSR, el cual tiene la dirección de memoria $4.

El registro que tiene el valor contenido en la dirección apuntada de forma indirecta es el INDF, el cual físicamente no esta implementado.

La pila consiste de 8 niveles u ocho palabras de 14 bits, donde se guarda el estado del PC cuando se salta a una subrutina o a un código de atención de interrupción y se recupera el estado del PC cuando se retorna de una subrutina o de un código de atención de interrupción.

Cuando ocurre una interrupción el contexto del programa (W, STATUS) debe ser salvado y recuperado manualmente.

• Registro de 13 bits que contiene la dirección de la

siguiente instrucción a buscar.

• Normalmente se incrementa automáticamente a la

siguiente posición consecutiva de memoria.

• Puede ser modificado por instrucciones de salto

• Registro de 8 bits que indica el estado del resultado

de las instrucciones ejecutadas en la ALU.

• Contiene los registros de indicación de banco tanto

en modo directo como modo indirecto.

Bit de acarreo:

1: Hay acarreo

0: No hay acarreo

Bit de acarreo de digito o acarreo medio:

1: Hay acarreo (Se pasa de 15 a 16).

0: No hay acarreo

Bit de cero:

1: El resultado es 0.

0: El resultado no es 0.

Bit de power-down: 1: No esta en modo power-down. 0: Entrada a modo power-down. La entrada a modo power-down se hace por

medio de la instrucción sleep. Este bit se puede borrar por alimentar el microcontrolador o por la instrucción clrwdt.

Bit de Time-out del watchdog:

1: No ha ocurrido Time-out.

0: Ocurrio un Time-out.

Este bit se borra con alimentar el micro o con las instrucciones sleep o clrwdt.

Bit de selección de banco en modo directo:

(0,0): Banco 0.

(0,1): Banco 1.

(1,0): Banco 2.

(1,1): Banco 3.

Bit de selección de bancos en modo indirecto:

1: Bancos 2 y 3.

0: Bancos 0 y 1.

La memoria de programa es de tipo ROM e implementada como OTP, EPROM, EEPROM o FLASH.

La memoria esta organizada en palabras de 14 bits, donde cualquiera de las instrucciones ocupan una sola de estas palabras.

Esta organizada en un solo banco y es direccionada por el contador de programa (PC).

El vector de Reset es la dirección $0 de la memoria de programa, o sea que sin importar la fuente de RESET, el microcontrolador va a esta posición. Lo mismo sucede con las interrupciones pero el vector esta en la dirección $4.

Memoria RAM (GPR GENERAL PURPOSE REGISTERS) y Registros propios del microcontrolador tanto de los módulos como algunos de la CPU (SFR SPECIAL FUNCTION REGISTERS) están organizados en 4 bancos de memoria, donde cada, donde cada banco es de 128 bytes y tiene sus propias direcciones de memoria.

Aunque cada banco tiene sus propias direcciones ($00-$7F), los registros GPR y SFR se direccionan como si estuviesen en un solo banco, por lo tanto la dirección dentro del banco solo indica la parte baja de la dirección del registro, la parte alta será el banco en el que se encuentra el registro la cual se indica en los bits del STATUS.

Conjunto de instrucciones diferentes que es capaz de interpretar y ejecutar un microprocesador.

Código de operación: especifica el tipo de acción

Campo de la dirección: especifica la dirección de la memoria con cuyo contenido se realiza.

Importante la forma como se especifica la posición de memoria.

SET DE INSTRUCCIONES CISC FREESCALE

RISC (conjunto de códigos de instrucciones reducido)

Opcode

14 bits

Operando

8 bits

01010011101010 10101011

CISC (conjunto de códigos de instrucciones ampliado)

Inmediato.

Directo.

Indirecto.

Relativo o Salto.

Utiliza constantes que estan definidas dentro de la misma instrucción.

Se ejecuta en un ciclo de bus.

Ej: movlw b’10100101’, retlw .4, etc.

Utilizan operandos o direcciones de memoria definidas en la instrucción.

Se ejecuta en un ciclo de bus.

Ej: movwf PORTA, movf TRISB, etc.

Se utiliza el registro FSR como apuntador.

Se utiliza el registro INDF como buffer del dato apuntado.

Se ejecuta en un ciclo de bus.

Es muy parecido al directo y al inmediato, ya que utiliza constantes u operandos, pero para modificar al PC.

Se ejecuta en dos ciclos de bus.

Ej: goto Inicio, call Prueba, etc.