sábado, 9 de enero de 2016

MICROCONTROLADORES

La situación actual en el campo de los microcontroladores se ha producido gracias al desarrollo de la tecnología de fabricación de los circuitos integrados. Este desarrollo ha permitido construir las centenas de miles de transistores en un chip. Esto fue una condición previa para la fabricación de un microprocesador. Las primeras microcomputadoras se fabricaron al añadirles periféricos externos, tales como memoria, líneas de entrada/salida, temporizadores u otros. El incremento posterior de la densidad de integración permitió crear un circuito integrado que contenía tanto al procesador como periféricos. Así es cómo fue desarrollada la primera microcomputadora en un solo chip, denominada más tarde microcontrolador. 

Microcontrolador contra microprocesador




Los principiantes en electrónica creen que un microcontrolador es igual a un microprocesador. Esto no es cierto. Difieren uno del otro en muchos sentidos. La primera y la más importante diferencia es su funcionalidad. Para utilizar al microprocesador en una aplicación real, se debe de conectar con otros componentes, en primer lugar con la memoria. Aunque el microprocesador se considera una máquina de computación poderosa, no está preparado para la comunicación con los dispositivos periféricos que se le conectan. Para que el microprocesador se comunique con algún periférico, se deben utilizar los circuitos especiales. Así era en el principio y esta práctica sigue vigente en la actualidad.

Por otro lado, al microcontrolador se le diseña de tal manera que tenga todas las componentes integradas en el mismo chip. No necesita de otros componentes especializados para su aplicación, porque todos los circuitos necesarios, que de otra manera correspondan a los periféricos, ya se encuentran incorporados. Así se ahorra tiempo y espacio necesario para construir un dispositivo.


MICROCONTROLADOR PIC


El nombre verdadero de este microcontrolador es PICmicro - controlador de interfaz periférico (Peripheral Interface Controller), conocido bajo el nombre PIC. Su primer antecesor fue creado en 1975 por la compañía  General Instruments.  Este chip denominado PIC1650 fue diseñado para propósitos completamente diferentes. Aproximadamente diez años más tarde, al añadir una memoria EEPROM, este circuito se convirtió en un verdadero microcontrolador PIC. 

JUEGO DE INSTRUCCIONES

El juego de instrucciones para los microcontroladores 16F8XX incluye 35 instrucciones en total. La razón para un número tan reducido de instrucciones yace en la arquietectura RISC. Esto quiere decir que las instrucciones son bien optimizadas desde el aspecto de la velocidad operativa, la sencillez de la arquitectura y la compacidad del código. La desventaja de la arquitectura RISC es que se espera del programador que haga frente a estas instrucciones. Por supuesto, esto es relevante sólo si se utiliza el lenguaje ensamblador para la programación. Este libro se refiere a la programación en el lenguaje de alto nivel Basic, lo que significa que la mayor parte del trabajo ya fue hecho por alguien más. Así, sólo se tienen que utilizar instrucciones relativamente simples.

TIEMPO DE EJECUCIÓN DE INSTRUCCIONES

Todas las instrucciones se ejecutan en un ciclo. La únicas excepciones pueden ser las instrucciones de  ramificación condicional o las instrucciones que cambian el contenido del contador de programa. En ambos casos, dos ciclos de reloj son necesarios para la ejecución de la instrucción, mientras que el segundo ciclo se ejecuta como un NOP (No operation). Las instrucciones de un ciclo consisten en cuatro ciclos de reloj. Si se utiliza un oscilador de 4 MHz, el tiempo nominal para la ejecución de la instrucción es 1mS. En cuanto a las instrucciones de ramificación, el tiempo de ejecución de la instrucción es 2µS.
Juego de instrucciones de los microcontroladores PIC de 14 bits:
INSTRUCCIÓNDESCRIPCIÓNOPERACIÓNBANDERACLK*
Instrucciones para la transmisión de datos
MOVLW kMover literal a Wk -> w
1
MOVWF fMover el contenido de W a fW -> f
1
MOVF f,dMover el contenido de f a df -> dZ11, 2
CLRWBorrar el contenido de W0 -> WZ1
CLRF fBorrar el contenido de f0 -> fZ12
SWAPF f,dIntercambiar de nibbles en ff(7:4),(3:0) -> f(3:0),(7:4)
11, 2
Instrucciones aritmético - lógicas
ADDLW kSumar literal a WW+k -> WC, DC, Z1
ADDWF f,dSumar el contenido de W y fW+f -> dC, DC ,Z11, 2
SUBLW kRestar W de literalk-W -> WC, DC, Z1
SUBWF f,dRestar W de ff-W -> dC, DC, Z11, 2
ANDLW kAND W con literalW AND k -> WZ1
ANDWF f,dAND W con f W AND f -> dZ11, 2
IORLW kOR inclusivo de W con literalW OR k -> WZ1
IORWF f,dOR inclusivo de W con fW OR f -> dZ11, 2
XORWF f,dOR exclusivo de W con literalW XOR k -> WZ11, 2
XORLW kOR exclusivo de W con fW XOR f -> dZ1
INCF f,dSumar 1 a ff+1 -> fZ11, 2
DECF f,dRestar 1 a ff-1 -> fZ11, 2
RLF f,d
Rotar F a la izquierda a través del bit de Acarreo

C11, 2
RRF f,dRotar F a la derecha a través del bit de Acarreo
C11, 2
COMF f,dComplementar ff -> dZ11, 2
Instrucciones orientadas a bit
BCF f,bPoner a 0 el bit b del registro f0 -> f(b)
11, 2
BSF f,bPoner a 1 el bit b del registro f1 -> f(b)
11, 2
Instrucciones de control de programa
BTFSC f,bSaltar si bit b de registro f es 0Skip if f(b) = 0
1 (2)3
BTFSS f,bSaltar si bit b de reg. f es 1Skip if f(b) = 1
1 (2)3
DECFSZ f,dDisminuir f en 1. Saltar si el resultado es 0.f-1 -> d skip if Z = 1
1 (2)1, 2, 3
INCFSZ f,dIncrementar f en 1. Saltar si el resultado es 1.f+1 -> d skip if Z = 0
1 (2)1, 2, 3
GOTO kSaltar a una direcciónk -> PC
2
CALL kLlamar a una subrutinaPC -> TOS, k -> PC
2
RETURNRetornar de una subrutinaTOS -> PC
2
RETLW kRetornar con literal en Wk -> W, TOS -> PC
2
RETFIERetornar de una interupciónTOS -> PC, 1 -> GIE
2
Otras instrucciones
NOPNo operaciónTOS -> PC, 1 -> GIE
1
CLRWDTReiniciar el temporizador perro guardián0 -> WDT, 1 -> TO, 1 -> PDTO, PD1
SLEEPPoner en estado de reposo0 -> WDT, 1 -> TO, 0 -> PDTO, PD1
*1 Si un registro de E/S está modificado, el valor utilizado será el valor presentado en los pines del microcontrolador.
*2 Si la instrucción se ejecuta en el registro TMR y si d=1, el pre-escalador será borrado.
*3 Si el contador de programa está modificado o el resultado de prueba es un uno lógico (1), la instrucción tiene una duración de dos ciclos. El segundo ciclo se ejecuta como un NOP

DIAGRAMA DE BLOQUES DE LA ARQUITECTURA PIC


Arquitectura de los microcontroladores PIC de 8 bits. Cuáles de estos módulos pertenecerán al microcontrolador, dependerá del tipo de microcontrolador.