150
TEMA 3 RECURSOS INTERNOS El Microcontrolador ATMega328P M. C. Felipe Santiago Espinosa Octubre / 2019

El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

TEMA 3RECURSOS INTERNOS

El Microcontrolador ATMega328P

M. C. Felipe Santiago Espinosa

Octubre / 2019

Page 2: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Interrupciones

• Una interrupción es la ocurrencia de un evento, generado 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 ISR debe colocarse en una dirección pre-establecida por Hardware.

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

• Ventajas:• El programa principal se simplifica.• Se realizan dos o más tareas en forma simultánea. 2

Page 3: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Se tienen diferentes fuentes de Interrupción: Por inicialización o Reset. Interrupciones externas. Ante cambios en las terminales. Interrupciones por los temporizadores, pueden ser por

comparación, captura o desbordamiento. Al completar una transferencia serial (puerto SPI). Ocasionadas por el puerto serie (USART), por transmisión,

recepción o buffer vacío. Por el convertidor analógico digital. Al finalizar una escritura en EEPROM. Por el comparador analógico. Por la interfaz serial a dos hilos (TWI). Al escribir en memoria de programa.

El número real de interrupciones depende del dispositivo.

Interrupciones en los AVRs

3

Page 4: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

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

Su activación requiere la puesta en alto del bit I (bit 7 de SREG), además de las habilitaciones individuales.

El ATMega328P tiene 26 fuentes de interrupción, cada una con su propia dirección.

Al generarse una interrupción:• Termina la instrucción bajo ejecución.• El PC es almacenado en la pila.• El PC toma un valor del vector de interrupciones• Desactiva al bit I, para no aceptar más interrupciones.

La ISR debe terminar con la instrucción RETI, la cual recupera el valor del PC de la pila y ajusta al bit I.

Interrupciones en los AVRs

4

Page 5: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

5

Vect. Dir. Fuente Descripción

1 0x0000 RESET Reset del sistema (diferentes condiciones)2 0x0002 INT0 Interrupción Externa 03 0x0004 INT1 Interrupción Externa 14 0x0006 PCINT0 Int. por cambio de pines 05 0x0008 PCINT1 Int. por cambio de pines 16 0x000A PCINT2 Int. por cambio de pines 27 0x000C WDT Reset por Watchdog Timer8 0x000E TIMER2_COMPA El timer 2 coincide con su comparador A9 0x0010 TIMER2_COMPB El timer 2 coincide con su comparador B

10 0x0012 TIMER2_OVF Desbordamiento del timer 211 0x0014 TIMER1_CAPT Captura de entrada con el timer 112 0x0016 TIMER1_COMPA El timer 1 coincide con su comparador A13 0x0018 TIMER1_COMPB El timer 1 coincide con su comparador B14 0x001A TIMER1_OVF Desbordamiento del timer 1

Vector de interrupciones en el ATMega328P

Page 6: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

6

Vect. Dir. Fuente Descripción

15 0x001C TIMER0_COMPA El timer 0 coincide con su comparador A16 0x001E TIMER0_COMPB El timer 0 coincide con su comparador B17 0x0020 TIMER0_OVF Desbordamiento del timer 018 0x0022 SPI_STC Transferencia completa por SPI19 0x0024 USART_RX Recepción completa por la USART20 0x0026 USART_UDRE Registro de Datos de la USART vacío21 0x0028 USART_TX Transmisión completa por la USART22 0x002A ADC Conversión del ADC completa23 0x002C EE_READY Concluyo una escritura en EEPROM24 0x002E ANALOG_COMP Comparador analógico25 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 7: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Manejo de Interrupciones

#include <avr/io.h> // Entradas y salidas#include <avr/interrupt.h> // Interrupciones

// Las ISRs se ubican antes del programa principal

ISR (INT0_vect) // Servicio a la interrupción externa 0{ . . . . }

ISR (INT1_vect) // Servicio a la interrupción externa 1{ . . . .}

int main(void) // Programa Principal{ . . . . . // Debe activar las interrupciones}

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.

7

Page 8: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

RECURSOS INTERNOS

Los AVR tienen una gama amplia de recursos internos.

Todos los recursos son manejados por medio de los Registros I/O o Registros I/O Extendidos.

Los recursos generan eventos que interrumpen a la CPU, para ello: El recurso debe ser configurado. Debe realizarse la habilitación del recurso. El habilitador global de interrupciones también debe

activarse.

8

Page 9: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

3.1 INTERRUPCIONES EXTERNAS

Microcontroladores

M. C. Felipe Santiago Espinosa

Octubre 2019

9

Page 10: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

INTERRUPCIONES EXTERNAS

Sirven para detectar un estado lógico o un cambio de e s t a d o e n a l g u n a s t e r m i n a l e s d e e n t r a d a d e l microcontrolador.

Útiles para monitorear Interruptores, Botones o Sensores con salida a relevador.

El ATMega328 tiene dos Interrupciones Externas: INT0 (PortD.2, terminal 4) INT1 (PortD.3, terminal 5)

Se pueden activar por un nivel bajo de voltaje o por flancos de subida o bajada.

10

Page 11: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

CONFIGURACIÓN

Las interrupciones externas se configuran con los 4 bits menos significativos del registro EICRA – (External Interrupt Control Register A):

Para INT1 Para INT0

ISCx1 ISCx0 Activación de la Interrupción0 0 Por nivel bajo0 1 Cualquier cambio lógico1 0 Por flanco de bajada1 1 Por flanco de subida

ISC - Interrupt Sense Control11

EICRA es un Registro I/O extendidio (se ubica en la dirección 0x69).

Page 12: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

HABILITACIÓN

El habilitador global de interrupciones es el bit I del registro de Estado (SREG), ubicado en la posición número 7.

Los habilitadores individuales están en el registro EIMSK (External Interrupt Mask Register).

12

Page 13: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

13

El estado de las interrupciones se refleja en el registro EIFR (External Interrupt Flag Register):

Las banderas se limpian automáticamente por hardware, cuando la ISR es ejecutada.

Aunque el registro puede ser consultado por software, no tiene ningún sentido práctico.

Page 14: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

14

Ejemplo 1: Conmutar el bit menos significativo de Port B, cada que se presiona un botón

INT0 PortB.0

ATMega328P

Page 15: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

EJEMPLO 2: CONTADOR DE EVENTOS UP/DOWN

INT0

INT1

PORT

B

El puerto B se incrementará cada vez que se presiona el botón 1 y tendrá un decremento al presionar al botón 2.

Deberá contar de 0 a 9, pasando de 9 a 0 (UP) ó de 0 a 9 (DOWN). 15

Page 16: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

3.2 INTERRUPCIONES POR CAMBIOS EN LOS PINES

Microcontroladores

M. C. Felipe Santiago Espinosa

Octubre de 2019

16

Page 17: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

INTERRUPCIONES POR CAMBIOS

Las interrupciones PCIE0, PCIE1 y PCIE2 son provocadas por cualquier cambio en las terminales de los puertos.

17

Interrupción Pines que monitorea

PCINT0 PB0 .. PB7PCINT1 PC0 .. PC6PCINT2 PD0 .. PD7

Page 18: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

HABILITACIONES INDIVIDUALES

Un pin puede provocar una interrupción si ésta es habilitada en forma individual.

Se habilita en los registros PCMSKx (Pin Change Mask):

En la ISR debe emplearse una máscara para determinar qué pin provocó el cambio.

18

Page 19: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

HABILITACIÓN Y ESTADO

En el registro PCICR (Pin Change Interrupt Control Register) se habilitan estas interrupciones.

El estado de las mismas puede verse en el registro de banderas PCIFR (Pin Change Interrupt Control Register).

19

Page 20: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

EJEMPLO 3: PUERTAS DE UN AUTOMÓVIL.

En las 4 puertas, cajuela y cofre de un automóvil se han puesto botones para detectar si están abiertas o cerradas. El botón está presionado con las puertas cerradas.

Suponga que todas las puertas están cerradas cuando el sistema se energiza.

• Si alguna de las 4 puertas está abierta deberá encenderse la luz interior.

• S i l a ca jue la es tá ab ie r ta , además de la luz interior debe encenderse la luz de la cajuela.

• Si el cofre está abierto, además d e l a l u z i n t e r i o r d e b e encenderse la luz del motor.

20

Page 21: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

EJEMPLO 3: PUERTAS DE UN AUTOMÓVIL.

21

PD5 PD4 PD3-PD0 PC2 PC1 PC01 1 X 1 1 10 1 X 0 1 11 0 X 1 0 10 0 != 0 0 0 10 0 0 0 0 0

Page 22: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

3.3 TEMPORIZADORES

Microcontroladores

M. C. Felipe Santiago Espinosa

Octubre de 2019

22

Page 23: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

TEMPORIZADORES/CONTADORES

Un Timer/Counter es un registro de n bits que se incrementa automáticamente en cada ciclo de reloj o por eventos externos.

Sus desbordamientos indican que ha transcurrido un intervalo de tiempo o un número predefinido de eventos.

23

Page 24: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

El ATMega328 tiene tres temporizadores:

Temporizadores/Contadores

Temporizador Tamaño RegistrosTimer 0 8 bits TCNT0Timer 1 16 bits TCNT1H, TCNT1LTimer 2 8 bits TCNT2

24

Page 25: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Eventos en los temporizadoresDesbordamiento:

Coincidencia por comparación (Compare match):

Captura de entrada (Input Capture)

TCNTn TOVn

CARGA

MAXVAL = 2 - 1Tamaño (TCNTn)

OCRn

TCNTn

= OCFn

TCNT1

ICR1

ICF1ICP1

25

Page 26: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

26

Los eventos de los Timers quedan registrados en su respectivo registro TIFR (Timer Interupt Flag Register).

Temporizador EventosTimer 0 Desbordamiento y coincidencia por comparación (2)Timer 1 Desbordamiento, coincidencia por comparación (2) y

captura de entrada.Timer 2 Desbordamiento y coincidencia por comparación (2)

Eventos en los temporizadores

Page 27: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Atención y respuesta a los eventos.Sondeo (polling). El programa principal evalúa de manera frecuente el estado

de las banderas.

Uso de Interrupciones Las interrupciones se habilitan en el registro TIMSK

(Timer Interrupt Mask Register) de cada temporizador. También se debe act ivar e l habi l i tador g lobal de interrupciones (bit I en SREG).

Respuesta automática Ante eventos de coincidencia por comparación, algunas

terminales relacionadas pueden ponerse en alto, en bajo o conmutarse de manera automática. Fundamental para generar señales a una frecuencia deseada o

para realizar una modulación por ancho de pulso (PWM).27

Page 28: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

ORGANIZACIÓN Y REGISTROS DEL TEMPORIZADOR/CONTADOR 0

TCNT0 (Timer/Counter 0) , es el registro de 8 bits del temporizador/ contador 0.

OCR0A (Output Compare Register A), es uno de los registros con el que continuamente se comparará el temporizador para generar eventos de coincidencias por comparación.

OCR0B (Output Compare Register B), es el otro registro con el que continuamente se comparará el temporizador para generar eventos de coincidencias por comparación.

Los registros OCR0A y OCR0B también son usados para PWM.

28

Page 29: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

TEMPORIZADOR/CONTADOR 0

Page 30: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Se tienen dos registros para el control del temporizador/contador 0: TCCR0A y TCCR0B (Timer/Counter Control Register):

TCCR0A:

TCCR0B:

7 6 5 4 3 2 1 0

FOC0A FOC0B - - WGM02 CS02 CS01 CS00

7 6 5 4 3 2 1 0

COM0A1 COM0A0 COM0B1 COM0B0 - - WGM01 WGM00

30

Page 31: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Bits WGM0[2:0] (Waveform Generation Mode): Para definir el modo de operación, de 8 modos posibles, 4 no son PWM y de ellos sólo 2 son válidos:

Modo WGM02 WGM01 WGM00 Descripción

0 0 0 0 Normal

1 0 0 1 PWM con fase correcta (MAX = 0xFF)

2 0 1 0 CTC (clear timer on compare match) –El máximo está en OCR0A

3 0 1 1 PWM rápido (MAX = 0xFF)

4 1 0 0 Reservado

5 1 0 1 PWM con fase correcta (MAX = OCR0A)

6 1 1 0 Reservado

7 1 1 1 PWM rápido (MAX = OCR0A)

31

Page 32: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Bits COM0A[1:0] y COM0B[1:0] (Compare Output Mode): Con estos bits se configura una respuesta automática en OC0x, ante eventos de comparación. Para los modos que no son PWM se tiene:

Para los modos PWM:

COM0x1 COM0x0 Descripción

0 0 Operación normal – OC0x desconectado

0 1 Conmuta OC0x, sobre una coincidencia por comparación.

1 0 Limpia OC0x, sobre una coincidencia por comparación.

1 1 Ajusta OC0x, sobre una coincidencia por comparación.

(x puede ser A o B)

COM0x1 COM0x0 Descripción

0 0 Operación normal - OC0x desconectado, no hay salida PWM.

0 1 Reservado (sin uso)

1 0 Modo No Invertido

1 1 Modo Invertido32

Page 33: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

PWM RÁPIDO

33

El registro OCRx se actualiza cuando el temporizador pasa de su valor máximo a cero.

Page 34: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

PWM CON FASE CORRECTA

Las escrituras en el registro OCRx se realizan cuando TCNTx alcanza su valor máximo.

34

34

Page 35: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Bits FOC0A y FOC0B: forzan u ob l igan un evento de comparación, si se configuró una respuesta automática, ésta tambien va a realizarse. FOC0A se relaciona con el registro OCR0A y FOC0B con el registro OCR0B.

Bits CS0[2:0] (Clock Select): Bits de selección de la fuente de reloj.

CS02 CS01 CS00 Descripción0 0 0 Sin fuente de reloj (temporizador detenido)0 0 1 CLK I/O (Sin pre-escalador)0 1 0 CLK I/O/8 (Desde el pre-escalador)0 1 1 CLK I/O/64 (Desde el pre-escalador)1 0 0 CLK I/O/256 (Desde el pre-escalador)1 0 1 CLK I/O/1024 (Desde el pre-escalador)1 1 0 Fuente externa (en T0), con flanco de bajada1 1 1 Fuente externa (en T0), con flanco de subida

35

Page 36: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

EVENTOS DEL TEMPORIZADOR/CONTADOR 0

Los eventos se ven re f l e j ad os en e l r eg i s t r o T I F R0 (Timer/Counter Interrupt Flag Register), se tienen tres eventos:

TOV0 (Timer/Counter Overflow 0): Desbordamiento del Temporizador/Contador 0.

OCF0x (Output Compare Match Flag 0x): Indica una coincidencia en la comparación. Se tienen dos banderas por que el temporizador es comparado

con dos registros diferentes: OCR0A y OCR0B.

Nota: Las banderas se limpian automáticamente si se emplean interrupciones o escribiendo un 1 si se usa sondeo.

7 6 5 4 3 2 1 0

- - - - - OCF0B OCF0A TOV0

36

Page 37: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

INTERRUPCIONES DEL TEMPORIZADOR/CONTADOR 0

En el registro TIMSK0 (Timer/Counter Interrupt Mask Register 0 ) se deben act ivar las interrupciones . Los habilitadores individuales son:

TOIE0 (Timer/Counter 0 Overflow Interrupt Enable): Habilita la interrupción por desbordamiento del Temporizador/Contador 0.

OCIE0x (Timer/Counter 0 Output Compare Match x Interrupt Enable): Hailita la interrupción por una coincidencia en la comparación. Se tienen dos habilitaciones por que el temporizador es comparado con

dos registros diferentes: OCR0A y OCR0B.

7 6 5 4 3 2 1 0

- - - - - OCIE0B OCIE0A TOIE0

37

Page 38: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

VECTORES DE INTERRUPCIÓN Los vectores de interrupción para los eventos del

temporizador/ contador 0 son:

Dirección Evento Descripción

0x001C TIMER0_COMPA El Timer 0 coincide con el comparador A

0x001E TIMER0_COMPB El Timer 0 coincide con el comparador B

0x0020 TIMER0_OVF Desbordamiento del Timer 0

38

Page 39: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

TEMPORIZADOR/CONTADOR 1

Page 40: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Se tienen tres registros para el control del temporizador/contador 1: TCCR1A, TCCR1B y TCCR1C (Timer/Counter Control Register):

TCCR1A:

TCCR1B:

TCCR1C:

7 6 5 4 3 2 1 0

COM1A1 COM1A0 COM1B1 COM1B0 - - WGM11 WGM10

7 6 5 4 3 2 1 0

FOC1A FOC1B - - - - - -

7 6 5 4 3 2 1 0

ICNC1 ICES1 - WGM13 WGM12 CS12 CS11 CS10

REGISTROS DE CONTROL

40

Page 41: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Bits WGM1[3:0] (Waveform Generation Mode): Modo WGM13 WGM12 WGM11 WGM10 Descripción MAX

0 0 0 0 0 Normal 0xFFFF1 0 0 0 1 PWM con Fase Correcta, 8 bits 0x00FF2 0 0 1 0 PWM con Fase Correcta, 9 bits 0x01FF3 0 0 1 1 PWM con Fase Correcta, 10 bits 0x03FF4 0 1 0 0 CTC OCR1A5 0 1 0 1 PWM Rápido, 8 bits 0x00FF6 0 1 1 0 PWM Rápido, 9 bits 0x01FF7 0 1 1 1 PWM Rápido, 10 bits 0x03FF

8 1 0 0 0 PWM con Frecuencia y Fase Correcta ICR1

9 1 0 0 1 PWM con Frecuencia y Fase Correcta OCR1A

10 1 0 1 0 PWM con Fase Correcta ICR1

11 1 0 1 1 PWM con Fase Correcta OCR1A12 1 1 0 0 CTC ICR113 1 1 0 1 Reservado -14 1 1 1 0 PWM Rápido ICR115 1 1 1 1 PWM Rápido OCR1A

Page 42: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Un evento en la terminal ICR1 hace que el temporizador se copie en ICR1 y que la bandera ICF1 sea puesta en alto.

Bits involucrados:

Bit ICNC1 (Input Capture Noise Canceler): Activa un eliminador de ruido. La entrada se filtra por cuatro muestras sucesivas.

Bit ICES1 (Input Capture Edge Select): Selecciona el flanco de activación de la captura.

En los modos 8, 10, 12 y 14, el registro ICR1 tiene otras funciones por lo que y la función de captura no puede utilizarse.

42

0 Flanco de bajada1 Flanco de subida

CAPTURA DE ENTRADA

Page 43: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

VECTORES DE INTERRUPCIÓN

Los vectores de interrupción para los eventos del temporizador/ contador 1 son:

Dirección Evento Descripción0x0014 TIMER1_CAPT Captura de entrada con el Timer 10x0016 TIMER1_COMPA El Timer 1 coincide con el comparador A

0x0018 TIMER1_COMPB El Timer 1 coincide con el comparador B

0x001A TIMER1_OVF Desbordamiento del Timer 1

43

Page 44: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

44

TEMPORIZADOR/CONTADOR 2

Page 45: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

REGISTROS DE CONTROL Se tienen dos registros para el control del temporizador/contador

2: TCCR2A y TCCR2B (Timer/Counter Control Register):

TCCR2A:

TCCR2B:

7 6 5 4 3 2 1 0

FOC2A FOC2B - - WGM22 CS22 CS21 CS20

7 6 5 4 3 2 1 0

COM2A1 COM2A0 COM2B1 COM2B0 - - WGM21 WGM20

45

Page 46: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Bits CS2[2:0] (Clock Select): Bits de selección de la fuente de reloj.

CS22 CS21 CS20 Descripción0 0 0 Sin fuente de reloj (temporizador detenido)0 0 1 CLK T2S (Sin pre-escalador)0 1 0 CLK T2S/8

0 1 1 CLK T2S/32

1 0 0 CLK T2S/641 0 1 CLK T2S/1281 1 0 CLK T2S/256

1 1 1 CLK T2S/1024

46

Page 47: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

El temporizador 2 puede operar con un cristal externo de 32.768 kHz.Con el pre-escalador se consiguen periodos de desbordamiento que son fracciones o múltiplos de segundos reales.

El desbordamiento se realiza cada 256 ciclos.

Factor de pre-escala

Frecuencia del temporizador 2 Periodo de desbordamiento

1 32. 768 kHz 1/128 s8 4. 096 kHz 1/16 s32 1. 024 kHz 1/4 s64 512 Hz 1/2 s128 256 Hz 1 s256 128 Hz 2 s1024 32 Hz 8 s

47

Page 48: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Registro para controlar la operación asíncrona del temporizador 2.

Bit EXCLK: Determina si la operación asíncrona será con un cristal de 32.768 KHz o a una frecuencia diferente.

Bit AS2 (Asynchronous Timer/Counter) Habilita la operación asíncrona. Puede ser un cristal de 32.768 kHz (EXCLK = 0) o una señal de reloj diferente (EXCLK = 1).

Bits TCN2UB, OCR2AUB, OCR2BUB, TCR2AUB, TCR2BUB (UB: Update Busy) - significa que el registro correspondiente está ocupado por actualización.

7 6 5 4 3 2 1 0

- EXCLK AS2 TCN2UB OCR2AUB OCR2BUB TCR2AUB TCR2BUB

48

Page 49: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

EJEMPLO 4:

1. Escriba una secuencia de instrucciones para generar una señal de 5 KHz (Suponer que se está usando el oscilador interno a 1 MHz). Utilizando:

a. Desbordamientos atendidos por interrupción (salida en PD0).

b. Respuesta automática ante coincidencias por comparación y modo CTC (salida en OC0A, PD6).

F = 5 KHz => T = 0.2 ms = 200 uS TH = TL = 100 uS

49

Page 50: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Configure al ATMega328P para que genere un tono de 400 Hz (aproximadamente), mientras se mantenga presionado un botón.

F = 400 Hz => T = 2.5 ms = 2500 uSTH = TL = 1250 uS

Recursos a emplear:

Botón – Cambio en pin en PC0.Tono – Respuesta automática con el timer 1, salida en OC1A

(PB1).

EJEMPLO 5:

50

Page 51: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Genere una señal PWM rápida con salida en modo No Invertido, donde el ancho del pulso esté determinado por el valor del puerto B.

EJEMPLO 6:

51

Page 52: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

3.4 CONVERTIDOR ANALÓGICO-DIGITAL

Microcontroladores

M. C. Felipe Santiago Espinosa

Octubre de 2019

52

Page 53: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

CONVERSIÓN ANALÓGICO A DIGITAL

1. Señal Original

53

2. Muestreo

3. Cuatificación 4. Señal digital

Page 54: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

CONVERTIDOR ANALÓGICO A DIGITAL

ADC

0000000100010100011111001101111011111111

……

00110011……

54

Page 55: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

ADC DE APROXIMACIONES SUCESIVAS

Un modo de carrera libre se consigue cuando el FIN se conecta con el INICIO.

55

Page 56: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

ADC EN LOS AVRS El ATMega328P contiene un ADC de aproximaciones sucesivas

de 10 bits, el resultado de la conversión queda en los Registros I/O: ADCH y ADCL (juntos pueden referirse como ADCW).

El ADC está conectado a un multiplexor analógico que permite seleccionar 1 de 6 canales externos (ADCo, ADC1, ADC2, ….).

El ADC debe trabajar con una frecuencia entre 50 y 200 kHz.

La primera conversión requiere inicializar la circuitería analógica, por lo que emplea 25 ciclos de reloj. Las siguientes conversiones sólo utilizan 13 ciclos de reloj.

56

Page 57: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

57

ADC en el ATMega328P

• ADSC (ADC Start Conversion): Inicia la conversión.• ADIF (ADC Interrupt Flag): Fin de conversión.• ADIE (ADC Interrupt Enable): Habilita interrupción.

Todos estos bits en el registro ADCSRA (ADC Control and Status Register A).

Page 58: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

REGISTROS PARA EL MANEJO DEL ADC

REFS1 REFS0 ADLAR MUX3 MUX2 MUX1 MUX0-

Bits 7 y 6 – REFS[1:0]: Reference Selection bits. Selección del voltaje de referencia. El ADC puede convertir voltajes de 0 hasta VREF – 1 LSB.

REFS1 REFS0 Voltaje de referencia0 0 Voltaje Externo en AREF0 1 AVCC, con un Capacitor externo

de AREF a tierra1 0 Reservado1 1 Interno (1.1 V), con un Capacitor

externo de AREF a tierra

Registro ADMUX. Registro de selección del multiplexor del ADC

58

Page 59: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Bit 5 – ADLAR: ADC Left Adjust Result. Ajusta el resultado del ADC a la izquierda.

Si ADLAR = 0 : Si ADLAR = 1

ADCH ADCL

Bits 3 al 0 – MUX[3:0]. Seleccionan el canal o entrada analógica.

D9 D8 D7 D6 D5 D3 D2D4

D1 D0

D9 D8

D7 D6 D5 D3 D2 D1 D0D4

Mux [ 3 : 0 ] Entrada0000 ADC00001 ADC1. . . . . . . .0110 ADC60111 ADC71000 Sensor de Temperatura . . . . Sin uso1110 Voltaje interno (1.1 V)1111 0 V

GND

Voltajeinterno

ADC7

ADC6

ADC1

ADC0

Entradaanalógica

SEL

59

Page 60: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

REGISTRO ADCSRA. REGISTRO A DE CONTROL Y ESTADO DEL ADC.

Bit 7 – ADEN: ADC Enable. Habilita al ADC.

Bit 6 – ADSC: ADC Start Conversion. Marca el inicio de la conversión.

Bit 5 – ADATE : ADC Auto Trigger Enable. Habilitan el modo de carrera libre o un auto-disparo del ADC por otro recurso del MCU, el auto-disparo se configura con los bits ADTS del registro ADCSRB.

Bit 4 – ADIF: ADC Interrupt Flag. Indica el fin de una conversión.

Bit 3 – ADIE: ADC Interrupt Enable. Habilita la interrupción por fin de conversión analógica-digital.

ADEN ADSC ADATE ADIF ADIE ADPS1 ADPS0ADPS2

60

Page 61: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Bits 2, 1 y 0 - ADPS[2-0]: ADC Prescaler Select Bits. Establecen una proporción entre el reloj del sistema y el reloj para el ADC.

El ADC requiere de una señal de reloj entre 50 kHz y 200 kHz para obtener una máxima resolución.

PC

K/8

PC

K/3

2

PC

K/6

4

PC

K/1

28

PC

K/1

6

PC

K/4

CLK

ADENSTART

RE

SE

T

PREESCALADORDE 7 BITS

PC

K/2

ADPS[2:0]

CLK del ADC

ADPS [ 2 : 0 ] Factor de División

000 2001 2010 4011 8100 16101 32110 64111 128

61

Page 62: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

REGISTRO ADCSRB. REGISTRO B DE CONTROL Y ESTADO DEL ADC.

Bits 2, 1 y 0 – ADTS[2:0] ADC Auto Trigger Source. Definen el modo de carrera libre o el evento que disparará el inicio de conversión:

ADTS [ 2 : 0 ] Fuente de disparo000 Modo de Carrera Libre001 Comparador Analógico010 Interrupción Externa 0011 Coincidencia por comparación, timer/counter 1 A100 Sobreflujo del timer/counter 0101 Coincidencia por comparación, timer/counter 1 B110 Sobreflujo del timer/counter 1111 Evento de Captura, timer/counter 1

Bits 7 al 3: No están relacionados con el ADC.

ADTS2 ADTS1 ADTS0ACME

62

Page 63: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

REGISTRO DIDR0. REGISTRO 0 PARA DESHABILITAR LA ENTRADA DIGITAL.

Bits 5 al 0 – ADCxD. Deshabilitan la entrada digital. Las terminales digitales incluyen un buffer de entrada, con un 1 en estos bits el buffer queda inhabilitado y por lo tanto, una entrada digital siempre se leería con un 0.

Se sugiere escribir un 1 en los bits que correspondan con las entradas analógicas a usar para reducir el consumo de potencia.

Bits 7 y 6: No están implementados.

ADC2D ADC1D ADC0DADC5D ADC4D ADC3D

63

Page 64: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

EJEMPLO 7 Conecte un potenciómetro en el canal 0 del ADC y “mueva” un LED

encendido en e l puerto B, dependiendo de la pos ic ión del potenciómetro.

64

Rango Salida (Binario)

0 – 127 0000 0001128 – 255 0000 0010256 – 383 0000 0100384 – 511 0000 1000512 – 639 0001 0000640 – 767 0010 0000768 – 895 0100 0000896 - 1023 1000 0000

Page 65: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

EJEMPLO 8

65

• Con el timer 0, genere una señal PWM de 8 bits en modo no invertido. El ciclo de trabajo debe ser proporcional al voltaje producido por un potenciómetro conectado al canal 0 del ADC, como se muestra en la figura:

ADC0

+ 5V

100 K OC0A

Page 66: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

EJEMPLO 9

66

Manipule un servomotor controlando su posición con la ayuda de un potenciómetro conectado a una entrada analógica, como se muestra la figura:

Para el movimiento del servomotor se requiere una señal PWM con un periodo de 20 mS, el servomotor se mantiene en 0o (extremo izquierdo) con un ancho de pulso de 0.9 mS y en 180o (extremo derecho) si el ancho es de 2.1 mS.

Page 67: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

67

IMPLEMENTACIÓN PRÁCTICA 2

Control Proporcional de Temperatura:

Acondicione el sensor para temperatura ambiente, considerando un intervalo entre 0 y 50 °C.

El potenciómetro proporcionará una referencia en el mismo intervalo.

Page 68: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

68

IMPLEMENTACIÓN PRÁCTICA 2

• Si Treal <= Tref el ventilador estará apagado (0 %).

• Si Treal > Tref y Treal <= Tref + 3.0, la señal PWM será proporcional a Treal – Tref. Considerando un comportamiento lineal para un ciclo útil entre 0 y 100 %.

• Si Treal > Tref + 3.0 la señal PWM tendrá el 100 % de ciclo útil (ventilador encendido).

• Implementar y documentar los resultados.

Tref Tref + 3.0

Treal

PWM

0 %

100 %

Page 69: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

3.5 COMUNICACIÓN SERIAL

Microcontroladores

M. C. Felipe Santiago Espinosa

Octubre de 2019

69

Page 70: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

COMUNICACIÓN SERIAL A TRAVÉS DE LA USART

USART: Transmisor/Receptor Universal Síncrono/Asíncrono (Universal Synchronous/Asynchronous Receiver/Transceiver ).

Permite una operación full-duplex.

La comunicación puede ser síncrona o asíncrona.

TXD

RXD TXD

RXD

Comunicación síncrona Comunicación asíncrona

TXD RXDTXD

CLK

RXD

70

Page 71: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

COMUNICACIÓN SERIAL Comunicación síncrona: El reloj determina la velocidad de

transmisión.

En comunicación asíncrona: Se deben definir los parámetros siguientes:

Velocidad (Baudrate – bps, bits/segundo) Número de bits de datos (5, 6, 7, 8, 9) Bit de paridad (par, impar) Número de bits de paro

71

Page 72: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

TRAMA SERIAL

Una trama serial se compone de:

1 bit de inicio (siempre es un 0 lógico). 5, 6, 7, 8 ó 9 bits de datos, iniciando con el menos significativo. Bit de paridad, par o impar, si se configuró su uso. 1 ó 2 bits de paro (siempre son un 1 lógico).

Se tiene un nivel lógico alto mientras no haya transmisión de datos.

72

Bit deinicio

D0 D1 D2 D3 D4 D5 D6 D7

Bit deparidad

Bit deparo

I P SEspera

72

Page 73: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

ORGANIZACIÓN DE LA USARTEn el ATMega328 se le denomina USART0 y se compone de 3 bloques principales:

UCSR0A, UCSR0B y UCSR0C son los registros de control, configuración y estado de la USART. (UCSR – USART Configuration and State Register). 73

Page 74: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

GENERADOR DE RELOJ

CLK1. Reloj para transmisión/recepción asíncrona o para transmisión síncrona.

CLK2. Reloj para recepción síncrona.

Registro UBRR0 (Registro de 12 bits) – USART0 Baud Rate Register: Es la base de la generación de la razón de transmisión (baud rate). Es un contador descendente.

74

Page 75: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

OPERACIÓN DE LA USARTLa USART soporta cuatro modos de operación:

1. Normal asíncrono (frecuencia base/16)2. Asíncrono de doble velocidad (frecuencia base/8)3. Síncrono como maestro (frecuencia base/2)4. Síncrono como esclavo

Los bits UMSEL0[1:0] (Bits 7 y 6 del registro UCSR0C) determinan si será una operación síncrona y asíncrona.

0 - Asíncrona1 - Síncrona

El bit U2X0 (bit 1 del registro UCSR0A) sirve para seleccionar entre Asíncrona Normal o Asíncrona a Doble Velocidad.

75

Page 76: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

CÁLCULO DEL BAUD RATEMODO BAUD-RATE UBRR

Normal asíncrono

Asíncrono a doble velocidad

Síncrono maestro

1016

UBRRfBAUD OSC 1

160

BAUDfUBRR OSC

108

UBRRfBAUD OSC 1

80

BAUDfUBRR OSC

102

UBRRfBAUD OSC 1

20

BAUDfUBRR OSC

1Re%100[%]

BAUDRATEalBAUDRATEError

76

Page 77: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

RAZONES DE TRANSMISIÓN TÍPICAS

77

BaudRate(bps)

fosc=1.0MHz fosc=1.8432MHz fosc=8.0MHz

Normal Doble Vel. Normal Doble Vel. Normal Doble Vel.

UBRR0 Error UBRR0 Error UBRR0 Error UBRR0 Error UBRR0 Error UBRR0 Error

2 400 25 0.2 % 51 0.2 % 47 0.0 % 95 0.0 % 207 0.2 % 416 -0.1 %

4 800 12 0.2 % 25 0.2 % 23 0.0 % 47 0.0 % 103 0.2 % 207 0.2 %

9 600 6 -7.0 % 12 0.2 % 11 0.0 % 23 0.0 % 51 0.2 % 103 0.2 %

14 400 3 8.5 % 8 -3.5 % 7 0.0 % 15 0.0 % 34 -0.8 % 68 0.6 %

19 200 2 8.5 % 6 - 7.0 % 5 0.0 % 11 0.0 % 25 0.2 % 51 0.2 %

28 800 1 8.5 % 3 8.5 % 3 0.0 % 7 0.0 % 16 2.1 % 34 -0.8 %

38 400 1 -18.6 % 2 8.5 % 2 0.0 % 5 0.0 % 12 0.2 % 25 0.2 %

57 600 0 8.5 % 1 8.5 % 1 0.0 % 3 0.0 % 8 -3.5 % 16 2.1 %

76 800 - - 1 -18.6 % 1 -25 % 2 0.0 % 6 -7.0 % 12 0.2 %

115 200 - - 0 8.5 % 0 0.0 % 1 0.0 % 3 8.5 % 8 -3.5 %

MAX 62 500 bps 125 000 bps 115 200 bps 230 400 bps 500 000 bps 1 000 000 bps

Page 78: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

TEMPORIZACIÓN EXTERNAPara recepción síncrona la señal de reloj se toma de la terminal XCK.

La frecuencia externa está limitada por:

4OSC

XCKff

El bit UCPOL0 (bit 0 del registro UCSR0C) determina el flanco en que los datos son ajustados (para transmisión) o muestreados (para recepción).

UCPOL0 Ajuste TXD Muestreo RXD

0 Flanco de subida Flanco de bajada

1 Flanco de bajada Flanco de subida

78

Page 79: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

BLOQUE DE TRANSMISIÓN

Registro UDR0 (USART0 I/O Data Register). Físicamente se compone de dos registros con la misma dirección, uno para transmisión y otro para recepción.

La transmisión inicia cuando se escribe en el registro UDR0, al finalizar se pone en alto al bit TXC0 (Bit 6 del registro UCSR0A).

TXC0 bit puede sondearse o generar una interrupción. 79

Page 80: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

BLOQUE DE RECEPCIÓN

El recurso debe habilitarse para que reciba un dato en cualquier momento, el dato es alojado en el registro UDR0. Cuando esto ocurre, es puesto en alto al bit RXC0 (Bit 7 del registro UCSR0A).

RXC0 también puede sondearse por software o generar una interrupción.

80

Page 81: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

REGISTROS DE CONTROL Y ESTADO

REGISTRO UCSR0A

Bit 7 – RXC0 : USART0 Receive Complete. Indica que hay un dato por recepción. Puede generar una interrupción. Se limpia al leer al buffer de entrada (UDR0).

Bit 6 – TXC0: USART0 Transmite Complete. Indica que se ha concluido con la transmisión de un dato y por lo tanto el búfer está vacío. Puede generar interrupción con lo que se limpia automáticamente o escribiéndole 1.

Bit 5 – UDRE0: USART0 Data Register Empty. Indica que el registro UDR0 está vacío. También puede generar interrupción.

BANDERAS

RXC0 TXC0 UDRE0 FE0 DOR0 PE0 U2X0 MPCM0

81

Page 82: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

REGISTRO UCSR0A82

Bit 4 – FE0: Frame Error. Indica un error de marco, es decir, que el primer bit de paro es cero. Es válido hasta que UDR0 es leído.

Bit 3 – DOR0: Data Over Run. Indica un exceso de datos. El buffer receptor (UDR0) está lleno, el registro de desplazamiento contiene otro carácter y hay un nuevo bit de inicio.

Bit 2 – PE0: Parity Error. Error de paridad en el dato recibido.

Bit 1 - U2X0: Double the USART Transmission Speed. En operaciones asíncronas duplica la velocidad de transmisión.

Bit 0 – MPCM0: Multiprocessor Communication Mode. Habilita un modo de comunicación entre multiprocesadores, bajo un esquema maestro-esclavos.

82

Page 83: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

REGISTRO UCSR0B

Los 3 bits mas significativos son habilitadores de interrupciones:

Bit 7 – RXCIE0 : Por recepción completa.Bit 6 – TXCIE0 : Por transmisión completa.Bit 5 – UDRIE0 : Por buffer vacío.

Los 2 bits siguientes habilitan los recursos:

Bit 4 – RXEN0: Habilita al receptor.Bit 3 – TXEN0: Habilita al transmisor.

Una vez que se ha configurado al hardware, las terminales relacionadas no pueden ser I/O generales.

RXCIE0 TXCIE0 UDRIE0 RXEN0 TXEN0 UCSZ02 RXB80 TXB80

83

Page 84: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

84 Bit 2 – UCSZ02: Character size. Junto con otros

dos bits de UCSRC determinan el tamaño de los datos.

Bit 1 - RXB80: En transferencias de datos de nueve bits, en RXB80 se recibe el noveno bit, los ocho bits menos significativos se reciben en UDR0.

Bit 0 - TXB80: También para datos de nueve bits, para ubicar al bit mas significativo al transmitir. Su valor debe definirse antes de escribir en UDR0.

UDRRXB8

7,6,...,1,08

REGISTRO UCSR0B

84

Page 85: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

UMSEL01 UMSEL00 UPM01 UPM00 USBS0 UCSZ01 UCSZ00 UCPOL0

Bit 7 y 6 – UMSEL0[1:0] (M328): USART Mode Select. Seleccionan el modo de operación de la USART0.

UMSEL01 UMSEL00 Modo0 0 Operación Asíncrona0 1 Operación Síncrona1 0 Reservado1 1 Modo Maestro SPI (MSPIM)

REGISTRO UCSR0C

85

Page 86: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

UPM01 UPM00 Configuración0 0 Sin bit de paridad0 1 Reservado1 0 Paridad Par1 1 Paridad Impar

0 Un bit de paro1 Dos bits de paro

86 Bits 5 y 4 – UPM0[1:0]: Parity Mode. Configuran al bit de paridad.

Bit 3 – USBS0: Stop Bit Select. Selecciona el número de bits de paro.

Bits 2 y 1 – UCSZ[1:0]: Character size. Junto con el bit UCSZ2 del registro UCSRB determinan el tamaño de los datos.

REGISTRO UCSR0C

86

Page 87: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

UCSZ02 UCSZ01 UCSZ00 Tamaño de los datos0 0 0 5 bits0 0 1 6 bits0 1 0 7 bits0 1 1 8 bits1 0 0 Reservado1 0 1 Reservado1 1 0 Reservado1 1 1 9 bits

Bit 0 – UCPOL0: Clock Polarity. Determina la polaridad del reloj para comunicaciones síncronas.

UCPOL0 Ajuste TXD Muestreo RXD

0 Flanco de subida Flanco de bajada

1 Flanco de bajada Flanco de subida

87

REGISTRO UCSR0C

87

Page 88: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

EJEMPLO 9:

1. Escriba un programa ECO que transmita cualquier carácter recibido. Configurando a la USART0 para una comunicación asíncrona a 4800 baudios, datos de 8 bits, 1 bit de paro y sin paridad. Utilice una interrupción por recepción.

88

88

Page 89: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Escriba un programa que envíe un carácter ASCII imprimible por el puerto serie cada vez que se presione un botón.Los caracteres ASCII imprimibles están en el rango de 0x20 a 0x7E. Además, en cualquier momento podrá arribar serialmente un dato, por lo que éste deberá mostrarse en el puerto B. Realice la comunicación a 9600 bps.

PORTD.2

POR

TB

TxD

RxD

EJEMPLO 10:

89

Page 90: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

3.6 INTERFAZ SPI

Microcontroladores

M. C. Felipe Santiago Espinosa

Octubre de 2019

90

Page 91: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

INTERFAZ SPI

SPI (Serial Peripheral Interface): estándar de comunicaciones usado para transferir paquetes de 8 bits entre circuitos integrados.

La transferencia es síncrona, un dispositivo es Maestro y otro es Esclavo.

Es posible el manejo de un sistema con múltiples Esclavos. El Maestro es la parte activa del sistema, provee la señal de

reloj para la transmisión. El Maestro tiene que enviar datos para poder leer de el

Esclavo. el Esclavo no puede ser activo por sí mismo. La interfaz se puede encontrar en memorias, sensores, ADCs,

DACs, etc., usualmente funcionando como Esclavos. 91

Page 92: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

INTERFAZ SPI

92

7 ... 3 2 1 07 ... 3 2 1 0Memoria,

CPU,etc.

Memoria,CPU,etc.

Registro de

desplazamiento

Registro de

desplazamiento

Módulo SPI Maestro Módulo SPI Esclavo

MOSI

SCK

MISO

SS

Generadorde reloj

Unidadde control

SPI

Unidadde

controlSPI

MOSI: Master Output, Slave Input. MISO: Master Input, Slave Output. SCK: Shift Clock. SS: Slave Select.

Page 93: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

93

INTERFAZ SPI EN LOS AVRB

US

DE

DAT

OS

MOSI

MISO

SCKCO

NTR

OL

LÓG

ICO

DE

LO

S P

INES

SS

S

M

M

S

S

M

MSB LSB

REGISTRO DE DESPLAZAMIENTO (8 BITS)

BUFFER PARA LECTURA DEL DATO

DIVISOR/2 /4 /8 /16 /32 /64 /128

SELECTOR

LOGICADEL RELOJ

CONTROL

REGISTRO DE CONTROL ( )SPCR

REGISTRO DE DATOS ( )SPDR

REGISTRO DE ESTADO ( )SPSR

CLK I/OReloj

(gen. Int.)

Page 94: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

94

SPDR (SPI Data Register) es el registro de datos, incluye un buffer para la transmisión y un buffer doble para la recepción.

La transmisión inicia al escribir en el registro SPDR. No se debe escribir un dato nuevo mientras un ciclo de envío-recepción esta en progreso.

Se puede enviar primero al bit más significativo o al menos significativo, se elige con el bit DORD (data order) del registro SPCR.

Los bits recibidos se colocan en el buffer de recepción después de que la transmisión se ha completado.

El buffer debe leerse antes de iniciar con la siguiente transmisión.

INTERFAZ SPI EN LOS AVR

Page 95: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

95

El fin de una transferencia se indica con la bandera SPIF del registro SPSR.

Con e l b i t SPIE de l reg i s t ro SPCR se hab i l i tan las interrupciones por el fin de una transferencia SPI.

Una colisión de escritura ocurre si se escribe en SPDR mientras hay una transferencia en progreso. Se indica con la bandera WCOL del registro SPSR.

Las banderas WCOL y SPIF se limpian con la lectura del registro SPSR y el acceso al registro SPDR.

INTERFAZ SPI EN LOS AVR

Page 96: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

MODOS DE TRANSFERENCIA SPI

96

Las transferencias son sincronizadas con la señal de reloj (SCK), un bit es transferido en cada ciclo.

La sincronización de los datos con el reloj es flexible. El usuario puede definir la polaridad de la señal de reloj y la

fase del muestreo de datos. La polaridad se refiere al estado lógico de la señal de reloj

mientras espera a que haya transferencias. La fase define si el primer bit será muestreado en el primer

flanco de reloj (en fase) o en el flanco siguiente.

Page 97: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

MODOS DE TRANSFERENCIA SPI

97

En el registro SPCR se tienen 2 bits para definir estos parámetros:

CPOL es para configurar la polaridad de la señal de reloj.CPHA es para configurar la fase o instante de muestro.

ModoSPI CPOL CPHA Descripción0 0 0 Espera en bajo, muestrea en el primer flanco1 0 1 Espera en bajo, muestrea en el segundo flanco2 1 0 Espera en alto, muestrea en el primer flanco3 1 1 Espera en alto, muestrea en el segundo flanco

Page 98: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

98

SCK

Datos

Muestreos

SS

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

SCK

Datos

Muestreos

SS

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

a) Modo 0: CPOL = 0, CPHA = 0

c) Modo 2: CPOL = 1, CPHA = 0

b) Modo 1: CPOL = 0, CPHA = 1

d) Modo 3: CPOL = 1, CPHA = 1

Page 99: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

SEÑAL DE HABILITACIÓN SS

99

La señal de la terminal SS no se genera automáticamente, debe ser generada por software porque sólo de esta forma es posible un esquema Maestro-Esclavos.

Maestro

Esclavo 2

ATMega328

Esclavo 0

ATMega328

Esclavo 1

ATMega328 ATMega328

(PB3) MOSI

MOSI (PB3) MOSI (PB3) MOSI (PB3)

(PB4) MISO

MISO (PB4) MISO (PB4) MISO (PB4)SCK (PB5) SCK (PB5) SCK (PB5)

(PB5) SCK

(PB2) SS

PB1PB0

SS (PB2) SS (PB2) SS (PB2)

Page 100: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

100

REGISTRO DE CONTROL (SPCR)

Bit 7 – SPIE: Habilitador de interrupción por SPI Debe estar en alto, junto con el habilitador global, para que se

genere una interrupción por transferencia serial completa vía SPI.Bit 6 – SPE: Habilitador de la interfaz SPI En alto hace posibles las transferencias por esta interfaz.Bit 5 – DORD: Orden de los datos Con un 0 en DORD, se transfiere primero al bit más significativo

(MSB). Con un 1, se transfiere primero al bit menos significativo (LSB).

Bit 4 – MSTR: Habilitador como Maestro Un 1 en MSTR habilita a la interfaz como Maestro. Un 0 la deja

como Esclavo.

7 6 5 4 3 2 1 00x0D SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 SPCR

Page 101: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

101

Bit 3 – CPOL: Polaridad del reloj Determina la polaridad del reloj (SCK) cuando la interfaz SPI está

inactiva. Bit 2 – CPAH: Fase del reloj Determina si los datos serán muestreados en fase o si se insertará

un retraso inicial de medio ciclo de reloj.Bit 1:0 – SPR[1:0] Determinan la frecuencia de la señal SCK (junto con el bit SPI2X).

No tienen efecto si el MCU está configurado como Esclavo.

SPI2X SPR1 SPR0 FrecuenciadeSCK0 0 0 fosc/40 0 1 fosc/160 1 0 fosc/640 1 1 fosc/1281 0 0 fosc/21 0 1 fosc/81 1 0 fosc/321 1 1 fosc/64

Page 102: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Bit 7 – SPIF: Bandera de fin de transferencia SPI Puede sondearse por software o producir una interrupción.Bit 6 – WCOL: Bandera de colisión de escritura Se pone en alto si se escribe en el registro SPDR mientras hay

una transferencia en progreso. Las banderas WCOL y SPIF se limpian con la lectura del

registro SPSR y el acceso al registro SPDR.Bit 0 – SPI2X Duplica la frecuencia de transmisión.

102

Registro de estado (SPSR)7 6 5 4 3 2 1 0

0x0E SPIF WCOL - - - - - SPI2X SPSR

Page 103: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

103

Desarrolle los programas para los MCUs de la figura, el maestro envía un dato al esclavo seleccionado. Con 3, el dato se mandará a todos los Esclavos (difusión).

Maestro

Esclavo 2

ATMega328ATMega328

(PB3) MOSI MOSI (PB3)

(PB4) MISO MISO (PB4)

SCK (PB5)(PB5) SCK

(PB2) SS

PB1

PB0

SS (PB2) PO

RTD

Esclavo 0

ATMega328

MOSI (PB3)

MISO (PB4)

SCK (PB5)

SS (PB2) PO

RTD

Esclavo 1

ATMega328

MOSI (PB3)

MISO (PB4)

SCK (PB5)

SS (PB2) PO

RTD

PORT

D

PC2

PC1PC0

SEL.

DAT

O

EJEMPLO 11: EXPANSIÓN DE PUERTOS

Page 104: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

104

Realice un programa que maneje un dispositivo MCP4821, que es un DAC de 12 bits. Utilice dos puertos de entrada en el ATMega328 para enviar el dato digital al dispositivo.

EJEMPLO 12: MANEJO DE UN DAC.

Page 105: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

3.7 INTERFAZ TWI

Microcontroladores

M. C. Felipe Santiago Espinosa

Octubre de 2019

105

Page 106: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

106

Interfaz compatible con el bus I2C, estándar desarrollado por Philips Semiconductor (ahora NXP Semiconductor).

Aplicable para el manejo de LCDs y LEDs, puertos I/O remotos, RAMs, EEPROMs, RTC, ADCs, DACs, cámaras CCD, etc.

Los dispositivos deben contar con los mecanismos de hardware necesarios para cubrir los requerimientos inherentes al protocolo.

El protocolo TWI maneja un esquema Maestro-Esclavo, sin embargo, cualquier dispositivo puede transmitir en el bus.

INTERFAZ TWI (TWO WIRE INTERFACE)

Page 107: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

INTERFAZ TWI (TWO WIRE INTERFACE)

Los dispositivos se comuniquen a través de un bus bidireccional de 2 líneas: Una para reloj (SCL) y otra para datos (SDA).

Pueden ser hasta 128 dispositivos. Se requiere de 2 resistores de Pull-Up externos, se impone una

AND alambrada.

107

Dispositivo 1 Dispositivo 2 Dispositivo 3 Dispositivo n. . . . . R1 R2

Vcc

SDA

SCL

Page 108: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

Términos para los diferentes dispositivos:

Maestro: Dispositivo que inicia y termina una transmisión, también genera la señal de reloj (SCL).

Esclavo: Dispositivo direccionado por un Maestro.

Transmisor: Dispositivo que coloca los datos en el bus.

Receptor: Dispositivo que lee los datos del bus.

108

INTERFAZ TWI (TWO WIRE INTERFACE)

Page 109: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

CONDICIONES DE INICIO Y PAROY DATOS

109

El Maestro genera las condiciones de INICIO y PARO:

También la señal de reloj con la que se sincronizan los datos:

SDA

SCL

Dato Estable Dato Estable

SDA

SCL

INICIO PARO INICIO INICIO REPETIDO PARO

Page 110: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

PAQUETES DE DIRECCIÓN

110

Un paquete de dirección tiene una longitud de 9 bits: 7 bits para la dirección del esclavo (inicia con el MSB) 1 bit de control (R/W) 1 bit de reconocimiento

R/W = 1 para lectura y R/W = 0 para escritura. Con el bit de reconocimiento el Esclavo da respuesta al

Maestro. Un 0 es una indicación de reconocimiento (ACK).

INICIO

DirecciónMSB LSB R/W ACK

1 2 7 8 9

SDA

SCL

Page 111: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

PAQUETES DE DIRECCIÓN

111

SLA + R : Petición de lectura. SLA + W : Petición de escritura. La dirección 000 0000 está reservada para llamadas

generales (GCA, General Call Address). En una llamada general, el Maestro transmite el mismo

mensaje a todos los Esclavos, los Esclavos deben responder con ACK.

Las llamadas generales son sólo para peticiones de escritura (R/W = 0).

Una petición de lectura en una llamada general provocaría una colisión en el bus.

Page 112: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

PAQUETES DE DATOS

112

Los paquetes de datos también son de 9 bits, 8 bits para el dato (iniciando con el MSB) y un bit de reconocimiento.

El receptor debe generar la señal de reconocimiento, poniendo en bajo la señal SDA durante el 9º bit de SCL (ACK).

El Maestro no siempre es el transmisor, también un Esclavo puede serlo.

DatoMSB LSB ACK

1 2 7 8 9

SDA desde eltransmisor

SDA desde elreceptor

SCL desde elmaestro

Page 113: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

PAQUETES COMPLETOS: DIRECCIÓN Y DATOS

113

La AND con las resistencias de pull-up permite coordinar la comunicación entre el Maestro y el Esclavo.

INICIO PARO1 2 7 8 9

DirecciónMSB LSB R/W ACK

1 2 7 8 9

DatoMSB LSB ACK

SDA

SCL

Page 114: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

SISTEMAS MULTI-MAESTROS

114

Si dos o más Maestros intentan iniciar una transmisión al mismo tiempo las señales de reloj pueden tener ligeros desfasamientos.

Las transmisiones se sincronizan con el reloj resultante en SCL debido a la AND alambrada.

SCL delmaestro A

SCL delmaestro B

SCL en el BUS

Page 115: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

115

Sólo un Maestro podrá concluir con la transmisión, éste se determina por un proceso de arbitración.

Los Maestros monitorean la línea SDA después de colocar un dato.

Si el valor leído no coincide con el valor colocado, se ha perdido la arbitración.

SDA delmaestro A

SDA delmaestro B

SDA en el BUS

Linea SCL(sincronizada)

SDA = SDA, el maestro Apierde la arbitración

A /

SISTEMAS MULTI-MAESTROS

Page 116: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

ARBITRACIÓN

116

La arbitración se mantiene hasta que sólo quede un Maestro transmisor.

Puede continuar en el paquete de datos. No debe haber arbitración entre:

Una condición de INICIO REPETIDO y el bit de un dato. Una condición de PARO y el bit de un dato. Una condición de INICIO REPETIDO y una condición de PARO.

El programador evitar las condiciones ilegales. En un sistema multi-Maestros todas las transacciones deben

contener el mismo número de bytes por paquete de datos.

Page 117: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

117

ORGANIZACIÓN DE LA INTERFAZ TWI

SCL

Control deSlew-rate Filtro

SDA

Control deSlew-rate Filtro

Unidad de Interfaz con el Bus

Control deINICIO/PARO

Supresiónde ruido

Detector paraarbitración Ack

Generador de Bit Rate

Pre-escalador

Registro deBit Rate (TWBR)

Unidad de Comparación de Dirección

Registro de Dirección(TWAR)

Comparador dedirección

Unidad de Control

Máquina de estadosy control

Registro de Estado(TWSR)

Registro de Control(TWCR)

Registro de desp.dir/dato (TWDR)

Page 118: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

118

GENERADOR DE BIT RATE

Define la frecuencia de la señal SCL (para un Maestro). La frecuencia depende del Registro de Bit Rate (TWBR) y de

los bits de pre-escala (TWPS[1:0]) ubicados en el registro de estado (TWSR).

La frecuencia de SCL se genera de acuerdo con la ecuación:

TWPS1 TWPS0 Valordepre-escala0 0 10 1 41 0 161 1 64

Page 119: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

119

Incluye al Registro de Desplazamiento para Datos y Direcciones (TWDR), registro principal para las transferencias TWI.

El bit Ack es para el manejo del reconocimiento, se genera en forma automática (no se accesa por Software).

El módulo para el Control de INICIO/PARO genera y detecta las condiciones de INICIO, INICIO REPETIDO y PARO.

El detector para arbitración monitorea la actividad en el bus y determina si una arbitración está en proceso.

Con los bits del registro TWSR se conoce el estado de la interfaz TWI después de cualquier operación en el bus.

Unidad de Interfaz con el Bus

Page 120: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

120

Evalúa si la dirección recibida coincide con la dirección del dispositivo, ubicada en el registro TWAR.

El bit TWGCE del registro TWAR habilita las llamadas generales, si está en alto, la dirección recibida también se compara con 0x00.

Ante una coincidencia se informa a la Unidad de Control para que realice las acciones correspondientes.

Unidad de Comparación de Dirección

7 6 5 4 3 2 1 0TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE TWAR

Page 121: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

121

Unidad de Control Monitorea los eventos del bus y genera respuestas de

acuerdo a la configuración definida en el registro TWCR. Si un evento requiere atención, la bandera TWINT se pone

en alto y del registro de estado (TWSR) se puede obtener el código que identifica al evento.

El registro TWSR tiene información relevante sólo si la bandera TWINT se puso en alto y puede deberse a que: Se transmitió una condición de INICIO o INICIO REPETIDO. Se direccionó un esclavo con una SLA+R o SLA+W. Se perdió una arbitración. La interfaz TWI fue direccionada, con su dirección de Esclavo o

por una GCA. Se recibió un dato. Ocurrió una condición de PARO o INICIO REPETIDO,

mientras estaba direccionada como Esclavo.

Page 122: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

122

El registro TWDR es el buffer para transmisión y recepción de datos.

En modo transmisor, TWDR contiene el próximo dato a ser transmitido.

En modo receptor, TWDR contiene el último dato recibido. El registro TWDR puede ser leído o escrito sólo después de

que la bandera TWINT se puso en alto.

Registros para el manejo de la Interfaz TWI

Registro para el manejo de datos (TWDR)

Page 123: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

123

Registro de Bit Rate (TWBR)

Registro base para definir la razón de transmisión de datos (TWBR).

Con el valor de TWBR y los bits de selección de pre-escala se define la frecuencia a la que se generará la señal SCL, cuando el MCU trabaja como Maestro.

Page 124: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

124

Bit 7:1 – TWA[6:0] Bits de dirección (como Esclavo). Definen la dirección de la interfaz TWI como Esclavo.

Bit 0 – TWGCE: Habilitador para llamadas generales. Habilita a la interfaz TWI para que reconozca y pueda dar

respuesta a una GCA.

Registro de dirección de esclavo (TWAR)

7 6 5 4 3 2 1 0TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE TWAR

Page 125: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

125

Bit 7 – TWINT: Bandera de interrupción. Indica que un evento requiere atención, debe ser limpiado por

software aún cuando se manejen interrupciones, para ello se le escribe un 1.

El acceso a los registros TWAR, TWSR y TWDR se debe hacer antes de limpiar la bandera.

Bit 6 – TWEA: Habilitador de reconocimiento (Ack). El bit debe activarse para generar reconocimiento automático,

cuando: El dispositovo ha sido direccionado como Esclavo. Recibió una llamada general. Recibió un dato (siendo Maestro o Esclavo).

Registro de Control (TWCR)7 6 5 4 3 2 1 0

TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIE TWCR

Page 126: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

126

Bit 5 – TWSTA: TWI Start. El MCU genera una condición de INICIO y se vuelve Maestro (si

el bus está libre). El bit debe limpiarse por software. Bit 4 – TWSTO: TWI Stop.

Un MCU Maestro genera una condición de PARO. Un MCU Esclavo recupera la interfaz de una condición de error. El bit se limpia automáticamente por hardware.

Bit 3 – TWWC: Bandera de colisión de escritura. Se activa si se intenta escribir en el registro TWDR y el bit

TWINT está en bajo. Bit 2 – TWEN: Habilitador de la interfaz TWI.

La interfaz toma el control de las terminales SCL y SDA. Bit 1 – No está implementado. Bit 0 – TWIE: Habilitador de interrupción por TWI.

La interfaz genera una interrupción cuando la bandera TWINT está en alto (y el bit I de SREG también está en alto).

Page 127: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

127

Bits 7:3 – TWS[7:3] Bits de estado de la interfaz TWI. Reflejan el estado de la interfaz y del bus, sus posibles valores

dependen del modo de operación de la interfaz TWI. Para su lectura debe usarse una máscara que anule los bits TWPS[1:0].

Bit 2 – No está implementado. Bit 1:0 – TWPS[1:0]: Selección del valor de pre-escala.

El valor de pre-escala define la frecuencia de la señal SCL cuando el MCU trabaja como Maestro.

Registro de estado (TWSR)7 6 5 4 3 2 1 0

TWS7 TWS6 TWS5 TWS4 TWS3 - TWPS1 TWPS0 TWSR

TWPS1 TWPS0 Valordepre-escala0 0 10 1 41 0 161 1 64

Page 128: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

128

La interfaz puede operar en 4 modos :

Maestro Transmisor (MT) Esclavo Transmisor (ST) Maestro Receptor (MR) Esclavo Receptor (SR)

Una aplicación puede requerir más de un modo.

Por ejemplo, si un MCU va a manejar una memoria EEPROM vía TWI, con el modo MT podrá escribir en la memoria y con el modo MR podrá leer de ella.

Modos de operación

Page 129: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

129

Un MCU entra al modo Maestro al establecer una condición de inicio, posteriormente, la dirección con el bit de control determina si será MT o MR.

Para el modo MT se debe enviar una SLA+W (W = 0). Establecido el modo MT, el maestro puede enviar datos. El fin de las transmisiones se marca con una condición de paro.

Modo Maestro Transmisor

Dispositivo 1

MaestroTransmisor

Dispositivo 2

EsclavoReceptor

Dispositivo 3 Dispositivo n. . . . .

R1 R2

Vcc

SDA

SCL 129

Page 130: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

130

Para una condición de inicio, en TWCR se debe escribir:

TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIEvalor 1 X 1 0 X 1 0 X

La condición de inicio se transmite si el bus está disponible. La bandera TWINT se pone en alto y en los bits de estado (TWSR) se coloca el código 0x08.

Para entrar al modo MT, el Maestro debe escribir una SLA+W en el registro TWDR. La transmisión de la SLA+W inicia cuando se limpia la bandera TWINT, para ello, en el registro TWCR debe escribirse:

TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIEValor 1 X 0 0 X 1 0 X

Page 131: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

131

Después de transmitir la SLA+W y recibir reconocimiento, la bandera TWINT se pondrá en alto y en el registro TWSR se tendrá el estado 0x18.

El MCU Maestro está listo para enviar uno o varios datos. Cada dato a enviar debe colocarse en TWDR.

El envío inicia al limpiar la bandera TWINT, colocando en TWCR el valor mostrado anteriormente.

El fin de envío se marca con la puesta en alto de TWINT y si hubo reconocimiento el código de estado es 0x28.

Esta secuencua se repetirá con cada uno de los datos.

Concluido el envío de datos, el Maestro debe enviar una condición de PARO o una de INICIO REPETIDO. El valor del registro TWCR para una condición de PARO es:

TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIEvalor 1 X 0 1 X 1 0 X

Page 132: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

132

Un INICIO REPETIDO se solicita de manera similar a una condición de INICIO.

Después de un INICIO REPETIDO (estado 0x10) la interfaz puede tener acceso al mismo Esclavo o a otro Esclavo, sin transmitir una condición de PARO.

El INICIO REPETIDO habilita a un Maestro a conmutar entre Esclavos o cambiar de Maestro Transmisor a Maestro Receptor, sin perder el control del bus.

Page 133: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

133

CódigodeEstado

EstadodelbusydelainterfazserialPosiblesaccionesarealizarenlainterfaz,enrespuestaalestado

0x08Una condición de INICIO ha sido transmitida

1. Transmitir SLA+W, recibir ACK o nACK

0x10Una condición de INICIO REPETIDO ha sido transmitida

1. Transmitir SLA+W, recibir ACK o nACK2. Transmitir SLA+R, conmutar la interfaz a

MR

0x18Se ha transmitido una SLA+W y recibido un ACK 1. Transmitir un byte de datos, recibir ACK

o nACK2. Transmitir un INICIO REPETIDO3. Transmitir una condición de PARO4. Transmitir una condición de PARO

seguida de una condición de INICIO

0x20Se ha transmitido una SLA+W y recibido un nACK

0x28Se ha transmitido un byte de datos y recibido un ACK

0x30Se ha transmitido un byte de datos y recibido un nACK

0x38Se ha perdido una arbitración al enviar una SLA o un byte de datos

1. Liberar al bus, únicamente limpiando a la bandera TWINT

2. Transmitir una condición de INICIO, cuando el bus esté libre

Estados posibles en el modo Maestro Transmisor

Page 134: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

134

Un dispositivo MR recibe una cantidad de bytes de un dispositivo ST.

Un MCU entra al modo Maestro al establecer una condición de inicio.

Para el modo MR se debe enviar una SLA+R (R = 1). Establecido el modo MR, el maestro puede recibir datos. El MR no responde con reconocimiento cuando ya no va a

recibir datos.

Dispositivo 1

MaestroReceptor

Dispositivo 2

EsclavoTransmisor

Dispositivo 3 Dispositivo n. . . . . R1 R2

Vcc

SDA

SCL

Modo Maestro Receptor

Page 135: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

135

El modo MR generalmente es la continuación de un modo MT, porque el maestro debe notificar el esclavo que recibirá información.

El cambio de MT a MR se realiza mediante un inicio repetido.

Una respuesta con reconocimiento (ACK) indica al esclavo que el maestro está en condiciones de recibir más datos.

Una respuesta sin reconocimiento (nACK) indica al esclavo que será el último dato recibido.

Después de ello, el maestro debe establecer una condición de paro o inicio repetido.

TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIEvalor 1 1 0 0 X 1 0 X

TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIEvalor 1 0 0 0 X 1 0 X

Page 136: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

136

CódigodeEstado

EstadodelbusydelainterfazserialPosiblesaccionesarealizarenlainterfaz,enrespuestaalestado

0x08Una condición de INICIO ha sido transmitida

1. Transmitir SLA+R, recibir ACK o nACK

0x10Una condición de INICIO REPETIDO ha sido transmitida

1. Transmitir SLA+R, recibir ACK o nACK2. Transmitir SLA+W, conmutar la interfaz

a MR

0x38Se perdió una arbitración al enviar una SLA+R o se envió un nACK

1. Liberar al bus, únicamente limpiando a la bandera TWINT

2. Transmitir una condición de INICIO, cuando el bus esté libre

0x40Se ha transmitido una SLA+R y recibido un ACK

1. Recibir un byte de datos y dar respuesta con un ACK (TWEA = 1)

2. Recibir un byte de datos y dar respuesta con un nACK (TWEA = 0)

0x50Se ha recibido un byte de datos y respondido con un ACK

0x48Se ha transmitido una SLA+R y recibido un nACK

1. Transmitir un INICIO REPETIDO2. Transmitir una condición de PARO3. Transmitir una condición de PARO

seguida de una condición de INICIO0x58

Se ha recibido un byte de datos y respondido con un nACK

Estados posibles en el modo Maestro Receptor

Page 137: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

137

Dispositivo 2

MaestroTransmisor

Dispositivo 1

EsclavoReceptor

Dispositivo 3 Dispositivo n. . . . . R1 R2

Vcc

SDA

SCL

El MCU debe contar con una dirección a la que responderá como esclavo, esta dirección se define en los bits TWA[6:0] (de TWAR).

En el bit TWGCE (LSB de TWAR) se habilita al MCU para que también responda a llamadas generales (GCA).

Modo Esclavo Receptor

Page 138: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

138

En el registro TWCR debe habilitarse la interfaz TWI (TWEN = 1) y preparar una respuesta de reconocimiento (TWEA = 1). Se debe escribir el valor:

Inicializados los registros TWAR y TWCR, la interfaz queda en espera de ser direccionada.

La interfaz operará en el modo SR si el bit de control es 0 (Write), en caso contrario, entrará al modo ST.

Después de recibir su dirección, la bandera TWINT es puesta en alto y en los bits de estado TWSR se refleja el código que determina las acciones a seguir por software.

La interfaz también podrá ser llevada al modo SR, si perdió una arbitración mientras estaba en modo Maestro.

TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIEValor 0 1 0 0 0 1 0 X

Page 139: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

139

Establecido el modo SR, la interfaz estará recibiendo datos, a los que dará reconocimiento.

Si el bit TWEA es limpiado después de una transferencia, la interfaz colocará un nACK en SDA al recibir el próximo dato. Sirve para que el Esclavo le indique al Maestro que no le es posible recibir más datos.

Con e l b i t TWEA en cero e l maestro no rec ib i rá reconocimientos.

Page 140: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

140

CódigodeEstado

EstadodelbusydelainterfazserialPosiblesaccionesarealizarenlainterfaz,enrespuestaalestado

0x60Se ha direccionado como Esclavo con una SLA+W y enviado un ACK

1. Recibir un byte de datos y regresar un ACK (TWEA = 1)

2. Recibir un byte de datos y regresar un nACK (TWEA = 0)

0x68Se perdió una arbitración en una SLA+R/W como Maestro, se ha direccionado como esclavo con una SLA+W y enviado un ACK

0x70Se ha direccionado como Esclavo con una GCA y enviado un ACK

0x78Se perdió una arbitración en una SLA+R/W como Maestro, se ha direccionado como esclavo con una GCA y enviado un ACK

0x80Se ha recibido un byte de datos y respondido con un ACK, previamente se había direccionado con una SLA+W

0x90Se ha recibido un byte de datos y respondido con un ACK, previamente se había direccionado con GCA

Estados posibles en el modo Esclavo Receptor

Page 141: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

141

CódigodeEstado

EstadodelbusydelainterfazserialPosiblesaccionesarealizarenlainterfaz,enrespuestaalestado

0x88Se ha recibido un byte de datos y respondido con un nACK, previamente se había direccionado con una SLA+W

1. Conmutar a un modo de Esclavo no direccionado, desactivando la interfaz para no reconocer su propia SLA o la GCA (TWEA = 0)

2. Conmutar a un modo de Esclavo no direccionado, capaz de reconocer su propia SLA o la GCA (TWEA = 1)

3. Conmutar a un modo de Esclavo no direccionado, desactivando la interfaz para no reconocer su propia SLA o la GCA y enviar un bit de inicio, cuando el bus esté disponible

4. Conmutar a un modo de Esclavo no direccionado, capaz de reconocer su propia SLA o la GCA y enviar un bit de inicio, cuando el bus esté disponible

0x98Se ha recibido un byte de datos y respondido con un nACK, previamente se había direccionado con una GCA

0xA0Se ha recibido una condición de PARO o de INICIO REPETIDO, mientras aún estaba direccionado como Esclavo

Page 142: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

142

Dispositivo 1

EsclavoTransmisor

Dispositivo 2

MaestroReceptor

Dispositivo 3 Dispositivo n. . . . . R1 R2

Vcc

SDA

SCL

La interfaz operará en el modo ST si fue direccionada con el bit de control en 1 (Read), en caso contrario, entrará al modo SR.

Después de recibir su dirección, la bandera TWINT es puesta en alto y en los bits de estado del registro TWSR se refleja el código de estado que determina las acciones a seguir por software.

Modo Esclavo Transmisor

Page 143: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

143

La interfaz también podrá ser llevada al modo ST, si perdió una arbitración mientras estaba en modo Maestro.

Después de transmitir un dato, en los bits de estado se tendrá un 0xB8 o un 0xC0, dependiendo de si el Maestro Receptor recibió con ACK o con nACK. Un nACK le indica al esclavo que el maestro no puede recibir más datos.

Si el esclavo transmisor ya no tiene datos por enviar debe limpiar al bit TWEA al momento de enviar el último dato, con ello, si el maestro sigue demandando datos leerá 1’s.

Page 144: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

144

CódigodeEstado

EstadodelbusydelainterfazserialPosiblesaccionesarealizarenlainterfaz,enrespuestaalestado

0xA8Se ha direccionado como Esclavo con una SLA+R y enviado un ACK

1. Transmitir un byte de datos y recibir ACK

2. Transmitir un byte de datos y recibir nACK

0xB0

Se perdió una arbitración en una SLA+R/W como Maestro, se ha direccionado como esclavo con una SLA+R y enviado un ACK

0xB8Se transmitió un byte de datos en TWDR y se recibió un ACK

Estados posibles en el modo Esclavo Transmisor

Page 145: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

145

CódigodeEstado

EstadodelbusydelainterfazserialPosiblesaccionesarealizarenlainterfaz,enrespuestaalestado

0xC0Se transmitió un byte de datos en TWDR y se recibió un nACK

1. Limpiar la bandera TWINT2. Desactivar la interfaz para no

reconocer su propia SLA o la GCA0xC8

Se transmitió el último byte de datos en TWDR (TWEA = 0) y se recibió un ACK

Page 146: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

146

Estados Misceláneos

Códigos de estado que no corresponden con alguno de los 4 modos de operación:

CódigodeEstado

Estadodelbusydelainterfazserial

Posiblesaccionesarealizarenlainterfaz,enrespuestaalestado

0xF8No hay información relevante disponible, TWINT = 0

1. Esperar o proceder con la siguiente transferencia

0x00Error en el bus, debido a una condición ilegal de INICIO o PARO

1. Sólo el hardware interno es afectado. El bit TWSTO debe ser puesto en alto, pero no se envía una condición de PARO en el bus. El bus es liberado y el bit TWSTO es limpiado.

Un error puede deberse a una posición ilegal de un byte de dirección, un byte de datos o un bit de reconocimiento. La bandera TWINT es puesta en alto.

Para recuperar al bus de un error se debe poner a la bandera TWSTO en alto.

Page 147: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

147 Los esclavos obtienen su dirección de 2 interruptores externos. La direcció 0 será para difusión.

Ejemplo 13: Expansión de Puertos por TWI

Page 148: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

148

El circuito PCF8570 es una memoria RAM de 256 x 8 bits, con interfaz I2C y dirección configurable entre 0x50 y 0x57 (con 3 terminales).

La memoria trabaja en los modos Esclavo Receptor (para escritura de datos) y Esclavo Transmisor (para lectura de datos).

Dir. de Acceso Dato a escribirDir. de EsclavoS A A A0

Reconocimientode Esclavo

Maestro Transmisor

Reconocimientode Esclavo

Reconocimientode Esclavo

n bytesAuto-incrementa la dirección de

acceso

P

Escritura en la RAM

Ejemplo 14: Manejo de una Memoria I2C

Page 149: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

149

Dir. de Acceso

Dato leído Dato leído

Dir. de Esclavo Dir. de EsclavoS S

P

A AA

0 1

0 1

Reconocimientode Esclavo

Reconocimientode Esclavo

Maestro Transmisor

Maestro Receptor

Reconocimientode Esclavo

Reconocimientodel Maestro

Sin reconocimientodel Maestro

n - 1 bytesAuto-incrementa la dirección de

acceso

último byteLectura de la RAM

Considere una memoria PCF8570 con dirección 0x50, realice una función que escriba n bytes en la memoria y una función que lea n bytes de la memoria (sin interrupciones).

Las funciones regresarán 0x00 si el acceso se realizó con éxito y el código de error en caso contrario.

Page 150: El Microcontrolador ATMega328Pfsantiag/Micros_MEOSIA/Notas_AVR_Parte2.pdf · Interrupciones • Una interrupción es la ocurrencia de un evento, generado por un recurso del MCU, que

150

IMPLEMENTACIÓN PRÁCTICA 3

Desarrollo de un proyecto de aplicación de los microcontroladores AVR.

• La elección es abierta, un proyecto diferente por equipo.

• Debe incluir comunicación serial con una computadora o el manejo de algún módulo SPI o I2C.

• Realizar la implementación y documentación.

• Preparar una presentación para exponer el proyecto en el aula.