2. ORGANIZACIÓN INTERNA DE LOS MICROCONTROLADORES Microcontroladores PDF

Title 2. ORGANIZACIÓN INTERNA DE LOS MICROCONTROLADORES Microcontroladores
Author Rodri Carita Aspi
Pages 73
File Size 1.5 MB
File Type PDF
Total Downloads 35
Total Views 171

Summary

2. ORGANIZACIÓN INTERNA DE LOS MICROCONTROLADORES Microcontroladores M. C. Felipe Santiago Espinosa 1 Marzo / 2017 MICROCONTROLADORES AVR DE ATMEL  Arquitectura RISC de 8 bits.  Arquitectura Harvard, con memoria Flash para código, SRAM y EEPROM para datos.  Su Arquitectura es Cerrada.  Por la op...


Description

2. ORGANIZACIÓN INTERNA DE LOS MICROCONTROLADORES

Microcontroladores

1

M. C. Felipe Santiago Espinosa Marzo / 2017

MICROCONTROLADORES AVR DE ATMEL 

Arquitectura RISC de 8 bits.



Arquitectura Harvard, con memoria Flash para código, SRAM y EEPROM para datos.



Su Arquitectura es Cerrada.



Por la operación con los datos, la arquitectura es del tipo Registro-Registro. 2

Tamaño

MICROCONTROLADORES AVR DE ATMEL

XMEGA megaAVR tinyAVR

núcleo AVR

Características

AVR: Alf-Egil Bogen, Vegard Wollan, RISC Processor

3

LA FAMILIA DE MICROCONTROLADORES AVR La familia de microcontroladores AVR es muy numerosa, incluye más de 70 dispositivos que comparten el núcleo, pero difieren en recursos. En particular revisaremos el ATMega328, cuyas características técnicas se resumen a continuación: Flash (Kbytes)

32

TWI

Si

EEPROM (bytes)

1K

ISP

Si

SRAM de proposito general (bytes)

2048

ADC de 10 bits (canales)

8 (6 en encapsulado PDIP)

Max Pines I/O

23

Comparador Analógico

Si

F.max (MHz)

20

Watchdog Timer

Si

Vcc (V)

2.7-5.5

Oscilador Interno

Si

16-bit Timers

1

Multiplicador por Hardware

Si

8-bit Timer

2

Interrupciones

26

PWM (canales)

6

Int. Externas

2

RTC

Si

Int. Por cambios en Pines

3 (una por puerto)

USART

1

Autoprogramación

Si

SPI (Maestro/Esclavo)

1

Debug wire

Si 4

ASPECTO EXTERNO ATMEGA328 Incluye 3 puertos, todas las terminales con más de una función alterna.

PB – 8 bits PC – 7 bits PD – 8 bits

5

AVR CPU CORE 6

INTERIOR DEL MICROCONTROLADOR (ATMEGA328)

7

AVR CPU CORE 







La función principal de la CPU es asegurar la correcta ejecución de programas. La CPU debe tener acceso a las memorias, realizar cálculos, controlar periféricos y manejar interrupciones. Para maximizar el rendimiento y paralelismo, el AVR usa una arquitectura Harvard – con memorias y buses separados para instrucciones y datos. La ALU soporta operaciones aritméticas y lógicas entre registros o entre un registro y una constante. Aunque también hay operaciones con un solo registro. Después de una operación aritmética, el registro de Estado (Status Register) es actualizado, para reflejar información acerca de la operación.

8

EJECUCIÓN DE INSTRUCCIONES 





El flujo del programa por naturaleza es secuencial. Puede ser modificado por instrucciones de saltos condicionales e incondicionales y llamadas a rutinas, que pueden abarcar completamente el espacio de direcciones.

Las instrucciones en la memoria de Programa son ejecutadas con una segmentación de dos etapas. Mientras una instrucción está siendo ejecutada, la siguiente es capturada de la memoria de programa. Este concepto hace que se produzca una instrucción por cada ciclo de reloj. 9

EJECUCIÓN DE INSTRUCCIONES

Con esto aparenta que las instrucciones solo requieren de un ciclo de reloj (excepto los saltos). Generando un rendimiento aproximado a 1 MIPS por MHz de la frecuencia de trabajo del oscilador.

10

EJECUCIÓN DE INSTRUCCIONES Para la ejecución de instrucciones aritméticas y lógicas, la duración del ciclo es suficiente para permitir la lectura de registros, la operación de la ALU y la escritura en el registro destino. T1

T2

CLK CPU

Tiempo total de Ejecución Captura de operandos Operación de la ALU Escritura de resultado

11

ARCHIVO DE REGISTROS 







El Archivo de Registros contiene 32 registros de propósito general de 8 bits, habilitados para un acceso rápido. Seis de los 32 registros pueden ser usados como apuntadores de 16 bits para direccionamiento indirecto en el espacio de datos, habilitando cálculos de direcciones eficientes. Para ello, estos registros se denominan X, Y y Z. El registro Z también puede usarse como apuntador a la memoria de programa. Arquitectura Optimizada para ejecutar código C compilado.

7

X { Y { Z {

0 R0 R1 R2 ... R13 R14 R15 R16 R17 ... R26 (XL) R27 (XH) R28 (YL) R29 (YH) R30 (ZL) R31 (ZH)

Dir. 0x00 0x01 0x02 0x0D 0x0E 0x0F 0x10 0x11 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F

12

AVR CPU CORE Mapa de memoria 13

Memoria de Programa 







Memoria Flash cuyo tamaño varia entre procesadores, para el ATMega328 es de 32 Kbytes (16 K x 16 bits). Soporta hasta 10,000 ciclos de escritura/borrado. Se puede dividir en una sección para aplicación y una sección de arranque, donde podría manejarse un cargador para auto programación. Los vectores de interrupción son parte de la memoria de programa e inician en la dirección 0. 14

Vector de interrupciones en el ATMega328 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

11

0x0014

TIMER1_CAPT

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 2 Captura de entrada con el timer 1

Desbordamiento del timer 1

15

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

18

0x0022

SPI_STC

19

0x0024

USART_RX

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

23

0x002C

EE_READY

24

0x002E

ANALOG_COMP

25

0x0030

TWI

26

0x0032

SPM_READY

Desbordamiento del timer 0 Transferencia completa por SPI Recepción completa por la USART

Conversión del ADC completa EEPROM lista Comparador analógico

Interfaz serial a dos hilos (2-wire) Almacenamiento en memoria de programa

La ubicación de los vectores de interrupción puede modificarse para que el MCU inicie ejecutando instrucciones desde la sección de arranque.

16

Memoria de Datos

SRAM

EEPROM

17

Memoria SRAM de Datos



Es un espacio de 2304 localidades de 8 bits e incluyen:    

32 Registros de acceso rápido. 64 Registros I / O. 160 Registros I/O extendidos. 2048 Localidades de propósito general.

Los 32 registros de acceso rápido y los registros I/O tienen direcciones para ser tratados como SRAM de propósito general.

18

Archivo de Registros 







El repertorio de instrucciones AVR está optimizado para el archivo de Registros. 7 0 Las instrucciones que operan sobre el Archivo de Registros tienen acceso a todos ellos. Las que operan un registro con una constante sólo trabajan con los registros de R17 a R31. Cada registro tienen una dirección que le permite ser tratado como cualquier otra localidad de RAM (0x000 – 0x01F), utilizando instrucciones de Carga (LD) y almacenamiento (ST). De R26 a R31 pueden usarse como apuntadores para direccionamiento indirecto.

X { Y { Z {

R0 R1 R2 ... R13 R14 R15 R16 R17 ... R26 (XL) R27 (XH) R28 (YL) R29 (YH) R30 (ZL) R31 (ZH)

Dir. 0x00 0x01 0x02 0x0D 0x0E 0x0F 0x10 0x11 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F

19

Registros I/O 









El ATMega328 cuenta con un espacio para alojar hasta 64 Registros I/O de 8 bits (aunque no todas las direcciones están ocupadas). Los Registros I/O se emplean para la configuración y el control de recursos internos, así como para conocer su estado. En este espacio están los registros para el manejo de los Puertos de Entrada/Salida. El acceso a los Registros I/O se realiza con las instrucciones IN y OUT, intercambiando datos con el Archivo de Registros. Con estas instrucciones deben usarse las direcciones 0x00 0x3F. Los Registros I/O pueden ser tratados como memoria, con instrucciones de carga (LD) y almacenamiento (ST) (direcciones 0x20 - 0x5F), aunque es menos eficiente. Los Registros I/O en el rango 0x00 - 0x1F son accesibles por bit. Para modificarse, con instrucciones SBI y CBI o para evaluarse, a través de las instrucciones SBIS y SBIC.

20

Registros I/O Extendidos 









El espacio para los Registros I/O Extendidos es de 160 localidades; aunque la mayoría están libres, el espacio está disponible para compatibilidad con otras versiones de la familia AVR.

Tienen la misma función que los Registros I/O, es decir, se emplean para la configuración y el control de recursos internos, así como para conocer su estado. Los Registros I/O Extendidos son Registros I/O mapeados en SRAM, por lo que únicamente se pueden tratar con instrucciones de carga (LD) y almacenamiento (ST) (direcciones 0x60 - 0xFF). Como un ejemplo, los registros de los Temporizadores son parte de los Registros I/O Extendidos. Los Registros I/O y Registors I/O Extendidos se revisarán conforme se estudien los diferentes recursos, la lista completa 21 se puede consultar en la Hoja de Especificaciones.

Registro de ESTADO (SREG: 0x3F) Bit Read/Write Valor inicial

– I: Habilitador global de Interrupciones, con un 1 lógico, las interrupciones son habilitadas. – T: Para respaldo de un bit, es usado con la instrucción BLD para Carga y BST para Almacenamiento. – H: Bandera de acarreo de los 4 bits inferiores (Half) – S: Bit de signo (Mantiene una XOR entre N y V) – V: Bandera de Sobreflujo, en operaciones de complemento a dos. – N: Bandera de Negativo – Z: Bandera de Cero

Se generan con operaciones Aritméticas y lógicas

22

– C: Bandera de Acarreo 22

Apuntador de Pila (SP) $3E $3D











La pila está implementada en el espacio de propósito general (que es de 2048 bytes). Es usada durante la llamada de subrutinas, el manejo de interrupciones o para el almacenamiento temporal de variables (con instrucciones PUSH y POP). El registro SP es el apuntador al tope de la pila. Realmente SP se compone de 2 registros, para la parte alta (SPH) y para la parte baja (SPL), esto para direccionar al espacio completo de memoria.

La pila tiene un crecimiento hacia abajo, es decir, de las direcciones altas de memoria a las direcciones bajas. Después de un Reset, el apuntador de Pila tiene el valor de 0x0000, por lo que si se manejan rutinas, debe ser inicializado con 0x08FF, para que realice un almacenamiento dentro de un espacio válido. 23

ACCESO AL ESPACIO DE PROPÓSITO GENERAL





La arquitectura AVR es del tipo Registro – Registro, la información de SRAM sólo puede ser operada cuando está en Registros. Existen diversas instrucciones para cargas o almacenamientos, ya sean de manera directa o indirecta.

24

ACCESO AL ESPACIO DE PROPÓSITO GENERAL T1

T2

T3

CLK CPU

Registro IR

Captura

Dirección

Calcula dirección

Dirección válida Dato a escribir

Datos

Almacenamiento (Escritura en SRAM)

WR Dato leído

Datos RD



La etapa de ejecución de un acceso a memoria, ya sea carga o almacenamiento, requiere de dos ciclos de reloj.

Carga (Lectura en SRAM)

25

MEMORIA EEPROM PARA DATOS 





Espacio no volátil para el almacenamiento de datos, cuyo tamaño varia entre procesadores. Para el ATMega328 es de 1024 bytes. La memoria EEPROM está en un espacio independiente y se requiere de 3 Registros I/O para su acceso: EEAR - Para el manejo de la dirección.

(dir.)

7

6

5

4

3

2

1

0

0x22

-

-

-

-

-

-

EEAR9

EEAR8

EERH

0x21

EEAR7

EEAR6

EEAR5

EEAR4

EEAR3

EEAR2

EEAR1

EEAR0

EERL 26



EEDR - Para el dato (0x1D)

(dir.)

7

6

5

0x20



4

3

2

1

0

Registro de datos de la EEPROM

EEDR

EECR - Para el control (0x1C)

(dir.) 0x1F

7 -

– EEMP[1:0]

6 -

5 4 EEPM1 EEPM0

3 2 EERIE EEMPE

1 EEPE

0 EERE

EECR

EEPROM Programming Mode Definen qué acción se realizará en la EEPROM, es posible con una operación borrar el viejo valor y escribir el nuevo (operación atómica).

EEMP1

EEMP0

Tiempo

Operación

0

0

3.4 mS

Borra y escribe en una operación

0

1

1.8 mS

Únicamente borra

1

0

1.8 mS

Unicamente escribe

1

1

-

Reservado

27

Bits del registro de CONTROL : (dir.) 0x1F

7 -

6 -

5 4 EEPM1 EEPM0

3 2 EERIE EEMPE

1 EEPE

0 EERE

EECR

– EERIE:

EEPROM Ready Interrupt Enable En alto habilita la interrupción por EEPROM. La EEPROM genera una interrupción cuando EEWE/EEPE es limpiado.

– EEMPE :

EEPROM Master Write Enable Determina si la puesta en alto de EEPE producirá una escritura en la EEPROM. Al ponerse en alto, se cuenta con 4 ciclos para iniciar la escritura con EEPE, de lo contrario se limpiará automáticamente por Hardware.

– EEPE :

EEPROM Write Enable Debe ponerse en alto para dar inicio a un ciclo de escritura. Se limpiará automáticamente por Hardware al finalizar la escritura. Un programa de usuario puede monitorear este bit o si se pone en alto a EERIE se producirá una interrupción.

– EERE:

EEPROM Read Enable Debe ponerse en alto para un ciclo de lectura, se limpiará automáticamente por Hardware. El dato leído está disponible de manera inmediata. No es posible realizar una lectura si hay una escritura en proceso.

28

Rutina de Escritura en EEPROM : ; El dato a escribir está en R16 ; Se escribirá en las direcciones R18:R17 EEPROM_write: ; Asegura que no hay escritura en proceso sbic EECR,EEPE rjmp EEPROM_write

; Establece la dirección out EEARH, r18 out EEARL, r17 ; Coloca el dato out EEDR,r16 ; Pone en alto al habilitador maestro sbi EECR,EEMPE ; Inicia la escritura sbi EECR,EEPE ret

29

Función de Escritura en EEPROM : // Recibe el dato y la dirección a escribir

void

EEPROM_write (unsigned char dato, unsigned int direccion )

{ // Asegura que no hay escritura en proceso while ( EECR & 1...


Similar Free PDFs