Download - 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.
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
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
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
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…)
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’
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
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
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
Hardware para Domótica 10
Evolución tecnológica de los SS.EE. Evolución tecnológica de los SS.EE. IntegraciónIntegración
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
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
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)
Hardware para Domótica 14
Hardware para Domótica 15
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.
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
Hardware para Domótica 18
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.
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.
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).
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.
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).
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.
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
Hardware para Domótica 26
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
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.
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
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.
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
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)
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
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
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.
Hardware para Domótica 37
Formatos Generales de Instrucción
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
Hardware para Domótica 39
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
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
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
Hardware para Domótica 44
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
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
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
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>.
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.
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.
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
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
Hardware para Domótica 53
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.
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.
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.
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.
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
Hardware para Domótica 59
REGISTROS ASOCIADOS AL PUERTO C
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
Hardware para Domótica 61
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
Hardware para Domótica 63
Hardware para Domótica 64
Si se tienen 9 bits,
RX9=1
Con CREN=1, en RCTSA, se habilita la recepción
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.
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ó)
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
Hardware para Domótica 68
Hardware para Domótica 69
Hardware para Domótica 70
Hardware para Domótica 71
Hardware para Domótica 72
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
Hardware para Domótica 74
REGISTROS ASOCIADOS AL PUERTO D
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.
Hardware para Domótica 76
REGISTROS ASOCIADOS AL PUERTO E
PATITAS DEL PUERTO E
Hardware para Domótica 77
REGISTRO TRISE
Hardware para Domótica 78
El timer 0
Funcionamiento como contador
Funcionamiento como Temp.
Hardware para Domótica 79
Registros asociados
EJEMPLO
Hardware para Domótica 80
Hardware para Domótica 81
El timer 1
Funcionamiento como contador
Funcionamiento como Temp.
Habilita/deshabilita
Interrupción si rebosa
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
Hardware para Domótica 83
Funcionamiento como Temp.
Dos posibles entradas de
pulsos
Cuenta flancos ascendentes.
Es preciso tener un descendente primero
Hardware para Domótica 84
Funcionamiento como Temp.
Síncrono-Asíncrono
ventajas e inconvenientes
Hardware para Domótica 85
Hardware para Domótica 86
Registros asociados
EJEMPLO
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
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
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
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
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
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
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
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
Hardware para Domótica 95
Es preciso cargar el registro SPBRG con un valor, para seleccionar baudios. Está
tabulado en función del reloj.
Hardware para Domótica 96
Bits asociados al generador de baudios
Bits asociados a la transmisión serie
Hardware para Domótica 97
Si se tienen 9 bits,
RX9=1
Con CREN=1, en RCTSA, se habilita la recepción
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.
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ó)
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
Hardware para Domótica 101
REGISTRO
RCSTA
Hardware para Domótica 102
Registros que intervienen en la recepción asíncrona
Hardware para Domótica 103
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.
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.
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...
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.
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’).
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.
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.
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.
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.
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”.
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.
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
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.
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.
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
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
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).
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.