caracteristicas del atmega 8

93
1 ESCUELA POLITÉCNICA NACIONAL ESCUELA DE FORMACIÓN TECNOLÓGICA MÓDULO DIDÁCTICO PARA EL MICROCONTROLADOR ATMEGA 8 PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE TECNÓLOGO EN ELECTRÓNICA Y TELECOMUNICACIONES GORDÓN MOSQUERA CHRISTIAN ROBERTO NAGUA SANDOVAL FANNY MARGARITA DIRECTOR: Ing. ALCIVAR COSTALES Quito, Mayo 2006

Upload: fernando-cruz-alvizo

Post on 21-Oct-2015

41 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Caracteristicas Del Atmega 8

1

ESCUELA POLITÉCNICA

NACIONAL

ESCUELA DE FORMACIÓN TECNOLÓGICA

MÓDULO DIDÁCTICO PARA EL MICROCONTROLADOR

ATMEGA 8

PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE TECNÓL OGO

EN ELECTRÓNICA Y TELECOMUNICACIONES

GORDÓN MOSQUERA CHRISTIAN ROBERTO

NAGUA SANDOVAL FANNY MARGARITA

DIRECTOR: Ing. ALCIVAR COSTALES

Quito, Mayo 2006

Page 2: Caracteristicas Del Atmega 8

2

DECLARACIÓN Nosotros, Gordón Mosquera Christian Roberto y Nagua Sandoval Fanny Margarita,

declaramos que el trabajo aquí descrito es de nuestra autoría; que no ha sido previamente

presentada para ningún grado o calificación profesional; y, que hemos consultado las

referencias bibliográficas que se incluyen en este documento.

La Escuela Politécnica Nacional, puede hacer uso de los derechos correspondientes a este

trabajo, según lo establecido por la Ley de Propiedad Intelectual, por su Reglamento y por

la normatividad institucional vigente.

CHRISTIAN GORDON MARGARITA NAGUA

Page 3: Caracteristicas Del Atmega 8

3

CERTIFICACIÓN Certifico que los señores Christian Roberto Gordón Mosquera y Fanny Margarita Nagua

Sandoval, han culminado con su Proyecto de Titulación.

Ing. Alcívar Costales

DIRECTOR DE PROYECTO

Page 4: Caracteristicas Del Atmega 8

4

AGRADECIMIENTO

Al culminar el presente trabajo, quiero

expresar mi agradecimiento sincero a mis

padres por darme la vida y la posibilidad de

adquirir una Carrera, gracias por su

abnegada labor.

Y otro agradecimiento a mis maestros que me

impartieron sus conocimientos a lo largo de

toda mi vida estudiantil y de manera especial

al Ing. Alcívar Costales por sus sabios

consejos para guiar el presente trabajo.

CHRISTIAN

Page 5: Caracteristicas Del Atmega 8

5

DEDICATORIA

El presente trabajo se lo dedico con mucho

cariño a mi Madre y de manera muy especial

a mi amado hijo JAVIER, porque ustedes son

las estrellas que guían mi camino.

Que dios les bendiga y les tenga muchos años

a mí lado.

CHRISTIAN

Page 6: Caracteristicas Del Atmega 8

6

AGRADECIMIENTO Al Ing. Alcívar Costales, por apoyarnos constantemente en la realización de éste proyecto, ya que es un tema importante para el aprendizaje de los estudiantes de años inferiores. A mis amigos más cercanos, por su apoyo incondicional durante estos años de estudio.

MARGARITA

Page 7: Caracteristicas Del Atmega 8

7

DEDICATORIA A mi hijo por ser el ser mas especial en mi vida, por todo éste tiempo que ha estado a mi lado dándome su cariño y amor. A mi madre y hermanos por su apoyo, esfuerzo y comprensión en los momentos difíciles de mi vida. A mis abuelitos por su cariño y amor.

MARGARITA

Page 8: Caracteristicas Del Atmega 8

8

CONTENIDO

INTRODUCCIÓN 11

CAPÍTULO 1.- EL MICROCONTROLADOR ATMEGA 8

1.1 CARACTERÍSTICAS DEL ATMEGA 8 13

1.2 DESCRIPCIÓN DE PINES 15

1.3 ARQUITECTURA DEL ATMEGA 8 20

1.4 REGISTROS DE PROPÓSITO GENERAL 23

1.5 UNIDAD ARITMÉTICA LÓGICA 24

1.6 FLASH PROGRAMABLE 25

1.7 MEMORIA DE DATOS SRAM 25

1.8 MEMORIA DE DATOS EEPROM 26

1.9 REGISTRO DE ESTADO 26

1.10 STACK POINTER 28

1.11 MANEJO DEL RESET Y DE LAS INSTRUCCIONES 29

CAPÍTULO 2.- COMUNICACIÓN SERIAL DEL ATMEGA 8

2.1 INTRODUCCIÓN 32

2.2 TIPOS DE COMUNICACIONES SERIALES 32

2.2.1 COMUNICACIÓN SERIAL RS-232 34

2.2.1.1 EL CIRCUITO MAX 232 35

2.2.2 EL BUS I2C 36

2.2.2.1 CONCEPTO DEL BUS I2C 37

2.2.2.2 TRANSFERENCIA DE BIT 37

2.2.2.3 TRANSFERENCIA DE DATOS 39

2.2.2.4 DEFINICIONES BÁSICAS DEL BUS I2C 41

2.2.2.5 FORMATOS DE DIRECCIÓN 45

2.2.3 INTERFAZ PERIFÉRICA SERIAL (SPI) 46

2.2.3.1 INTRODUCCIÓN 46

2.2.3.2 DESCRIPCIÓN FUNCIONAL 47

Page 9: Caracteristicas Del Atmega 8

9

2.2.3.3 FORMATO DE TRANSFERENCIA DEL SPI 47

2.2.3.4 CONTROLES DE FASE DE RELOJ Y POLARIDAD 48

2.2.3.5 SEÑALES DEL SISTEMA SPI 48

2.2.3.6 ERRORES DEL SISTEMA SPI 50

2.2.3.7 REGISTRO DEL SISTEMA SPI 51

CAPÍTULO 3.- MÓDULO DE PRÁCTICAS Y FUNDAMENTOS BÁSI COS DEL SOFTWARE 3.1 MÓDULO DE PRÁCTICAS 55

3.2 CARACTERÍSTICAS DEL MÓDULO 55

3.2.1 PROGRAMADOR ISP 55

3.2.2 FUENTE DE ALIMENTACIÓN 56

3.2.3 LCD ALFANUMÉRICO ESTÁNDAR 57

3.2.4 TECLADO MATRICIAL DE 4*4 58

3.2.5 RESET 59

3.2.6 REAL TIME 59

3.3 FUNDAMENTOS BÁSICOS DEL SOFTWARE BASCOM 60

3.3.1 REVISIÓN DE LA SINTAXIS 62

3.3.2 REVISIÓN DEL PROGRAMA 63

3.3.3 INFORME DE RESULTADOS 64

3.3.4 SIMULADOR 65

3.3.5 PROGRAMADOR 67

3.3.6 EMULADOR DEL TERMINAL RS-232 68

CAPÍTULO 4.- PRUEBAS Y RESULTADOS 4.1 PRÁCTICA 1: ENCENDIDO SECUENCIAL DE LOS LEDS EN UN PUERTO

DEL MICROCONTROLADOR

4.1.1 OBJETIVO 70

4.1.2 DESARROLLO 70

4.2 PRÁCTICA 2: MANEJO DE TEMPORIZADORES 72

4.2.1 OBJETIVO 72

4.2.2 DESARROLLO 72

Page 10: Caracteristicas Del Atmega 8

10

4.3 PRÁCTICA 3: MANEJO DEL LCD 73

4.3.1 OBJETIVO 73

4.3.2 DESARROLLO 73

4.4 PRÁCTICA 4: ADQUISICIÓN DE DATOS 74

4.4.1 OBJETIVO 74

4.4.2 DESARROLLO 74

4.5 PRÁCTICA 5: COMUNICACIÓN SERIAL RS-232 75

4.5.1 OBJETIVO 75

4.5.2 DESARROLLO 75

4.6 PRÁCTICA 6: COMUNICACIÓN I2C 76

4.6.1 OBJETIVO 76

4.6.2 DESARROLLO 76

4.7 PRACTICA 7: COMUNICACIÓN SPI 77

4.7.1 OBJETIVO 77

4.7.2 DESARROLLO 77

CONCLUSIONES Y RECOMENDACIONES 78

REFERENCIAS BIBLIOGRÁFICAS 79

ANEXOS 80

Page 11: Caracteristicas Del Atmega 8

11

INTRODUCCIÓN

El aprendizaje de los microcontroladores se ha basado en el conocimiento y

estudio del 8031 y el 8051. Estos dispositivos son una herramienta importante

para que el estudiante comience a conocer las posibilidades que ofrecen para

desarrollar diferentes proyectos, pero se debe tomar en cuenta que los

microcontroladores, que son tema de estudio a lo largo de la carrera, no

presentan las facilidades y ventajas que hoy en día se puede encontrar en el

mercado.

El desarrollo tecnológico del presente siglo permite tener acceso a nuevas

tecnologías, como es el caso de los microcontroladores de tipo RISC,

especialmente los de la casa Atmel, que permiten tener múltiples opciones de

trabajo al tener incorporados dentro de los mismos, diversos periféricos como

conversores analógico-digitales, sistemas PWM (Modulación por ancho de pulso),

comunicaciones I2C, SPI, RXTX ( transmisión serial).

A esta familia pertenece el microcontrolador ATMEGA 8, con el que se desarrolla

el proyecto de diseñar y construir un Módulo Didáctico para verificar el correcto

funcionamiento del microcontrolador, a la vez que se diseñará un conjunto de

prácticas para que el estudiante se familiarice y aprenda a usar estos

microcontroladores AVR e implementar los distintos programas aplicables al

Módulo Didáctico utilizando el software BASCOM.

El uso del software BASCOM permite diseñar con mayor facilidad la aplicación

directa sobre periféricos, lo cual transforma a este módulo en un sistema tipo

microcomputadora, el lenguaje similar al BASIC permite que el estudiante

aprenda a manejar tanto el microcontrolador ATMEGA como los periféricos

externos en forma rápida, amena y completa.

Este Módulo no sustituirá una clase normal con un instructor, sino que este servirá

como apoyo práctico a la teoría dictada en clases; se debe aclarar que este

Page 12: Caracteristicas Del Atmega 8

12

sistema, luego de una introducción teórica en clase, podría ser utilizado como

módulo de desarrollo de proyectos, en el que el alumno desarrolla aplicaciones.

El sistema constará de un módulo en el que se tendrán los dispositivos

electrónicos necesarios (Lcd, teclado, leds, potenciómetros, interfaz serial, interfaz

paralela, pulsadores, etc.) para la realización de las prácticas, así como también

el grabador del microcontrolador con su respectiva interfaz; con lo cual se facilita

al alumno el desarrollo y ejecución de proyectos.

Para la programación del microcontrolador se utilizará el software BASCOM AVR,

éste permite una programación en lenguaje simple para el alumno. Además este

software presenta varias ventanas para simulación, con lo cual el alumno puede

efectuar una revisión del programa previo a la grabación del mismo en el

microcontrolador.

En las prácticas desarrolladas en este proyecto, se pondrá especial énfasis en el

perfeccionamiento del manejo del software por parte del alumno; para que el

mismo se encuentre en la capacidad de desarrollar proyectos, con la explotación

al máximo de las herramientas y ejemplos que presenta el software.

Page 13: Caracteristicas Del Atmega 8

13

CAPÍTULO 1

EL MICROCONTROLADOR ATMEGA 8

1.1 CARACTERÍSTICAS DEL ATMEGA 8

El Atmega 8 es un microcontrolador de la familia Atmel, contiene una arquitectura

tipo RISC, sus instrucciones se ejecutan en solo un ciclo de máquina, su

estructura elimina la necesidad de usar componentes externos ya que

internamente tiene: osciladores, USART, SPI, resistencias pull-up, modulación por

anchura de pulso (PWM), convertidor ADC, comparador analógico y cronómetros,

éstas son solo algunas de las características que se encuentran en este

dispositivo. Su programación es posible realizarla en Lenguaje C, assembly o

Basic. Todo su sistema está depositado en una sola pastilla.

“El Atmega 8 tiene las siguientes características:

• Utiliza arquitectura RISC

• 130 instrucciones, las más simples se ejecutan en un solo ciclo de reloj

• 8 Kbytes de Memoria Flash

- ISP: Programable en sistema.

- Capacidad Read-While-Write, (Lee mientras escribe). Duración: 1.000

ciclos de escritura/borrado.

• 512 bytes de memoria EEPROM.

- Duración: 100.000 ciclos de escritura/lectura

• 1 Kbyte de memoria SRAM

• Seguro programable para la seguridad del software

• 32 x 8 registros de trabajo de propósito general

• 23 líneas de entrada/salida de propósito general.

• USART (Universal Synchronous Asynchronous Receiver Transmitter)

programable.

• Reloj en tiempo real

• Interfaz serial SPI

• Vcc: 4.5 – 5.5 V

• Frecuencia de funcionamiento 0 – 16 MHz.

Page 14: Caracteristicas Del Atmega 8

14

• 3 timer/counter.

• Interrupciones internas y externas.

• Interfaz serial 2-wire.

• 6 canales ADC, donde 4 tienen 10 bits de exactitud, y 2 tienen 8 bits de

exactitud.

• 1 Timer Watchdog programable con oscilador interno.

• 5 modos de ahorro de energía, seleccionado por software”.1

- “El modo Idle (ocioso) detiene la CPU, mientras permite que la memoria

SRAM, los timer/counters, el puerto SPI, e interrupciones del sistema

continúen funcionando.

- Modo Power-down (baja energía), guarda el contenido del registro, pero

congela el oscilador, inhabilitando el resto de funciones del chip hasta la

siguiente interrupción o hasta que se realice un reset del hardware.

- En el Power save (modo economizador), el contador de tiempo asincrónico

continúa funcionando, permitiendo al usuario mantener una base de

tiempo, mientras el resto de dispositivos continúa en reposo.

- En el modo de reducción del nivel de ruidos ADC, detiene la CPU y todos

los módulos de entrada y salida excepto el contador asincrónico y el

Conversor Análogo-Digital (ADC), para reducir al mínimo el ruido de

conmutación durante la conversión ADC.

- En standby (modo de espera) el oscilador cristal/resonator sigue

funcionando, mientras el resto de dispositivos sigue en reposo. Esto

permite el reinicio muy rápido combinado con el consumo bajo de

energía.”2

El microcontrolador AVR tiene y combina un amplio sistema de instrucciones, con

32 registros de propósito general. Las operaciones de la ALU entre registros son

ejecutadas en el archivo de registro. Las operaciones son divididas en tres

categorías: aritméticas, lógicas y funciones de bit. La arquitectura que resulta es

1 Microcontroller with 8 Kbytes In-System Programmable Flash, Advance Information, Atmel Corporation, 2001, 1

2 Microcontroller with 8 Kbytes In-System Programmable Flash, Advance Information, Atmel Corporation, 2001, 30-31

Page 15: Caracteristicas Del Atmega 8

15

más eficiente, y alcanza rendimientos de procesamiento de hasta diez veces más

rápido que los microcontroladores con tecnología CISC.

La Memoria Flash ISP (Programable en sistema) permite que la memoria de

programa del chip sea reprogramada en el propio sistema a través de la interfaz

SPI o mediante un programador de memoria convencional. Combinando una

tecnología RISC de 8 bits con un CPU con memoria Flash, el Atmega 8 resulta un

poderoso microcontrolador que proporciona una alta flexibilidad en los diseños, a

bajo costo aportando una solución muy efectiva para la mayoría de las

aplicaciones de control.

El Atmega 8 está apoyado por un completo juego de programas y sistemas de

desarrollo, incluyendo: compiladores, ensambladores, simuladores, emuladores

en circuito, y kits de evaluación.

1.2 DESCRIPCIÓN DE PINES

(RESET) PC6 1 28 PC5 (ADC5/SCL)

(RXD) PD0 2 27 PC4 (ADC4/SDA)

(TXD) PD1 3 26 PC3 (ADC3)

(INT0) PD2 4 25 PC2 (ADC2)

(INT1) PD3 5 24 PC1 (ADC1)

(XCK/T0) PD4 6 23 PC0 (ADC0)

VCC 7 22 AGND

GND 8 21 AREF

(XTAL1/TOSC1) PB6 9 20 AVCC

(XTAL2/TOSC2) PB7 10 19 PB5 (SCK)

(T1) PD5 11 18 PB4 (MISO)

(AIN0) PD6 12 17 PB3 (MOSI/OC2)

(AIN1) PD7 13 16 PB2 (SS/OC1B)

(ICP) PB0 14 15 PB1 (OC1A) FIGURA 1.1 ESQUEMA DE PINES DEL ATMEGA 8

“Vcc

Fuente de voltaje digital

GND

Tierra de la fuente de voltaje digital

Page 16: Caracteristicas Del Atmega 8

16

RESET

Entrada de RESET. Se genera un reset aplicando un nivel bajo de voltaje en este

pin por un periodo de tiempo más largo que un ciclo de máquina, incluso si el reloj

no está funcionando. Pulsos más cortos no generan un estado de reset.

XTAL 1

Entrada al amplificador inversor del oscilador y entrada al circuito de operación

interno del reloj.

XTAL2

Salida del amplificador inversor del oscilador

AVCC

Este es un pin de fuente de voltaje para el Puerto A y sus ADCs (Conversores

Analógico-Digitales). Si sus ADCs no son utilizados, este pin debe ser conectado

a Vcc. Si sus ADCs sí son utilizados, este pin debe ser conectado a Vcc pero

mediante un filtro pasa-bajos.

AGND

Tierra analógica. Si el tablero presenta diferentes tierras, se debe conectarlas a

este pin. En otro caso se conecta a GND

AREF

Este es el pin de referencia analógica para los ADC”.3

Puerto B / XTAL 1 / XTAL 2 / TOSC 1 / TOSC 2

“El puerto B es un puerto de entrada/salida bi-direccional de 8 bits, con

resistencias internas de pull-up. Como salidas, los pines del puerto B tienen

limitada la corriente de salida, si las resistencias pull-up están activadas. Los

pines del puerto B tienen tres estados cuando la condición de reset llega a

activarse, incluso si el reloj no está funcionando”.4

3 Microcontroller with 8 Kbytes In-System Programmable Flash, Advance Information, Atmel Corporation, 2001, 4-5 4 Microcontroller with 8 Kbytes In-System Programmable Flash, Advance Information, Atmel Corporation, 2001, 4.

Page 17: Caracteristicas Del Atmega 8

17

Dependiendo de la configuración de las opciones de reloj, el pin PB6 puede ser

usado como entrada al amplificador inversor del oscilador y entrada al circuito de

operación interno del reloj.

Dependiendo de la configuración de las opciones de reloj, el pin PB7 puede ser

usado como salida del amplificador inversor del oscilador

Los pines del puerto B tienen también algunas funciones especiales, que se las

resume en el siguiente cuadro.

PIN DEL PUERTO B

FUNCIÓN ALTERNA

PB7

XTAL2 (Chip Clock Oscillator pin 2)

TOSC2 (Timer Oscillator pin 2)

PB6

XTAL1 (Chip Clock Oscillator pin 1 or External clock input)

TOSC1 (Timer Oscillator pin 1)

PB5

SCK (SPI Bus Master clock Input)

PB4

MISO (SPI Bus Master Input/Slave Output)

PB3

MOSI (SPI Bus Master Output/Slave Input)

OC2 (Timer/Counter2 Output Compare Match Output)

PB2

SS (SPI Bus Master Slave select)

OC1B (Timer/Counter1 Output Compare Match B Output)

PB1

OC1A (Timer/Counter1 Output Compare Match A Output)

PB0

ICP (Timer/Counter1 Input Capture Input)

CUADRO 1.1 DESCRIPCIÓN DE PINES DEL PUERTO B

Pórtico C / RESET

“El puerto C es un puerto de entrada/salida bi-direccional de 8 bits, con

resistencias internas de pull-up. Como salidas, los pines del puerto C tienen

limitada la corriente de salida, si las resistencias pull-up están activadas.

Page 18: Caracteristicas Del Atmega 8

18

Los pines del puerto C tienen tres estados cuando la condición de reset llega a

activarse, incluso si el reloj no está funcionando”.5

PC6 es usado como entrada de Reset. Un nivel bajo de voltaje en este pin por un

periodo de tiempo aproximado de 1.5 µs generará un reset, incluso si el reloj no

está funcionando. Pulsos más cortos no generan un estado de reset.

Los pines del puerto C tienen también algunas funciones especiales, que se las

resume en el siguiente cuadro.

PIN DEL PUERTO C

FUNCIÓN ALTERNA

PC6

RESET (Reset pin)

PC5

ADC5 (ADC Input Channel 5)

SCL (2-wire Serial Bus Clock Line)

PC4

ADC4 (ADC Input Channel 4)

SDA (2-wire Serial Bus Data Input/Output Line)

PC3

ADC3 (ADC Input Channel 3)

PC2

ADC2 (ADC Input Channel 2)

PC1

ADC1 (ADC Input Channel 1)

PC0

ADC0 (ADC Input Channel 0)

CUADRO 1.2 DESCRIPCIÓN DE PINES DEL PUERTO C

Puerto D

“El puerto D es un puerto de entrada/salida bi-direccional de 8 bits, con

resistencias internas de pull-up. Como salidas, los pines del puerto D tienen

limitada la corriente de salida, si las resistencias pull-up están activadas. Los

pines del puerto D tienen tres estados cuando la condición de reset llega a

activarse, incluso si el reloj no está funcionando”.6

5 Microcontroller with 8 Kbytes In-System Programmable Flash, Advance Information, Atmel Corporation, 2001, 5.

6 Microcontroller with 8 Kbytes In-System Programmable Flash, Advance Information, Atmel Corporation, 2001, 5.

Page 19: Caracteristicas Del Atmega 8

19

Los pines del puerto D tienen también algunas funciones especiales, que se los

resume en el siguiente cuadro.

PIN DEL PUERTO D

FUNCIÓN ALTERNA

PD7

AIN1 (Analog Comparator Negative Input)

PD6

AINO (Analog Comparator Positive Input)

PD5

T1 (Timer/Counter 1 External Counter Input)

PD4

XCK (USART External Clock Input/Output)

T0 (Timer/Counter 0 External Counter Input

PD3

INT1 (External Interrupt 1 Input)

PD2

INT0 (External Interrupt 0 Input)

PD1

TXD (USART Output Pin)

PD0

RXD (USART Input Pin)

CUADRO 1.3 DESCRIPCIÓN DE PINES DEL PUERTO D

Page 20: Caracteristicas Del Atmega 8

20

1.3 ARQUITECTURA DEL ATMEGA 8

FIGURA 1.2 ARQUITECTURA DEL ATMEGA 8

El rápido acceso a los registros, se basa en el concepto de que los 32 registros de

8 bits, son accesados en un solo ciclo de reloj. Lo cual significa que, durante un

ciclo de reloj es ejecutada una operación en la Unidad Aritmética Lógica (ALU).

Dos operandos son tomados del archivo de registros, las operaciones son

ejecutadas y el resultado es colocado en el mismo archivo, todo en un ciclo de

reloj.

Flash Program Memory

Instruction Register

Program Counter

32 x 8 General Purpose

Registrers

Data SRAM

Status and Control

Interrupt Unit

SPI Unit

Watchdog Timer

Analog Comparator

i/O Module 1

i/O Module 2

i/O Module n

EEPROM

I/O Lines

Instruction Decoder

Page 21: Caracteristicas Del Atmega 8

21

“Seis de los 32 registros de trabajo pueden usarse como 3 registros de 16 bits que

sirven como punteros de direccionamiento indirecto para direccionar el espacio de

datos, lo cual permite un eficiente cálculo de direcciones. Estos registros con

funciones especiales son el registro X, el Y y el Z, todos de 16 bits y ocupan las

direcciones de memoria: 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F respectivamente”.7

La ALU soporta operaciones aritméticas y lógicas entre registros o entre un

registro y una constante. Las operaciones simples con registros son también

ejecutadas por la ALU. Después de una operación aritmética el registro de estado

se carga con la información del resultado de la operación.

Los registros de trabajo están colocados en las 32 primeras posiciones de la

memoria de datos ($00 - $1F), permitiendo que su acceso sea como si fueran

lugares de memoria convencionales.

El espacio de memoria contiene 64 direcciones para las funciones propias de la

CPU como son los registros de Control, SPI, los Contadores/Timer, conversores

A/D, y otras funciones. Estos registros están colocados a continuación de los de

trabajo, de la dirección 0x20 a la 0x5F.

Para maximizar el funcionamiento, el AVR utiliza la arquitectura Harvard con

memorias y buses separados para el programa y para los datos. Mientras que se

está ejecutando una instrucción, la siguiente instrucción es buscada por la

memoria del programa. Este concepto permite que las instrucciones sean

ejecutadas en cada ciclo de reloj. La memoria del programa es una memoria

flash re-programable en sistema (ISP).

Con las instrucciones de salto incondicional y con la de llamada, se puede

acceder directamente a toda la memoria. La mayoría de las instrucciones AVR

tienen una longitud de 16 bits. Cada dirección de la memoria de programa

contiene una instrucción de 16 ó de 32 bits.

7 Microcontroller with 8 Kbytes In-System Programmable Flash, Advance Information, Atmel Corporation, 2001, 7.

Page 22: Caracteristicas Del Atmega 8

22

Durante las interrupciones y las llamadas a subrutinas, el contador de programa

(PC) guarda las direcciones anteriores en el stack. El stack se encuentra alojado

en los datos generales de la SRAM, y consecuentemente, el tamaño del mismo es

únicamente limitado por el tamaño total de la SRAM y de su uso. Todos los

programas del usuario deben inicializar el SP (Stack Pointer) en la rutina de reset

(antes de ejecutar subrutinas o interrupciones). El stack pointer (SP) de 10 bits es

seleccionado para lectura/escritura en el espacio de entrada/salida.

El 1 Kbyte de datos de SRAM pueden ser fácilmente accesados mediante los

cinco modos diferentes de direccionamiento que soporta la arquitectura AVR. Los

espacios de memoria, en la arquitectura del AVR, son todos lineales y regulares.

Un módulo flexible de interrupción, tiene sus registros de control en el espacio de

entrada/salida con un bit de habilitación de interrupción global en el registro de

estado. Todas las diferentes interrupciones tienen un vector separado de

interrupción en la tabla de vectores de interrupción al inicio de la memoria de

programa. Las diferentes interrupciones tienen prioridad en concordancia con la

posición del vector de interrupción. El vector de dirección más bajo es el que tiene

la más alta prioridad.

Page 23: Caracteristicas Del Atmega 8

23

1.4 REGISTROS DE PROPÓSITO GENERAL

La figura 1.3 muestra la estructura de los 32 registros de trabajo de propósito

general presentes en el Atmega 8.

7 0 Dirección

R0 0x00

R1 0x01

R2 0x02

R13 0x0D

R14 0x0E

REGISTROS R15 0x0F

DE R16 0x10

PROPOSITO R17 0x11

GENERAL …

R26 0x1A Registro X byte bajo

R27 0x1B Registro X byte alto

R28 0x1C Registro Y byte bajo

R29 0x1D Registro Y byte alto

R30 0x1E Registro Z byte bajo

R31 0x1F Registro Z byte alto

FIGURA 1.3 ESTRUCTURA DE LOS REGISTROS DE PROPÓSITO GENERAL

La mayoría de las instrucciones que funcionan en el archivo de registros tienen

acceso directo a todos los registros, y la mayoría de ellos son instrucciones de un

solo ciclo de máquina ciclo.

Cada registro es asignado a una dirección de memoria de datos, dirigiéndolos

directamente dentro de las 32 primeras localidades del espacio de Datos del

usuario, aunque no sea físicamente implementada como localidad SRAM, esta

organización de memoria permite gran flexibilidad en el acceso a los registros,

puesto que los registros X, Y y Z pueden ser seteados para indexar cualquier

registro del archivo.

Page 24: Caracteristicas Del Atmega 8

24

Registro X, registro Y y registro Z.- Los registros R26….R31 poseen algunas

funciones adicionales. Estos registros son punteros de dirección para el

direccionamiento indirecto del Espacio de Datos. Estos registros se encuentran

definidos como se muestra en la figura 1.4

15 XH XL 0

Registro X 7 0 7 0 R27 (0x1B) R26 (0x1A) 15 YH YL 0

Registro Y 7 0 7 0 R29 (0x1D) R28 (0x1C) 15 ZH ZL 0

Registro Z 7 0 7 0 R31 (0x1F) R30 (0x1E)

FIGURA 1.4 REGISTROS X, Y y Z

En los diferentes modos de direccionamiento, estos registros de dirección tienen

funciones como realizar los desplazamientos, incrementos automáticos y

decrementos automáticos.

1.5 UNIDAD ARITMÉTICA-LÓGICA (ALU)

“La ALU de alto rendimiento trabaja en conexión directa con todos los 32

registros de trabajo de propósito general. Las operaciones aritméticas entre los

registros de propósito general o entre un registro y un dato inmediato se ejecutan

dentro de un solo ciclo de reloj. Las operaciones de la ALU se dividen en tres

categorías principales - aritmética, lógico, y bit-funciones. Algunas

implementaciones de la arquitectura también proporcionan un poderoso

multiplicador que soporta multiplicaciones con signo, sin signo y formato

fraccionario”. 8

8 Microcontroller with 8 Kbytes In-System Programmable Flash, Advance Information, Atmel Corporation, 2001, 7.

Page 25: Caracteristicas Del Atmega 8

25

1.6 FLASH PROGRAMABLE

El Atmega 8 contiene 8 Kbytes de memoria. Como todas las instrucciones son de

16 o 32 bit, la memoria flash está organizada como 4 x 16. La memoria flash tiene

una durabilidad de 1000 ciclos de escritura/borrado. El contador de programa

(PC) es de 12 bits, con lo que tenemos 4096 direcciones de la memoria de

programa.

1.7 MEMORIA DE DATOS SRAM

Registers File Data Address Space R0 $0000

R1 $0001

R2 $0002

….

R29 $001D

R30 $001E

R31 $001F

I/O Registers

$00 $0020

$01 $0021

$02 $0022

….

$3D $005D

$3E $005E

$3F $005F

Internal SRAM $0060

$0061

$045E

$045F

FIGURA 1.5 MEMORIA DE DATOS SRAM

Page 26: Caracteristicas Del Atmega 8

26

La figura 1.5 muestra como está organizada la memoria SRAM. “Las 1120

posiciones de memoria más bajas contienen los registros de propósito general,

los registros de entrada/salida, y los datos internos SRAM. Las primeras 96

localizaciones contienen los registros de propósito general y los registros de

entrada/salida, y las 1024 localizaciones siguientes contienen los datos internos

SRAM”.9

Los cinco diferentes modos de direccionamiento de memoria son: Directo,

Indirecto con desplazamiento, Indirecto, Indirecto con pre-decremento, e Indirecto

con post-incremento.

El direccionamiento directo alcanza todo el espacio de datos. El modo indirecto

con desplazamiento alcanza 63 direcciones de localidad, de la base de

direcciones dadas por el registro Y o Z. Cuando se usa el modo de

direccionamiento indirecto con pre-decremento y post incremento automático, las

direcciones de los registros X, Y y Z son decrementadas e incrementadas. Los 32

registros de trabajo, los 23 registros I/O y el 1 Kbyte de datos internos de SRAM

en el Atmega 8 son todos accesibles mediante estos modos de direccionamiento

1.8 MEMORIA DE DATOS EEPROM

El Atmega 8 contiene 512 bytes de memoria de datos EEPROM. La misma es

organizada como espacios de datos separados. La EEPROM tiene una duración

de aproximadamente 100.000 ciclos de lectura/escritura.

1.9 REGISTRO DE ESTADO

El registro de estado contiene la información sobre el resultado de la última

instrucción aritmética ejecutada. Esta información se puede utilizar para alterar el

normal desarrollo del programa para realizar operaciones condicionales. El

registro de estado es actualizado después de todas las operaciones de la ALU,

según lo especificado en el set de instrucciones, dando por resultado un código

9 Microcontroller with 8 Kbytes In-System Programmable Flash, Advance Information, Atmel Corporation, 2001, 15.

Page 27: Caracteristicas Del Atmega 8

27

más rápido y más compacto. El registro de estado no se almacena al incorporar

una rutina de la interrupción y no se restaura automáticamente al volver de una

interrupción. Esto se debe dirigir por software.

El registro de estado se denomina SREG y se encuentra en la dirección $3F. La

descripción de los bits es la siguiente.

Bit 7 6 5 4 3 2 1 0

I T H S V N Z C SREG

Read/Write R/W R/W R/W R/W R/W R/W R/W R/W

Initial Value 0 0 0 0 0 0 0 0 FIGURA 1.6 REGISTRO DE ESTADO

Todos los bits de este registro son de escritura o lectura. El valor inicial de este

registro es 0x00. La descripción de los bits es la siguiente:

Bit 7-I: Global Interrupt Enable:

Este bit es el que permite habilitar las interrupciones cuando está a 1. El control

individual de las interrupciones es configurado en los registros GIMSK y TIMSK.

Si este bit está a 0 todas las interrupciones están deshabilitadas

independientemente del estado de los registros GIMSK y TIMSK. Este bit es

puesto a 0 por hardware en el momento en el que se produce la interrupción y es

puesto de nuevo a uno tras la instrucción RETI que sirve para producir el retorno

de interrupción.

Bit 6-T: Bit Copy Storage:

Las instrucciones para copiar bits BLD (Bit LoaD) y BST (Bit STore) utilizan el bit

T como fuente o como destino para un bit. Un bit de un registro del archivo de

registros puede ser guardado en el bit T mediante la instrucción BST, y un bit en T

puede ser copiado en un bit de un registro del archivo de registros mediante la

instrucción BLD.

Bit 5-H: Half Carry Flag:

Este bit indica que se ha producido un half carry en algunas operaciones

aritméticas.

Page 28: Caracteristicas Del Atmega 8

28

Bit 4-S: Sign Bit, S = S (+) V:

El bit-S realiza una operación or exclusiva entre los bits N y el bit V del registro de

estado.

Bit 3-V: Two´s Complement Overflow Flag:

Esta bandera V, soporta aritmética en complemento de 2

Bit 2-N: Negative Flag:

La bandera negativa N indica un resultado negativo tras realizar una operación

aritmética o una lógica.

Bit 1-Z: Zero Flag:

Esta bandera indica un resultado de cero tras realizar una operación aritmética o

una lógica.

Bit 0-C: Carry Flag:

Esta bandera indica un carry tras realizar una operación aritmética o una lógica.

1.10 STACK POINTER (SP)

“El stack pointer se utiliza principalmente para almacenar datos temporales, para

almacenar variables locales y para guardar la dirección de retorno después de las

interrupciones y las llamadas a las subrutinas”.10

Bit 15 14 13 12 11 10 9 8

SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 SPH

SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 SPL

7 6 5 4 3 2 1 0

Read/Write R/W R/W R/W R/W R/W R/W R/W R/W

R/W R/W R/W R/W R/W R/W R/W R/W

Initial Value 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

FIGURA 1.7 STACK POINTER

10 Microcontroller with 8 Kbytes In-System Programmable Flash, Advance Information, Atmel Corporation, 2001, 10.

Page 29: Caracteristicas Del Atmega 8

29

Todos los bits son de lectura y escritura y en estado inicial los 16 bits están a

cero.

Cuando las subrutinas y las interrupciones se producen, el Stack Pointer coloca

los datos en una zona de la memoria SRAM. Este espacio para los datos en la

memoria SRAM tiene que ser definido por el programa antes de que cualquier

llamada a una subrutina o cualquier interrupción sea ejecutada. El Stack Pointer

es decrementado en una unidad cuando un dato es colocado en el Stack

mediante la instrucción PUSH y es decrementado en dos unidades cuando un

dato es puesto en el Stack mediante una llamada a subrutina (CALL) o se

produce una interrupción. El Stack Pointer es incrementado en una unidad cuando

un dato es recuperado del Stack mediante la instrucción POP, y es incrementado

en dos unidades cuando un dato es devuelto del Stack mediante un retorno de

subrutina con la instrucción RET o por un retorno de una interrupción RETI.

1.11 MANEJO DEL RESET Y DE LAS INTERRUPCIONES. El microcontrolador ATMEGA 8 posee 19 fuentes de interrupción.

Todas las interrupciones tienen un vector de reset propio en el espacio de

memoria del programa. Todas las interrupciones tienen asignados unos bits que

deben ser puestos a uno conjuntamente con el bit I del registro de estado para

que las interrupciones puedan producirse.

Las direcciones más bajas del espacio de memoria de programa son

automáticamente definidas para el vector de Reset y para los vectores de

interrupción. La lista completa de vectores se muestra en la siguiente tabla. Esta

lista también determina los niveles de prioridad de las diferentes interrupciones.

La mayor prioridad tiene el vector de RESET y a continuación el vector INT0 y así

sucesivamente.

Page 30: Caracteristicas Del Atmega 8

30

Vector Nº

Dirección

Fuente

Definición de la Interrupción

1 0x000 RESET Cuatro fuentes de RESET(*)

2 0x001 INT0 Interrupción Externa Requerida 0

3 0x002 INT1 Interrupción Externa Requerida 1

4 0x003 TIMER2 COMP Temporizador/Contador 2 Compare Match

5 0x004 TIMER2 OVF Temporizador/Contador 2 Sobreflujo

6 0x005 TIMER1 CAPT Temporizador/Contador 1 Evento de captura

7 0x006 TIMER1 COMPA Temporizador/Contador 1 Compare Match A

8 0x007 TIMER1 COMPB Temporizador/Contador 1 Compare Match B

9 0x008 TIMER1 OVF Temporizador/Contador 1 Sobreflujo

10 0x009 TIMER0 OVF Temporizador/Contador 0 Sobreflujo

11 0x00A SPI, STC Transferencia Serial Completa

12 0x00B USART, RXC Recepción Completa USART

13 0x00C USART, UDRE Registro de datos vacío USART

14 0x00D USART, TXC Transmisión Completa USART

15 0x00E ADC Conversión Completa ADC

16 0x00F EE_RDY Memoria EEPROM lista

17 0x010 ANA_COMP Comparador Análogo

18 0x011 TW1 Interfaz serial 2-wire

19 0x012 SPM_RDY Almacene Memoria de Programa Lista

CUADRO 1.4 FUENTES DE INTERRUPCIÓN DEL ATMEGA 8 (*) Reset al encendido, Reset externo, Reset por Watchdog, Reset por Brown-out

Fuentes de reset

Existen cuatro posibilidades para que se produzca un Reset:

• Reset al encendido.- El microcontrolador se resetea cuando el voltaje de la

fuente de alimentación está por debajo del nivel requerido para el

funcionamiento.

• Reset externo.- Cuando un nivel bajo es ingresado en el pin RESET durante

más de dos ciclos de XTAL.

Page 31: Caracteristicas Del Atmega 8

31

• Reset por Watchdog.- Si el watchdog está habilitado y su tiempo de

temporización expira antes de producirse la instrucción WDR el

microcontrolador se reseteará.

• Reset por Brown-out.- El microcontrolador se resetea cuando la fuente de

voltaje Vcc está bajo el nivel de Brown-out Reset (VBOT) y el Brown-out

Detector está habilitado.

Una vez producido un RESET, todos los registros del microcontrolador son

puestos con sus valores iniciales y el programa empieza su ejecución en la

dirección $000. En esta dirección debe colocarse una instrucción de salto RJMP

para ejecutar la rutina de comienzo de programa. A continuación de la dirección

$000 y hasta la dirección $00d, se encuentran los vectores para las diferentes

interrupciones; pero si estos vectores de interrupción no son utilizados puede

colocarse código de programa en ellos.

Page 32: Caracteristicas Del Atmega 8

32

CAPÍTULO 2

COMUNICACIÓN SERIAL DEL ATMEGA 8

2.1 INTRODUCCIÓN

El puerto serial de las computadoras es conocido como puerto RS-232, la ventaja

de este puerto es que todas las computadoras traen al menos un puerto serial,

este permite la comunicación entre otros dispositivos tales como otra

computadora, el mouse, impresora y para nuestro caso con los

microcontroladores.

Existen dos formas de intercambiar información binaria: paralela y serial.

La comunicación paralela transmite todos los bits de un dato de manera

simultánea, por lo tanto la velocidad de transferencia es rápida, sin embargo tiene

la desventaja de utilizar una gran cantidad de líneas, por lo tanto se vuelve más

costoso y tiene las desventaja de atenuarse a grandes distancias, por la

capacitancia entre conductores así como sus parámetros distribuidos.

2.2 TIPOS DE COMUNICACIONES SERIALES:

Existen dos tipos de comunicaciones seriales: sincrónica y asincrónica.

En la comunicación serial sincrónica además de una línea sobre la cual se

transmitirán los datos, se necesita de una línea la cual contendrá los pulsos de

reloj que indicarán cuando un dato es válido.

Ejemplos de este tipo de comunicación son:

• I2C

• ONE WIRE

• SPI

Page 33: Caracteristicas Del Atmega 8

33

En la comunicación serial asincrónica, no son necesarios los pulsos de reloj.

La duración de cada bit está determinada por la velocidad con la cual se realiza la

transferencia de datos.

La siguiente figura muestra la estructura de una carácter que se trasmite en forma

serial asincrónica.

FIG. 2.1 TRANSMISIÓN SERIAL ASINCRÓNICA

Normalmente cuando no se realiza ninguna transferencia de datos la línea del

transmisor se encuentra en estado IDLE, esto quiere decir en estado alto.

Para iniciar la transmisión de datos, el transmisor coloca esta línea en bajo

durante determinado tiempo, lo cual se le conoce como bit de arranque (start bit) y

a continuación empieza a transmitir con un intervalo de tiempo los bits

correspondientes al dato, iniciando siempre por el bit menos significativo (LSB), y

terminando con el bit más significativo (MSB).

Si el receptor no está sincronizado con el transmisor, éste desconoce cuando se

van a recibir los datos.

Por lo tanto el transmisor y el receptor deberán tener los mismos parámetros de

velocidad, paridad, número de bits del dato transmitido y de bit de parada.

Page 34: Caracteristicas Del Atmega 8

34

En los circuitos digitales, cuyas distancias son relativamente cortas, se pueden

manejar transmisiones en niveles lógicos TTL (0-5V), pero cuando las distancias

aumentan estas señales tienden a distorsionarse debido al efecto capacitivo de

los conductores y su resistencia eléctrica. El efecto se incrementa a medida que

se incrementa la velocidad de la transmisión. Esto origina que los datos recibidos

no sean iguales a los datos transmitidos, originándose un error en la transferencia

de datos.

Una de las soluciones más lógica es aumentar los márgenes de voltaje con que

se transmiten los datos, de tal manera que las perturbaciones a causa de la línea

se pueden corregir.

2.2.1 LA COMUNICACIÓN SERIAL RS-232

Ante la gran variedad de equipos, sistemas y protocolos que existen surgió la

necesidad de un acuerdo que permitiera a los equipos de varios fabricantes

comunicarse entre sí.

La EIA (Electronics Industry Association) elaboró la norma RS-232, la cual

define la interfaz mecánica, los pines, las señales y los protocolos que debe

cumplir la comunicación serial

Todas las normas RS-232 cumplen con los siguientes niveles de voltaje:

• Un “1” lógico es un voltaje comprendido entre –5v y –15v en el transmisor y

entre -3v y –25v en el receptor.

• Un “0” lógico es un voltaje comprendido entre +5v y +15 v en el trasmisor y

entre +3v y +25 v en el receptor.

El envío de niveles lógicos (bits) a través de cables o líneas de transmisión

necesita la conversión a voltajes apropiados. En los microcontroladores para

representar un cero (0) lógico se trabaja con voltajes inferiores a 0.8v, y para un

uno (1) lógico con voltajes mayores a 2.0V. En general cuando se trabaja con

Page 35: Caracteristicas Del Atmega 8

35

familias TTL y CMOS se asume que un “cero” lógico es igual a cero voltios y un

“uno” lógico es igual a cinco voltios.

La importancia de conocer esta norma, radica en los niveles de voltaje que

maneja el puerto serial del computador, ya que son diferentes a los que utilizan

los microcontroladores y los demás circuitos integrados. Por lo tanto se necesita

de una interfaz que haga posible la conversión de los niveles de voltaje a los

estándares manejados por los CI TTL.

2.2.1.1 El Circuito MAX-232

Este circuito soluciona los problemas de niveles de voltaje cuando se requiere

enviar unas señales digitales sobre una línea RS-232.

FIG. 2.2 CIRCUITO MAX-232

El chip Max-232, que se indica en la figura 2.2, se utiliza en aquellas aplicaciones

donde no se dispone de fuentes dobles de +12 y –12 voltios. El MAX 232 necesita

solamente una fuente de +5V para su operación, internamente tiene un elevador

de voltaje que convierte el voltaje de +5V al de doble polaridad de +12V y –12V.

Cabe mencionar que existen una gran variedad de CI que cumplen con la norma

RS-232 como lo son: MAX220, DS14C232, MAX233, LT1180A.

Page 36: Caracteristicas Del Atmega 8

36

2.2.2 El BUS I2C (Inter IC) “Philips Semiconductors inventó el bus de dos alambres I2C para comunicación

entre ICs en 1980 y desde entonces se ha convertido en el bus serial estándar,

implementado en un gran número de circuitos integrados y con licencias

otorgadas a mas de 50 compañías con un total de 1000 dispositivos compatibles

I2C”.

“Originalmente especificado para 100 Kbits/s e intencionalmente para control

simple y señales de estado; el bajo costo, la versatilidad técnica y la simplicidad

del bus I2C aseguraron su popularidad”.

El bus serial I2C ha sido extendido para soportar velocidades de hasta 3.4

Mbits/s. Combinado con una función de desplazamiento del nivel de voltaje, en

modo High-speed (Hs-mode) ofrece una solución ideal para los sistemas de

tecnología mezclada, donde las altas velocidades y la variedad de voltajes (5V,

3V o menor) son comúnmente usados.

El modo Hs es compatible con todos los sistemas existentes del bus I2C,

incluyendo el estándar original (S-mode) y el modo Fast (F-mode), actualización

introducida en 1992, proveyendo 400Kbits/s en transferencia. Sistemas de

diferente velocidad pueden ser mezclados fácilmente, con un dispositivo maestro

en modo Hs especialmente desarrollado, la conexión en paralelo es usada para

conectar las partes mas lentas del sistema. La comunicación entre dispositivos se

puede realizar en el modo estándar y en el modo rápido si los dispositivos están

unidos al mismo bus. El reloj determinará la velocidad de los datos. La interfaz

I2C emplea un protocolo amplio para asegurar una transmisión y recepción de

datos fiable.

El bus I2C es usado en una gran variedad de microcontroladores y aplicaciones

de telecomunicaciones como en control, diagnóstico y administración de potencia.

La especificación mejorada (modo rápido) esta también implementada en los pics.

Page 37: Caracteristicas Del Atmega 8

37

2.2.2.1 Concepto del Bus I2C El bus I2C soporta cualquier tipo de componente (NMOS, CMOS, Bipolar, etc).

Dos hilos físicos uno de datos (SDA) y otro de reloj (SCL) transportan la

información entre los diversos dispositivos conectados al bus.

Los dispositivos conectados al bus deben ser de COLECTOR ABIERTO o

DRENAJE ABIERTO (“en paralelo”), así los estados de salida de las líneas SDA y

SCL desempeñan la función de “cable en AND” del bus.

Cada dispositivo es reconocido por una única dirección (si es un microcontrolador,

LCD, memoria o teclado) y puede operar cualquiera como transmisor o emisor de

datos, dependiendo de la función del dispositivo. Un display es solo un receptor

de datos mientras que una memoria recibe y transmite datos. En función de que

envía o reciba datos se debe considerar los dispositivos como Maestros (Master)

o esclavos (Slaves).

FIG. 2.3 CONECCION DE DISPOSITIVOS EN EL BUS I2C

La única limitación en la conexión de dispositivos al bus depende de la capacidad

máxima que no puede superar los 400 pF. Los tipos de transferencia de datos en

el bus son:

Modo Estándar aproximadamente a 100 KBits/s

Modo Rápido aproximadamente a 400 KBits/s

Modo Alta velocidad más de 3.4 Mbits/s.

MICRO

LCD ADC MICRO

Resistencias de PULL-UP

Page 38: Caracteristicas Del Atmega 8

38

La interfaz I2C emplea un protocolo amplio para asegurar una transmisión y

recepción de datos fiables.

Tanto la línea de DATOS como la señal de Reloj SCL son bidireccionales

conectadas a una fuente de tensión positiva vía suministro común o resistencias

de carga “pull-up”.

FIG. 2.4 CONECCION DE LA LINEA DE DATOS Y RELOJ DEL BUS I2C

2.2.2.2 Transferencia de bit: Un pulso de reloj se genera por cada bit de datos transferidos. Los bits de datos

transferidos en la línea SDA deben ser estables cuando la línea SCL está a nivel

“1”. El estado de la línea SDA en “1” ó “0” solo puede cambiar cuando en la línea

SCL la señal es “0”.

Dentro del proceso de transferencia de Datos, hay dos situaciones básicas que son:

Page 39: Caracteristicas Del Atmega 8

39

INICIO (START): Una transición de “1” a “0” (caída) en la línea de datos SDA

mientras la línea de reloj SCL está a “1”. Sucede cuando un dispositivo maestro

hace ocupación del bus, generando esta condición.

PARADA (STOP): Una transición de “0” a “1” (ascenso) en la línea de datos SDA

mientras la línea de reloj SCL esta a “1”. Un dispositivo maestro puede generar

esta condición dejando libre el bus.

Las condiciones de INICIO y STOP son siempre generadas por el master.

El bus I2C se considera ocupado después de la condición de inicio. El bus se

considera libre de nuevo después de un cierto tiempo tras la condición de Stop.

Es decir, al pulso “1” de la línea SCL le puede corresponder un pulso “0” ó “1” de

la línea SDA en función de la información que se envíe, recordemos que a cada

bit de SDA le corresponde un bit de SCL, pero nunca, salvo en la condición de

Inicio a un bit de SCL le corresponde una situación de “1” a “0” o sea pasa por dos

estados la línea SDA, al revés ocurre en la condición de Stop que el master envía

un bit a la línea SCL mientras cambia en la SDA de “0” a “1” durante el tiempo

que esta enviando la señal de “1” a SCL.

2.2.2.3 Transferencia de Datos:

FIG. 2.5 TRANSFERENCIA DE DATOS

Page 40: Caracteristicas Del Atmega 8

40

El número de bytes que se envíen a la línea SDA no tiene restricción. Cada byte

debe ir seguido por un bit de reconocimiento ACK, el cual es generado por el

master y es obligatorio en la transferencia de datos. El byte de datos se transfiere

empezando por el bit de más peso precedido por el bit de reconocimiento (ACK).

El transmisor desbloquea la línea SDA “1” durante el pulso de reconocimiento. El

receptor debe poner a “0” la línea SDA durante el pulso ACK de modo que siga

siendo “0” durante el tiempo que el master genera el pulso “1” de ACK.

Un receptor cuando ha sido direccionado está obligado a generar un ACK

después de que cada byte ha sido recibido. Cuando un dispositivo esclavo no

genera el bit ACK, debe mantener la línea SDA a nivel “1” durante el bit ACK.

entonces el master genera una condición de STOP abortando la transferencia de

datos ó repetir la condición de INICIO.

Si un esclavo receptor que está direccionado no desea recibir más bytes (el

esclavo no genera el bit ACK en el primer byte que sigue), el master debe

detectar la situación y no enviar más bytes. El esclavo pone la línea SDA a “1” lo

que es detectado por el master el cual genera la condición de STOP ó de INICIO.

Si un dispositivo esclavo no puede recibir o transmitir un byte de datos completo

hasta que haya acabado uno de los trabajos que realiza, puede mantener la línea

SCL a “0” lo que fuerza al Master a permanecer en un estado de espera. Los

datos continúan transfiriéndose cuando el dispositivo esclavo está listo para otro

byte de datos y desbloquea la línea de reloj SCL.

Si un master receptor está recibiendo datos de un esclavo transmisor debe

generar un bit ACK tras cada byte recibido del transmisor. Para finalizar la

transferencia de datos no debe generar el último byte enviado por el esclavo. El

esclavo transmisor debe permitir desbloquear la línea SDA generando el master la

condición de STOP ó de INICIO.

Page 41: Caracteristicas Del Atmega 8

41

Sin embargo, si un master todavía desea comunicarse con el bus, puede generar

repetidamente condiciones de Start y direccionar a otro esclavo sin generar

primero la condición de Stop.

Todos los Master generan su propia señal de reloj sobre la línea SCL al transferir

datos sobre el Bus I2C. Los bits de datos son solo válidos durante los períodos “1”

del reloj.

2.2.2.4 Definiciones básicas del Bus I2C:

Maestro (Master): El dispositivo que inicia una transferencia, genera las señales

de reloj y termina un envío de datos. Las señales de reloj de un master solo

pueden ser alteradas cuando la línea de reloj sufre una caída por un dispositivo

esclavo o por el dominio del control del bus por el arbitraje de otro

microcontrolador.

Cuando se conectan varios dispositivos maestros a un mismo bus la configuración

obtenida se denomina "multi-maestro".

Los master son generalmente microcontroladores, éstos pueden ser unas veces

master y otros esclavos. Si uno o más microcontroladores se conectan al bus

pueden iniciar el envío de datos al mismo tiempo produciendo un caos, para

prevenir esto se ha desarrollado un sistema de arbitraje.

Un master puede iniciar una transmisión solo si el bus está libre. Dos o más

master pueden generar una condición de Inicio en el bus, lo que da como

resultado una condición de inicio general. Cada master debe comprobar si el bit

de datos que transmite junto a su pulso de reloj, coincide con el nivel lógico en la

línea de datos SDA.

Esclavo (Slave): Cualquier dispositivo conectado al bus incapaz de generar

pulsos de reloj. Reciben señales de comando y de reloj provenientes del

dispositivo maestro.

Page 42: Caracteristicas Del Atmega 8

42

Sincronización: Procedimiento para sincronizar las señales del reloj de dos o

más dispositivos.

La sincronización del reloj se realiza mediante una conexión AND de todos los

dispositivos del Bus a la línea SCL. Esto significa que una transición de un Master

de “1” a “0” en la línea SCL hace que la línea pase a “0”, esto mantiene la línea

SCL en ese estado. Sin embargo, la transición de “0” a “1” no cambia el estado de

la línea SCL si otro reloj está todavía en su periodo de “0”.

Por lo tanto la línea SCL permanecerá a “0” tanto como el período más largo de

cualquier dispositivo cuyo nivel sea “0”. Los dispositivos que tienen un período

más corto de reloj “0” entran en un período de espera.

Cuando todos los dispositivos conectados al bus han terminado con su período

“0”, la línea del reloj se desbloquea y pasa a nivel “1”. Por lo que hay que

diferenciar entre los estados de reloj de los dispositivos y los estados de la línea

SCL, y todos los dispositivos empiezan a nivel “1”. El primer dispositivo que

completa su nivel “1” pone nuevamente la línea SCL a “0”.

Resumiendo, la sincronización de la línea SCL se genera a través de la señal a

“0” por el dispositivo con el más largo período de nivel a “0” y la señal a “1”por el

dispositivo con el más corto periodo de nivel a “1”

Arbitraje: Procedimiento que asegura que si uno o más master simultáneamente

deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente

no es deteriorado.

El sistema de arbitraje actúa sobre la línea de datos SDA, mientras la línea SCL

está a nivel “1”, de una manera tal que el master que transmite un nivel “1”, pierde

el arbitraje sobre otro master que envía un nivel “0” a la línea de datos SDA. Esta

situación continúa hasta que se detecte la condición de Stop generada por el

master que se hizo cargo del bus.

Page 43: Caracteristicas Del Atmega 8

43

Tras el arbitraje los master perdedores se deben poner inmediatamente en modo

Master-Receptor y esclavo pues los datos que envíe el Master dominante pueden

ser para uno de ellos. Un master que pierde el arbitraje puede generar pulsos de

reloj hasta el fin de byte en el cual él pierde el arbitraje.

En el momento que un master toma el control, es el único que toma las decisiones

y genera los códigos de dirección, no existen master centrales, ni existen órdenes

prioritarias en el bus.

Si en una transferencia de datos, el procedimiento de arbitraje está todavía en

proceso justo cuando se envía al bus una condición de Stop, el master afectado

debe mandar códigos de Inicio o Stop.

Bus Desocupado (Bus Free): Estado en el cual ambas líneas (SDA y SCL)

están inactivas, presentando un estado lógico alto. Únicamente en este momento

es cuando un dispositivo maestro puede comenzar a hacer uso del bus.

Formato de Datos (Data Format): Después de la condición de Start un código de

dirección es enviado, ésta dirección tiene 7 bits seguidos por un octavo, éste

código corresponde a una dirección R/W (0- indica transmisión/1- indica solicitud

de datos).

Una transferencia de datos siempre acaba con una condición de Stop generado

por el master, sin embargo si un master todavía desea comunicarse con el bus,

puede generar repetidamente condiciones de Start y direccionar a otro esclavo sin

generar primero la condición de Stop.

Varias combinaciones de lectura y escritura son posibles dentro de una misma

transferencia de datos.

Page 44: Caracteristicas Del Atmega 8

44

Los datos transferidos tienen la forma de la figura 2.6.

FIG. 2.6 TRANSFERENCIA DE DATOS

Los posibles formatos de transferencia son:

1. Master transmite al esclavo- receptor. No cambia el bit de dirección.

2. Master lee a un esclavo inmediatamente después del primer byte.

En el momento del primer reconocimiento el master-transmisor se convierte en un

master-receptor y el esclavo-receptor en un esclavo-transmisor. El primer

reconocimiento es aún generado por el esclavo. La condición de Stop es

generada por el master, el cual ha enviado previamente un no- reconocimiento.

3. Formato combinado: Durante un cambio de dirección dentro de una

transferencia, la condición de Start y la dirección del esclavo son ambos

repetidos, pero con el bit R/W invertido. Si un Master-receptor envía una

condición repetida de Start, el esclavo previamente ha enviado un no-

reconocimiento.

Dirección (Address): El procedimiento de dirección para el Bus I2C es tal que, el

primer byte después de la condición de Start usualmente determina qué esclavo

ha sido seleccionado por el Master. La excepción se da en la “llamada general”

(0000 0000) con la que se direcciona a todos los dispositivos, cuando esta

dirección es usada todos los dispositivos en teoría deben responder con un

reconocimiento (A), sin embargo algunos dispositivos pueden estar condicionados

Page 45: Caracteristicas Del Atmega 8

45

a ignorar esta dirección. El segundo byte de la “llamada general” define entonces

la acción a tomar.

2.2.2.5 Formatos de dirección:

Hay dos formatos de dirección:

El más simple es el formato de 7-bit con un bit R/W que permite direccionar hasta

128 dispositivos, que en la práctica se reduce a 112 debido a que las restantes

direcciones son de uso reservado.

El más complejo es el de 10-bit con un bit R/W, para éste formato dos bytes

deben ser transmitidos con los primeros cinco bits que especifiquen una dirección

de 10-bit.

El direccionamiento de 10-bit, permite usar hasta 1024 direcciones adicionales

para prevenir problemas con la localización de direcciones esclavas cuando el

número de dispositivos I2C se expande rápidamente. Esto no cambia el formato

de direcciones definido en la especificación del bus I2C, usando direcciones

reservadas en la especificación existente.

El direccionamiento de 10-bit no afecta el direccionamiento existente de 7-bit,

permitiendo a los dispositivos con direcciones de 7-bit ó 10-bit ser conectados al

mismo bus I2C, y ambos tipos de dispositivos pueden ser usados en sistemas con

modos Standard, Fast ó High-Speed.

Los 7 primeros bits del primer byte marcan la dirección del esclavo y el octavo bit

determina la dirección del mensaje. Un 0 en el octavo bit significa que el master

escribirá información en el esclavo seleccionado y un 1 en el octavo bit significa

que el Master leerá información del esclavo.

Cuando un Master envía una dirección después de la condición de Inicio cada

dispositivo comprueba los siete primeros bits de la dirección con la suya propia. El

Page 46: Caracteristicas Del Atmega 8

46

que coincida se considera el dispositivo direccionado por el Master siendo un

esclavo-receptor ó esclavo-emisor dependiendo del bit R/W.

Una dirección puede tener una parte fija y otra programable. Con lo que se

pueden conectar dispositivos idénticos al sistema siendo activados por la parte fija

y controlados por la parte programable.

Existen una serie de direcciones reservadas en los Bus I2C que no se deben

utilizar dado que son direcciones determinadas por Philips para usos generales.

Lectura/Escritura (Bit R/W): Cada dispositivo dispone de una dirección de 7 bits.

El octavo bit (el menos significativo ó LSB) enviado durante la operación de

direccionamiento corresponde al bit que indica el tipo de operación a realizar. Si

este bit es alto el dispositivo maestro lee información proveniente de un

dispositivo esclavo. En cambio, si este bit fuese bajo el dispositivo maestro

escribe información en un dispositivo esclavo.

2.2.3 INTERFAZ PERIFÉRICA SERIAL (SPI)

2.2.3.1 Introducción

La Interfaz Periférica Serial (SPI), un subsistema serial independiente de

comunicaciones, permite a la MCU comunicarse sincrónicamente con dispositivos

periféricos, tales como:

- Sintetizadores de frecuencia

- Drivers de display de cristal líquido (LCD)

- Subsistemas convertidores de analógico a digital(A/D)

- Otros microprocesadores

- Reloj en tiempo real

La Interfaz Periférica Serial es también capaz de establecer comunicaciones entre

procesadores en un sistema con múltiples maestros. El sistema SPI puede ser

configurado como un dispositivo maestro o como uno esclavo. Cuando la

configuración es como maestro, la transferencia de datos puede ser tan alta como

Page 47: Caracteristicas Del Atmega 8

47

una proporción de un medio de los ciclos del reloj (1.5Mbps a 3MHz de la

frecuencia del bus) Cuando la configuración es como esclavo puede ser tan

rápida como la razón del reloj (3Mbps para una frecuencia de bus de 3MHz).

2.2.3.2 Descripción funcional

La Comunicación SPI usa un modelo Maestro / Esclavo y típicamente tiene tres

líneas: línea de entrada de datos, línea de salida de datos y la línea de reloj. Las

señales elegidas del chip se utilizan para direccionar los distintos esclavos del bus

Figura 2.7.

FIG. 2.7 CONFIGURACION DEL SISTEMA MAESTRO - ESCLAV O

Los bits de datos están cambiando entrada / salida MSB primero. A menudo los

datos están cambiando simultáneamente fuera del pin de salida y dentro del pin

de entrada. La interfaz SPI define solamente las líneas de comunicación y el reloj,

otros parámetros varían para diferentes dispositivos. Las frecuencias de reloj

puede ser cualquiera a partir de 100 KHz a algunos MHz y la longitud de la

palabra puede ser de 8 a 16 bits.

2.2.3.3 Formatos de transferencia del SPI

Durante una transferencia del SPI, los datos son transmitidos y recibidos

simultáneamente. Una línea de reloj serial sincroniza el muestreo y el corrimiento

de la información en dos líneas seriales de datos.

Una línea de selección de esclavo permite una selección individual de un

dispositivo esclavo del SPI; los dispositivos esclavos que no están seleccionados

no hacen interferencia con el SPI y sus funciones. Sobre un dispositivo maestro

Page 48: Caracteristicas Del Atmega 8

48

del SPI, la línea seleccionadora puede opcionalmente ser usada para indicar un

conflicto de buses de múltiples maestros.

2.2.3.4 Controles de fase de reloj y de polaridad

El software puede seleccionar 1 de 4 combinaciones de fase serial de reloj y fase

usando dos bits en el registro de control (SPCR). La polaridad de reloj está

especificada por el bit de control CPOL, con el cual selecciona un reloj activo alto

o uno activo bajo, y no tiene efecto significativo en el formato de transferencia. El

bit de control de la fase de reloj (CPHA) selecciona 1 de 2 formatos de

transferencia.

La fase de reloj y la polaridad deben ser idénticas para el dispositivo maestro del

SPI y para el dispositivo esclavo con el que está comunicándose. En algunos

casos, la fase y la polaridad son cambiadas entre transferencias para permitirle a

un maestro comunicarse con un esclavo que tiene diferentes requerimientos.

Cuando CPHA es igual a 0, la línea SS- puede ser negada y reactivada entre

cada byte serial sucesivo, también si el esclavo escribe datos al registro de datos

del SPI (SPDR) cuando SS es bajo, resulta una colisión de error de escritura.

Cuando CPHA igual a 1, la línea SS- puede permanecer baja entre las sucesivas

transferencias.

2.2.3.5 Señales del sistema SPI

1. Entrada del Maestro/ Salida del Esclavo (MISO)

2. Salida del Maestro/ Entrada del Esclavo (MOSI)

3. Reloj Serial (SCK)

4. Seleccionar Esclavo (SS-)

Cualquier línea de salida del SPI debe tener su bit correspondiente en 1 en el

registro de dirección de datos DDRD. Si el bit del DDRD está en 0, esa línea está

desconectada de la lógica del SPI y se convierte en una entrada de intención

Page 49: Caracteristicas Del Atmega 8

49

general. Todas las líneas de entrada están forzadas a actuar como entradas sin

importar el estado de los bits DDR en el registro DDRD.

Entrada del maestro / salida del esclavo (MISO)

Es una entrada a un dispositivo maestro y es una salida de un dispositivo esclavo.

La línea MISO de un dispositivo esclavo es puesta en un estado alto de

impedancia si el dispositivo esclavo no está seleccionado.

Salida del maestro /entrada del esclavo (MOSI)

Esta es una salida del maestro y es una entrada del esclavo. El dispositivo

maestro pone datos sobre la línea MOSI medio ciclo antes del final del flanco de

reloj que usa el dispositivo esclavo para tomar el dato.

Las líneas MISO y MOSI son señales unidireccionales seriales de datos.

Reloj serial (SCK)

SCK es una entrada al dispositivo esclavo, es generada por el maestro y

sincroniza el movimiento de datos dentro y fuera de las líneas MISO y MOSI. Los

dispositivos maestro y esclavo son capaces de cambiar un byte de información

durante una secuencia de 8 ciclos de reloj.

Cuatro posibles relaciones pueden ser elegidas usando los bits de control CPOL y

CHPA en el registro de control periférico serial (SPCR). Ambos, el maestro y el

esclavo deben operar con la misma tasa de bits. Los bits de selección de la tasa

del reloj del SPI, SPR [1:0], en el SPCR del maestro, seleccionan la frecuencia de

reloj, SPR [1:0] no afectan sobre la operación del SPI.

Selección esclavo (SS-)

La entrada de selección esclavo (SS-) de un esclavo debe ser externamente

activada antes de que un maestro pueda intercambiar datos con el esclavo. SS-

debe ser baja permitiendo transacciones de datos y debe permanecer baja por la

duración de la transacción.

Page 50: Caracteristicas Del Atmega 8

50

La línea SS- de un maestro debe ser alta. Si ésta fuera a bajo, una bandera de

error de modo de falla (MODF) es puesta a 1 en el registro de estado periférico

serial (SPSR).

Para deshabilitar el modo de fallas del circuito, escribir 1 en el bit 5 del registro de

dirección de los datos del puerto D. Esto hará que la terminal SS- actúe como una

salida de intención general y no como la entrada dedicada a seleccionar el circuito

del esclavo, esto inhibe a la bandera del modo de falla. Las otras tres líneas

estarán dedicadas al SPI siempre que la interfaz serial esté funcionando.

El estado de los bits CPHA del maestro y del esclavo afectan la operación de SS-.

Los bits CHPA deben de estar colocados idénticamente para el maestro y para el

esclavo. Cuando CPHA = 0, el reloj de corrimiento es el OR del SS con el SCK.

En este modo de reloj de fase, SS- debe ir a alto entre caracteres sucesivos en un

mensaje del SPI Cuando CPHA = 1, SS- puede dejarse en bajo entre caracteres

sucesivos del SPI. En casos donde hay una sola MCU esclava, su línea SS-

puede ser enlazada a Vss siempre que CPHA = 1 sea el modo usado de reloj.

2.2.3.6 Errores del sistema SPI

Dos errores de sistema pueden ser detectados por el sistema del SPI.

- El primer tipo de error surge en un múltiple sistema maestro donde más de un

dispositivo del SPI trata de ser el maestro. Este error es llamado modo de falla.

- El segundo tipo de error, colisión de escritura. Indica que un intento fue hecho al

escribir datos al SPDR con una transferencia.

Cuando el sistema SPI está configurado como un maestro y la entrada SS- va a

un estado activo bajo, una falla de modo ha ocurrido, usualmente porque dos

dispositivos han intentado actuar como maestro al mismo tiempo. En estos casos

existe la posibilidad de contención entre dos terminales. Para drivers push-pull

CMOS, esta contención puede causar daño permanente. El mecanismo de falla

de modo intenta proteger el equipo mediante la deshabilitación de los drivers.

Page 51: Caracteristicas Del Atmega 8

51

El bit de control MSTR y los cuatro bits de control del registro DDRD asociados al

SPI son puestos a 0 y una interrupción es generada sujeta a ser enmascarada por

el bit de control SPIE y el bit I del CCR.

Otras precauciones necesitan ser tomadas para prevenir el daño de los drivers. Si

dos dispositivos están hechos maestros al mismo tiempo, el modo de falla no

ayuda a la protección de ellos, a menos que uno de ellos seleccione al otro a ser

esclavo. La cantidad de daño posible depende de la longitud del tiempo que

ambos dispositivos intenten actuar como maestros.

Una colisión de escritura ocurre si el SPDR es escrito cuando una transferencia

está en progreso. Porque la SPDR no está doblemente almacenada en la

dirección de transmisión, una escritura a SPDR causa que los datos sean escritos

directamente dentro del registro de corrimiento del SPI.

La configuración SPI determina las características de una transferencia en

progreso. Para un maestro, una transferencia comienza cuando los datos son

escritos al SPDR y finaliza cuando SPIF se hace 1.

Para un esclavo con CPHA = 0, una transferencia comienza cuando SS- va a bajo

y finaliza cuando SS- regresa a ALTO. En este caso, SPIF se hace 1 en medio del

octavo ciclo de reloj cuando los datos están transfiriéndose desde el registro de

corrimiento al registro de datos paralelo, pero la transferencia esta aún activa

hasta que SS va a alto.

Para un esclavo con CHPA = 1, la transferencia inicia cuando la línea SCK va a

su nivel activo, el cual es el flanco al comienzo del primer ciclo del SCK. La

transferencia termina en el esclavo con CPHA = 1 cuando SPIF se hace 1.

2.2.3.7 Registros del Sistema SPI

Los tres registros del SPI son:

� Registro de control periférico serial (SPCR)

� Registro de estado periférico serial (SPSR)

� Registro de datos periférico serial (SPDR)

Page 52: Caracteristicas Del Atmega 8

52

Estos registros dan control, estado y funciones de almacenaje de datos

Registro de control periférico serial (SPCR)

Bit 7 6 5 4 3 2 1 Bit 0

Lectura:

Escritura:

SPIE

SPE

DWOM

MSTR

CPOL

CPHA

SPR1

SPR0

Reset 0 0 0 0 0 1 U U

U = no afectado

FIG. 2.8 REGISTRO DE CONTROL PERIFÉRICO SERIAL

SPIE: Bit para habilitar las Interrupciones por el SPI.

Poner el bit SPIE a 1 para pedir una secuencia de interrupción de hardware cada

vez que la bandera SPIF o la MODF se haga 1.Las interrupciones del SPI están

inhabilitadas si este bit es puesto a 0 o si el bit I del registro CCR es 1

0 = Sistema de interrupción del SPI deshabilitado

1 = Sistema de interrupciones del SPI habilitado

SPE: Bit para Habilitar la Interfaz Serial Periférica

Cuando el bit SPE está en 1, las terminales 2, 3, 4 y 5 del puerto D están

dedicados a la función SPI. Si la SPI está en el modo maestro y el bit 5 del DDRD

es 1, entonces el bit 5 del puerto D es una salida en vez de una entrada del SS.

0 = Deshabilitar la Interfaz Serial Periférica SPI

1 = Habilitar la Interfaz Serial Periférica SPI

DWOM: Bit para modo del Puerto D como OR alambrada

Este afecta todos los pines del puerto D. Es habitual tener un resistor externo

sobre las líneas que están manejando por drenaje abierto.

0 = Salidas normales CMOS

1 = Salidas de drenaje abierto

MSTR: Bit de selección del modo Maestro

0 = Modo Esclavo

1 = Modo Maestro

Page 53: Caracteristicas Del Atmega 8

53

CPOL: Bit de Polaridad del Reloj

Cuando la polaridad de reloj es 0 y los datos no han sido transferidos, el SCK del

maestro tiene un estado útil de valor bajo. Cuando CPOL es 1, SCK es alto.

CPHA: Bit de Fase del Reloj

La fase de reloj en conjunción con la CPOL, controla el reloj de datos

relacionados entre el maestro y el esclavo. El CPHA selecciona uno de dos

diferentes protocolos de reloj.

SPR [1:0]: Bits para elegir la tasa del Reloj del SPI

Estos dos bits seleccionan la tasa de reloj del SPI cuando el dispositivo está

configurado como maestro. Cuando el dispositivo está configurado como esclavo,

estos bits no tienen efecto.

I

Registro de estado periférico serial (SPSR)

Bit 7 6 5 4 3 2 1 Bit 0

Lectura:

Escritura:

SPIF

WCOL

MODF

Reset 0 0 0 0 0 0 0 0

= no implementado

FIG. 2.9 REGISTRO DE ESTADO PERIFÉRICO SERIAL

SPIF: Bandera de Interrupción del SPI por transferencia Completa

SPIF se hace 1 al término de la transferencia de datos entre el procesador y el

dispositivo externo. Si SPIF va a alto, y si SPIE está en 1, la interfaz periférica

serial genera una interrupción. Para limpiar el bit SPIF, leer el SPSR con el SPIF

en 1, entonces accesar al SPDR. A menos que el SPSR sea leído primero (con

SPIF en 1), todo intento de escribir a SPDR queda inhabilitado.

WCOL: Bit de Colisión de Escritura

La limpieza del bit WCOL se lleva a cabo por una lectura del SPSR (con WCOL

en 1) seguido por una acceso de SPDR.

0 = No hubo colisión de escritura

1 = Hubo colisión de escritura

Page 54: Caracteristicas Del Atmega 8

54

Bit 5 y Bits [3:0]: No implementados

Siempre se leerán como 0.

MODF: Bit de indicación de Falla de Modo

Para limpiar el bit MODF, leer el SPSR (con MODF en 1), entonces escribir al

SPCR.

0 = No hubo falla de modo

1 = Si hubo falla de Modo

Registro de datos periférico serial (SPDR)

Bit 7 6 5 4 3 2 1 Bit 0

Lectura:

Escritura:

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

Reset INDETERMINADO TRAS EL RESET

FIG. 2.10 REGISTRO DE DATOS PERIFÉRICO SERIAL

El SPDR es usado cuando transmitimos o recibimos datos en el bus serial.

Solamente con escribir a este registro iniciamos la transmisión o la recepción de

byte, y esto sólo ocurre en el dispositivo maestro. Al completar la transferencia de

un byte de datos, el bit de estatus SPIF se hace 1 en ambos, el maestro y en el

esclavo.

Una lectura del SPDR es realmente la lectura de un buffer. Para prevenir un error

de pérdida y la pérdida del byte que causó la pérdida, primero SPIF debe ser

limpiado antes que una segunda transferencia de datos desde el registro de

corrimiento al buffer de lectura sea iniciada.

Page 55: Caracteristicas Del Atmega 8

55

CAPÍTULO 3

MÓDULO DE PRÁCTICAS Y FUNDAMENTOS BÁSICOS

DEL SOFTWARE

3.1 MÓDULO DE PRÁCTICAS

Para el diseño del Módulo se tomó en consideración que éste debe servir como

una herramienta de desarrollo para el aprendizaje de los microcontroladores AVR,

en forma práctica, para lo cual el Módulo consta de diversos dispositivos que en

combinación con el Ambiente de Desarrollo del software BASCOM y con la gran

potencialidad del microcontrolador ATMEGA 8 se podrá desarrollar proyectos que

van desde los más simples hasta proyectos más complejos.

Los diversos dispositivos del Módulo como son LCD, Teclado, etc., están

conectados a los diferentes buses de E/S del ATMEGA 8 de tal suerte que no

intervengan con el resto de dispositivos que contiene la placa y de ser así existen

puentes (JP) que colocados en posiciones indicadas evitan conflictos. Estos

puentes serán descritos más adelante para ser identificados.

3.2 CARACTERÍSTICAS DEL MÓDULO

• Fuente de 5V.

• LCD alfanumérico estándar de2 x 16 caracteres.

• Teclado matricial de 4 x 4 teclas.

• Conector serie RS232.

• Reloj en tiempo real

• Comunicación I2C

• Comunicación SPI

3.2.1 PROGRAMADOR ISP (In System Program)

BASCOM soporta el programador ISP, STK200 / STK300, STK500, entre otros,

en este proyecto se utilizó el programador AVR ISP este es un programador para

puerto paralelo muy confiable. Los otros programadores se encuentran en las

opciones de programadores del BASCOM AVR.

Page 56: Caracteristicas Del Atmega 8

56

El programador paralelo AVR consta de un buffer 74HC244 que sirve de interfaz

de comunicación entre el Atmega 8 y el puerto paralelo de un PC. Este buffer es

muy importante ya que protege el puerto paralelo de la computadora. Las señales

necesarias para el AVR ISP (programador) son MOSI, RESET, SCK Y MISO.

El módulo consta de un conector DB9 hembra como entrada de programación,

por lo tanto el cable de programación tiene en el un extremo un conector DB9

macho y en el otro extremo un conector DB25 macho, además el Programador

consta de un led indicador de transición de datos y un pulsador de Reset con lo

que está listo para programar un microcontrolador, el diagrama esquemático del

programador STK 200 / STK 300 se puede ver en la figura 3.1

FIG. 3.1 PROGRAMADOR ISP

3.2.2 FUENTE DE ALIMENTACIÓN

Está formado por dos secciones. La primera parte tiene la entrada de un

phonejack que recibe un voltaje DC, este voltaje debe ser 12 Vdc, y la segunda

conformada por el puente de diodos y el regulador LM78L05 que proporciona 5

Vdc al módulo.

La fuente tiene un led el cual indica si la fuente está funcionando, la figura

muestra la fuente de alimentación del Módulo.

Page 57: Caracteristicas Del Atmega 8

57

FIG. 3.2 FUENTE DE ALIMENTACIÓN

3.2.3 LCD ALFANUMÉRICO ESTÁNDAR DE 2 x 16 CARACTERES

LCD (Liquid Cristal Display) es un dispositivo microcontrolado de visualización

gráfica para la presentación de caracteres, símbolos o incluso dibujos (en algunos

modelos), en este caso dispone de 2 filas de 16 caracteres cada una y cada

carácter dispone de una matriz de 5 x 7 puntos (pixels), aunque los hay de otro

número de filas y caracteres.

En la tabla se indica la configuración de los pines del LCD

PIN Nº SÍMBOLO DESCRIPCIÓN

1 Vss Tierra (GND)

2 Vdd Alimentación de +5Vcc

3 Vo Contraste del cristal líquido. (0 a +5V.)

4 RS Selección del registro de control/registro de datos:

RS=0 Selección registro de control

RS=1 Selección registro de datos

5 R/W Señal de lectura/escritura:

R/W=0 Escritura (Read)

R/W=1 Lectura (Write)

6 E Habilitación del módulo

E=0 Módulo desconectado

E=1 Módulo conectado

7-14 D4 – D7 Bus de datos bidireccional

1 3

2

V V

GNDIN OUT

78L05U2

+1000uFC5 +

10ufC6

JACK

JACK1 IN+

IN-

VCC

AC

1

+

AC

2

-

BRIDGE1

D12

330R3

LEDD1

VDD

Page 58: Caracteristicas Del Atmega 8

58

Mediante un potenciómetro de contraste se aplica al LCD una tensión variable de

entre 0 y +5 Vcc. Con dicha tensión se consigue ajustar el contraste de los

caracteres de la pantalla, según las necesidades del usuario.

EL display LCD 16*2 está conectado al microcontrolador por el bus del Puerto D.

El comando Config Lcd = 16*2 del lenguaje BASCOM configura los pines del LCD.

El Bus de datos del LCD está configurado para trabajar con 4 Bits (C2-C5) y 2

señales de control (RS – E) como se indica en la figura.

FIG. 3.3 CONEXIÓN DEL LCD

3.2.4 TECLADO MATRICIAL DE 4 x 4

Este dispositivo de entrada de datos consta de 16 teclas o pulsadores, dispuestos

e interconectados en filas y columnas. Dispone de un conector SIL (Single In Line)

macho de 8 pines que se corresponden con las 4 filas y las 4 columnas de las que

dispone. Este teclado matricial está conectado por el bus del Puerto B (B0 – B7)

como se indica en la figura. El comando CONFIG KBD del lenguaje BASCOM

configura los pines.

ATMEGA 8

D4 - - PUERTO D - D7 E RS

DATOS

CONTROL

ATMEGA 8

B0 - - PUERTO B - - - - B7

DATOS

1 2 3 A

4

5 6 B

7 8 9 C

* 0 # D

FIG. 3.4 CONEXIÓN DEL

TECLADO

Page 59: Caracteristicas Del Atmega 8

59

3.2.5 RESET

Se trata de un pulsador (SW-PB), que se conecta en el pin 1 del Atmega 8,

permite reiniciar el sistema si en alguna ocasión se bloquea o simplemente para

reiniciar un programa

FIG. 3.5 CONEXIÓN DEL RESET

3.2.6 RELOJ CALENDARIO EN TIEMPO REAL

Está basado en un integrado DS1307, diseñado para conectar al Bus I2C,

dispone de un reloj en tiempo real que cuenta con segundos, minutos, horas,

fecha del mes, mes, día de la semana y año, el cual está programado hasta el

año 2100, adicionalmente tiene 56 bytes de RAM no volátil. El DS1307 es

alimentado por una batería de 3V de litio.

PC6(RESET)1

PD0(RXD)2

PD1(TXD)3

PD2(INT0)4

PD3(INT1)5

PD4(XCK/T0)6

VCC7

GND8

PB6(XTAL1/TOSC1)9

PB7(XTAL2/TOSC2)10

PD5(T1)11

PD6(AIN0)12

PD7(AIN1)13

PB0(ICP1) 14

PC5(ADC5/SCL) 28

PC4(ADC4/SDA)27

PC3(ADC3)26

PC2(ADC2)25

PC1(ADC1) 24

PC0(ADC0)23

PB1(OC1A) 15

PB2(SS/OC1B)16

PB3(MOSI/OC2)17

PB4(MISO)18

PB5(SCK) 19

AVCC20

AREF21

GND22

ATMEGA8

A1

RXDTXD

MISOMOSI

SCK

4.7kR6

VCC

RESET

ADC0ADC1

CSDI

O1O2

SW-PBS1

Page 60: Caracteristicas Del Atmega 8

60

SCL

SDA

X11

X22

SDA 5SCL 6SQW/OUT 7

VCC8

GND4 Vbat 3

DS1307

U9

32KHZ

XTAL1

3vBT1

VCC

LEDD11

330

R19

VCC

330

R18

330

R17

10kR20

10kR21

VCC VCC

FIG. 3.6 CONEXIÓN DEL REAL TIME

3.3 FUNDAMENTOS BÁSICOS DEL SOFTWARE BASCOM

El primer punto importante para destacar de este programa, el Bascom AVR, es

que está desarrollado en lenguaje Basic, y es importante porque este lenguaje de

programación es uno de los más fáciles que se ha diseñado; el nombre BASIC es

una abreviatura para: Begginers All-purpose Symbolic Instruction Code, indicando

simplemente que es un “Lenguaje de programación para principiantes”. Esta

cualidad “para principiantes” ha identificado al Basic por largo tiempo, así que

muchos programadores con experiencia han evitado erróneamente usar de él.

Sin embargo, a pesar del tiempo y todos los nuevos lenguajes de programación,

Basic tiene un lugar envidiable con su muy extendido uso, razón por la cual el

lenguaje de programación Basic se convierte en una herramienta de

programación moderna, de gran alcance, y extensamente aceptada.

Es por esto que se menciona como una cualidad importante el uso del lenguaje

de programación Basic en este programa.

Otra de las características del programa Bascom AVR es que ahora no es

necesario contar con un ensamblador para escribir el código fuente y otro

paquete de software para comprobar y simular un programa, todo esto se lo

realiza con Basic; además con todo el avance de la tecnología, se han construido

microprocesadores con memorias tipo flash, con capacidad de programación ISP

Page 61: Caracteristicas Del Atmega 8

61

(In System Programming), y otras herramientas, cualidades que la empresa

holandesa MCS Electronics ha sabido aprovechar, y ha cubierto los siguientes

componentes de software, con el paquete BASCOM AVR:

• Redactor

• Basic recopilador

• Ensamblador

• Simulador

• Terminal Emulador

• Lcd designer

• LIB manager

• Programador

Pero el programa Bascom no es solamente un compilador en lenguaje Basic, sino

que nos ofrece un único Ambiente de Desarrollo Integrado (IDE). Inicializando el

programa nos encontramos en un ambiente de desarrollo donde realizaremos

todo nuestro trabajo, y el primer paso es comenzar a escribir el programa, para lo

cual se cuenta con un muy buen editor, que conoce todas las opciones útiles que

nos ofrece Windows. Por ejemplo presionando la tecla F1 el sistema abre la

ayuda con toda la explicación del comando bajo el cursor. Junto a la explicación

de la sintaxis para cada comando, se encuentra un breve ejemplo para el

comando en particular. Podemos copiar este código (ejemplo) al redactor si lo

queremos probar o utilizar.

Page 62: Caracteristicas Del Atmega 8

62

FIG. 3.7 PANTALLA PRINCIPAL

Dentro de esta primera pantalla encontramos una presentación típica bajo el

entorno de Windows, el área de trabajo y la barra de herramienta, dentro de la

cual se encuentran iconos conocidos como por ejemplo: Abrir, Nuevo, Guardar,

Guardar como, Imprimir, Vista preliminar, etc. Pero es de nuestro interés conocer

la ayuda que nos brindan los siguientes iconos:

FIG. 3.8 ICONOS DEL BASCOM AVR

3.3.1 REVISIÓN DE LA SINTAXIS

El primer icono con una marca de visto realiza una revisión de los errores de

sintaxis del código o programa fuente escrito, cuando se realiza esta acción,

ningún código adicional es generado en este tiempo, salvo que se encuentre

algún error.

Page 63: Caracteristicas Del Atmega 8

63

3.3.2 REVISIÓN DEL PROGRAMA

El siguiente icono (Chip) da comienzo al compilador del programa, esta acción de

compilar revisa errores de programación, como por ejemplo que alguna variable

no esté definida, o esté mal definido, para realizar esta acción es necesario, que

no existan errores de sintaxis en el programa fuente. Cuando se realiza esta

acción se crea un archivo binario, archivo que es necesario para programar el

microcontrolador, archivos adicionales son generados en este proceso aunque

son opcionales (MENU – OPTIONS – COMPILER – OUTPUT) y son los

siguientes:

FIG. 3.9 OPCIONES DEL BASCOM AVR

Page 64: Caracteristicas Del Atmega 8

64

ARCHIVO DESCRIPCIÓN

xxx.BIN (Bynary file) Archivo binario necesario para programar el

microcontrolador.

xxx.DBG (Debug file) Archivo actualizado que se necesita para el simulador.

xxx.OBJ (Object file) Archivo objeto, se usa cuando se simula con el AVR

Studio.

xxx.HEX (Hexadecimal file) Archivo en formato hexadecimal que se necesita

para algunos programadores.

xxx.ERR (Error file) Archivo de error. Solamente se crea si se encuentran

errores en el programa.

xxx.RPT (Report file) Archivo de reporte (informe).

xxx.EEP (EEPROM image file).

TABLA 3.1 TIPOS DE ARCHIVOS GENERADOS EN LA COMPILA CIÓN

Si ocurre un error, se recibirá un mensaje de error en una caja de diálogo y la

compilación terminará. El resto de los errores serán exhibidos en el fondo sobre

la barra de estado.

Cuando se da un click en la línea con la información del error, se salta a la línea

que contiene el error. El margen también exhibirá la muestra. En la compilación

siguiente, la ventana del error desaparecerá.

3.3.3 INFORME DE RESULTADOS

El siguiente icono (La mano de la escritura), nos permite ver los resultados de la

compilación (archivo de informe). En este informe se indica a más de la

información básica del sistema (versión del compilador, tipo de microcontrolador,

fecha, etc.), una lista detallada de todos los recursos del microcontrolador que se

encuentran disponibles, así como la lista de las variables que fueron utilizadas, su

mecanografía y las direcciones en notaciones hexadecimal y decimal, y al final del

informe también se presenta un inventario de las constantes usadas y sus

valores.

Page 65: Caracteristicas Del Atmega 8

65

3.3.4 SIMULADOR

En el desarrollo del proyecto, a menudo es necesario revisar alguna parte del

programa fuente o de alguna rutina, si no contamos con una herramienta de

software adecuada, no tenemos más opción que volver a escribir el programa en

varias ocasiones hasta tener éxito. Bascom nos brinda la posibilidad de reducir

drásticamente el número de repeticiones, gracias al simulador que está disponible

en este programa.

El siguiente en la lista es el icono del chip (color rojo), dando un clic en este icono,

se puede simular el programa, donde el programa fuente es cargado

automáticamente del editor, pero para realizar este paso, es necesario compilar el

programa primero, porque el simulador realiza su trabajo solamente si existe el

archivo .DBG (debug) el cual está disponible solamente después de compilar el

programa. Es importante tener esto presente, especialmente si a un archivo ya

compilado se le realizó algún cambio, si no se le realiza nuevamente el proceso

de compilar, el simulador se cargará nuevamente con el archivo antiguo.

En Bascom –AVR se puede escoger el simulador interno o AVR Studio para la

simulación. En el menú (OPTIONS – SIMULATOR) El AVR Studio puede ser

cargado a Bascom-AVR.

Page 66: Caracteristicas Del Atmega 8

66

FIG. 3.10 SIMULADOR DEL BASCOM AVR

El simulador cuenta con las funciones de: PLAY – PAUSE Y STOP para iniciar,

hacer una pausa o para parar la simulación, respectivamente, además se puede

hacer la simulación paso a paso STEP a través del programa, o por las

subrutinas (Subrutinas, GOSUB, CALL) STEP OVER-BUTTON. Además se

puede realizar la simulación del programa solamente hasta cierta línea,

seleccionándola previamente con el botón RUN TO CURRENT LINE. El

simulador hará una pausa al llegar a este punto.

En el simulador se puede realizar las siguientes acciones:

- Se puede ver el valor de una variable, ubicando el cursor del mouse sobre

el nombre de la variable seleccionada

- Es posible agregar una nueva variable, tecleando la variable dentro de la

ventana WATCH.

Page 67: Caracteristicas Del Atmega 8

67

- Pulsando los botones INT0, INT1, TO, T1 y SER se puede simular una

interrupción. Pueden desplegarse botones adicionales cuando el chip

utilizado tiene interrupciones adicionales.

- Con el botón ENABLE/DISABLE REAL HARDWARE SIMULATION se

habilita o deshabilita la simulación real de hardware, pero para esto se

necesita contar con el hardware adicional.

El simulador de hardware simulará el puerto 1 y 3, de esta manera se puede

probar el programa en el circuito sin programar el dispositivo.

Pulsando el botón de simulación de hardware LED se visualiza la siguiente

ventana, una característica destacada del simulador es el emulador de displays

LCD, teclado y puertos como se observa en la fig. Permite incluso emular gráficos

en el LCD realizados a medida.

FIG. 3.11 PANTALLA DE SIMULACION

3.3.5 PROGRAMADOR

El icono con la figura de un zócalo tipo ZIF, nos brinda la posibilidad de usar un

programador, dependiendo de la configuración del programa Bascom; menú

(OPTIONS – PROGRAMER) podemos seleccionar 9 diferentes tipos de

programadores, más uno externo, claro está que a este último se lo debe diseñar

y construir. En este caso usamos el programador STK200 / STK300.

Page 68: Caracteristicas Del Atmega 8

68

3.3.6 EMULADOR DEL TERMINAL RS-232

El siguiente icono en la barra de herramientas, representa el emulador del

terminal, se utiliza para la comunicación vía interfaz RS-232 con el

microcontrolador. El Emulador se encuentra en la barra de herramientas ( TOOLS

– TERMINAL EMULATOR) o presionando Ctrl + T. Los parámetros de la

comunicación pueden ser seleccionados o cambiados en el menú (OPTIONS –

COMMUNICATION)

FIG. 3.12 PANTALLA DE COMUNICACIÓN RS-232

Page 69: Caracteristicas Del Atmega 8

69

ÍTEM DESCRIPCIÓN

COM port Puerto de comunicación que utiliza la PC para la comunicación

con el terminal emulador.

Baud rate Es la velocidad en baudios que se va a usar.

Parity Paridad, por defecto es None

Data bits Número de bits de datos. Por defecto 8

Stop bits Número de bits de parada. Por defecto 1

Handshake Handshake usado, por defecto es None

Emulation Emulación usada, por defecto BBS ANSI

Font Tipo de letra y coor usado por el emulador

Back ground

Color de fondo del emulador

TABLA 3.2 OPCIONES DE LA COMUNICACIÓN RS-232

Se debe tener en cuenta que la velocidad en baudios del emulador y la velocidad

en baudios del compilador debe ser la misma para que trabaje correctamente la

comunicación entre la PC y el microcontrolador.

Page 70: Caracteristicas Del Atmega 8

70

CAPÍTULO 4

PRUEBAS Y RESULTADOS

4.1 PRÁCTICA 1

ENCENDIDO SECUENCIAL DE LOS LEDS EN UN PUERTO DEL

MICROCONTROLADOR

4.1.1 Objetivo

• Setear un puerto del microcontrolador como salidas

• Desarrollar un programa en el software BASCOM para que encienda 8 leds

secuencialmente con una pausa de 1 segundo.

4.1.2 Desarrollo

El programa realiza el envío de un valor a un puerto en este caso el puerto B,

primero realiza una secuencia de 10 veces luego visualiza el valor de una variable

del tipo byte desde 0 hasta el número 255 que va incrementando después de 1

segundo.

En el Módulo Didáctico se debe tener cuidado en colocar el Switch 2P (J3) en la

posición correcta, para deshabilitar el teclado y habilitar los leds en el puerto B del

microcontrolador.

En la figura 4.1 se presenta el diagrama esquemático de esta práctica y el

programa correspondiente se lo puede revisar en los anexos adjuntos.

Page 71: Caracteristicas Del Atmega 8

71

PC6(RESET)1

PD0(RXD)2

PD1(TXD)3

PD2(INT0)4

PD3(INT1)5

PD4(XCK/T0)6

VCC7

GND8

PB6(XTAL1/TOSC1)9

PB7(XTAL2/TOSC2) 10

PD5(T1)11

PD6(AIN0)12

PD7(AIN1)13

PB0(ICP1)14

PC5(ADC5/SCL)28

PC4(ADC4/SDA)27

PC3(ADC3) 26

PC2(ADC2)25

PC1(ADC1) 24

PC0(ADC0)23

PB1(OC1A)15

PB2(SS/OC1B)16

PB3(MOSI/OC2)17

PB4(MISO) 18

PB5(SCK)19

AVCC20

AREF21

GND22

ATMEGA8

A1

RXDTXD

D

1 2 3 4

8 7 6 5

9 0 A B

C E F F1 F2 F3 F4 C1 C2 C3 C4

TECLADOTL1

MISOMOSI

SCK

4.7kR6

VCC

RESET

VCC

ADC0ADC1

CSDI

O1O2

14 15

4050

U5F

3 2

4050

U5A

5 4

4050

U5B

11 12

4050

U5E

7 6

4050

U5C

9 10

4050

U5D

3 2

4050

U6A

5 4

4050

U6B

LEDD10

LED

D9

LED

D8

LED

D7

LED

D6

LED

D5

LED

D4

LED

D3

330

R16

330

R15

330

R14

330

R13

330

R12

330

R11

330

R10

330

R9

123

SWITCH 2PJ3

VCC

100R4

0.1uFC8

0.1uFC7

VCC

SW-PBS1

FIG. 4.1 CONTROL DE PUERTOS

Page 72: Caracteristicas Del Atmega 8

72

4.2 PRÁCTICA 2 MANEJO DE TEMPORIZADORES

4.2.1 Objetivo

• Aprender a configurar un temporizador interno del Atmega 8.

• Generar una onda cuadrada con un tiempo de 500 milisegundos

t = 500ms t = 500ms

4.2.2 Desarrollo

La siguiente práctica genera un onda cuadrada por medio del temporizador del

ATMEGA8 tanto el tiempo en alto como en bajo máximo es de 0.5 segundos o

500msegundos este tiempo puede ser variable por medio del potenciómetro.

Tiempo = K * R *Prescaler

Donde: K = 1 / Frecuencia del cristal

R = Resolución del bit TIMER 1

Tiempo= 1/1000000 * 65535(16bits) * 8 = 0.524 segundos

Con esta formula se calcula el tiempo para el temporizador, en esta práctica

trabajamos con el TIMER 1 que es de 16 bits por lo que su resolución es 65535,

la frecuencia del cristal es de 1MHz y escogimos el valor de 8 en el prescaler.

Page 73: Caracteristicas Del Atmega 8

73

4.3 PRÁCTICA 3 MANEJO DEL LCD

4.3.1 Objetivos

• Familiarizarnos con el módulo didáctico y el software de programación

BASCOM

• Aprender a configurar el LCD.

4.3.2 Desarrollo

Programa para realizar el manejo del LCD; Visualiza en la primera fila Esc

Politécnica después de 1 segundo visualiza en la segunda fila Nacional y después

de 1 segundo rota 16 caracteres a la izquierda todo el mensaje, después rota a la

derecha 16 caracteres. El LCD está conectado en el Puerto D del

microcontrolador como muestra la figura. Una vez cargado el programa en el

microcontrolador el LCD empezará a desplegar el mensaje “ESC. POLITECNICA

NACIONAL”

PC6(RESET)1

PD0(RXD)2

PD1(TXD)3

PD2(INT0)4

PD3(INT1)5

PD4(XCK/T0)6

VCC7

GND8

PB6(XTAL1/TOSC1) 9

PB7(XTAL2/TOSC2) 10

PD5(T1)11

PD6(AIN0)12

PD7(AIN1)13

PB0(ICP1) 14

PC5(ADC5/SCL)28

PC4(ADC4/SDA) 27

PC3(ADC3) 26

PC2(ADC2) 25

PC1(ADC1) 24

PC0(ADC0) 23

PB1(OC1A)15

PB2(SS/OC1B) 16

PB3(MOSI/OC2)17

PB4(MISO) 18

PB5(SCK) 19

AVCC20

AREF21

GND22

ATMEGA8

A1

RXDTXD

MISOMOSI

SCK

4.7kR6

VCC

RESET

VCC

ADC0ADC1

GND

VCC GND

VCC

CSDI

O1O2

10K

R2

100R4

0.1uFC8

0.1uFC7

VCC

Gn

dV

ccC

trs

Rs

R/w

E Db

0D

b1

Db

2D

b3

Db

4D

b5

Db

6D

b7

A K

DISPLAY DE CRISTAL LIQUIDO

LCDLCD1

SW-PBS1

FIG. 4.2 MANEJO DEL LCD

Page 74: Caracteristicas Del Atmega 8

74

4.4 PRÁCTICA 4 ADQUISICIÓN DE DATOS

4.4.1 Objetivos

• Aprender a configurar el teclado.

• Realizar la adquisición de datos utilizando el teclado y visualizando en el

LCD.

4.4.2 Desarrollo

Programa para ingreso de una clave de 5 dígitos desde el teclado matricial.

Primero para ingresar la clave tenemos que presionar la letra D como nos indica

el mensaje del LCD “Bienvenido presione D para ingreso” luego la clave que es

01234 si la clave es correcta nos da un mensaje de “Felicitaciones clave correcta”

y si es incorrecta nos da el mensaje “error clave incorrecta”

Tenemos que habilitar el teclado colocando el SWITCH 2P (J3) en la posición

correcta para deshabilitar los diodos.

Mediante el programa configuramos el teclado y el LCD.

PC6(RESET)1

PD0(RXD)2

PD1(TXD)3

PD2(INT0)4

PD3(INT1)5

PD4(XCK/T0)6

VCC7

GND8

PB6(XTAL1/TOSC1)9

PB7(XTAL2/TOSC2)10

PD5(T1)11

PD6(AIN0)12

PD7(AIN1)13

PB0(ICP1)14

PC5(ADC5/SCL) 28

PC4(ADC4/SDA) 27

PC3(ADC3) 26

PC2(ADC2) 25

PC1(ADC1)24

PC0(ADC0)23

PB1(OC1A) 15

PB2(SS/OC1B) 16

PB3(MOSI/OC2) 17

PB4(MISO)18

PB5(SCK)19

AVCC20

AREF21

GND22

ATMEGA8

A1

RXDTXD

D

1 2 3 4

8 7 6 5

9 0 A B

C E F F1 F2 F3 F4 C1 C2 C3 C4

TECLADOTL1

MISOMOSI

SCK

4.7kR6

VCC

RESET

VCC

ADC0ADC1

GND

VCCGND

VCC

CSDI

O1O2

10K

R2

100R4

0.1uFC8

0.1uFC7

VCC

Gn

dV

ccC

trs

Rs

R/w

E Db

0D

b1

Db

2D

b3

Db

4D

b5

Db

6D

b7

A K

DISPLAY DE CRISTAL LIQUIDO

LCDLCD1

SW-PBS1

FIG. 4.3 ADQUISICIÓN DE DATOS

Page 75: Caracteristicas Del Atmega 8

75

4.5 PRÁCTICA 5 COMUNICACIÓN SERIAL RS 232

4.5.1 Objetivos

• Aprender a configurar los ADCS.

• Usar el sensor de temperatura LM35

• Verificar la comunicación serial RS 232 entre el Módulo y la computadora

4.5.2 Desarrollo

Para realizar la lectura de los ADCS y realizar la comunicación serial primero

tomamos una muestra con el sensor de temperatura LM35 y este valor lo

convertimos a grados centígrados usando uno de los ADCS, después usando el

potenciómetro este valor lo convertimos en voltaje por ultimo enviamos estos

datos al computador por medio del puerto serial RS-232.

PC6(RESET) 1

PD0(RXD)2

PD1(TXD)3

PD2(INT0)4

PD3(INT1)5

PD4(XCK/T0)6

VCC7

GND8

PB6(XTAL1/TOSC1) 9

PB7(XTAL2/TOSC2) 10

PD5(T1)11

PD6(AIN0)12

PD7(AIN1)13

PB0(ICP1) 14

PC5(ADC5/SCL) 28

PC4(ADC4/SDA) 27

PC3(ADC3) 26

PC2(ADC2) 25

PC1(ADC1) 24

PC0(ADC0) 23

PB1(OC1A) 15

PB2(SS/OC1B) 16

PB3(MOSI/OC2) 17

PB4(MISO) 18

PB5(SCK) 19

AVCC20

AREF21

GND22

ATMEGA8

A1

RXDTXD

MISOMOSI

SCK

4.7kR6

VCC

RESET

VCC

ADC0ADC1

CSDI

O1O2

100R4

0.1uFC8

0.1uFC7

VCC

SW-PBS1

VCC

ADC1

5K

R1

Vs

1

VOUT 2

GN

D3

LM35

U1

VCC

ADC0

FIG. 4.4 COMUNICACIÓN SERIAL RS-232

Page 76: Caracteristicas Del Atmega 8

76

4.6 PRÁCTICA 6 COMUNICACIÓN I2C

4.6.1 Objetivos

• Aprender a configurar el Real Time DS1307

• Verificar la comunicación serial I2C entre el microcontrolador Atmega 8 y el

Real Time DS1307

4.6.2 Desarrollo

Programa para realizar la comunicación I2C con el real time DS1307 primero

igualamos el real time con la fecha 25 de Octubre de 2005 hora 12:00:00 y

después realizamos la lectura de este visualizándolo en el LCD, realizando un

reloj digital que mantiene la hora y fecha cuando se desconecta la energía.

PC6(RESET) 1

PD0(RXD)2

PD1(TXD)3

PD2(INT0)4

PD3(INT1)5

PD4(XCK/T0)6

VCC7

GND8

PB6(XTAL1/TOSC1) 9

PB7(XTAL2/TOSC2) 10

PD5(T1)11

PD6(AIN0)12

PD7(AIN1)13

PB0(ICP1) 14

PC5(ADC5/SCL) 28

PC4(ADC4/SDA) 27

PC3(ADC3) 26

PC2(ADC2) 25

PC1(ADC1) 24

PC0(ADC0) 23

PB1(OC1A) 15

PB2(SS/OC1B) 16

PB3(MOSI/OC2) 17

PB4(MISO) 18

PB5(SCK) 19

AVCC20

AREF21

GND22

ATMEGA8

A1

RXDTXD

MISOMOSI

SCK

4.7kR6

VCC

RESET

VCC

ADC0ADC1

SCL

SDA

CSDI

O1O2

100R4

0.1uFC8

0.1uFC7

VCC

X11

X22

SDA 5SCL 6SQW/OUT 7

VCC8

GND4 Vbat 3

DS1307

U9

32KHZ

XTAL1

3vBT1

VCC

LEDD11

330

R19

VCC

330

R18

330

R17

10kR20

10kR21

VCC VCC

SW-PBS1

FIG. 4.5 COMUNICACIÓN I2C

Page 77: Caracteristicas Del Atmega 8

77

4.7 PRÁCTICA 7 COMUNICACIÓN SPI

4.7.1 Objetivos

• Usar motores paso a paso

• Verificar la comunicación serial SPI mediante el control de dos motores

paso a paso

4.7.2 Desarrollo

Programa para manejar un motor de pasos por medio de la comunicación SPI. El

motor gira en sentido horario con un mensaje en el LCD que indica que

presionando el número 4 del teclado matricial el motor gira indefinidamente a la

izquierda, o si se presiona el número 6 el motor gira indefinidamente a la derecha

o si se presiona el número 5 cuando el motor esté girando se para hasta darle una

nueva orden.

Page 78: Caracteristicas Del Atmega 8

78

CONCLUSIONES Y RECOMENDACIONES

• El Módulo Didáctico basado en el microprocesador ATMEGA 8 es una

herramienta de aprendizaje práctica, eficaz y muy confiable, que con el

desarrollo de las prácticas va mostrando progresivamente las

características básicas del microcontrolador así como también las

facilidades que nos ofrece el software que se utiliza para la elaboración de

proyectos.

• El software de programación BASCOM, es una herramienta poderosa que

permite depurar y simular un proyecto antes de ser probado con el

hardware, con el consecuente ahorro de recursos como tiempo y dinero.

• Los ejemplos que incluye el software Bascom AVR son de gran ayuda para

incursionar en el mundo de los Microcontroladores AVR ATMEL.

• Se realizó el diseño y la implementación de las comunicaciones seriales

I2C y SPI y se comprobó el funcionamiento de los dos tipos de

comunicaciones, con sendas prácticas de fácil entendimiento, quedando

así demostrado el funcionamiento de este tipo de comunicaciones.

• Con este Módulo Didáctico se mejora el equipamiento en el área de

laboratorios de la ESFOT con un equipo de aprendizaje que brinda al

estudiante acceso a tecnologías innovadoras y recientes para mejorar su

capacitación.

Page 79: Caracteristicas Del Atmega 8

79

REFERENCIAS BIBLIOGRÁFICAS

• BASCOM Programming of Microcontrollers with Ease: An Introduction by

Program Examples, Claus Kuhnel, USA/2001, Universal Publisher.

• Microcontroller with 8 Kbytes In-System Programmable Flash, Advance

Information, Atmel Corporation, 2001.

• Programming and Customizing the AVR Microcontroller, Grade Dhananjay,

2001, Mcgraw Hill.

• EL BUS I2C, José Nail V.

• http://www.comunidadelectronicos.com/articulos/i2c.htm

• http://en.wikibooks.org/wiki/Atmel_AVR

• http://dinastiasoft.com.ar/bascomavr.htm

• http://www.digchip.com/datasheets/parts/datasheet/054/ATMEGA8.php

• http://www.mcselec.com/bascom-avr.htm

• http://www.atmel.com/products/avr

• http://www.avr-forum.com/

Page 80: Caracteristicas Del Atmega 8

80

ANEXOS:

• Glosario de términos

• 7 Programas usados en las prácticas para probar el correcto

funcionamiento del Módulo Didáctico para el Microcontrolador

Atmega 8.

• Diagrama esquemático del circuito del Módulo Didáctico para el

Microcontrolador Atmega 8.

• Manual del usuario

Page 81: Caracteristicas Del Atmega 8

81

GLOSARIO DE TERMINOSGLOSARIO DE TERMINOSGLOSARIO DE TERMINOSGLOSARIO DE TERMINOS

ADC o A/D CONVERTER (ADC o A/D CONVERTER (ADC o A/D CONVERTER (ADC o A/D CONVERTER (Convertidor analógico/digitalConvertidor analógico/digitalConvertidor analógico/digitalConvertidor analógico/digital).- Dispositivo o circuito electrónico que convierte una entrada analógica en una señal digital.

ALU (Arithmetic Logic Unit).- Unidad Lógica Aritmét ica.- Bloque interno de la CPU de un sistema microprocesador, que tiene como objetivo realizar una serie de cálculos básicos con los datos aplicados a su entrada y presentar el resultado en su registro de salida.

ARQUITECTURA HARVARD.- Arquitectura que dispone de dos memorias independientes, una que contiene solo instrucciones y otra solo datos, con sus respectivos sistemas de buses de acceso.

ASSEMBLER.ASSEMBLER.ASSEMBLER.ASSEMBLER.- Programa que convierte una lista de instrucciones (programa fuente) editadas en código ensamblado para un procesador concreto, en una lista de instrucciones de máquina directamente ejecutables por dicho procesador.

ATMEL AVR.- El Atmel AVR es una familia de los microcontroladores del RISC de Atmel. La arquitectura del AVR fue concebida por dos estudiantes en el Instituto Noruego de la Tecnología (NTH). BASCOM-AVR.- Es un compilador de BASIC para la familia AVR de ATMEL, desarrollado por la empresa Holandesa MCS Electronic.

BAUDIO.- Número de veces por segundo en que puede cambiar el nivel de una señal digital para enviar un pulso. En señales binarias, el número de baudios es igual al de bits por segundo.

CISC (Complex Instruction Set Computer).- Computadores de Juego de Instrucciones Complejo. EEPROM (Electrically Erasable And Programmable Read-Only Memory).- Memoria Solo de Lectura Programable y Borrable Eléctricamente I2C (Inter-Integrated Circuit).- Tipo de comunicación serial, que usa dos alambres para la comunicación entre Circuitos Integrados. ISP (In-System Programmable).- Programable en Sistema LANGUAGE BASIC.- desarrollado como lenguaje para entrenamiento y representación de algoritmos. Es el lenguaje de alto nivel más extendido entre los ordenadores domésticos y personales por su facilidad de aprendizaje.

Page 82: Caracteristicas Del Atmega 8

82

LCD (Liquid Crystal Display).- Visualizador de cristal líquido.

PWM (Pulse Width Modulation).- Modulación por Amplitud de Impulsos RISC (Reduced Instruction Set Computer). - Computadores de Juego de Instrucciones Reducido RS-232 (Recommended Standard 232).- Estándar de comunicaciones desarrollado por la “Electronic Industries Association” (EIA). RX.- Receptor SPI (Serial Peripheral Interface).- La Interfaz Periférica Serial es un subsistema de comunicaciones serial independiente, que permite comunicación sincrónica de dispositivos periféricos con dispositivos maestros (CPU o MCU, etc.) SRAM (Random Access Memory STATIC).- Memoria de Acceso Aleatorio Estática TX.- Transmisor

USART (Universal Synchronous/Asynchronous Receiver/Transmitter)USART (Universal Synchronous/Asynchronous Receiver/Transmitter)USART (Universal Synchronous/Asynchronous Receiver/Transmitter)USART (Universal Synchronous/Asynchronous Receiver/Transmitter).- Transmisor/receptor sincrónico/asincrónico universal, utilizado frecuentemente para convertir los datos en paralelo de un procesador en datos serie para realizar una transmisión.

Page 83: Caracteristicas Del Atmega 8

83

Page 84: Caracteristicas Del Atmega 8

84

1

1

2

2

3

3

4

4

5

5

6

6

D D

C C

B B

A A

Title

Number RevisionSize

C

Date: 26/07/2006 Sheet of File: C:\CRISS\..\Modulo_Atmega8.Sch Drawn By:

PC6(RESET) 1

PD0(RXD)2

PD1(TXD)3

PD2(INT0)4

PD3(INT1)5

PD4(XCK/T0)6

VCC7

GND8

PB6(XTAL1/TOSC1) 9

PB7(XTAL2/TOSC2) 10

PD5(T1)11

PD6(AIN0)12

PD7(AIN1)13

PB0(ICP1)14

PC5(ADC5/SCL)28

PC4(ADC4/SDA) 27

PC3(ADC3) 26

PC2(ADC2)25

PC1(ADC1) 24

PC0(ADC0) 23

PB1(OC1A) 15

PB2(SS/OC1B) 16

PB3(MOSI/OC2)17

PB4(MISO) 18

PB5(SCK)19

AVCC20

AREF21

GND22

ATMEGA8

A1

VCC

VCC VC

C16

V+2

V-6

C1+ 1

C1-3

C2+4

C2- 5

GN

D15

TTL-IN1 11

TTL-IN2 10

RS-OUT114

RS-OUT27

RS-IN113

RS-IN28

TTL-OUT1 12

TTL-OUT29

MAX232

U3

+

1uF

C2

+

1uF

C1

+

1uF

C4

+

1uF

C3

1G1

A12 1Y118

A241Y2 16

A36 1Y3 14

A48 1Y412

2G19

B1112Y1 9

B213 2Y2 7

B315 2Y35

B4172Y4 3

74F244

U4100kR7

100nFC9

DIODE

D13

VCC

RESET

MISO

MOSI

SCK

TXD

RXD

RXDTXD

D

1 2 3 4

8 7 6 5

9 0 A B

C E F F1 F2 F3 F4 C1 C2 C3 C4

TECLADOTL1

MISOMOSI

SCK

4.7kR6

VCC

RESET

VCC

ADC0ADC1

VCC

ADC1

Vs

1

VOUT 2

GN

D3

LM35

U1

VCC

ADC0

GND

VCCGND

VCC

SCL

SDA

1 3

2

V V

GNDIN OUT

78L05U2

+1000uFC5 +

10ufC6

JACK

JACK1 IN+

IN-

VCC

i Layout Directive

i Layout Directive

CSDI

O1O2

O1

O2

SD

A

DO

CLK

SCL

123CON3

J1

12345678

CON8

J2

AC1

+

AC

2

-

BRIDGE1

D12

5K

R1

10K

R2

14 15

4050

U5F

3 2

4050

U5A

5 4

4050

U5B

11 12

4050

U5E

7 6

4050

U5C

9 10

4050

U5D

3 2

4050

U6A

5 4

4050

U6B

LEDD10

LED

D9

LED

D8

LED

D7

LED

D6

LED

D5

LED

D4

LED

D3

330

R16

330

R15

330

R14

330

R13

330

R12

330

R11

330

R10

330

R9

123

SWITCH 2PJ3

VCC

100R4

0.1uFC8

0.1uFC7

VCC

X11

X22

SDA 5SCL6SQW/OUT 7

VCC8

GND4 Vbat3

DS1307

U9

32KHZ

XTAL1

3vBT1

VCC

LEDD11

330

R19

VCC

330

R18

330

R17

10kR20

10kR21

VCC VCC

330R3

LEDD1

LEDD2

330R8

VCC QB1

QC2

QD3

QE4

QF5

QG6

QH7

GND8

SQH9SRCLR 10SRCLK11RCLOCK 12

G 13SER IN14QA 15

VCC 16

74HC595

U7VCC

VCC

GND

IN 11

IN 22

IN 33

IN 44

IN 55

IN 66

IN 77

IN 88

DIODE CLAMP10 OUT 811OUT 7 12OUT 613OUT 5 14

OUT 4 15OUT 316OUT 2 17

OUT 1 18

ULN2803A(18)

U8

VCC

12345678910

CON10

J5

VCC

DI

CSCLK

DO

123456

SWITCH 2P 2CJ4

VDD

Gnd

Vcc

Ctrs

Rs

R/w

E Db0

Db1

Db2

Db3

Db4

Db5

Db6

Db7

A K

DISPLAY DE CRISTAL LIQUIDO

LCDLCD1

SW-PBS1

Page 85: Caracteristicas Del Atmega 8

85

Page 86: Caracteristicas Del Atmega 8

86

MANUAL DEL USUARIO

INFORMACIÓN IMPORTANTE DE SEGURIDAD: Como cualquier producto electrónico estas precauciones tienen que ser observadas al usar este producto. - El rango de temperatura de operación del microcontrolador interno es de -55ºC a

+125ºC, pero el circuito no se debe exponer a temperaturas que puedan dañar el material de la caja (acrílico) o a elementos delicados como el Lcd además es muy importante tener cuidado en la manipulación del módulo, para evitar golpes o rupturas del material.

- No exponga al módulo al contacto con líquidos o a la humedad - Al circuito se lo alimenta con un adaptador que suministra un voltaje de 12 V,

internamente el módulo cuenta con un circuito que evita una polarización inversa por error, y además reduce este voltaje a 5Vdc. Utilice adaptadores con las mismas características indicadas en este manual.

- El circuito cuenta con un integrado DS1307 que es, alimentado por una batería de litio

de 3 voltios, esta batería debe ser cambiada cada tres años. - Para el correcto funcionamiento del módulo, asegurese que todos los cables de

comunicación estén correctamente conectados y en el lugar correcto.

Page 87: Caracteristicas Del Atmega 8

87

DESCRIPCIÓN DEL MÓDULO Este manual describe las funciones básicas y el modo de funcionamiento del Módulo Didáctico para el Microcontrolador Atmega 8. 1. Módulo

Page 88: Caracteristicas Del Atmega 8

88

PANEL SUPERIOR 1. Led indicador de encendido.- Indica que el módulo esta en funcionamiento. 2. Led indicador de programación.- Se enciende en el momento en el que se esta

realizando la grabación del programa en la memoria flash del microcontrolador. 3. Interruptor 1.- Con este interruptor se escoge el tipo de comunicación que se va a

realizar, dependiendo de la práctica que se desee, puede ser comunicación SPI o I2C. 4. Potenciómetro 1.- Para realizar la conversión Analógica – Digital.

1 2

3 A

45

6 B

7 8

9 C

* 0

Page 89: Caracteristicas Del Atmega 8

89

PANEL FRONTAL 5. LCD (Display de Cristal Líquido). 6. Teclado matricial 4 x 4. 7. Interruptor 2.- Este interruptor habilita o deshabilita al teclado o al juego de leds, para

realizar la práctica. 8. Led indicador del reloj.- Indica la frecuencia a la que esta oscilando el reloj interno del

Módulo. 9. Potenciómetro 2.- Este potenciómetro regula el contraste del LCD. 10. Sensor de temperatura LM35.

1 2 A

4 5 6 B

7 8 9 C

* D D

Page 90: Caracteristicas Del Atmega 8

90

PANEL POSTERIOR 11. Conector para la comunicación serial SPI. 12. Conector para la comunicación serial RS-232. 13. Conector del cable programador. 14. Interruptor 3.- Interruptor de encendido. 15. Pulsador 1.- Se usa para resetear al circuito. 16. Conector de voltaje.

Page 91: Caracteristicas Del Atmega 8

91

2. Un cable programador (DB9 – DB25) 3. Un cable para la comunicación RS-232 (DB9 – DB9) 4. Un motor Paso a paso con su conector

Page 92: Caracteristicas Del Atmega 8

92

5. Un adaptador TECH, modelo AD-1200F Como un paso previo a utilizar el módulo, es necesario que el estudiante tenga editado y compilado en el programa BASCOM, el programa que desea probar.

1

Page 93: Caracteristicas Del Atmega 8

93

USO DEL MODULO - Para comenzar a utilizar el módulo, conecte el plug del adaptador en el conector de

voltaje (16) y encienda el módulo (14).

- Conecte el cable programador (DB9 – DB25) entre el puerto paralelo de la

computadora y el conector del cable programador (13).

- Escoja el programador STK200/STK300 en las opciones del programa Bascom.

- Cargue el programa que se va a probar en el microcontrolador con la opción RUN

PROGRAMMER, en ese momento se encenderá el led indicador de programación, lo

que asegura que el programa se ha cargado en la memoria flash exitosamente.

- Compruebe el correcto funcionamiento del programa que desea probar usando los

periféricos del módulo.

Estos pasos son los mismos para cualquier programa que se desee probar, a continuación

se explicara los pasos adicionales necesarios para cada una de las prácticas desarrolladas.

PRÁCTICA NOMBRE PASO 1 PASO 2

1 Encendido secuencial de LEDS. Coloque el interruptor 2 en la posición LEDS.

-

2 Manejo de temporizadores. - -

3 Manejo del LCD. Con el potenciómetro 2, regule el contraste del LCD.

-

4 Adquisición de datos. Coloque el interruptor 2 en la posición TECLADO.

Con el potenciómetro 2, regule el contraste del LCD.

5 Comunicación serial RS-232. Conecte el cable de comunicación RS-232.

Encere el potenciómetro 1.

6 Comunicación I2C. Coloque el interruptor 1 en la posición I2C.

-

7 Comunicación SPI. Conectar el motor paso a paso en el conector de la comunicación serial SPI.

Coloque el interruptor 1 en la posición SPI.