Tema 3 Sistemas Embebidos PIC

119
Hardware para Domótica 1 Domótica y sistemas Domótica y sistemas embebidos para embebidos para comunicaciones comunicaciones inalámbricas inalámbricas Máster Oficial en Sistemas Telemáticos e Máster Oficial en Sistemas Telemáticos e Informáticos Informáticos Cristina Rodríguez Sánchez Joaquín Vaquero López Tema III. Autómatas Programables. Tema III. Autómatas Programables.

description

sistemas embedidos

Transcript of Tema 3 Sistemas Embebidos PIC

Page 1: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 1

Domótica y sistemas Domótica y sistemas embebidos para embebidos para comunicaciones comunicaciones

inalámbricasinalámbricas

Domótica y sistemas Domótica y sistemas embebidos para embebidos para comunicaciones comunicaciones

inalámbricasinalámbricas

Máster Oficial en Sistemas Telemáticos e InformáticosMáster Oficial en Sistemas Telemáticos e Informáticos Cristina Rodríguez Sánchez

Joaquín Vaquero López

Tema III. Autómatas Programables. Tema III. Autómatas Programables.

Page 2: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 2

S.E. EsquemaS.E. Esquema

Software

Hardware

Controlador embebido

(Interfaz de usuario)

(Enlace a otros sistemas)

Variables deentrada

Variables desalida

Page 3: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 3

Características de los SS.EE.Características de los SS.EE.

Fiabilidad y seguridadFiabilidad y seguridad Un fallo en un sistema de control puede hacer que el sistema

controlado se comporte de forma peligrosa o antieconómica Hay que tener en cuenta los posibles fallos o excepciones en el

diseño

EficienciaEficiencia Muchos sistemas de control deben responder con gran rapidez

a los cambios en el sistema controlado En muchos casos, sistemas de tiempo real

Page 4: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 4

Características de los SS.EE.Características de los SS.EE.

Interacción con dispositivos físicosInteracción con dispositivos físicos

Los sistemas empotrados interaccionan con su entorno mediante dispositivos que normalmente no son convencionales: convertidores A/D y D/A, entradas y salidas paralelo y serie (interfases con sensores, actuadores, etc.)

Los drivers son, en general, dependientes del sistema concreto

Page 5: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 5

Características de los SS.EE.Características de los SS.EE.

Bajo consumoBajo consumo Muchos sistemas están alimentados con baterías o pilas Sobre todo en sistemas autónomos

Bajo pesoBajo peso Útil en sistemas portátiles Depende de todos los componentes (microcontrolador,

periféricos, sensores…)

Page 6: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 6

Características de los SS.EE.Características de los SS.EE.

Bajo precioBajo precio Aplicable a electrónica de consumo y otros dispositivos con

mercados muy competitivos

Pequeñas dimensionesPequeñas dimensiones Dispositivos portátiles Poco espacio en los dispositivos ‘anfitrión’

Page 7: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 7

SS.EE. Definición más completaSS.EE. Definición más completa

Un sistema embebido es un sistema de control basado en Un sistema embebido es un sistema de control basado en microcontrolador, fiable e interactivo, que opera sobre microcontrolador, fiable e interactivo, que opera sobre diversas variables físicas y en diversos entornos, y que se diversas variables físicas y en diversos entornos, y que se vende en un mercado competitivovende en un mercado competitivo

Page 8: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 8

Sistemas Empotrados: Sistemas Empotrados: ImplementacionesImplementaciones

MicroprocesadoresMicroprocesadoresProcesadores específicosProcesadores específicos DSP Procesadores de red Microcontroladores

ASIPsASIPsReconfigurable SoCReconfigurable SoCFPGAFPGAGatearrayGatearrayASICASIC

Velocidad Consumo Coste

Page 9: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 9

Evolución. Systems-On-Chips (SOCEvolución. Systems-On-Chips (SOC’’s)s)

Los SSEE emplean una combinación de:Los SSEE emplean una combinación de: Hardware específico de aplicación (tarjetas, ASICS, FPGAs…)

• Altas prestaciones y bajo consumo

Software sobre procesadores• Flexibilidad y complejidad

Las dos cosas en un único chip: System-on-a-chipLas dos cosas en un único chip: System-on-a-chip

Page 10: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 10

Evolución tecnológica de los SS.EE. Evolución tecnológica de los SS.EE. IntegraciónIntegración

Page 11: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 11

CPU

ROM

RAM

EEPROM

REGISTROS DE ESTADOY DE CONTROL E/S

REGISTROS DE DATOS E/S

MEMORIABUSDATOS

INTERNOCLOCK

LINEAS

CONTROL

BUFFER DE DATOS

LATCH DIRECCIONES

VDD

BUSDE DIRECCIONES

GND

BUSDE DATOS

DIAGRAMA DE BLOQUES DE UN MICROCONTROLADOR

Page 12: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 12

CPU

ROM

RAM

EEPROM

EJECUTA EL PROGRAMA

GESTIONA EVENTOS

CONTIENE EL PROGRAMA Y LOS DATOS DE LA

APLICACION

CONTIENE DATOS TEMPORALES

CONTIENE DATOS PERMANENTES

INTERFACESERIE

CONVERTI-DOR A/D

TEMPO-RIZADOR

PUERTOE/S

ENVIO Y RECEPCION DE DATOS

ADQUISICION DE DATOS ANALOGICOS

GENERA SEÑALESCUENTA EVENTOSBASE DE TIEMPOS

INTERFACE DE PERIFERICOS

UNIDADES FUNCIONALES EN UN MICROCONTROLADOR

Page 13: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 13

Características GeneralesCaracterísticas Generales

FrecuenciaFrecuencia DC-20MHzDC-20MHz

Resets (and Delays)Resets (and Delays) POR, BOR, PWRT, OSTPOR, BOR, PWRT, OST

Memoria de Programa (FLASH)Memoria de Programa (FLASH) 8K (Palabra de 14-bits)8K (Palabra de 14-bits)

Memoria para Datos Memoria para Datos 368 B368 B

Memoria para Datos EEPROMMemoria para Datos EEPROM 256 B256 B

InterrupcionesInterrupciones 1414

Puertos de E/SPuertos de E/S Puertos A, B y CPuertos A, B y C

TimersTimers 33

Modulos de Captura/Comparación y PWMModulos de Captura/Comparación y PWM 22

Comunicaciones SerieComunicaciones Serie MSSP, USARTMSSP, USART

Conversión Analógico Digital de 10-bitConversión Analógico Digital de 10-bit 5 Canales de Entrada5 Canales de Entrada

Número de InstruccionesNúmero de Instrucciones 3535

Encapsulado Encapsulado 28 Pines (Único)28 Pines (Único)

Page 14: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 14

Page 15: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 15

Page 16: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 16

Dentro del PIC16F8XX se distinguen tres bloques de memoria.Dentro del PIC16F8XX se distinguen tres bloques de memoria. Memoria de programaMemoria de programa•En sus 8192 posiciones (8K) contiene el programa con las instrucciones En sus 8192 posiciones (8K) contiene el programa con las instrucciones que gobiernan la aplicación. Es del tipo no volátil.que gobiernan la aplicación. Es del tipo no volátil.Memoria de datos RAMMemoria de datos RAM•Guarda las variables y datos. Consta de varios registros de 8 bits. Es Guarda las variables y datos. Consta de varios registros de 8 bits. Es volátil.volátil. Memoria EEPROM de datosMemoria EEPROM de datos•Es una pequeña área de memoria de datos de lectura y escritura no Es una pequeña área de memoria de datos de lectura y escritura no volátil que permite garantizar que determinada información estará volátil que permite garantizar que determinada información estará siempre disponible al reinicializarse el programa. Se gestiona de manera siempre disponible al reinicializarse el programa. Se gestiona de manera distinta a la memoria de datos RAM.distinta a la memoria de datos RAM.

Page 17: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 17

La memoria de programa

0000h RESET

0001h

0002h

0003h

0004h INT

0005h

0006h

0007h

0008h

0009h

000Ah

000Bh

1FFCh

1FFDh

1FFEh

1FFFh

• Almacena todas las instrucciones del programa de Almacena todas las instrucciones del programa de control, que debe estar grabado de forma control, que debe estar grabado de forma permanente.permanente.• La información contenida en esta memoria se La información contenida en esta memoria se graba previamente mediante un equipo físico graba previamente mediante un equipo físico denominado programador o grabador.denominado programador o grabador.• El PIC16F8XX tiene una memoria de programa no El PIC16F8XX tiene una memoria de programa no volátil denominada ROM Flash que admite unas volátil denominada ROM Flash que admite unas 1000 grabaciones.1000 grabaciones.• La memoria de programa está organizada en La memoria de programa está organizada en palabras de 14 bits cada una.palabras de 14 bits cada una.•Todas las instrucciones ocupan una posición de Todas las instrucciones ocupan una posición de memoria de programamemoria de programa

Page 18: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 18

Page 19: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 19

MEMORIA DE DATOS – REGISTROS DE PROPOSITO GENERAL

Los registros se dividen en:

Registros de propósito general (GPR), que pueden utilizarse como variables de programa.

Registros de funciones especiales (SFR), asociados a la CPU del micro o a algún módulo de los incluidos en el micro (puertos, temporizadores, etc.)

Algunos registros se repiten en los diferentes bancos de memoria.

Page 20: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 20

MODOS DE DIRECCIONAMIENTO DE LA MEMORIA DE DATOS

La memoria de datos esta distribuida en 4 posibles bancos de 128 bytes cada uno.

Existen 2 modos de direccionamiento para acceder a cualquiera de las posiciones de la memoria de datos:

Direccionamiento directoDireccionamiento indirecto

Direccionamiento directo: La posición de memoria con la que se trabaja viene directamente definida en el código de la instrucción.

Direccionamiento indirecto: La posición de memoria con la que se trabaja viene definida por el contenido de el registro FSR (Posición 04h, 84h, 104h ó 184h), es decir, el registro FSR actúa como puntero de la posición de memoria con la que se pretende operar.

Page 21: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 21

MODOS DE DIRECCIONAMIENTO DE LA MEMORIA DE DATOS

BANCO ACCEDIDOBANCO ACCEDIDO DIRECTODIRECTO

(RP1:RP0)(RP1:RP0)INDIRECTOINDIRECTO

(IRP)(IRP)

00 0 00 0

00

11 0 10 1

22 1 01 0

11

33 1 11 1

Tanto para el direccionamiento directo como el indirecto la dirección completa (9 bits) no se puede obtener del código de la operación (7 bits) o del registro FSR (8 bits).

Para direccionamiento directo, la dirección a operar se obtiene completando la dirección incluida en el código de la instrucción con los bits RP1:RP0 del registro STATUS. (Ver tabla)

Para direccionamiento indirecto, la dirección se obtiene completando el contenido del registro FSR con el bit IRP del registro STATUS. (Ver tabla).

Page 22: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 22

DIRECCIONAMIENTO INDIRECTO

1) SE LEE EL REGISTRO CONTENIDO EN EL CODIGO DE LA INSTRUCCIÓN.

2) SI EL REGISTRO ES DISTINTO DEL CORRESPONDIENTE A INDF (00h,80h,100h ó 180h) LA INSTRUCCIÓN SE EJECUTA SOBRE EL REGISTRO INDICADO EN LA INSTRUCCIÓN COMPLEMENTADO CON LOS BITS RP1:RP0 DEL REGISTRO STATUS (DIRECCIONAMIENTO DIRECTO)

3) SI EL REGISTRO CORRESPONDE A LA POSICION DE INDF (00h,80h,100h ó 180h), LA INSTRUCCIÓN SE EJECUTA SOBRE EL REGISTRO INDICADO EN EL REGISTRO FSR COMPLEMENTADO CON EL BIT IRP DEL REGISTRO STATUS

BCF STATUS, IRP ; dir. Indirecto, bancos 0/1MOVLW 0x20 ; Inicializa puntero a RAMMOVWF FSR ;

NEXT CLRF INDF ; limpia registro INDFINCF FSR,F ; Inc punteroBTFSS FSR,4 ; Todo limpio?GOTO NEXT ; NO, limpia siguiente

CONTINUE ;: ; SI, continua

Sencillo ejemplo de direccionamiento indirecto donde se limpian las posiciones de memoria de datos comprendidas entre la posición 20h y la 2Fh (ambas incluidas). Mirar después de estudiar la sintáxis.

Page 23: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 23

CLRF STATUS ; Limpia STATUS (Banco 0) MOVLW 0x20 ; 1ª dir de los GPRs en el banco MOVWF FSR ; Moverlo al reg, de dir. ind. Bank0_LP CLRF INDF0 ; Limpia el GPR apuntado por FSR INCF FSR ; Inc.puntero BTFSS FSR, 7 ; Fin de banco? (FSR = 80h, C = 0) GOTO Bank0_LP ; NO, limpia siguiente;; Banco 1; (**Solo si el micro tiene banco 1 **); MOVLW 0xA0 ; 1ª dir de los GPRs en el banco MOVWF FSR ; Moverlo al reg, de dir. ind. Bank1_LP CLRF INDF0 ; Limpia el GPR apuntado por FSR INCF FSR ; Inc.puntero BTFSS STATUS,C ; Fin de banco? (FSR = 00h, C = 1) GOTO Bank1_LP ; NO, limpia siguiente

;; Banco 2; (**Solo si el micro tiene banco 2 **);; BSF STATUS, IRP ; Selecciona Banco 2 y 3 MOVLW 0x20 ; 1ª dir de los GPRs en el banco MOVWF FSR ; Moverlo al reg, de dir. ind. Bank2_LP CLRF INDF0 ; Limpia el GPR apuntado por FSR INCF FSR ; Inc.puntero BTFSS FSR, 7 ; Fin de banco? (FSR = 80h, C = 0) GOTO Bank2_LP ; NO, limpia siguiente;; Banco 3; (**Solo si el micro tiene banco 3 **); MOVLW 0xA0 ; 1ª dir de los GPRs en el banco MOVWF FSR ; Moverlo al reg, de dir. ind. Bank3_LP CLRF INDF0 ; Limpia el GPR apuntado por FSR INCF FSR ; Inc.puntero BTFSS STATUS,C ; Fin de banco? (FSR = 00h, C = 1) GOTO Bank3_LP ; NO, limpia siguiente

Sencillo ejemplo de direccionamiento indirecto donde se limpian todas las posiciones de memoria de datos correspondientes a registros de propósito general (GPR).

Page 24: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 24

REGISTROS DE FUNCIONES ESPECIALES - REGISTRO DE ESTADO

bit 7 IRP: Register Bank Select bit (used for indirect addressing)1 = Bank 2, 3 (100h - 1FFh)0 = Bank 0, 1 (00h - FFh)

bit 6-5 RP1:RP0: Register Bank Select bits (used for direct addressing)11 = Bank 3 (180h - 1FFh)10 = Bank 2 (100h - 17Fh)01 = Bank 1 (80h - FFh)00 = Bank 0 (00h - 7Fh)Each bank is 128 bytes

bit 4 TO: Time-out bit1 = After power-up, CLRWDT instruction, or SLEEP instruction0 = A WDT time-out occurred

bit 3 PD: Power-down bit1 = After power-up or by the CLRWDT instruction0 = By execution of the SLEEP instruction

bit 2 Z: Zero bit1 = The result of an arithmetic or logic operation is zero0 = The result of an arithmetic or logic operation is not zero

bit 1 DC: Digit carry/borrow bit (ADDWF, ADDLW, SUBLW, SUBWF instructions)(for borrow, the polarity is reversed)1 = A carry-out from the 4th low order bit of the result occurred0 = No carry-out from the 4th low order bit of the result

bit 0 C: Carry/borrow bit (ADDWF, ADDLW ,SUBLW ,SUBWF instructions)1 = A carry-out from the Most Significant bit of the result occurred0 = No carry-out from the Most Significant bit of the result occurred

Note: For borrow, the polarity is reversed. A subtraction is executed by adding the two’s complement of the second operand. For rotate (RRF, RLF) instructions, this bit is loaded with either the high, or low order bit of the source register.

Page 25: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 25

bit 3 PSA: Prescaler Assignment bit1 = Prescaler is assigned to the WDT0 = Prescaler is assigned to the Timer0 module

bit 2-0 PS2:PS0: Prescaler Rate Select bits

Bit Value TMR0 Rate WDT Rate

000 1 : 2 1 : 1001 1 : 4 1 : 2010 1 : 8 1 : 4011 1 : 16 1 : 8100 1 : 32 1 : 16101 1 : 64 1 : 32110 1 : 128 1 : 64111 1 : 256 1 : 128

Registro OPTION

bit 7 RBPU: PORTB Pull-up Enable bit1 = PORTB pull-ups are disabled0 = PORTB pull-ups are enabled by individual port latch values

bit 6 INTEDG: Interrupt Edge Select bit1 = Interrupt on rising edge of RB0/INT pin0 = Interrupt on falling edge of RB0/INT pin

bit 5 T0CS: TMR0 Clock Source Select bit1 = Transition on RA4/T0CKI pin0 = Internal instruction cycle clock (CLKOUT)

bit 4 T0SE: TMR0 Source Edge Select bit1 = Increment on high-to-low transition on RA4/T0CKI pin0 = Increment on low-to-high transition on RA4/T0CKI pin

Page 26: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 26

Page 27: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 27

Registro de Control de Interrupciones

bit 7 GIE: Global Interrupt Enable bit1 = Enables all unmasked interrupts0 = Disables all interrupts

bit 6 PEIE: Peripheral Interrupt Enable bit1 = Enables all unmasked peripheral interrupts0 = Disables all peripheral interrupts

bit 5 T0IE: TMR0 Overflow Interrupt Enable bit1 = Enables the TMR0 interrupt0 = Disables the TMR0 interrupt

bit 4 INTE: RB0/INT External Interrupt Enable bit1 = Enables the RB0/INT external interrupt0 = Disables the RB0/INT external interrupt

bit 3 RBIE: RB Port Change Interrupt Enable bit1 = Enables the RB port change interrupt0 = Disables the RB port change interrupt

bit 2 T0IF: TMR0 Overflow Interrupt Flag bit1 = TMR0 register has overflowed (must be cleared in software)0 = TMR0 register did not overflow

bit 1 INTF: RB0/INT External Interrupt Flag bit1 = The RB0/INT external interrupt occurred (must be cleared in software)0 = The RB0/INT external interrupt did not occur

bit 0 RBIF: RB Port Change Interrupt Flag bit1 = At least one of the RB7:RB4 pins changed state; a mismatch condition will continue to set the bit. Reading PORTB will end the mismatch condition and allow the bit to be cleared (must be cleared in software).0 = None of the RB7:RB4 pins have changed state

Page 28: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 28

Registro de Interrupciones de periféricos individuales

bit 7 PSPIE(1): Parallel Slave Port Read/Write Interrupt Enable bit1 = Enables the PSP read/write interrupt0 = Disables the PSP read/write interrupt

bit 6 ADIE: A/D Converter Interrupt Enable bit1 = Enables the A/D converter interrupt0 = Disables the A/D converter interrupt

bit 5 RCIE: USART Receive Interrupt Enable bit1 = Enables the USART receive interrupt0 = Disables the USART receive interrupt

bit 4 TXIE: USART Transmit Interrupt Enable bit1 = Enables the USART transmit interrupt0 = Disables the USART transmit interrupt

bit 3 SSPIE: Synchronous Serial Port Interrupt Enable bit1 = Enables the SSP interrupt0 = Disables the SSP interrupt

bit 2 CCP1IE: CCP1 Interrupt Enable bit1 = Enables the CCP1 interrupt0 = Disables the CCP1 interrupt

bit 1 TMR2IE: TMR2 to PR2 Match Interrupt Enable bit1 = Enables the TMR2 to PR2 match interrupt0 = Disables the TMR2 to PR2 match interrupt

bit 0 TMR1IE: TMR1 Overflow Interrupt Enable bit1 = Enables the TMR1 overflow interrupt0 = Disables the TMR1 overflow interrupt

Note 1: PSPIE is reserved on PIC16F873/876 devices; always maintain this bit clear.

Page 29: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 29

REGISTRO PIE2

bit 7 Unimplemented: Read as '0'

bit 6 Reserved: Always maintain this bit clear

bit 5 Unimplemented: Read as '0'

bit 4 EEIE: EEPROM Write Operation Interrupt Enable1 = Enable EE Write Interrupt0 = Disable EE Write Interrupt

bit 3 BCLIE: Bus Collision Interrupt Enable1 = Enable Bus Collision Interrupt0 = Disable Bus Collision Interrupt

bit 2-1 Unimplemented: Read as '0'

bit 0 CCP2IE: CCP2 Interrupt Enable bit1 = Enables the CCP2 interrupt0 = Disables the CCP2 interrupt

Page 30: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 30

Registro de Flags de Periféricos Individuales

bit 7 PSPIF(1): Parallel Slave Port Read/Write Interrupt Flag bit1 = A read or a write operation has taken place (must be cleared in software)0 = No read or write has occurred

bit 6 ADIF: A/D Converter Interrupt Flag bit1 = An A/D conversion completed0 = The A/D conversion is not complete

bit 5 RCIF: USART Receive Interrupt Flag bit1 = The USART receive buffer is full0 = The USART receive buffer is empty

bit 4 TXIF: USART Transmit Interrupt Flag bit1 = The USART transmit buffer is empty0 = The USART transmit buffer is full

bit 3 SSPIF: Synchronous Serial Port (SSP) Interrupt Flag1 = The SSP interrupt condition has occurred, and must be cleared in software before returning from the Interrupt Service Routine. The conditions that will set this bit are:• SPI - A transmission/reception has taken place.• I2C Slave - A transmission/reception has taken place.

• I2C Master- A transmission/reception has taken place.- The initiated START condition was completed by the SSP module.- The initiated STOP condition was completed by the SSP module.- The initiated Restart condition was completed by the SSP module.- The initiated Acknowledge condition was completed by the SSP module.- A START condition occurred while the SSP module was idle (Multi-Master system).- A STOP condition occurred while the SSP module was idle (Multi-Master system).0 = No SSP interrupt condition has occurred.bit 2 CCP1IF: CCP1 Interrupt Flag bitCapture mode:1 = A TMR1 register capture occurred (must be cleared in software)0 = No TMR1 register capture occurredCompare mode:1 = A TMR1 register compare match occurred (must be cleared in software)0 = No TMR1 register compare match occurredPWM mode:Unused in this modebit 1 TMR2IF: TMR2 to PR2 Match Interrupt Flag bit1 = TMR2 to PR2 match occurred (must be cleared in software)0 = No TMR2 to PR2 match occurredbit 0 TMR1IF: TMR1 Overflow Interrupt Flag bit1 = TMR1 register overflowed (must be cleared in software)0 = TMR1 register did not overflowNote 1: PSPIF is reserved on PIC16F873/876 devices; always maintain this bit clear.

Page 31: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 31

REGISTRO PIR2

bit 7 Unimplemented: Read as '0'

bit 6 Reserved: Always maintain this bit clear

bit 5 Unimplemented: Read as '0'

bit 4 EEIF: EEPROM Write Operation Interrupt Flag bit1 = The write operation completed (must be cleared in software)0 = The write operation is not complete or has not been started

bit 3 BCLIF: Bus Collision Interrupt Flag bit1 = A bus collision has occurred in the SSP, when configured for I2C Master mode0 = No bus collision has occurred

bit 2-1 Unimplemented: Read as '0'

bit 0 CCP2IF: CCP2 Interrupt Flag bitCapture mode:1 = A TMR1 register capture occurred (must be cleared in software)0 = No TMR1 register capture occurredCompare mode:1 = A TMR1 register compare match occurred (must be cleared in software)0 = No TMR1 register compare match occurredPWM mode:Unused

Page 32: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 32

REGISTRO PCON

bit 7-2 Unimplemented: Read as '0'

bit 1 POR: Power-on Reset Status bit1 = No Power-on Reset occurred0 = A Power-on Reset occurred (must be set in software after a Power-on Reset occurs)

bit 0 BOR: Brown-out Reset Status bit1 = No Brown-out Reset occurred0 = A Brown-out Reset occurred (must be set in software after a Brown-out Reset occurs)

Page 33: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 34

• El único lenguaje que entienden los microcontroladores es el lenguaje máquina El único lenguaje que entienden los microcontroladores es el lenguaje máquina formado por ceros y unos del sistema binario.formado por ceros y unos del sistema binario.

• El lenguaje ensamblador expresa las instrucciones de una forma más natural al El lenguaje ensamblador expresa las instrucciones de una forma más natural al hombre a la vez que muy cercana al microcontrolador, ya que cada una de sus hombre a la vez que muy cercana al microcontrolador, ya que cada una de sus instrucciones se corresponde con otra en código máquina.instrucciones se corresponde con otra en código máquina.

• El lenguaje ensamblador trabaja con nemónicos, que son grupos de caracteres El lenguaje ensamblador trabaja con nemónicos, que son grupos de caracteres alfanuméricos que simbolizan las órdenes o tareas a realizar.alfanuméricos que simbolizan las órdenes o tareas a realizar.

•La traducción de los nemónicos a código máquina entendible por el microcontrolador la La traducción de los nemónicos a código máquina entendible por el microcontrolador la lleva a cabo un programa ensamblador.lleva a cabo un programa ensamblador.

• El programa escrito en lenguaje ensamblador se denomina código fuente (*.asm). El El programa escrito en lenguaje ensamblador se denomina código fuente (*.asm). El programa ensamblador proporciona a partir de este fichero el correspondiente código programa ensamblador proporciona a partir de este fichero el correspondiente código máquina, que suele tener la extensión *.hex.máquina, que suele tener la extensión *.hex.

LENGUAJE ENSAMBLADOR

Page 34: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 35

El juego de instrucciones

• Es un juego reducido de 35 instrucciones muy simples y rápidas.Es un juego reducido de 35 instrucciones muy simples y rápidas.

• La mayoría de las instrucciones se ejecuta en 4 ciclos de reloj; los saltos se ejecutan La mayoría de las instrucciones se ejecuta en 4 ciclos de reloj; los saltos se ejecutan en 8.en 8.

• Todas las instrucciones tienen la misma longitud: 14 bits.Todas las instrucciones tienen la misma longitud: 14 bits.

Instrucciones de CARGA

NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

clrf f 00 (f) Z

clrw 00 (W) Z

movf f,d (f) (destino) Z

movlw k k (W) Ninguno

movwf f (W) (f) Ninguno

Page 35: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 36

El código fuente• Está compuesto por una sucesión de líneas de programa.

• Cada línea de programa puede estar compuesta de hasta cuatro campos o columnas separados por uno o más espacios o tabulaciones entre sí.

Campo de etiquetas. Expresiones alfanuméricas escogidas por el usuario para identificar una determinada instrucción del programa. Todas las etiquetas tienen asignado el valor de la posición de memoria en la que se encuentra la instrucción a la que acompañan.

Campo del código de operación. Corresponde al nemónico.

Campo de operandos y datos. Contiene los operandos que precisa el nemónico utilizado. Según la instrucción, puede haber dos, uno o ningún operando.

Campo de comentarios. Dentro de una línea, todo lo que se encuentre a continuación de un punto y coma (;) será ignorado y considerado como comentario.

Page 36: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 37

Formatos Generales de Instrucción

Page 37: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 38

SintaxisSintaxis

CampoCampo DescripciónDescripción

ff Dirección de fichero de Registro (0x00 – 0x7F)Dirección de fichero de Registro (0x00 – 0x7F)

ww Registro AcumuladorRegistro Acumulador

bb Dirección de bit dentro de un registro 8-bits direccionablesDirección de bit dentro de un registro 8-bits direccionables

kk Literal, dato constante o etiquetaLiteral, dato constante o etiqueta

xx Da igual el valor (0 ó 1). El ensamblador generará x=0.Da igual el valor (0 ó 1). El ensamblador generará x=0.

dd Selecciona el destino. d=0, almacena el resultado en w. d=1, almacena el Selecciona el destino. d=0, almacena el resultado en w. d=1, almacena el resultado en f. Por defecto d=1.resultado en f. Por defecto d=1.

PCPC Contador de programaContador de programa

Page 38: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 39

Page 39: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 41

Instrucciones de BIT

NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

bcf f,b Pone a 0 el bit ‘b’ del registro ‘f’ Ninguno

bsf f,b Pone a 1 el bit ‘b’ del registro ‘f’ Ninguno

Page 40: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 42

Instrucciones ARITMÉTICAS

NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

addlw k (W) + k (W) C – DC - Z

addwf f,d (W) + (f) (destino) C – DC - Z

decf f,d (f) - 1 (destino) Z

incf f,d (f) + 1 (destino) Z

sublw k k - (W) (W) C – DC - Z

subwf f,d (f) - (W) (destino) C – DC - Z

Page 41: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 43

Instrucciones LÓGICAS

NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

andlw k (W) AND k (W) Z

andwf f,d (W) AND (f) (destino) Z

comf f,d (/f) (destino) Z

iorlw k (W) OR k (W) Z

iorwf f,d (W) OR (f) (destino) Z

rlf f,d Rota (f) a izquierda (destino) C

rrf f,d Rota (f) a derecha (destino) C

swapf f,d Intercambia nibbles (f) (destino) Ninguno

xorlw k (W) XOR k (W) Z

xorwf f,d (W) XOR (f) (destino) Z

Page 42: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 44

Page 43: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 45

Instrucciones de SALTO

NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

btfsc f,b Salta si el bit ‘b’ de ‘f’ es 0 Ninguno

btfss f,b Salta si el bit ‘b’ de ‘f’ es 1 Ninguno

decfsz f,d (f) - 1 (destino) y salta si es 0 Ninguno

incfsz f,d (f) + 1 (destino) y salta si es 0 Ninguno

goto k Salta a la dirección ‘k’ Ninguno

Instrucciones de manejo de SUBRUTINAS

NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

call k Llamada a subrutina Ninguno

retfie Retorno de una interrupción Ninguno

retlw k Retorno con un literal en (W) Ninguno

return Retorno de una subrutina Ninguno

Page 44: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 46

Instrucciones ESPECIALES

NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

clrwdt Borra Timer del Watchdog /TO - /PD

nop No operación Ninguno

sleep Entra en modo de bajo consumo /TO - /PD

Page 45: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 47

• El ensamblador MPASM (distribuido por Microchip) soporta los sistemas de numeración decimal, hexadecimal, octal, binario y ASCII.

• Los nemónicos que tengan una constante como operando deberán incluirla respetando la sintaxis que se indica a continuación.

Decimal .<valor>d’<valor>’D’<valor>’

Hexadecimal

0x<valor>h’<valor>’H’<valor>’

<valor>h . <valor>H

Octal o’<valor>’O’<valor>’

Binario b’<valor>’B’<valor>’

ASCII ‘<carácter>’a’<carácter>’A’<carácter>’

Cadena “<cadena>”

TIPO SINTAXIS

Las constantes hexadecimales que empiecen por una letra deben ir precedidas de un cero para no confundirlas con una etiqueta. Ejemplo:

movlw 0F7h

Page 46: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 48

Directivas

• Controlan el proceso de ensamblado del programa, pero no son parte del mismo (también se conocen como pseudoinstrucciones).

• Hay más de 50 directivas reconocidas por MPASM. A continuación se recogen algunas de las más habituales

ENDEs la única directiva obligatoria. Indica al ensamblador dónde

debedetener el proceso. Debe colocarse en la última línea del

programa.

<etiqueta> EQU <expresión>El valor <expresión> es asignado a <etiqueta>. Estas directivas

sesuelen colocar al principio del programa y habitualmente se usanpara definir constantes y direcciones de memoria.

[<etiqueta>] ORG <expresión>Las instrucciones del código fuente que siguen a esta directiva seensamblan a partir de la posición indicada por <expresión>.

Page 47: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 49

__CONFIG <expresión> [& <expresión> & ... & <expresión>]Permite indicar la configuración elegida para la grabación del PIC.Ejemplo: __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC

LIST P=16F876Indica el tipo de microcontrolador utilizado.

INCLUDE <p16F876.inc> o INCLUDE “p16F876.inc”Incluye en el programa un fichero donde se definen las etiquetascon las que se nombra a los diferentes registros y sus bits. Estefichero se encuentra en el directorio principal del programaensamblador. Puede usarse esta directiva para incluir cualquierotro fichero (¡Ojo! El fichero de inclusión no puede terminar conuna directiva END).

DT <expr1> [, <expr2>, ... , <exprN>]Genera una instrucción retlw por cada expresión que incluya ladirectiva. Si la expresión es del tipo cadena, se generará unainstrucción retlw por cada carácter de la misma.

Page 48: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 50

LOS PUERTOS DE E/S

Tienen 3 puertos de E/S (A, B, C).

Líneas multifuncionales. (Todas pueden trabajar como E/S digitales).

PUERTO A•6 Líneas (RA5-RA0).

•Bidireccionales: El sentido se configura en el registro TRISA.

p.e.: TRISA<0> = 1, RA0 funciona como entrada.

= 0, RA0 funciona como salida.

Tras un RESET (Power on), los bits del registro TRISA

se ponen a 1 (entradas).

(Reg. TRIS análogo en el resto de los puertos).

•Al leer el registro PORTA se lee el estado de las patitas en ese momento.

Page 49: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 51

PATITAS DEL PUERTO A

•Para seleccionar si RA<2-0> van a ser E/S digitales o entradas analógicas del conversor A/D, se escribe el valor adecuado en el registro ADCON1.

(p.e.: Si se escribe 011x en los bits de menos peso de ADCON1, todas las líneas del puerto A son E/S digitales).

REGISTROS QUE MANEJAN EL PUERTO A

REGISTROS ASOCIADOS AL PUERTO A

Page 50: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 52

Ejemplo: Inicializar el puerto A de modo que RA<3:0> y RA <7:6> sean entradas, y RA<5:4> sean salidas

Page 51: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 53

Page 52: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 54

PUERTO B•8 Líneas (RB7-RB0).

•Bidireccionales: El sentido se configura en el registro TRISB.

p.e.: TRISB<0> = 1, RB0 funciona como entrada.

= 0, RB0 funciona como salida.

•Algunas patitas tienen que ver con la programación:

Con voltaje bajo : MCLR#/Vpp=5V

RB3/PGM=1

Con voltaje alto: MCLR#/Vpp = 12…14V

RB3/PGM = E/S digital

Aspectos comunes: RB6/PGC = reloj para la programación.

RB7/PGD = entrada de datos a grabar en serie.

Page 53: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 55

RESISTENCIAS DE “PULL-UP”

Vcc

PATITA E/S

•Resistencias de “pull-up”.

•Inicialmente tras un RESET (power on) se desconectan.

•Se conectan poniendo el bit 7 (RBPU#) del registro OPTION_REG = 0.

•Se conectan automáticamente si se configura la línea como salida.

•Útiles para conectar pulsadores, teclados, etc.

Page 54: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 56

PATITAS DEL PUERTO B

•Las líneas RB<7-4> pueden programarse para generar interrupciones cuando se produzca algún cambio en su nivel lógico.

•Se deben configurar como entradas y se debe habilitar este tipo de interrupciones en el reg. INTCON.

•También RB0/INT puede programarse para petición de interrupción externa.

Page 55: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 57

REGISTROS ASOCIADOS AL PUERTO B

•La interrupción externa por RB0/INT es configurada a flanco de subida (INTEDG=1) o bajada (INTEDG=0) mediante INTEDG.

•Cuando se produce un flanco válido se activa el flag INTF del registro INTCON(1).

•Esta interrupción puede ser inhabilitada poniendo a cero el bit INTE de INTCON(4). EL Flag INTF debe ser puesto a cero en la rutina de tratamiento de interrupciones.

Page 56: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 58

PUERTO C•8 Líneas (RC7-RC0).

•Bidireccionales: El sentido se configura en el registro TRISC.

p.e.: TRISC<0> = 1, RC0 funciona como entrada.

= 0, RC0 funciona como salida.

PATITAS DEL PUERTO C

Page 57: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 59

REGISTROS ASOCIADOS AL PUERTO C

Page 58: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 60

El puerto serie en el PIC: transmisión RC6/TX/CK

Formato: NRZ,1 bit destart,8 ó 9 bits de datos, 1bit de stop.Se transmite (recibe) elLSB primeroSíncrono o Asíncrono: nos centramos en este último

TXIF=0

TXIF=1

TRMT se pone a uno cuando el TSR se

vacía.

No tiene interrupción asociada; si

es preciso, debe ser consultado

(polling)

“invisible”

Importante: TRISC6=0 y TRISC7 = 1 y RCSTA7=1

Page 59: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 61

Page 60: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 62

Pasos para realizar la transmisión

Inicializar el registro SPBRG, generador de baudios

Habilitar el modo asíncrono (SYNC=0 en TXSTA y SPEN=1 en RCSTA)

Si queremos interrupciones, habilitar TXIE en el PIE1

Si queremos 9 bits, poner a uno TX9, en TXSTA

Habilitar TXEN, con lo que TXIF=1 (TXREG vacío)

Si nueve bits, escribir TX9D, en TXSTA

Cargar TXREG , así TXIF=0 y comienza la transmisión

Page 61: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 63

Page 62: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 64

Si se tienen 9 bits,

RX9=1

Con CREN=1, en RCTSA, se habilita la recepción

Page 63: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 65

Utilización del 9º bit para el direccionamiento de esclavos:

El maestro puede enviar información a cualquiera de sus esclavos.

Primero le envía su dirección, RX9D=1 y ADDEN=1.

Entonces, el esclavo provoca una interrupción y se vuelca el contenido de RSR al buffer de recepción. Tras la interrupción, el esclavo mirará a ver si coincide con su dirección. Si lo es, poner ADDEN=0 para recibir los datos del maestro.

Page 64: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 66

Pasos para realizar la recepción

Inicializar el registro SPBRG, generador de baudios

Habilitar el modo asíncrono (SYNC=0 en TXSTA y SPEN=1 en RCSTA)

Si queremos interrupciones, habilitar RCIE en el PIE1

Si queremos 9 bits, poner a uno TX9, en TXSTA

Para detectar dirección, ADDEN=1

Se habilita la recepción con CREN=1

Tras la recepción, RCIF=1 y la interrup. (si se habilitó)

Page 65: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 67

Pasos para realizar la recepción

Se lee el registro RCSTA

Leer los 8 bits de RCREG para ver si el dispositivo ha sido direccionado

Si hubo error, CREN=0

Si ha sido direccionado, poner ADDEN=0 para recibir la información

Page 66: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 68

Page 67: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 69

Page 68: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 70

Page 69: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 71

Page 70: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 72

Page 71: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 73

PUERTO D•No implementado en el PIC873 y PIC876.

•8 Líneas (RD7-RD0).

•Bidireccionales: El sentido se configura en el registro TRISD.

p.e.: TRISD<0> = 1, RD0 funciona como entrada.

= 0, RD0 funciona como salida.

•El puerto D se puede configurar como puerto paralelo esclavo (PSP) de 8 bits para la comunicación paralelo con otros elementos, poniendo a “1” el bit PSPMODE del puerto E (TRISE<4>).PATITAS DEL PUERTO D

Page 72: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 74

REGISTROS ASOCIADOS AL PUERTO D

Page 73: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 75

PUERTO E•No implementado en el PIC873 y PIC876.

•3 Líneas (RE2-RE0).

•Bidireccionales: El sentido se configura en el registro TRISE.

p.e.: TRISE<0> = 1, RE0 funciona como entrada.

= 0, RE0 funciona como salida.

•Operando en modo paralelo esclavo (PSP) además del puerto paralelo esclavo (puerto D) y de su activación PSPMODE=1 (TRISE<4>=1) se necesitan 3 líneas de control de la comunicación (RD#, WR#, CS#) implementadas en el puerto E.

Page 74: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 76

REGISTROS ASOCIADOS AL PUERTO E

PATITAS DEL PUERTO E

Page 75: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 77

REGISTRO TRISE

Page 76: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 78

El timer 0

Funcionamiento como contador

Funcionamiento como Temp.

Page 77: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 79

Registros asociados

EJEMPLO

Page 78: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 80

Page 79: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 81

El timer 1

Funcionamiento como contador

Funcionamiento como Temp.

Habilita/deshabilita

Interrupción si rebosa

Page 80: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 82

El timer 1 como temporizador

Funcionamiento como Temp.

El reloj utilizado es el de siempre, el interno dividido por

cuatro

No tiene sentido hablar de sincronismos

Page 81: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 83

Funcionamiento como Temp.

Dos posibles entradas de

pulsos

Cuenta flancos ascendentes.

Es preciso tener un descendente primero

Page 82: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 84

Funcionamiento como Temp.

Síncrono-Asíncrono

ventajas e inconvenientes

Page 83: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 85

Page 84: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 86

Registros asociados

EJEMPLO

Page 85: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 87

El puerto Serie

Puerto Serie: La norma RS-232C

Ordenador

personal : DTE

MODEM

DCE

Línea Telefónica

Norma RS-232C: comunicaciones DTE DCE

Page 86: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 88

0 0.05 0.1 0.15 0.2 0.252

1

0

1

2

v2( )t

t

0 0.05 0.1 0.15 0.2 0.251

0.5

0

0.5

1

Vl( )t

t

Conceptos básicos: Modulación.

Portadora

0 0.05 0.1 0.15 0.2 0.251

0.5

0

0.5

10.6

-0.6

Vl( )t

0.250 t

Moduladora

0 0.05 0.1 0.15 0.2 0.252

1

0

1

21.59815

-1.59815

V( )t

0.250 t

Onda modulada en amplitud

Modular significa alterar las

características de una onda

(portadora) con otra onda

Page 87: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 89

0 0.05 0.1 0.15 0.2 0.252

1

0

1

2

v2( )t

t

0 0.05 0.1 0.15 0.2 0.251

0.5

0

0.5

1

Vl( )t

t

Portadora

0 0.05 0.1 0.15 0.2 0.251

0.5

0

0.5

10.6

-0.6

Vl( )t

0.250 t

ModuladoraModular significa

alterar las características de

una onda (portadora) con

otra onda

0 0.05 0.1 0.15 0.2 0.252

1

0

1

2

V3( )t

t

Modulación en frecuencia

Page 88: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 90

Especificaciones mecánicas: Conector estándar

Macho para el DTE (PC)

Hembra para el DCE (modem)

Especificaciones Eléctricas: Niveles de Tensión y corriente

+15 V +5V

-5 V -15V

Emisor0

1

Receptor0

1

2 V

Corriente máxima: 0.5 A

RS-232C

Page 89: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 91

Funciones de las señalesPATILLA NOMBRE FUNCION

1 GND MASA2 TXD TRANSMISION3 RXD RECEPCION4 RTS PETICION DE ENVIO5 CTS LISTO PARA ENVIAR6 DSR DCE LISTO7 Masa masa8 DCD DETECCION DE PORT9101112 DCD CANAL SEC13 CTS CANAL SEC14 TXD CANAL SEC15 TC RELOJ DE TRANSM16 RXD CANAL SEC17 RC RELOJ DE RECEP18 DCR RELOJ RECEP. DIVID.19 RTS CANAL SEC20 DTR DATA TERMINAL READY21 SQ CALIDAD DE SEÑAL22 RI INDICADOR DE LLAM.23 CH/CI SELECT. VELOC24 TC RELOJ TRANSM. EXT25 BUSY OCUPADO

Dos canales de transmisión

Concepto de portadora

0 0.02 0.04 0.06 0.08 0.1 0.120.5

0

0.5

1

1.5

2

2.5

V( )t

t

Page 90: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 92

Algunas aclaraciones

Diferencia entre CTS y DSR:

CTS es una respuesta a RTS que indica que el modem está listo; útil cuando el modem es half-duplex, sin sentido en full-duplex

DSR se activa cuando el modem consigue conectar, establecer la comunicación

Normalmente, no se utilizan los 25 pines; de hecho, se aplica la comunicación serie entre dos equipos que no son DTE y DCE, (dos PCs, etc).

Hay diversos tipos de conexión, que no siguen la norma en absoluto: modem-null, etc

23

4 5 6 20

23

4 5 6 20

7 7

Page 91: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 93

El puerto serie en el PIC: transmisión RC6/TX/CK

Formato: NRZ,1 bit destart,8 ó 9 bits de datos, 1bit de stop.Se transmite (recibe) elLSB primeroSíncrono o Asíncrono: nos centramos en este último

TXIF=0

TXIF=1

TRMT se pone a uno cuando el TSR se

vacía.

No tiene interrupción asociada; si

es preciso, debe ser consultado

(polling)

“invisible”

Importante: TRISC6=0 y TRISC7 = 1 y RCSTA7=1

Page 92: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 94

Pasos para realizar la transmisión

Inicializar el registro SPBRG, generador de baudios

Habilitar el modo asíncrono (SYNC=0 en TXSTA y SPEN=1 en RCSTA)

Si queremos interrupciones, habilitar TXIE en el PIE1

Si queremos 9 bits, poner a uno TX9, en TXSTA

Habilitar TXEN, con lo que TXIF=1 (TXREG vacío)

Si nueve bits, escribir TX9D, en TXSTA

Cargar TXREG , así TXIF=0 y comienza la transmisión

Page 93: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 95

Es preciso cargar el registro SPBRG con un valor, para seleccionar baudios. Está

tabulado en función del reloj.

Page 94: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 96

Bits asociados al generador de baudios

Bits asociados a la transmisión serie

Page 95: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 97

Si se tienen 9 bits,

RX9=1

Con CREN=1, en RCTSA, se habilita la recepción

Page 96: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 98

Utilización del 9º bit para el direccionamiento de esclavos:

El maestro puede enviar información a cualquiera de sus esclavos.

Primero le envía su dirección, RX9D=1 y ADDEN=1.

Entonces, el esclavo provoca una interrupción y se vuelca el contenido de RSR al buffer de recepción. Tras la interrupción, el esclavo mirará a ver si coincide con su dirección. Si lo es, poner ADDEN=0 para recibir los datos del maestro.

Page 97: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 99

Pasos para realizar la recepción

Inicializar el registro SPBRG, generador de baudios

Habilitar el modo asíncrono (SYNC=0 en TXSTA y SPEN=1 en RCSTA)

Si queremos interrupciones, habilitar RCIE en el PIE1

Si queremos 9 bits, poner a uno TX9, en TXSTA

Para detectar dirección, ADDEN=1

Se habilita la recepción con CREN=1

Tras la recepción, RCIF=1 y la interrup. (si se habilitó)

Page 98: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 100

Pasos para realizar la recepción

Se lee el registro RCSTA

Leer los 8 bits de RCREG para ver si el dispositivo ha sido direccionado

Si hubo error, CREN=0

Si ha sido direccionado, poner ADDEN=0 para recibir la información

Page 99: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 101

REGISTRO

RCSTA

Page 100: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 102

Registros que intervienen en la recepción asíncrona

Page 101: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 103

Page 102: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 104

• El MPLAB IDE es un entorno de desarrollo integrado distribuido gratuitamente por Microchip (fabricante de los microcontroladores PIC) en su página web: http://www.microchip.com

• Incluye un editor de texto, un ensamblador (MPASM), un simulador (MPLAB SIM) y un gestor de proyectos (entre otras cosas).

• A continuación se indican los pasos a dar para trabajar con este entorno (versión 6.60) hasta conseguir simular el funcionamiento de un programa.

• El fichero con el que se va a trabajar es cuenta.asm, primer ejemplo básico. Se realizará su edición, se definirá un Proyecto que incluirá como código fuente el programa editado y se realizará el ensamblado del mismo.

• Tras la simulación se procederá a comprobar el correcto funcionamiento del mismo utilizando el depurador en circuito MPLAB ICD2 junto con la tarjeta de entrenamiento PICDEM 2 (o PICDEM 2 plus según el caso).

• Por último, se procederá a grabar este programa en un microcontrolador PIC usando también el MPLAB ICD2.

Page 103: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 105

Primeros pasos

• Iniciar el programa haciendo click sobre el icono correspondiente.

• Como método para crear proyectos se sugiere utilizar el asistente, para lo cual se seleccionará Project>>Project Wizard...

• Tras un mensaje de bienvenida, se nos solicita que indiquemos el dispositivo que pensamos utilizar. En este caso seleccionaremos el PIC16F877.

• La siguiente ventana pregunta por elensamblador/compilador que se va a usar.Seleccionaremos Microchip MPASM Tool-suite (es la opción que sale por defecto)asegurándonos de que el entorno MPLABconoce la ubicación de los tres ejecutablesque necesita: mpasmwin, mplink y mplib.

Page 104: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 106

• A continuación se le asignará un nombre de proyecto (por ejemplo cuenta, sin extensión) y se indicará en qué directorio se va a ubicar. Se recomienda que el proyecto y el fichero ensamblador se encuentren en el mismo directorio.

• En el cuarto paso se nos pide indicar losficheros que se van a incluir en el proyectoque estamos creando. Deberemos buscar elfichero cuenta.asm, seleccionarlo y hacerclick sobre el botón Add>>. Si no hemoscreado aún el fichero *.asm, simplementeharemos click sobre Siguiente>.

• Con esto ya queda creado el proyecto, yen el entorno MPLAB aparece una ventana (cuenta.mcw) en la que se muestra la información del proyecto que se acaba de definir.

Si aún hubiera que crear el fichero *.asm, se podría escribir en el editor que se abre con File>>New y a continuación incluirlo en el proyecto haciendo click con el botón derecho sobre Source Files en la ventana cuenta.mcw y seleccionar la opción Add Files...

Page 105: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 107

Ensamblado del programa

• Para ensamblar el programa basta con hacer doble click en el icono correspondiente, que equivale a seleccionar Project>>Build All.

• En esta etapa se realiza el ensamblado del fichero fuente y el traspaso de éste a la memoria de simulación.

• Aparecerá momentáneamente una ventana indicando el proceso de ensamblado.

•Al final aparece la pantalla Output en la que se indica si el ensamblado se ha llevado a cabo con éxito (BUILD SUCCEEDED) o si, por el contrario, se han localizado fallos (BUILD FAILED).

• En caso de existir fallos, se indica de qué tipo son y en qué línea están. Haciendo doble click sobre la línea de la ventana Output en la que se muestra esta información, se accede directamente a la posición donde se ha detectado el fallo en el fichero fuente.

Page 106: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 108

Simulación del programa

• Una vez ensamblado el programan sin errores, simularemos su comportamiento seleccionando la opción Debugger>>Select Tool MPLAB SIM.

• La simulación no es útil si no se visualizan los resultados de la misma. Para ello, se activará una ventana personalizada Watch que permite supervisar el contenido de los registros de interés. Esta ventana se activa mediante View>>Watch. Los registros se añaden haciendo click en el botón Add SFR o Add Symbol.

• En la barra de estado también se muestra información sobre el contenido del registro W y el valor de los flags de STATUS (minúscula = ‘0’).

Page 107: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 109

• Los cinco comandos más importantes para la simulación (localizados dentro del menú Debugger) son los que se indican a continuación.

Run (Ejecución continua). Ejecuta el programa constantemente. La ventana Watch no se actualiza hasta que no se detiene la simulación.

Animate (Ejecución animada). Ejecuta el programa de forma continua pero actualizando el contenido de la ventana Watch cada vez que ejecuta una instrucción.

Halt (Paro). Detiene la ejecución del programa y actualiza todos los valores de las ventanas de visualización.

Step Into (Ejecución paso a paso). Ejecuta una sola instrucción del programa y actualiza la información de las ventanas de visualización.

Reset. Equivale a un reset por activación del pin /MCLR.

Page 108: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 110

• Otros modos de simulación son los siguientes.

Step Over. Ejecuta una sola instrucción del programa y actualiza las ventanas de visualización. Cuando la instrucción es una llamada a una subrutina (call k), se ejecuta toda la subrutina antes de actualizar las ventanas.

Step Out. Cuando se está ejecutando una subrutina paso a paso, este modo de simulación obliga a que se ejecuten todas las instrucciones de la subrutina hasta regresar al programa principal, momento en el que se detiene la simulación y se actualizan las ventanas de visualización.

Run to cursor. Esta opción da lugar a una ejecución continua desde la última instrucción simulada hasta la posición actual del cursor. Se entra en este modo de simulación mediante el menú que se activa con el botón derecho del ratón.

Page 109: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 111

• Otro elemento asociado a la simulación son los puntos de ruptura o breakpoints, que constituyen puntos o instrucciones donde el usuario decide que debe detenerse la ejecución del programa.

• Para ubicar un breakpoint sobre una línea señalada por el cursor, se seleccionará la opción Set Breakpoint del menú que aparece al pulsar el botón derecho del ratón. Otra posibilidad es hacer doble click sobre la línea donde se quiere colocar. En cualquier caso, aparecerá una “B” de color rojo en la posición donde se ha situado el punto de ruptura.

• Al simular una ejecución continua, el programa se detendrá en la instrucción que se ha marcado con el punto de ruptura. Para continuar con la simulación desde ese punto hay que volver a lanzar la simulación.

• Para eliminar puntos de ruptura, basta con hacer doble click sobre la línea en que se encuentran. Si hay muchos, puede resultar más útil seleccionar Breakpoints Remove All Breakpoints en el menú que se activa con el botón derecho del ratón la opción. Este menú también ofrece la opción de activar/desactivar los puntos de ruptura colocados en el programa.

Page 110: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 112

Simulación de entradas

• Para comprobar el correcto funcionamiento de un programa suele ser necesario modificar el valor de determinadas entradas durante la simulación. Para cambiar los estímulos de una entrada de un puerto hay que seleccionar el menú Debugger>>Stimulus Controller.

Page 111: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 113

• En la pestaña Pin Stimulus se añadirán diferentes filas pulsando el botón Add Row.

• En cada fila se puede indicar si la entrada va a ser síncrona o asíncrona, a qué pin está asociada y que tipo de cambio se desea simular para ese pin.

• Para las entradas asíncronas, se definen cuatro posibles acciones: High. Pone la entrada a “1”.

Low. Pone la entrada a “0”.

Toggle. Cambia de valor cada vez que se pulse. Es la más habitual.

Pulse. Cambia el estado del pin y vuelve a recuperar su valor inicial.

• Cada vez que se pulse al botón Fire, se ejecuta la acción asociada al pin correspondiente.

• Para las entradas síncronas hay que indicar durante cuántos ciclos de instrucción queremos que la señal esté a “1” y durante cuántos queremos que esté a “0”.

Page 112: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 114

EJERCICIOEJERCICIO

Llevar a cabo la simulación del programa cuenta.asm

• Visualizar al menos el contenido de los puertos PORTA y PORTB.

• Configurar la ventana de visualización para poder ver los registros anteriores en formato binario.

• Definir una entrada asíncrona en el pin 4 de PORTA.

• Simular el programa y comprobar su funcionamiento.

• Practicar distintos modos de simulación y la utilización de puntos de ruptura.

Page 113: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 115

Depuración con MPLAB ICD 2

• Permite comprobar el funcionamiento del programa sobre la tarjeta en la que se va a colocar el microcontrolador.

• El control de la depuración se lleva a cabo con los mismos controles que se usan durante la simulación (Run, Animate, Halt, …).

• Es preciso conectar el dispositivo entre el PC y la PCB que albergará el PIC.

MPLABIDE

USB

Fuente deAlimentación

Page 114: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 116

• Para lanzar el depurador es preciso seleccionar la opciónDebugger>>Select Tool MPLAB ICD 2.

• Antes de establecer la conexión, puede resultar adecuado configurar el equipo entrando en Debugger>>Settings… y seleccionando las siguientes pestañas.

Communication. Indicamos que vamos a conectar el ICD 2 al puerto USB. También podría utilizarse alguno de los puertos serie (COMn).

Program. Seleccionamos la opción Allow ICD 2 to select memories and ranges para hacer que sea el depurador el que decida qué zonas de memoria deben grabarse en el PIC.

Page 115: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 117

• A continuación es necesario establecer la conexión con el depurador, para lo cual se selecciona Debugger>>Connect o se hace click sobre el icono.

• Si ha habido errores de conexión, deberá verificarse el cableado del equipo y la configuración indicada en Debugger>>Settings… , fijándose ahora también en las pestañas

Status. Nos indicará si la conexión se ha hecho de manera adecuada. Permite además configurar el sistema para que esta conexión se establezca de manera automática.

Power. Indica los valores de las tensiones del sistema. Para que todo funcione correctamente se necesita Target Vdd5V (si no es así, la placa está mal alimentada), Target Vpp13V y MPLAB ICD 2 Vpp13V.

• Una vez establecida la conexión, el MPLAB ICD 2 ya está listo para transferir nuestro programa al microcontrolador que se encuentra en la placa de la aplicación, lo que permitirá llevar a cabo la depuración.

• En modo depuración se puede ejecutar, parar, transferir contenidos, etc.

Page 116: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 118

• La depuración con MPLAB ICD2 se puede realizar porque el microcontroladoradmite trabajar en modo depuración cuando el bit DEBUG de la palabra deconfiguración se graba como ‘0’

• Si el microcontrolador está trabajando en modo depuración hay ciertos recursos que necesita este modo de trabajo: 2 pines (RB6 y RB7), 1 posición de la pila hardware del PC, las últimas 256 posiciones de la memoria de programa y varias posiciones de RAM 0x070 (0x0F0, 0x170, 0x1F0), 0x1EB-0x1EF

• Se deben cargar los bits de la palabra de configuración:

Configure >> Configuration bits…

• Para grabar tanto la palabra de configuración como la memoria de programa (tras haber ensamblado) se seleccionará Debugger>>Program.

PROGRAMAR

Page 117: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 119

• Una vez programado el dispositivo, se procede del mismo modo que se hizo con el simulador con la diferencia de que ahora, además de poder ver el valor de los registros en las ventanas de visualización, comprobaremos el funcionamiento real en la placa.

Run : para lanzar la ejecución continua del programa

Animate : ejecución con animación (actualización de posición y reg.)

Halt : parada de la ejecución

Reset : reinicio del microcontrolador

Step into : ejecución paso a paso

Step over : paso a paso ejecutando los subprogramas completos

Step out : ejecución hasta que se sale de subprograma

Page 118: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 120

Grabado de PICs con MPLAB ICD 2

• Además de llevar a cabo procesos de depuración, el MPLAB ICD 2 permite grabar los microcontroladores que se incluirán en la placa final.

• Para ello, hay que seleccionar este dispositivo como elemento programador, lo cual se consigue con Programmer>>Select Programmer MPLAB ICD 2.

• El MPLAB ICD 2 no puede funcionar como depurador y programador al mismo tiempo. Por ello, para seleccionar el MPLAB ICD 2 como programador, deberemos asegurarnos de que no está seleccionado como depurador (y viceversa).

Page 119: Tema 3 Sistemas Embebidos PIC

Hardware para Domótica 121

• Las opciones de grabación que se ofrecen son las siguientes: Program. La que se usa para grabar el PIC. Es la más habitual.

Read. Lee el programa que está grabado en el PIC y lo carga en la memoria de programa del entorno MPLAB.

Verify. Comprueba que la grabación se ha efectuado correctamente.

Erase Part. Borra completamente el PIC antes de programarlo.

Blank Check. Comprueba que el PIC está borrado.

• Después de programado, el PIC puede desmontarse del header (placa con zócalo) y conectarlo directamente en la placa.

• El programa comenzará a ejecutarse en cuanto el microcontrolador reciba la tensión de alimentación.