Vous êtes sur la page 1sur 18

MICROPROCESADORES

Tema 6: Microcontroladores
Carlos Garre del Olmo

ESCUELA TCNICA SUPERIOR DE


INGENIERA INFORMTICA

Microcontroladores

Contenidos

MICROPROCESADORES

Introduccin a los microcontroladores.


Principales familias y sus caractersticas.
La familia PIC16.
Programacin de microcontroladores.
Diseo de sistemas empotrados.
Introduccin a los DSP

ESCUELA TCNICA SUPERIOR DE


INGENIERA INFORMTICA

Palabra de Configuracin
MICROPROCESADORES

Palabra de configuracin: Son 14 bits ubicados en la direccin 2007h


de la memoria de programa. Slo es accesible si la MCU est en modo
de programacin (mayor voltaje en Vdd).

CP (Code Protection): Si est a 0, toda la memoria de programa est


protegida.
PWRTE: Habilita el Power-up Timer.
WDTE: Habilita el Watchdog Timer.
FOSC1-FOSC0: Seleccionan la fuente de reloj:
 00: LP (Low Power Crystal)  Cristal externo con baja frecuencia y mnimo consumo.
 01: XT (Crystal/Resonator)  Cristal externo con frecuencia media (4MHz) y
consumo medio.
 10: HS (High Speed Crystal/Resonator)  Cristal externo con mximas frecuencia
(20MHz) y consumo.
 11: RC (Resistor/Capacitor)  Circuito RC interno. Depende de: Rext, Cext, Vdd, C...
ESCUELA TCNICA SUPERIOR DE
INGENIERA INFORMTICA

Modo SLEEP
MICROPROCESADORES

SLEEP: Instruccin para entrar en modo SLEEP.


Para salir del modo SLEEP:





Interrupciones: RB0/INT, EEPROM write, PORTB change.


Reset externo en el pin MCLR.
Fin de cuenta del WDT  no provoca reset.
La interrupcin TMR0 no se puede dar, porque se detiene toda la
temporizacin.

Los pines de salida se congelan y mantienen el ltimo valor.


Cuando entramos en SLEEP, el WDT se pone a 0 pero no se detiene 
utiliza su propio oscilador RC.

ESCUELA TCNICA SUPERIOR DE


INGENIERA INFORMTICA

PIC16F87xA
MICROPROCESADORES

16F876A: 28 pines.
16F877A: Exactamente igual pero con 40 pines (3 ms analgicos, y 9
ms digitales). Comparten el mismo datasheet!
16F873A: Versin reducida del 16F876 (/2 las tres memorias).
16F874A: Versin reducida del 16F877 (/2 las tres memorias).
Nos centramos en el 16F876A:










Mismo juego de instrucciones que 16F84A.


143KB programa, 368B RAM, 256B EEPROM.
14 fuentes de interrupcin.
USART, SPI, I2C.
2x CCP.
2x Timers 8 bits + 1x 16 bits.
5 ADC de 10 bits.
Slo en los A: 2 comparadores analgicos.
Puertos E/S: A (6b), B (8b), C (8b)  MUX...
ESCUELA TCNICA SUPERIOR DE
INGENIERA INFORMTICA

Arquitectura PIC16F876A
MICROPROCESADORES

ESCUELA TCNICA SUPERIOR DE


INGENIERA INFORMTICA

Memoria de datos del PIC16F876A


MICROPROCESADORES

Dividida en 4 bancos (RP1-RP0).


No slo cambian los SFR, sino
tambin los GPR.
Algunos SFR nuevos:
 PORTC, TRISC.
 PIR1, PIR2, INTCON, PIE1, PIE2:
interrupciones.
 TMR1L, TMR1H, T1CON: Timer 16b.
 TMR2, T2CON, PR2: Timer 8b.
 SSPBUF, SSPCON, SSPCON2,
SSPADD, SSPSTAT, TXREG, RCREG,
RCSTA, TXSTA, SPBRG: puertos serie.
 CCPR1L, CCPR1H, CCP1CON: Mdulo
CCP1 (igual para CCP2).
 ADRESH, ADRESL, ADCON0, ADCON1:
Entradas A/D.

Memoria de programa paginada en 4


pginas.
ESCUELA TCNICA SUPERIOR DE
INGENIERA INFORMTICA

16F876A: Interrupciones
MICROPROCESADORES

ADIF: Conversin A/D terminada.


RCIF: Buffer de recepcin de la
USART lleno.
TXIF: Buffer de transmisin de la
USART lleno.
SSPIF: Fin de transmisin SPI I2C.
CCP1F: Capture en mdulo CCP1.
TMR2IF: Coinciden registros TMR2 y
PR2.
TMR1IF: Overflow en Timer 1.
CMIF: Ha cambiado la entrada del
comparador.
BCLIF: Colisin en el bus I2C.
CCP2IF: Capture/Compare en mdulo
CCP2.

ESCUELA TCNICA SUPERIOR DE


INGENIERA INFORMTICA

PIC16F876A: Conversin A/D


MICROPROCESADORES

ADRESH y ADRESL: Resultado de la conversin en 10 bits.


ADCON0: configuracin del mdulo A/D.






ADCS2-ADCS0: fuente de reloj (Ej: 001 = Fosc/8).


CHS2-CHS0: Seleccin de canal (hasta 100).
GO/DONE: Si lo pones a 1, empieza una conversin. Se pone a 0 por hardware.
ADON: Activa/desactiva el mdulo A/D.

ADCON1: configuracin de los pines E/S.

 ADFM: 1 = Justificado a la derecha: (ADRESH = 000000xx; ADRESL = xxxxxxxx).


 PCFG3-PCFG0: Configuracin de los pines (prxima transparencia...).

ESCUELA TCNICA SUPERIOR DE


INGENIERA INFORMTICA

PIC16F876A: Pines A/D


MICROPROCESADORES

ESCUELA TCNICA SUPERIOR DE


INGENIERA INFORMTICA

10

PIC16F876A: Conversin A/D


MICROPROCESADORES

1.

Configurar mdulo A/D: TRIS (=entradas), PCFG, ADFM (=1), ADCS (=001),
ADON (=1).
Configurar interrupciones: ADIF (=0), ADIE (=1), PEIE (=1), GIE (=1).  PEIE
es la mscara para todas las interrupciones nuevas con respecto al 16F84
(llamadas interrupciones de perifricos).
Seleccionar un canal (CHS).
Activar el bit GO/DONE  Momento en el que muestreamos.
Esperar fin de conversin:

2.

3.
4.
5.



6.
7.

Polling al bit GO/DONE.


Interrupcin ADIF.

El resultado est en ADRH-ADRL.


Limpiar bit ADIF (ADIF = 0).

ESCUELA TCNICA SUPERIOR DE


INGENIERA INFORMTICA

11

Microcontroladores

Contenidos

MICROPROCESADORES

Introduccin a los microcontroladores.


Principales familias y sus caractersticas.
La familia PIC16.
Programacin de microcontroladores.
Diseo de sistemas empotrados.
Introduccin a los DSP

ESCUELA TCNICA SUPERIOR DE


INGENIERA INFORMTICA

12

Entornos de Desarrollo
MICROPROCESADORES

Los fabricantes de MCUs proveen al usuario de entornos de desarrollo,


generalmente gratuitos. Estos entornos constan de varias herramientas:
 Editor: editor de texto para escribir el cdigo fuente.
 Compiladores y ensamblador: generacin de cdigo mquina partiendo de cdigo
ensamblador o de lenguajes de alto nivel (C, Basic, Pascal).
 Simulador: ejecucin del cdigo generado sobre una MCU simulada en el propio PC.
Simulacin de perifricos, estmulos externos, ...
 Depurador: puntos de ruptura, lectura de memoria, step into/over ...
 Programador: conexin con tarjetas de programacin para transmitir el cdigo a la MCU.
 Emulador: permite emular el sistema sobre el propio circuito.
 Libreras: multitud de libreras para facilitar la programacin.

Entorno de desarrollo de Microchip: MPLAB  MPLAB C Compiler, MPASM,


MPSIM, MPLAB REAL ICE, MPLAB PM3, ...
Manejo de MPLAB  Enunciado de la prctica.

ESCUELA TCNICA SUPERIOR DE


INGENIERA INFORMTICA

13

PIC16 ASM: Operaciones de Byte


MICROPROCESADORES

ADDWF f,d:





Si d=0: W = W + f.
Si d=1: f = W + f
f es un registro de 0 a 127: direccionamiento directo o indirecto (INDF).
Modifica flags Z, C, DC.

CLRF f: f = 0.
CLRW: W = 0.
COMF f,d: W/f = NOT(f).
DECF f,d: W/f = f 1
DECFSZ f,d: SZ = Skip if Zero. Si el resultado del decremento es 0, entonces
convierte la prxima instruccin en un NOP.
MOVF f,d: W/f = f.
MOVWF f: f = W.
RLF f,d: Rotate Left through carry.
SUBWF f,d: W/f = f W
SWAPF f,d: d<7,4> = f<3:0>; d<3,0> = f<7,4>
ANDWF, INCF, INCFSZ, IORWF, NOP, RRF, XORWF.
ESCUELA TCNICA SUPERIOR DE
INGENIERA INFORMTICA

14

PIC16 ASM: Operaciones de Bit y de Control


MICROPROCESADORES

Operaciones de Bit:
BCF f,b: Pone a 0 el bit b del registro f.
BSF f,b: Pone a 1 el bit b del registro f.
BTFSC f,b: Si el bit b del registro f es 0, convertimos la siguiente instruccin en un
NOP.
BTFSS f,b: Si el bit b del registro f es 1, convertimos la siguiente instruccin en un
NOP.
Operaciones de Control:
CALL k:





PC se guarda en la pila.
PC<10:0> = k (k es de 11 bits).
PC<12:11> = PCLATH<4:3> (PCLATH se usa para cambiar de pgina).
Es una instruccin de 2 ciclos!

GOTO k: Salto incondicional. No se guarda PC. 2 ciclos!


RETFIE y RETURN: Retorno de interrupcin y de subrutina. 2 ciclos!
RETLW k: Retorno de subrutina, y W=k (8 bits). 2 ciclos!  funciones.
CLRWDT, SLEEP.
ESCUELA TCNICA SUPERIOR DE
INGENIERA INFORMTICA

15

PIC16 ASM: Operaciones con Inmediatos


MICROPROCESADORES

ADDLW k: W = W + k (k es de 8 bits).
ANDLW k: W = W and k
processor
IORLW k: W = W or k
radix DEC
MOVLW k: W = k
PORTA
EQU
0x05
SUBLW k: W = k W
OPTION EQU
0x03
XORLW k: W = W xor k
TRISA
EQU
0x85
RP0

EQU

16F84A

GOTO main
main
BSF
CLRF
BCF

OPTION,RP0 ; Banco 1 (para usar TRISA)


TRISA
; Puerto A = salidas
OPTION,RP0 ; Banco 0 (para usar PORTA)

BCF
BSF
GOTO

PORTA,0
PORTA,0
loop

loop
; Apagamos led
; Encendemos led
; bucle infinito...

END
ESCUELA TCNICA SUPERIOR DE
INGENIERA INFORMTICA

16

PIC16: Programacin en C
MICROPROCESADORES

#include <pic16f876a.h>
void main(void)
{
TRISA = 0; // Puerto A = salidas
// Bucle infinito...
while (1)
{
RA0 = 0; // Apagamos led
RA0 = 1; // Encendemos led
}
}

ESCUELA TCNICA SUPERIOR DE


INGENIERA INFORMTICA

17

Proceso de Desarrollo
MICROPROCESADORES

1.
2.
3.
4.
5.

Escribir el cdigo en el editor de MPLAB.


Simular y depurar el cdigo.
Pinchar el PIC en el programador.
Conectar el programador al PC (USB, puerto paralelo, puerto serie...).
Enviar el programa desde el PC al programador:



MPLAB slo soporta algunos programadores.


En la mayora de los casos necesitaremos utilizar otro software para comunicarnos con
el programador, como IC-Prog:
1.
2.
3.
4.
5.

6.
7.
8.

Cargamos en IC-Prog el fichero hexadecimal con el cdigo mquina ya ensamblado.


Configuramos IC-Prog para nuestro programador.
Configuramos la MCU (code protection, fuente de reloj, WDT...).
Escribimos el cdigo.
Verificamos la escritura.

Desconectamos el programador del PC.


Despinchamos el PIC del programador.
Pinchamos el PIC en nuestro circuito.

ESCUELA TCNICA SUPERIOR DE


INGENIERA INFORMTICA

18

Vous aimerez peut-être aussi