3. atributos de la arquitectura de un mcu sistemas...

91
3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas Embebidos M. C. Felipe Santiago Espinosa Marzo de 2020

Upload: others

Post on 25-Aug-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

3. ATRIBUTOS DE LA ARQUITECTURA

DE UN MCU

Sistemas Embebidos

M. C. Felipe Santiago Espinosa

Marzo de 2020

Page 2: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Arquitectura de una CPU

• La arquitectura hace referencia a los atributos que se

establecen durante el diseño de la CPU y que quedan

visibles al programador, o dicho de otra manera, aquellos

atributos que tienen un impacto directo en la ejecución

lógica de un programa.

• Los atributos arquitectónicos incluyen:

• Registros (tamaño y cantidad)

• El conjunto de instrucciones

• Modos de direccionamiento

• Mecanismos de E/S

Page 3: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Conjunto de Instrucciones

• El repertorio del ATMega328 cuenta con 131 instrucciones,

las cuales están organizadas en 5 grupos:

• Instrucciones Aritméticas y lógicas (28)

• Instrucciones de control de flujo (Bifurcaciones) (36)

• Instrucciones de transferencia de datos (35)

• Instrucciones para el manejo y evaluación de bits (28)

• Instrucciones especiales (4)

• La mayoría de las instrucciones utilizan una palabra de 16

bits.

Page 4: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Instrucciones Aritméticas y Lógicas• Sumas y restas

Las que trabajan con palabras se ejecutan en 2 ciclos de reloj, las demás sólo en 1 ciclo.

Instrucción Descripción Operación Banderas

ADD Rd, Rs Suma sin acarreo Rd = Rd + Rs Z,C,N,V,H,S

ADC Rd, Rs Suma con acarreo Rd = Rd + Rs + C Z,C,N,V,H,S

ADIW Rd, k Suma constante a palabra [Rd + 1:Rd] = [Rd + 1:Rd] + k Z,C,N,V,S

SUB Rd, Rs Resta sin acarreo Rd = Rd - Rs Z,C,N,V,H,S

SUBI Rd, k Resta constante Rd = Rd – k Z,C,N,V,H,S

SBC Rd, Rs Resta con acarreo Rd = Rd – Rs – C Z,C,N,V,H,S

SBCI Rd, k Resta constante con acarreo Rd = Rd – K – C Z,C,N,V,H,S

SBIW Rd, k Resta constante a palabra [Rd + 1:Rd] = [Rd + 1:Rd] - k Z,C,N,V,S

Page 5: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• Multiplicaciones enteras y fraccionales.

Todas se ejecutan en 2 ciclos de reloj.

Instrucción Descripción Operación Banderas

MUL Rd, Rs Multiplicación sin signo R1:R0 = Rd * Rs Z,C

MULS Rd, Rs Multiplicación con signo R1:R0 = Rd * Rs Z,C

MULSU Rd, RsMultiplicación de un número con

signo y otro sin signoR1:R0 = Rd * Rs Z,C

FMUL Rd, RsMultiplicación fraccional sin

signoR1:R0 = ( Rd * Rs ) << 1 Z,C

FMULS Rd, RsMultiplicación fraccional con

signoR1:R0 = ( Rd * Rs ) << 1 Z,C

FMULSU Rd, Rs

Multiplicación fraccional de un

número con signo y otro sin

signo

R1:R0 = ( Rd * Rs ) << 1 Z,C

Page 6: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• Instrucciones Lógicas Binarias

Todas se ejecutan en 1 ciclo de reloj.

• Instrucciones para enmascarar información

Se ejecutan en 1 ciclo de reloj y modifican a las banderas Z, C, N, V y S.

Instrucción Descripción Operación

AND Rd, Rs Operación lógica AND Rd = Rd AND Rs

ANDI Rd, k Operación lógica AND con una constante Rd = Rd AND k

OR Rd, Rs Operación lógica OR Rd = Rd OR Rs

ORI Rd, k Operación lógica OR con una constante Rd = Rd OR k

EOR Rd, Rs Operación lógica OR Exclusiva Rd = Rd XOR Rs

Instrucción Descripción Operación

SBR Rd, k Pone en alto los bits indicados en la constante Rd = Rd OR k

CBR Rd, k Pone en bajo los bits indicados en la constante Rd = Rd AND (0xFF – k)

Page 7: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• Instrucciones Aritméticas o Lógicas Unarias

• Se ejecutan en 1 ciclo de reloj.

Instrucción Descripción Operación Banderas

COM Rd Complemento a 1 Rd = 0xFF – Rd Z,C,N,V,S

NEG Rd Negado o complemento a 2 Rd = 0x00 – Rd Z,C,N,V,H,S

INC Rd Incrementa un registro Rd = Rd + 1 Z,N,V,S

DEC Rd Decrementa un registro Rd = Rd – 1 Z,N,V,S

TST Rd Evalúa un registro Rd = Rd AND Rd Z,C,N,V,S

CLR Rd Limpia un registro (pone en bajo) Rd = 0x00 Z,C,N,V,S

SER Rd Ajusta un registro (pone en alto) Rd = 0xFF Ninguna

Page 8: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Instrucciones de Control de Flujo• Saltos Incondicionales

Los saltos relativo e indirecto se ejecutan en 2 ciclos de reloj, el salto absoluto en 3.

• Instrucciones para el manejo de Rutinas

Las llamadas relativa e indirecta a rutinas se ejecutan en 3 ciclos de reloj, la llamada absoluta y los retornos se ejecutan en 4.

Instrucción Descripción Operación

RJMP k Salto relativo PC = PC + k + 1

IJMP Salto indirecto PC = Z

JMP k Salto absoluto PC = k

Instrucción Descripción Operación

RCALL k Llamada relativa a una rutina PC = PC + k + 1, PILA ← PC + 1

ICALL Llamada indirecta a una rutina PC = Z, PILA ← PC + 1

CALL k Llamada absoluta a una rutina PC = k, PILA ← PC + 1

RET Retorno de una rutina PC ← PILA

RETI Retorno de rutina de interrupción PC ← PILA, I = 1

Page 9: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• Instrucciones para la comparación de datos.

Modifican las banderas Z, C, N, V, H y S, se ejecutan en un ciclo de reloj.

Instrucción Descripción Operación

CP Rd, Rs Compara dos registros Rd – Rs

CPC Rd, Rs Compara registros con acarreo Rd – Rs – C

CPI Rd, k Compara un registro con una constante Rd – k

Page 10: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• Brincos Condicionales.

Pueden tardar 1 o 2 ciclos de reloj.

Instrucción Descripción Operación

BRBS s, k Brinca si el bit s del registro estado está en alto si(SREG(s) == 1) PC = PC + k + 1

BRBC s, k Brinca si el bit s del registro estado está en bajo si (SREG(s) == 0) PC = PC + k + 1

BRIE k Brinca si las interrupciones están habilitadas si (I == 1) PC = PC + k + 1

BRID k Brinca si las interrupciones están deshabilitadas si (I == 0) PC = PC + k + 1

BRTS k Brinca si el bit T está en alto si (T == 1) PC = PC + k + 1

BRTC k Brinca si el bit T está en bajo si (T == 0) PC = PC + k + 1

BRHS k Brinca si la bandera H está en alto si (H == 1) PC = PC + k + 1

BRHC k Brinca si la bandera H está en bajo si (H == 0) PC = PC + k + 1

BRGE k Brinca si es mayor o igual que (con signo) si (S == 0) PC = PC + k + 1

BRLT k Brinca si es menor que (con signo) si (S == 1) PC = PC + k + 1

BRVS k Brinca si la bandera V está en alto si (V == 1) PC = PC + k + 1

BRVC k Brinca si la bandera V está en bajo si (V == 0) PC = PC + k + 1

BRMI k Brinca si es negativo si (N == 1) PC = PC + k + 1

BRPL k Brinca si no es negativo si (N == 0) PC = PC + k + 1

BREQ k Brinca si los datos son iguales si (Z == 1) PC = PC + k + 1

BRNE k Brinca si los datos no son iguales si (Z == 0) PC = PC + k + 1

BRSH k Brinca si es mayor o igual si (C == 0) PC = PC + k + 1

BRLO k Brinca si es menor si (C == 1) PC = PC + k + 1

BRCS k Brinca si la bandera C está en alto si (C == 1) PC = PC + k + 1

BRCC k Brinca si la bandera C está en bajo si (C == 0) PC = PC + k + 1

Page 11: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• “Saltitos” Condicionales.

Pueden tardar 1, 2 o 3 ciclos de reloj.

Instrucción Descripción Operación

CPSE Rd, Rs Un saltito si los registros son iguales si(Rd == Rs) PC = PC + 2 o 3

SBRS Rs, bUn saltito si el bit b del registro Rs está en

altosi(Rs(b) == 1) PC = PC + 2 o 3

SBRC Rs, bUn saltito si el bit b del registro Rs está en

bajosi(Rs(b) == 0) PC = PC + 2 o 3

SBIS P, bUn saltito si el bit b del registro P está en

alto, P es un registro I/O

si(I/O(P, b) == 1)

PC = PC + 2 o 3

SBIC P, bUn saltito si el bit b del registro P está en

bajo, P es un registro I/O

si(I/O(P, b) == 0)

PC = PC + 2 o 3

Page 12: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Transferencias de Datos

Page 13: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• Trasferencia entre registros.

• Trasferencia de una constante a un registro.

Instrucción Descripción Operación

MOV Rd, Rs Copia un registro Rd = Rs

MOVW Rd, Rs Copia un par de registrosRd + 1: Rd = Rs + 1: Rs, Rd y Rs

registros pares

Instrucción Descripción Operación

LDI Rd, k Copia la constante en el registro Rd = k

Page 14: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• Transferencias entre memoria de datos y registros (cargas)

Instrucción Descripción Operación

LDS Rd, k Carga directa de memoria Rd = Mem[k]

LD Rd, X Carga indirecta de memoria Rd = Mem[X]

LD Rd, X+ Carga indirecta con post-incremento Rd = Mem[X], X = X + 1

LD Rd, -X Carga indirecta con pre-decremento X = X - 1, Rd = Mem[X]

LD Rd, Y Carga indirecta de memoria Rd = Mem[Y]

LD Rd, Y+ Carga indirecta con post-incremento Rd = Mem[Y], Y = Y + 1

LD Rd, -Y Carga indirecta con pre-decremento Y = Y - 1, Rd = Mem[Y]

LDD Rd, Y + q Carga indirecta con desplazamiento Rd = Mem[Y + q]

LD Rd, Z Carga indirecta de memoria Rd = Mem[Z]

LD Rd, Z+ Carga indirecta con post-incremento Rd = Mem[Z], Z = Z + 1

LD Rd, -Z Carga indirecta con pre-decremento Z = Z - 1, Rd = Mem[Z]

LDD Rd, Z + q Carga indirecta con desplazamiento Rd = Mem[Z + q]

Page 15: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• Transferencias entre registros y memoria de datos (Almacenamientos)

Instrucción Descripción Operación

STS k, Rs Almacenamiento directo en memoria Mem[k] = Rs

ST X, Rs Almacenamiento indirecto en memoria Mem[X] = Rs

ST X+, Rs Almacenamiento indirecto con post-incremento Mem[X] = Rs, X = X + 1

ST -X, Rs Almacenamiento indirecto con pre-decremento X = X - 1, Mem[X] = Rs

ST Y, Rs Almacenamiento indirecto en memoria Mem[Y] = Rs

ST Y+, Rs Almacenamiento indirecto con post-incremento Mem[Y] = Rs, Y = Y + 1

ST -Y, Rs Almacenamiento indirecto con pre-decremento Y = Y - 1, Mem[Y] = Rs

STD Y + q, Rs Almacenamiento indirecto con desplazamiento Mem[Y + q] = Rs

ST Z, Rs Almacenamiento indirecto en memoria Mem[Z] = Rs

ST Z+, Rs Almacenamiento indirecto con post-incremento Mem[Z] = Rs, Z = Z + 1

ST -Z, Rs Almacenamiento indirecto con pre-decremento Z = Z - 1, Mem[Z] = Rs

STD Z + q, Rs Almacenamiento indirecto con desplazamiento Mem[Z + q] = Rs

Page 16: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• Transferencias entre memoria de datos y registros (Acceso a la Pila)

• Transferencias entre memoria de código y registros

• Transferencias entre Registros I/O y registros de propósito general

Instrucción Descripción Operación

PUSH Rs Inserta a Rs en la pila Mem[SP] = Rs, SP = SP – 1

POP Rd Extrae de la pila y coloca en Rd SP = SP + 1, Rd = Mem[SP]

Instrucción Descripción Operación

LPM Carga indirecta de memoria de programa en R0 R0 = Flash[Z]

LPM Rd, Z Carga indirecta de memoria de programa en Rd Rd = Flash[Z]

LPM Rd, Z+ Carga indirecta con post-incremento Rd = Flash[Z], Z = Z + 1

SPMAlmacenamiento indirecto en memoria de

programaFlash[Z] = R1:R0

Instrucción Descripción Operación

IN Rd, P Lee de un registro I/O, deja el resultado en Rd Rd = P

OUT P, Rs Escribe en un registro I/O, el valor de Rs P = Rs

Page 17: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Instrucciones para el manejo y evaluación de bits

• Desplazamientos y rotaciones

Instrucción Descripción Operación

LSL Rd Desplazamiento lógico a la izquierda C = Rd(7), Rd(n+1) = Rd(n), Rd(0) = 0

LSR Rd Desplazamiento lógico a la derecha C = Rd(0), Rd(n) = Rd(n + 1), Rd(7) = 0

ROL Rd Rotación a la izquierda C = Rd(7), Rd(n + 1) = Rd(n), Rd(0) = C

ROR Rd Rotación a la derecha C = Rd(0), Rd(n) = Rd(n + 1), Rd(7) = C

ASR Rd Desplazamiento aritmético a la derecha Rd(n) = Rd(n + 1), n = 0 .. 6

Page 18: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• Instrucción para el intercambio de nibbles.

Se ejecuta en 1 ciclo de reloj y no modifica banderas.

• Instrucciones para modificar bits en los Registros I/O.

Registros I/O que están en el rango de 0x00 a 0x1F. Se ejecutan en 2 ciclos de

reloj y tampoco modifican banderas.

• Instrucciones para transferencia de bits.

Se ejecutan en 1 ciclo de reloj.

Instrucción Descripción Operación

SWAP Rd Intercambia nibbles en Rd Rd(7..4) = Rd(3..0), Rd(3..0) = Rd(7..4)

Instrucción Descripción Operación

SBI P, b Pone en alto al bit b del Registro P P(b) = 1

CBI P, b Pone en bajo al bit b del Registro P P(b) = 0

Instrucción Descripción Operación

BTS Rs, b Almacena al bit b de un registro en T T = Rs(b)

BTL Rd, b Carga en el bit b de un registro desde T Rd(b) = T

Page 19: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• Instrucción para manipular los bits del registro Estado

Instrucción Descripción Operación

BSET s Pone en alto al bit s del registro Estado SREG(s) = 1

BCLR s Pone en bajo al bit s del registro Estado SREG(s) = 0

SEI Pone en alto al habilitador de interrupciones I = 1

CLI Pone en bajo al habilitador de interrupciones I = 0

SET Pone en alto al bit de transferencias T = 1

CLT Pone en bajo al bit de transferencias T = 0

SEH Pone en alto a la bandera de acarreo del nibble bajo H = 1

CLH Pone en bajo a la bandera de acarreo del nibble bajo H = 0

SES Pone en alto a la bandera de signo S = 1

CLS Pone en bajo a la bandera de signo S = 0

SEV Pone en alto a la bandera de sobreflujo V = 1

CLV Pone en bajo a la bandera de sobreflujo V = 0

SEN Pone en alto a la bandera de negativo N = 1

CLN Pone en bajo a la bandera de negativo N = 0

SEZ Pone en alto a la bandera de cero Z = 1

CLZ Pone en bajo a la bandera de cero Z = 0

SEC Pone en alto a la bandera de acarreo C = 1

CLC Pone en bajo a la bandera de acarreo C = 0

Page 20: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Instrucciones Especiales

Instrucción Descripción

NOP No operación, empleada para forzar una espera de 1 ciclo de reloj

SLEEP Introduce al MCU al modo de bajo consumo previamente seleccionado

WDRReinicia al Watchdog Timer, para evitar reinicios por su

desbordamiento

BREAK Utilizada para depuración desde la interfaz DebugWire

Page 21: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Ejercicio: Comparador de 4 bits

• Para comprender la programación en lenguaje Ensamblador,

realice el programa para un comparador de 4 bits, de acuerdo

con la figura:

Page 22: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Modos de direccionamientoLos Modos de Direccionamiento determinan:

• La ubicación de los datos.

• Tamaño de las constantes.

• Registros que se pueden emplear como operandos.

• Alcance de los saltos.

Los Microcontroladores AVR manejan los siguientes modos de

direccionamiento:1. Directo por registro

2. Directo a registros I/O

3. Directo a memoria de datos

4. Indirecto a memoria de datos

5. Indirecto a memoria de código

6. Inmediato

7. Direccionamientos en bifurcaciones

a) Relativo

b) Indirecto

c) Absoluto

Page 23: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Direccionamiento directo por registro

(a) Con un registro. Ejemplos:COM R3

INC R5

SER R7

(b) Con dos registros. Ejemplos:ADD R1, R2

SUB R1, R2

AND R1, R2

MOV R1, R2

Page 24: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Direccionamiento directo a Registros I/O

Ejemplos:OUT PORTB, R13

IN R15, PIND

Page 25: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Direccionamiento directo a Memoria de Datos

Ejemplos:STS 0x0100, R5

LDS R16, 0x0110

Page 26: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Direccionamiento indirecto a Memoria de Datos

Ejemplos:LD R5, Y

ST X, R11

X, Y o Z quedan

especificados como

parte del opcode

Page 27: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Direccionamiento indirecto a Memoria de Datos

Con postincremento

Ejemplos:LD R5, Y+

ST X+, R6

Page 28: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Direccionamiento indirecto a Memoria de Datos

Con predecremento

Ejemplos:LD R5, -Y

ST –Z, R11

Page 29: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Direccionamiento indirecto a Memoria de Datos

Con desplazamiento

Ejemplos:LDD R5, Y+0x020

STD Z+0x10, R11

Y o Z quedan especificados

como parte del opcode

Page 30: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Direccionamiento indirecto a Memoria de Código

Ejemplos:LPM // R0 y Z implícitos

LPM R3, Z

SPM // R1:R0 y Z implícitos

Nota: También existe una carga indirecta de memoria de código con

postincremento del apuntador Z.

Page 31: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Direccionamiento inmediato

Ejemplos:

ANDI R17, 0xF3

SUBI R19, 0x12

ORI R31, 0x03

Page 32: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Bifurcaciones Relativas

Ejemplos:RJMP -20

RCALL 32

BREQ 15

BRNE -10

BRGE 10

En bifurcaciones incondicionales,

se dispone de 12 bits para K.

En bifurcaciones condicionales,

Solo se dispone de 7 bits.

Notas: 1. En los programa se utilizan etiquetas, el ensamblador calcula el valor de las constantes.2. Los “saltitos” también son relativos al PC.

Page 33: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Bifurcaciones Indirectas

Uitilizan al apuntador Z, básicamente se realiza una copia de su

contenido al PC.

Ejemplos:IJMP

ICALL

Nota: El apuntador Z queda implícito en la instrucción.

Page 34: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Bifurcaciones Absolutas

Ejemplos:JMP 0x300000

CALL 0x1FFFFF

Page 35: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Ejercicio:

Para comprender el direccionamiento indirecto:

• Suponga que un conjunto de 20 enteros se ha ubicado en la SRAM

a partir de la dirección 0x0200 y que cada entero ocupa 1 byte

(ignore cómo llegaron los enteros a la memoria), realice una

secuencia de instrucciones en ensamblador que use

direccionamiento indirecto e incluya comparaciones para que, al

final de la secuencia en el registro R20 quede el mayor de los 20

enteros.

Sugerencia: Revise cómo se resolvería el problema en alto nivel.

Page 36: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Sistema de Interrupciones

• Una interrupción es la ocurrencia de un evento producido

por un recurso del MCU que ocasiona la suspensión

temporal del programa principal.

• El evento es atendido con una rutina de servicio a la

interrupción (ISR).

• La rutina de atención para una interrupción debe colocarse

en una dirección pre-establecida de Hardware, formando

parte de un vector de interrupciones.

• Al concluir con la ISR, la CPU continúa con la ejecución del

programa principal.

Page 37: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Ventajas de las Interruciones

1. Se reduce el trabajo de la CPU en el programa principal

a) El monitoreo de eventos se realiza por hardware

b) La CPU no realiza un sondeo continuo para determinar el estado de los

recursos

2. Se realizan diferentes tareas en forma simultánea

a) Los recursos se encargan de monitorear los eventos y más de un

recurso puede estar trabajando a la vez

b) La unidad de interrupciones coordina su atención, aunque ésta se

realiza de manera secuencial.

Page 38: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Los eventos pueden ocurrir en cualquier momento (enforma asíncrona).

Ejecución de un programa (a) Sin Interrupciones y (b) ConInterrupciones.

Sistema de Interrupciones

Page 39: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Manejo de Interrupciones: Configuración

Para que un programa use interrupciones, debe:

1. Configurar el recurso o recursos para monitorear el

evento o eventos.

2. Habilitar las interrupciones (habilitador individual y

global).• Las interrupciones no están activas después de un reset.

• La habilitación global requiere la puesta en alto del bit I, del

registro de estado (SREG).

3. Continuar con la ejecución normal de la aplicación.

Page 40: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Cuando ocurre una interrupción el MCU:

1. Concluye con la instrucción bajo ejecución.

2. Desactiva al habilitador global de interrupciones, para

que no pueda recibir una nueva interrupción mientras

atiende a la actual.

3. Respalda en la pila al PC (previamente

incrementado).

4. Asigna al PC el valor del vector de interrupciones,

para dar paso a la ISR.

Manejo de Interrupciones: Ocurrencia

Page 41: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

En la rutina de servicio a la interrupción (ISR) se deben:

1. Respaldar en la pila los registros a emplear en la ISR.

2. Realizar la tarea principal de la ISR.

3. Recuperar de la pila los registros previamente

respaldados.

4. Termina la ISR con la intrucción RETI (Retorno de

interrupción).

Los puntos 1, 2 y 4 son necesarios cuando se programa

en ensamblador.

Manejo de Interrupciones: Atención

Page 42: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Cuando una ISR termina:

1. Se limpia la bandera del evento que generó la

interrupción.

2. El habilitador global se activa nuevamente.

3. El PC toma el valor del tope de la pila, para que la

ejecución continúe en el programa principal.

Manejo de Interrupciones: Retorno

Page 43: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Vect. Dir. Fuente Descripción

1 0x0000 RESET Reset del sistema (diferentes condiciones)

2 0x0002 INT0 Interrupción Externa 0

3 0x0004 INT1 Interrupción Externa 1

4 0x0006 PCINT0 Int. por cambio de pines 0

5 0x0008 PCINT1 Int. por cambio de pines 1

6 0x000A PCINT2 Int. por cambio de pines 2

7 0x000C WDT Reset por Watchdog Timer

8 0x000E TIMER2_COMPA El timer 2 coincide con su comparador A

9 0x0010 TIMER2_COMPB El timer 2 coincide con su comparador B

10 0x0012 TIMER2_OVF Desbordamiento del timer 2

11 0x0014 TIMER1_CAPT Captura de entrada con el timer 1

12 0x0016 TIMER1_COMPA El timer 1 coincide con su comparador A

13 0x0018 TIMER1_COMPB El timer 1 coincide con su comparador B

14 0x001A TIMER1_OVF Desbordamiento del timer 1

Vector de interrupciones en el ATMega328

Page 44: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Vect. Dir. Fuente Descripción

15 0x001C TIMER0_COMPA El timer 0 coincide con su comparador A

16 0x001E TIMER0_COMPB El timer 0 coincide con su comparador B

17 0x0020 TIMER0_OVF Desbordamiento del timer 0

18 0x0022 SPI_STC Transferencia completa por SPI

19 0x0024 USART_RX Recepción completa por la USART

20 0x0026 USART_UDRE Registro de Datos de la USART vacío

21 0x0028 USART_TX Transmisión completa por la USART

22 0x002A ADC Conversión del ADC completa

23 0x002C EE_READY Concluyo una escritura en EEPROM

24 0x002E ANALOG_COMP Comparador analógico

25 0x0030 TWI Interfaz serial a dos hilos (2-wire)

26 0x0032 SPM_READY Almacenamiento en memoria de programa

listo

La ubicación de los vectores de interrupción puede modificarse

para que el MCU inicie ejecutando instrucciones desde la sección

de arranque.

Page 45: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Manejo de Interrupciones

; El PC toma el valor 0 después de un reset

.org 0x000

jmp Principal ; Evita los vectores de interrupción

jmp Externa_0 ; Bifurca a su ISR correspondiente

jmp Externa_1 ; Bifurca a su ISR correspondiente

. . . ; Acá estarían otras bifurcaciones

.org 0x034 ; Después de los vectores de interrupción

Principal: . . . ; Acá estará el código principal

. . . ; Debe activar las interrupciones

. . .

; Las ISR van después del código principal

Externa_0: ; Respuesta a la interrupción externa 0

. . .

RETI ; Debe terminar con RETI

Externa_1: ; Respuesta a la interrupción externa 1

. . .

RETI ; Debe terminar con RETI

Nota: La instrucción JMP ocupa dos palabras de 16 bits.

Page 46: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Manejo de Interrupciones

(Alto Nivel)#include <avr/io.h> // Entradas y salidas

#include <avr/interrupt.h> // Interrupciones

// Las ISR se pueden ubicar antes del programa principal

ISR (INT0_vect) // Interrupción externa 0

{

. . . .

}

ISR (INT1_vect) // Interrupción externa 1

{

. . . .

}

int main(void) // Programa Principal

{

. . . . . // Debe activar las interrupciones

}

En C, todas las funciones de atención a interrupción se llaman ISR, difieren en

el argumento que corresponde a la etiqueta de la fuente de interrupción,

seguida por la palabra vect.

Page 47: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Proceso de Programación

Page 48: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

¿Ensamblador o Lenguaje C?

• El ensamblador tiene una relación directa con el código máquina

generado. En alto nivel siempre se producirá código adicional.

• Antes de optar por uno u otro lenguaje es conveniente estructurar

la solución.

• Un programa mal organizado es ineficiente, aún si se codifica en

lenguaje ensamblador.

• En alto nivel se tienen estructuras de control de flujo que facilitan

la codificación de soluciones estructuradas.

• El código fuente en alto nivel es más compacto y menos confuso,

reduciendo la posibilidad de cometer errores.

• Con la velocidad de ejecución y la cantidad de memoria de los

MCU actuales, el código adicional no afecta la solución.

Page 49: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

El lenguaje ensamblador es conveniente si:

1. La aplicación requiere un control estricto en la temporización queno se puede conseguir con los recursos internos.

2. El tamaño de la memoria de código es muy reducido.• Algunos AVR de la gama Tiny incluyen 1 Kbyte para código.

3. La aplicación requiere una manipulación extensiva de datos alnivel de bits.

En lenguaje C, con la función asm( ) es posible introducir sentenciasde código ensamblador. Ejemplos:

asm(“NOP”); // No operación, tarda 1 ciclo de relojasm(“SBI 0x0B, 0”); // Pone en alto al bit 0 de PORTB

Page 50: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Lenguaje ensamblador

Un programa en Ensamblador puede incluir:

• Instrucciones: Elementos del lenguaje que se traducena código máquina. Cada instrucción tiene su opcode ysus operandos. El procesador ejecuta las instruccionespara determinar el comportamiento de un sistema.

• Directivas: Elementos del lenguaje que ayudan en laorganización de un programa, indicando aspectos comola ubicación del código o definiciones. Las directivas nogeneran código máquina, son elementos propios de laherramienta utilizada para ensamblar un programa.

Page 51: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Directivas comunes:

• INCLUDE: Se utiliza para leer el código fuente de otro archivo

En un ATMega328P se debe agregar:

.include <m328pdef.inc>

Page 52: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Directivas para definir diferentes tipos de segmentos en un

programa:

• CSEG: Segmento de Código (por omisión). Se crea un

archivo.hex para la memoria FLASH.

• DSEG: Segmento de Datos. Para reservar espacio en la SRAM.

• ESEG: Segmento de EEPROM. Se crea un archivo.eep, a

descargarse en la memoria EEPROM.

Page 53: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

.DSEG ; Inicia un segmento de datos

var1: .BYTE 1 ; Variable de 1 byte en SRAM

.CSEG ; Inicia un segmento de código

ldi R16, 0x25 ; Instrucciones para alguna tarea

mov r0,r16

. . .

const: .DB 0x02 ; Constante con 0x02 en flash

.ESEG ; Inicia un segmento de EEPROM

eevar1: .DB 0x3f ; Constante con 0x3f en EEPROM

Page 54: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• DB y DW (Define Byte y Define Word) Directivas para definir

constantes o variables, en memoria de programa o en EEPROM.

.CSEG

; Constantes en memoria FLASH

const1: .DB 0x33

consts1: .DB 0, 255, 0b01010101, -128, 0xaa

consts2: .DW 0, 0xffff, 0b1001110001010101, -32768, 65535

.ESEG

; Constantes en EEPROM

eevar1: .DB 0x37

eelist1: .DB 1,2,3,4

eelist2: .DW 0,0xffff,10

Page 55: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• EQU: Define una constante simbólica, que puede usarse dentro

de las instrucciones.

• Ejemplo:

.EQU portA = 0x23

.CSEG ; Inicia el segmento de código

clr r2 ; Limpia el registro 2

out portA, r2 ; Escribe en la dirección 0x23

Page 56: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• ORG: Organizar a cualquiera de los segmentos de memoria, indica en

qué dirección se ubicará la información subsecuente, pudiendo ser

variables en SRAM, constantes en EEPROM o en FLASH, o código en

FLASH.

.DSEG

.ORG 0x120

var1: .Byte 1 ; Variable en la dirección 0x120 del

; segmento de datos

.CSEG

.ORG 0x000 ; Código ubicado en la dirección 0x00

RJMP inicio

.ORG 0x010

inicio: ; Código ubicado en la dirección 0x10

MOV R1, R2

. . . .

Page 57: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• HIGH y LOW : Se utilizan para separar constantes de 16 bits (en

realidad son funciones, no directivas)

• HIGH: Byte alto.

• LOW: Byte bajo.

LDI R20, LOW (1022)

LDI R21, HIGH (1022)

LDI R30, LOW(tabla) // Z apunta a una tabla

LDI R31, HIGH(tabla) // de constantes

. . . .

tabla: .DB 0x01,0x02,0x03,0x04

Page 58: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• BYTE: Reserva uno o más bytes en SRAM o EEPROM para el

manejo de variables, la cantidad de bytes debe especificarse.

Este espacio no es inicializado, sirve para referirlo con una

etiqueta.

.DSEG

var1: .BYTE 1 ; variable de 1 byte

var2: .BYTE 10 ; variable de 10 bytes

.CSEG

STS var1, R17 ; acceso a var1 por dir. Directo

LDI R30, LOW (var2) ; Z apunta a Var2

LDI R31, HIGH (var2)

LD R1, Z ; acceso indirecto a var2

Page 59: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

• DEF : Para renombrar registros y dar claridad a los programas.

Ejemplo:

.DEF A = R17 ; Variable A

.DEF B = R18 ; Variable B

IN A, PINB ; Lee A

IN B, PINC ; Lee B

ADD A, B ; A = A + B

OUT PORTB, A ; Escribe A

Page 60: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

PROGRAMACIÓN EN

ALTO NIVEL

Lenguaje C

Page 61: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Tipos de Datos

Tipo Tamaño (bits) Rango

char 8 -128 a 127

unsigned char 8 0 a 255

signed char 8 -128 a 127

int 16 -32, 768 a 32, 767

short int 16 -32, 768 a 32, 767

unsigned int 16 0 a 65, 535

signed int 16 -32, 768 a 32, 767

long int 32 -2, 147, 483, 648 a 2, 147, 483, 647

unsigned long int 32 0 a 4, 294, 967, 295

signed long int 32 -2, 147, 483, 648 a 2, 147, 483, 647

float 32 +/- 1.175 x 10-38 a +/- 3.402 x 10+38

double 32 +/- 1.175 x 10-38 a +/- 3.402 x 10+38

Page 62: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Definiciones en WINAVR

typedef signed char int8_t

typedef unsigned char uint8_t

typedef signed int int16_t

typedef unsigned int uint16_t

typedef signed long int int32_t

typedef unsigned long int uint32_t

Page 63: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Operadores

Operador ternario

Propocisión1? Proposición2 : Proposición3;

Aritméticos

Operador Descripción Ejemplo

* Producto a * b

/ División a / b

% Módulo a % b

+ Suma a + b

- Resta a - bProposición 3Proposición 2

Proposición 1V F

ELEMENTOS DEL LENGUAJE

Page 64: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Operadores Lógicos

de Expresiones

Operadores para la

Manipulación de bits

Trabajan sobre operandos de los tipos:

char, int o long. Afectan el resultado al

nivel de bits.

Tratan a los operandos como

expresiones FALSAS o

VERDADERAS.

Una variable con cualquier valor

distinto de cero se considera

verdadera.

Complemento Uno ~

Desplazamiento a la Izquierda <<

Desplazamiento a la Derecha >>

AND &

OR |

OR Exclusiva ^

AND &&

OR ||

NOT !

ELEMENTOS DEL LENGUAJE

Page 65: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Asignaciones

Operador Ejemplo Equivalencia

= a = b a = b

*= a *= b a = a * b

/= a /= b a = a / b

%= a %= b a = a % b

+= a += b a = a + b

-= a -= b a = a - b

<<= a <<= b a = a << b

>>= a >>= b a = a >> b

&= a &= b a = a & b

|= a |= b a = a | b

^= a ^= b a = a ^ b

b puede ser una constante o proposición.

ELEMENTOS DEL LENGUAJE

Page 66: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Operadores Relacionales

Operador Descripción Ejemplo

== Igual a == b

!= Diferente a != b

> Mayor que a > b

< Menor que a < b

>= Mayor o igual que a >= b

<= Menor o igual que a <= b

Auto incremento o decremento

Operador Descripción Ejemplo

++ incremento a++, ++a

-- decremento a--, --a

ELEMENTOS DEL LENGUAJE

Page 67: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Estructuras de control

// Expresiones en secuencia

a = b + c;. . .contador++;

Proposición 1

Proposición 2

Proposición 3

SecuencialesDentro de la programación

estructurada se tienen tres tipos

de Estructuras de Control.

1. Secuenciales.

2. Selectivas.

3. Repetitivas.

ELEMENTOS DEL LENGUAJE

Page 68: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Estructuras Selectivas

Proposición

Expresión

V

F

if(expresión)Proposición

Selección Doble

if(expresión)proposición1

elseproposición2

Selección Simple

Proposición 3Proposición 2

Proposición 1V F

ELEMENTOS DEL LENGUAJE

Page 69: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Estructura de Selección Múltiple

switch (expresión){case Constante_1:

Proposición 1case Constante_2:

Proposición 2. . . .default:

Proposición default}

Expresión

Proposición 1 Proposición 2 Proposición 3 Prop. DefaultProposición n. . .

= Constante_1

= Constante_2

= Constante_3

= Constante_n

= Default

ELEMENTOS DEL LENGUAJE

Page 70: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Estructuras Repetitivas

Proposición

ExpresiónV

F

Repetición por Condición:

while(expresión)proposición

do { proposición

} while(expresión);

Proposición

Expresión

V

F

ELEMENTOS DEL LENGUAJE

Page 71: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

for (expr1; expr2; expr3)

proposición

Repetición por Contador:

Proposición

Expresión1

Expresión3

Expresión2

V

F

ELEMENTOS DEL LENGUAJE

Page 72: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Tipos de MemoriaSRAM para variables

Variables: Datos que van a ser leídos o escritos continuamente. La

SRAM es el espacio de almacenamiento por default.

int x, y;

uint8_t a, b, c;

Si es posible, el compilador utiliza los registros de propósito general

(R0 a R31).

Los apuntadores son manejados en SRAM y hacen referencia a

objetos de SRAM, un ejemplo de declaraciones y uso es:

char cadena[] = "hola mundo";

char *pcad;

pcad = cadena;

Page 73: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

FLASH para constantes

Constantes: Datos que no cambiarán durante la ejecución normal

de un programa.

Las constantes como cadenas de texto o tablas de búsqueda

generalmente se manejan en memoria FLASH para liberar espacios

significativos de SRAM.

Se requiere el uso de la palabra reservada const e incluir al atributo

PROGMEM, definido en la biblioteca pgmspace.h (en WinAVR).

Ejemplos de declaraciones:

const char cadena[] PROGMEM = “Cadena con un mensaje constante”;

const uint_8t tabla[] PROGMEM = { 0x24, 0x36, 0x48, 0x5A, 0x6C };

Page 74: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Declaración de constantes -> ámbito global.

Acceso -> funciones de la biblioteca pgmspace.h

Ejemplos:

pgm_read_byte(address); // Lee 8 bits

pgm_read_word(address); // Lee 16 bits

pgm_read_dword(address); // Lee 32 bits

Reciben como argumento la dirección del dato en FLASH.

x = pgm_read_byte(&tabla[i]);

Es posible el manejo de apuntadores, un apuntador a datos en

memoria FLASH se declara como PGM_P.

Page 75: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

La biblioteca incluye funciones que trabajan con bloques

completos de memoria FLASH.

strcpy_P: Sirve para leer una cadena de memoria FLASH y

depositarla en SRAM.

char buf[32]; // Buffer destino, en SRAM

PGM_P p; // Apuntador a memoria FLASH

p = cadena; // p apunta a la cadena en FLASH

strcpy_P(buf, p); // copia de FLASH a SRAM

Page 76: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Datos en EEPROM

La EEPROM se utiliza para almacenar variables cuyo contenido se

quiere conservar aún en ausencia de energía.

Debe utilizarse el atributo EEMEM, definido en la biblioteca eeprom.h,

también en WinAVR.

Son declaraciones globales y se deben hacer antes de cualquier

declaración enfocada hacia la Flash o SRAM.

#include <avr/eeprom.h> // Biblioteca para la EEPROM

EEMEM int contador = 0x1234; // Un entero:2 bytes

EEMEM uint8_t clave[4] = { 1, 2, 3, 4}; // 4 bytes

En la EEPROM:

34 12 01 02 03 04 FF FF FF . . .

Page 77: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Acceso a los datos en la EEPROM

1) Por medio de los registros EEAR, EEDR y EECR, con

funciones similares a las revisadas en la unidad

anterior.

2) Funciones en la biblioteca eeprom.h, ejemplos:

eeprom_read_byte: Lee un byte de la EEPROM, en la

dirección que recibe como argumento.

eeprom_write_byte: Escribe un byte en la EEPROM,

como argumentos recibe la dirección y el dato.

La biblioteca también incluye funciones para datos de

16 y 32 bits, así como para el manejo de bloques de

memoria.

Page 78: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

PROGRAMAS DE

EJEMPLO

En Ensamblador y en Lenguaje C

Page 79: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

1. Parpadeo de un LED

• Realice un programa que haga parpadear un LED conectado en la

terminal PB0 a una frecuencia aproximada de 1 Hz (periodo de 1

seg.), considerando un ciclo útil del 50 % (½ seg. encendido y ½ seg.

apagado).

Page 80: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

2. Diseño de una ALU de 4 bits

• Construya una ALU de 4 bits considerando la distribución de puertos de la

figura y el comportamiento mostrado en la tabla:

PortC[2:0] Operación

000 R = A + B

001 R = A - B

010 R = A * B

011 R = A AND B

100 R = A OR B

101 a 111 R = 0

Page 81: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

2. Diseño de una ALU de 4 bits

Page 82: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

3. Contador con salida en 7 Segmentos

• Desarrolle un programa que incremente la salida cada que

se presiona un botón:Num g f e d c b a HEX

0 0 1 1 1 1 1 1 0x3F

1 0 0 0 0 1 1 0 0x06

2 1 0 1 1 0 1 1 0x5B

3 1 0 0 1 1 1 1 0x4F

4 1 1 0 0 1 1 0 0x66

5 1 1 0 1 1 0 1 0x6D

6 1 1 1 1 1 0 1 0x7D

7 0 0 0 0 1 1 1 0x07

8 1 1 1 1 1 1 1 0x7F

9 1 1 0 0 1 1 1 0x67

A 1 1 1 0 1 1 1 0x77

B 1 1 1 1 1 0 0 0x7C

C 0 1 1 1 0 0 1 0x39

D 1 0 1 1 1 1 0 0x5E

E 1 1 1 1 0 0 1 0x79

F 1 1 1 0 0 0 1 0x71

Considere una tabla de constantes para

los códigos en 7 segmentos.

Page 83: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

3. Contador con salida

en 7 Segmentos

El valor del contador se debe mantener

entre 0 y 15.

Page 84: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

4. Máquina de estados para una PuertaAutomática

Sensor Objetivo

SP Detector de personas

TA Puerta completamente abierta

TC Puerta completamente cerrada

PortD[1:0] Operación

00 Sin movimiento

01 Abriendo la puerta

10 Cerrando la puerta

11 Sin movimiento

Page 85: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

4. Máquina de estados para una PuertaAutomática

Page 86: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos

Ejercicios

Page 87: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos
Page 88: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos
Page 89: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos
Page 90: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos
Page 91: 3. ATRIBUTOS DE LA ARQUITECTURA DE UN MCU Sistemas …fsantiag/Embebidos/3_Atributos_Arquitectura_MCU_SE.pdf · Arquitectura de una CPU •La arquitectura hace referencia a los atributos