Está en la página 1de 93

1

ESCUELA POLITCNICA
NACIONAL

ESCUELA DE FORMACIN TECNOLGICA

MDULO DIDCTICO PARA EL MICROCONTROLADOR
ATMEGA 8


PROYECTO PREVIO A LA OBTENCIN DEL TTULO DE TECNLOGO
EN ELECTRNICA Y TELECOMUNICACIONES


GORDN MOSQUERA CHRISTIAN ROBERTO
NAGUA SANDOVAL FANNY MARGARITA



DIRECTOR: Ing. ALCIVAR COSTALES






Quito, Mayo 2006




2





DECLARACIN


Nosotros, Gordn Mosquera Christian Roberto y Nagua Sandoval Fanny Margarita,
declaramos que el trabajo aqu descrito es de nuestra autora; que no ha sido previamente
presentada para ningn grado o calificacin profesional; y, que hemos consultado las
referencias bibliogrficas que se incluyen en este documento.

La Escuela Politcnica Nacional, puede hacer uso de los derechos correspondientes a este
trabajo, segn lo establecido por la Ley de Propiedad Intelectual, por su Reglamento y por
la normatividad institucional vigente.





CHRISTIAN GORDON MARGARITA NAGUA





3








CERTIFICACIN


Certifico que los seores Christian Roberto Gordn Mosquera y Fanny Margarita Nagua
Sandoval, han culminado con su Proyecto de Titulacin.





Ing. Alcvar Costales
DIRECTOR DE PROYECTO



















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. Alcvar Costales por sus sabios
consejos para guiar el presente trabajo.





CHRISTIAN
5













DEDICATORIA

El presente trabajo se lo dedico con mucho
cario a mi Madre y de manera muy especial
a mi amado hijo JAVIER, porque ustedes son
las estrellas que guan mi camino.

Que dios les bendiga y les tenga muchos aos
a m lado.





CHRISTIAN

6




















AGRADECIMIENTO


Al Ing. Alcvar Costales, por apoyarnos constantemente en la realizacin de
ste proyecto, ya que es un tema importante para el aprendizaje de los
estudiantes de aos inferiores.

A mis amigos ms cercanos, por su apoyo incondicional durante estos aos
de estudio.





MARGARITA





7





















DEDICATORIA

A mi hijo por ser el ser mas especial en mi vida, por todo ste tiempo que ha
estado a mi lado dndome su cario y amor.

A mi madre y hermanos por su apoyo, esfuerzo y comprensin en los
momentos difciles de mi vida.

A mis abuelitos por su cario y amor.





MARGARITA







8

CONTENIDO
INTRODUCCIN 11

CAPTULO 1.- EL MICROCONTROLADOR ATMEGA 8

1.1 CARACTERSTICAS DEL ATMEGA 8 13
1.2 DESCRIPCIN DE PINES 15
1.3 ARQUITECTURA DEL ATMEGA 8 20
1.4 REGISTROS DE PROPSITO GENERAL 23
1.5 UNIDAD ARITMTICA LGICA 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


CAPTULO 2.- COMUNICACIN SERIAL DEL ATMEGA 8

2.1 INTRODUCCIN 32
2.2 TIPOS DE COMUNICACIONES SERIALES 32
2.2.1 COMUNICACIN 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 BSICAS DEL BUS I2C 41
2.2.2.5 FORMATOS DE DIRECCIN 45
2.2.3 INTERFAZ PERIFRICA SERIAL (SPI) 46
2.2.3.1 INTRODUCCIN 46
2.2.3.2 DESCRIPCIN FUNCIONAL 47
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 SEALES DEL SISTEMA SPI 48
2.2.3.6 ERRORES DEL SISTEMA SPI 50
2.2.3.7 REGISTRO DEL SISTEMA SPI 51


CAPTULO 3.- MDULO DE PRCTICAS Y FUNDAMENTOS BSICOS DEL
SOFTWARE

3.1 MDULO DE PRCTICAS 55
3.2 CARACTERSTICAS DEL MDULO 55
3.2.1 PROGRAMADOR ISP 55
3.2.2 FUENTE DE ALIMENTACIN 56
3.2.3 LCD ALFANUMRICO ESTNDAR 57
3.2.4 TECLADO MATRICIAL DE 4*4 58
3.2.5 RESET 59
3.2.6 REAL TIME 59
3.3 FUNDAMENTOS BSICOS DEL SOFTWARE BASCOM 60
3.3.1 REVISIN DE LA SINTAXIS 62
3.3.2 REVISIN 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

CAPTULO 4.- PRUEBAS Y RESULTADOS

4.1 PRCTICA 1: ENCENDIDO SECUENCIAL DE LOS LEDS EN UN PUERTO
DEL MICROCONTROLADOR
4.1.1 OBJETIVO 70
4.1.2 DESARROLLO 70
4.2 PRCTICA 2: MANEJO DE TEMPORIZADORES 72
4.2.1 OBJETIVO 72
4.2.2 DESARROLLO 72

10

4.3 PRCTICA 3: MANEJO DEL LCD 73
4.3.1 OBJETIVO 73
4.3.2 DESARROLLO 73
4.4 PRCTICA 4: ADQUISICIN DE DATOS 74
4.4.1 OBJETIVO 74
4.4.2 DESARROLLO 74
4.5 PRCTICA 5: COMUNICACIN SERIAL RS-232 75
4.5.1 OBJETIVO 75
4.5.2 DESARROLLO 75
4.6 PRCTICA 6: COMUNICACIN I2C 76
4.6.1 OBJETIVO 76
4.6.2 DESARROLLO 76
4.7 PRACTICA 7: COMUNICACIN SPI 77
4.7.1 OBJETIVO 77
4.7.2 DESARROLLO 77

CONCLUSIONES Y RECOMENDACIONES 78
REFERENCIAS BIBLIOGRFICAS 79
ANEXOS 80













11

INTRODUCCIN
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 da se puede encontrar en el
mercado.
El desarrollo tecnolgico del presente siglo permite tener acceso a nuevas
tecnologas, como es el caso de los microcontroladores de tipo RISC,
especialmente los de la casa Atmel, que permiten tener mltiples opciones de
trabajo al tener incorporados dentro de los mismos, diversos perifricos como
conversores analgico-digitales, sistemas PWM (Modulacin por ancho de pulso),
comunicaciones I2C, SPI, RXTX ( transmisin serial).

A esta familia pertenece el microcontrolador ATMEGA 8, con el que se desarrolla
el proyecto de disear y construir un Mdulo Didctico para verificar el correcto
funcionamiento del microcontrolador, a la vez que se disear un conjunto de
prcticas para que el estudiante se familiarice y aprenda a usar estos
microcontroladores AVR e implementar los distintos programas aplicables al
Mdulo Didctico utilizando el software BASCOM.

El uso del software BASCOM permite disear con mayor facilidad la aplicacin
directa sobre perifricos, lo cual transforma a este mdulo en un sistema tipo
microcomputadora, el lenguaje similar al BASIC permite que el estudiante
aprenda a manejar tanto el microcontrolador ATMEGA como los perifricos
externos en forma rpida, amena y completa.

Este Mdulo no sustituir una clase normal con un instructor, sino que este servir
como apoyo prctico a la teora dictada en clases; se debe aclarar que este
12

sistema, luego de una introduccin terica en clase, podra ser utilizado como
mdulo de desarrollo de proyectos, en el que el alumno desarrolla aplicaciones.

El sistema constar de un mdulo en el que se tendrn los dispositivos
electrnicos necesarios (Lcd, teclado, leds, potencimetros, interfaz serial, interfaz
paralela, pulsadores, etc.) para la realizacin de las prcticas, as como tambin
el grabador del microcontrolador con su respectiva interfaz; con lo cual se facilita
al alumno el desarrollo y ejecucin de proyectos.

Para la programacin del microcontrolador se utilizar el software BASCOM AVR,
ste permite una programacin en lenguaje simple para el alumno. Adems este
software presenta varias ventanas para simulacin, con lo cual el alumno puede
efectuar una revisin del programa previo a la grabacin del mismo en el
microcontrolador.

En las prcticas 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 explotacin
al mximo de las herramientas y ejemplos que presenta el software.







13

CAPTULO 1
EL MICROCONTROLADOR ATMEGA 8
1.1 CARACTERSTICAS 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 mquina, su
estructura elimina la necesidad de usar componentes externos ya que
internamente tiene: osciladores, USART, SPI, resistencias pull-up, modulacin por
anchura de pulso (PWM), convertidor ADC, comparador analgico y cronmetros,
stas son solo algunas de las caractersticas que se encuentran en este
dispositivo. Su programacin es posible realizarla en Lenguaje C, assembly o
Basic. Todo su sistema est depositado en una sola pastilla.
El Atmega 8 tiene las siguientes caractersticas:
Utiliza arquitectura RISC
130 instrucciones, las ms 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). Duracin: 1.000
ciclos de escritura/borrado.
512 bytes de memoria EEPROM.
- Duracin: 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 propsito general
23 lneas de entrada/salida de propsito 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.
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 energa, 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
continen funcionando.
- Modo Power-down (baja energa), guarda el contenido del registro, pero
congela el oscilador, inhabilitando el resto de funciones del chip hasta la
siguiente interrupcin o hasta que se realice un reset del hardware.
- En el Power save (modo economizador), el contador de tiempo asincrnico
contina funcionando, permitiendo al usuario mantener una base de
tiempo, mientras el resto de dispositivos contina en reposo.
- En el modo de reduccin del nivel de ruidos ADC, detiene la CPU y todos
los mdulos de entrada y salida excepto el contador asincrnico y el
Conversor Anlogo-Digital (ADC), para reducir al mnimo el ruido de
conmutacin durante la conversin 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 rpido combinado con el consumo bajo de
energa.
2


El microcontrolador AVR tiene y combina un amplio sistema de instrucciones, con
32 registros de propsito general. Las operaciones de la ALU entre registros son
ejecutadas en el archivo de registro. Las operaciones son divididas en tres
categoras: aritmticas, lgicas 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

15

ms eficiente, y alcanza rendimientos de procesamiento de hasta diez veces ms
rpido que los microcontroladores con tecnologa CISC.

La Memoria Flash ISP (Programable en sistema) permite que la memoria de
programa del chip sea reprogramada en el propio sistema a travs de la interfaz
SPI o mediante un programador de memoria convencional. Combinando una
tecnologa RISC de 8 bits con un CPU con memoria Flash, el Atmega 8 resulta un
poderoso microcontrolador que proporciona una alta flexibilidad en los diseos, a
bajo costo aportando una solucin muy efectiva para la mayora 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 evaluacin.
1.2 DESCRIPCIN 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
16

RESET
Entrada de RESET. Se genera un reset aplicando un nivel bajo de voltaje en este
pin por un periodo de tiempo ms largo que un ciclo de mquina, incluso si el reloj
no est funcionando. Pulsos ms cortos no generan un estado de reset.

XTAL 1
Entrada al amplificador inversor del oscilador y entrada al circuito de operacin
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
Analgico-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 analgica. 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 analgica 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 estn activadas. Los
pines del puerto B tienen tres estados cuando la condicin 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.
17

Dependiendo de la configuracin de las opciones de reloj, el pin PB6 puede ser
usado como entrada al amplificador inversor del oscilador y entrada al circuito de
operacin interno del reloj.

Dependiendo de la configuracin de las opciones de reloj, el pin PB7 puede ser
usado como salida del amplificador inversor del oscilador

Los pines del puerto B tienen tambin algunas funciones especiales, que se las
resume en el siguiente cuadro.


PIN DEL PUERTO B

FUNCIN 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 DESCRIPCIN DE PINES DEL PUERTO B
Prtico 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 estn activadas.


18

Los pines del puerto C tienen tres estados cuando la condicin 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 ms cortos no generan un estado de reset.

Los pines del puerto C tienen tambin algunas funciones especiales, que se las
resume en el siguiente cuadro.

PIN DEL PUERTO C

FUNCIN 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 DESCRIPCIN 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 estn activadas. Los
pines del puerto D tienen tres estados cuando la condicin 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.

19


Los pines del puerto D tienen tambin algunas funciones especiales, que se los
resume en el siguiente cuadro.


PIN DEL PUERTO D

FUNCIN 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 DESCRIPCIN DE PINES DEL PUERTO D












20

1.3 ARQUITECTURA DEL ATMEGA 8


FIGURA 1.2 ARQUITECTURA DEL ATMEGA 8
El rpido 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 operacin en la Unidad Aritmtica Lgica (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
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 clculo 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 aritmticas y lgicas entre registros o entre un
registro y una constante. Las operaciones simples con registros son tambin
ejecutadas por la ALU. Despus de una operacin aritmtica el registro de estado
se carga con la informacin del resultado de la operacin.

Los registros de trabajo estn 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 estn colocados a continuacin de los de
trabajo, de la direccin 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 instruccin, la siguiente instruccin 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 mayora de las instrucciones AVR
tienen una longitud de 16 bits. Cada direccin de la memoria de programa
contiene una instruccin de 16 de 32 bits.



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

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 tamao del mismo es
nicamente limitado por el tamao 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 fcilmente 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 mdulo flexible de interrupcin, tiene sus registros de control en el espacio de
entrada/salida con un bit de habilitacin de interrupcin global en el registro de
estado. Todas las diferentes interrupciones tienen un vector separado de
interrupcin en la tabla de vectores de interrupcin al inicio de la memoria de
programa. Las diferentes interrupciones tienen prioridad en concordancia con la
posicin del vector de interrupcin. El vector de direccin ms bajo es el que tiene
la ms alta prioridad.














23

1.4 REGISTROS DE PROPSITO GENERAL
La figura 1.3 muestra la estructura de los 32 registros de trabajo de propsito
general presentes en el Atmega 8.

7 0 Direccin
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 PROPSITO GENERAL

La mayora de las instrucciones que funcionan en el archivo de registros tienen
acceso directo a todos los registros, y la mayora de ellos son instrucciones de un
solo ciclo de mquina ciclo.

Cada registro es asignado a una direccin de memoria de datos, dirigindolos
directamente dentro de las 32 primeras localidades del espacio de Datos del
usuario, aunque no sea fsicamente implementada como localidad SRAM, esta
organizacin 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.





24

Registro X, registro Y y registro Z.- Los registros R26.R31 poseen algunas
funciones adicionales. Estos registros son punteros de direccin 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 direccin tienen
funciones como realizar los desplazamientos, incrementos automticos y
decrementos automticos.

1.5 UNIDAD ARITMTICA-LGICA (ALU)
La ALU de alto rendimiento trabaja en conexin directa con todos los 32
registros de trabajo de propsito general. Las operaciones aritmticas entre los
registros de propsito 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
categoras principales - aritmtica, lgico, y bit-funciones. Algunas
implementaciones de la arquitectura tambin 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.

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

26

La figura 1.5 muestra como est organizada la memoria SRAM. Las 1120
posiciones de memoria ms bajas contienen los registros de propsito general,
los registros de entrada/salida, y los datos internos SRAM. Las primeras 96
localizaciones contienen los registros de propsito 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 automtico, 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 duracin
de aproximadamente 100.000 ciclos de lectura/escritura.

1.9 REGISTRO DE ESTADO
El registro de estado contiene la informacin sobre el resultado de la ltima
instruccin aritmtica ejecutada. Esta informacin se puede utilizar para alterar el
normal desarrollo del programa para realizar operaciones condicionales. El
registro de estado es actualizado despus de todas las operaciones de la ALU,
segn lo especificado en el set de instrucciones, dando por resultado un cdigo

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

27

ms rpido y ms compacto. El registro de estado no se almacena al incorporar
una rutina de la interrupcin y no se restaura automticamente al volver de una
interrupcin. Esto se debe dirigir por software.

El registro de estado se denomina SREG y se encuentra en la direccin $3F. La
descripcin 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 descripcin 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 estn 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 interrupcin y es
puesto de nuevo a uno tras la instruccin RETI que sirve para producir el retorno
de interrupcin.

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 instruccin BST, y un bit en T
puede ser copiado en un bit de un registro del archivo de registros mediante la
instruccin BLD.

Bit 5-H: Half Carry Flag:
Este bit indica que se ha producido un half carry en algunas operaciones
aritmticas.
28

Bit 4-S: Sign Bit, S = S (+) V:
El bit-S realiza una operacin or exclusiva entre los bits N y el bit V del registro de
estado.

Bit 3-V: Twos Complement Overflow Flag:
Esta bandera V, soporta aritmtica en complemento de 2

Bit 2-N: Negative Flag:
La bandera negativa N indica un resultado negativo tras realizar una operacin
aritmtica o una lgica.

Bit 1-Z: Zero Flag:
Esta bandera indica un resultado de cero tras realizar una operacin aritmtica o
una lgica.

Bit 0-C: Carry Flag:
Esta bandera indica un carry tras realizar una operacin aritmtica o una lgica.

1.10 STACK POINTER (SP)
El stack pointer se utiliza principalmente para almacenar datos temporales, para
almacenar variables locales y para guardar la direccin de retorno despus 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.

29

Todos los bits son de lectura y escritura y en estado inicial los 16 bits estn 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 interrupcin sea ejecutada. El Stack Pointer
es decrementado en una unidad cuando un dato es colocado en el Stack
mediante la instruccin 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 interrupcin. El Stack Pointer es incrementado en una unidad cuando
un dato es recuperado del Stack mediante la instruccin POP, y es incrementado
en dos unidades cuando un dato es devuelto del Stack mediante un retorno de
subrutina con la instruccin RET o por un retorno de una interrupcin RETI.

1.11 MANEJO DEL RESET Y DE LAS INTERRUPCIONES.

El microcontrolador ATMEGA 8 posee 19 fuentes de interrupcin.

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 ms bajas del espacio de memoria de programa son
automticamente definidas para el vector de Reset y para los vectores de
interrupcin. La lista completa de vectores se muestra en la siguiente tabla. Esta
lista tambin determina los niveles de prioridad de las diferentes interrupciones.
La mayor prioridad tiene el vector de RESET y a continuacin el vector INT0 y as
sucesivamente.




30





Vector N

Direccin

Fuente

Definicin de la Interrupcin
1 0x000 RESET Cuatro fuentes de RESET
(*)

2 0x001 INT0 Interrupcin Externa Requerida 0
3 0x002 INT1 Interrupcin 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 Recepcin Completa USART
13 0x00C USART, UDRE Registro de datos vaco USART
14 0x00D USART, TXC Transmisin Completa USART
15 0x00E ADC Conversin Completa ADC
16 0x00F EE_RDY Memoria EEPROM lista
17 0x010 ANA_COMP Comparador Anlogo
18 0x011 TW1 Interfaz serial 2-wire
19 0x012 SPM_RDY Almacene Memoria de Programa Lista
CUADRO 1.4 FUENTES DE INTERRUPCIN 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 alimentacin est por debajo del nivel requerido para el
funcionamiento.
Reset externo.- Cuando un nivel bajo es ingresado en el pin RESET durante
ms de dos ciclos de XTAL.

31

Reset por Watchdog.- Si el watchdog est habilitado y su tiempo de
temporizacin expira antes de producirse la instruccin 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 ejecucin en la
direccin $000. En esta direccin debe colocarse una instruccin de salto RJMP
para ejecutar la rutina de comienzo de programa. A continuacin de la direccin
$000 y hasta la direccin $00d, se encuentran los vectores para las diferentes
interrupciones; pero si estos vectores de interrupcin no son utilizados puede
colocarse cdigo de programa en ellos.


















32

CAPTULO 2

COMUNICACIN SERIAL DEL ATMEGA 8

2.1 INTRODUCCIN
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 comunicacin entre otros dispositivos tales como otra
computadora, el mouse, impresora y para nuestro caso con los
microcontroladores.

Existen dos formas de intercambiar informacin binaria: paralela y serial.

La comunicacin paralela transmite todos los bits de un dato de manera
simultnea, por lo tanto la velocidad de transferencia es rpida, sin embargo tiene
la desventaja de utilizar una gran cantidad de lneas, por lo tanto se vuelve ms
costoso y tiene las desventaja de atenuarse a grandes distancias, por la
capacitancia entre conductores as como sus parmetros distribuidos.

2.2 TIPOS DE COMUNICACIONES SERIALES:
Existen dos tipos de comunicaciones seriales: sincrnica y asincrnica.

En la comunicacin serial sincrnica adems de una lnea sobre la cual se
transmitirn los datos, se necesita de una lnea la cual contendr los pulsos de
reloj que indicarn cuando un dato es vlido.

Ejemplos de este tipo de comunicacin son:

I2C
ONE WIRE
SPI
33


En la comunicacin serial asincrnica, no son necesarios los pulsos de reloj.

La duracin 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 carcter que se trasmite en forma
serial asincrnica.



FIG. 2.1 TRANSMISIN SERIAL ASINCRNICA

Normalmente cuando no se realiza ninguna transferencia de datos la lnea del
transmisor se encuentra en estado IDLE, esto quiere decir en estado alto.

Para iniciar la transmisin de datos, el transmisor coloca esta lnea en bajo
durante determinado tiempo, lo cual se le conoce como bit de arranque (start bit) y
a continuacin 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 ms 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 debern tener los mismos parmetros de
velocidad, paridad, nmero de bits del dato transmitido y de bit de parada.

34

En los circuitos digitales, cuyas distancias son relativamente cortas, se pueden
manejar transmisiones en niveles lgicos TTL (0-5V), pero cuando las distancias
aumentan estas seales tienden a distorsionarse debido al efecto capacitivo de
los conductores y su resistencia elctrica. El efecto se incrementa a medida que
se incrementa la velocidad de la transmisin. Esto origina que los datos recibidos
no sean iguales a los datos transmitidos, originndose un error en la transferencia
de datos.

Una de las soluciones ms lgica es aumentar los mrgenes de voltaje con que
se transmiten los datos, de tal manera que las perturbaciones a causa de la lnea
se pueden corregir.

2.2.1 LA COMUNICACIN 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 mecnica, los pines, las seales y los protocolos que debe
cumplir la comunicacin serial

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

Un 1 lgico es un voltaje comprendido entre 5v y 15v en el transmisor y
entre -3v y 25v en el receptor.
Un 0 lgico es un voltaje comprendido entre +5v y +15 v en el trasmisor y
entre +3v y +25 v en el receptor.

El envo de niveles lgicos (bits) a travs de cables o lneas de transmisin
necesita la conversin a voltajes apropiados. En los microcontroladores para
representar un cero (0) lgico se trabaja con voltajes inferiores a 0.8v, y para un
uno (1) lgico con voltajes mayores a 2.0V. En general cuando se trabaja con
35

familias TTL y CMOS se asume que un cero lgico es igual a cero voltios y un
uno lgico 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 dems circuitos integrados. Por lo tanto se necesita
de una interfaz que haga posible la conversin de los niveles de voltaje a los
estndares 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 seales digitales sobre una lnea 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 operacin, 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.

36

2.2.2 El BUS I2C (Inter IC)

Philips Semiconductors invent el bus de dos alambres I2C para comunicacin
entre ICs en 1980 y desde entonces se ha convertido en el bus serial estndar,
implementado en un gran nmero de circuitos integrados y con licencias
otorgadas a mas de 50 compaas con un total de 1000 dispositivos compatibles
I2C.

Originalmente especificado para 100 Kbits/s e intencionalmente para control
simple y seales de estado; el bajo costo, la versatilidad tcnica 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 funcin de desplazamiento del nivel de voltaje, en
modo High-speed (Hs-mode) ofrece una solucin ideal para los sistemas de
tecnologa mezclada, donde las altas velocidades y la variedad de voltajes (5V,
3V o menor) son comnmente usados.

El modo Hs es compatible con todos los sistemas existentes del bus I2C,
incluyendo el estndar original (S-mode) y el modo Fast (F-mode), actualizacin
introducida en 1992, proveyendo 400Kbits/s en transferencia. Sistemas de
diferente velocidad pueden ser mezclados fcilmente, con un dispositivo maestro
en modo Hs especialmente desarrollado, la conexin en paralelo es usada para
conectar las partes mas lentas del sistema. La comunicacin entre dispositivos se
puede realizar en el modo estndar y en el modo rpido si los dispositivos estn
unidos al mismo bus. El reloj determinar la velocidad de los datos. La interfaz
I2C emplea un protocolo amplio para asegurar una transmisin y recepcin de
datos fiable.

El bus I2C es usado en una gran variedad de microcontroladores y aplicaciones
de telecomunicaciones como en control, diagnstico y administracin de potencia.
La especificacin mejorada (modo rpido) esta tambin implementada en los pics.


37

2.2.2.1 Concepto del Bus I2C

El bus I2C soporta cualquier tipo de componente (NMOS, CMOS, Bipolar, etc).
Dos hilos fsicos uno de datos (SDA) y otro de reloj (SCL) transportan la
informacin 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 lneas SDA y
SCL desempean la funcin de cable en AND del bus.

Cada dispositivo es reconocido por una nica direccin (si es un microcontrolador,
LCD, memoria o teclado) y puede operar cualquiera como transmisor o emisor de
datos, dependiendo de la funcin del dispositivo. Un display es solo un receptor
de datos mientras que una memoria recibe y transmite datos. En funcin de que
enva 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 limitacin en la conexin de dispositivos al bus depende de la capacidad
mxima que no puede superar los 400 pF. Los tipos de transferencia de datos en
el bus son:

Modo Estndar aproximadamente a 100 KBits/s
Modo Rpido aproximadamente a 400 KBits/s
Modo Alta velocidad ms de 3.4 Mbits/s.
MICRO
LCD ADC MICRO
Resistencias de
PULL-UP
38


La interfaz I2C emplea un protocolo amplio para asegurar una transmisin y
recepcin de datos fiables.

Tanto la lnea de DATOS como la seal de Reloj SCL son bidireccionales
conectadas a una fuente de tensin positiva va suministro comn 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 lnea SDA deben ser estables cuando la lnea SCL est a nivel
1. El estado de la lnea SDA en 1 0 solo puede cambiar cuando en la lnea
SCL la seal es 0.

Dentro del proceso de transferencia de Datos, hay dos situaciones bsicas que
son:

39

INICIO (START): Una transicin de 1 a 0 (cada) en la lnea de datos SDA
mientras la lnea de reloj SCL est a 1. Sucede cuando un dispositivo maestro
hace ocupacin del bus, generando esta condicin.

PARADA (STOP): Una transicin de 0 a 1 (ascenso) en la lnea de datos SDA
mientras la lnea de reloj SCL esta a 1. Un dispositivo maestro puede generar
esta condicin dejando libre el bus.

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

El bus I2C se considera ocupado despus de la condicin de inicio. El bus se
considera libre de nuevo despus de un cierto tiempo tras la condicin de Stop.
Es decir, al pulso 1 de la lnea SCL le puede corresponder un pulso 0 1 de
la lnea SDA en funcin de la informacin que se enve, recordemos que a cada
bit de SDA le corresponde un bit de SCL, pero nunca, salvo en la condicin de
Inicio a un bit de SCL le corresponde una situacin de 1 a 0 o sea pasa por dos
estados la lnea SDA, al revs ocurre en la condicin de Stop que el master enva
un bit a la lnea SCL mientras cambia en la SDA de 0 a 1 durante el tiempo
que esta enviando la seal de 1 a SCL.

2.2.2.3 Transferencia de Datos:





FIG. 2.5 TRANSFERENCIA DE DATOS



40




El nmero de bytes que se enven a la lnea SDA no tiene restriccin. 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 ms peso precedido por el bit de reconocimiento (ACK).

El transmisor desbloquea la lnea SDA 1 durante el pulso de reconocimiento. El
receptor debe poner a 0 la lnea 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
despus de que cada byte ha sido recibido. Cuando un dispositivo esclavo no
genera el bit ACK, debe mantener la lnea SDA a nivel 1 durante el bit ACK.
entonces el master genera una condicin de STOP abortando la transferencia de
datos repetir la condicin de INICIO.

Si un esclavo receptor que est direccionado no desea recibir ms bytes (el
esclavo no genera el bit ACK en el primer byte que sigue), el master debe
detectar la situacin y no enviar ms bytes. El esclavo pone la lnea SDA a 1 lo
que es detectado por el master el cual genera la condicin 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 lnea
SCL a 0 lo que fuerza al Master a permanecer en un estado de espera. Los
datos continan transfirindose cuando el dispositivo esclavo est listo para otro
byte de datos y desbloquea la lnea 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 lnea SDA generando el master la
condicin de STOP de INICIO.

41

Sin embargo, si un master todava desea comunicarse con el bus, puede generar
repetidamente condiciones de Start y direccionar a otro esclavo sin generar
primero la condicin de Stop.

Todos los Master generan su propia seal de reloj sobre la lnea SCL al transferir
datos sobre el Bus I2C. Los bits de datos son solo vlidos durante los perodos 1
del reloj.

2.2.2.4 Definiciones bsicas del Bus I2C:

Maestro (Master): El dispositivo que inicia una transferencia, genera las seales
de reloj y termina un envo de datos. Las seales de reloj de un master solo
pueden ser alteradas cuando la lnea de reloj sufre una cada 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 configuracin
obtenida se denomina "multi-maestro".

Los master son generalmente microcontroladores, stos pueden ser unas veces
master y otros esclavos. Si uno o ms microcontroladores se conectan al bus
pueden iniciar el envo de datos al mismo tiempo produciendo un caos, para
prevenir esto se ha desarrollado un sistema de arbitraje.

Un master puede iniciar una transmisin solo si el bus est libre. Dos o ms
master pueden generar una condicin de Inicio en el bus, lo que da como
resultado una condicin de inicio general. Cada master debe comprobar si el bit
de datos que transmite junto a su pulso de reloj, coincide con el nivel lgico en la
lnea de datos SDA.

Esclavo (Slave): Cualquier dispositivo conectado al bus incapaz de generar
pulsos de reloj. Reciben seales de comando y de reloj provenientes del
dispositivo maestro.

42

Sincronizacin: Procedimiento para sincronizar las seales del reloj de dos o
ms dispositivos.

La sincronizacin del reloj se realiza mediante una conexin AND de todos los
dispositivos del Bus a la lnea SCL. Esto significa que una transicin de un Master
de 1 a 0 en la lnea SCL hace que la lnea pase a 0, esto mantiene la lnea
SCL en ese estado. Sin embargo, la transicin de 0 a 1 no cambia el estado de
la lnea SCL si otro reloj est todava en su periodo de 0.

Por lo tanto la lnea SCL permanecer a 0 tanto como el perodo ms largo de
cualquier dispositivo cuyo nivel sea 0. Los dispositivos que tienen un perodo
ms corto de reloj 0 entran en un perodo de espera.

Cuando todos los dispositivos conectados al bus han terminado con su perodo
0, la lnea 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 lnea
SCL, y todos los dispositivos empiezan a nivel 1. El primer dispositivo que
completa su nivel 1 pone nuevamente la lnea SCL a 0.

Resumiendo, la sincronizacin de la lnea SCL se genera a travs de la seal a
0 por el dispositivo con el ms largo perodo de nivel a 0 y la seal a 1por el
dispositivo con el ms corto periodo de nivel a 1

Arbitraje: Procedimiento que asegura que si uno o ms master simultneamente
deciden controlar el Bus solo uno es permitido a controlarlo y el mensaje saliente
no es deteriorado.

El sistema de arbitraje acta sobre la lnea de datos SDA, mientras la lnea SCL
est a nivel 1, de una manera tal que el master que transmite un nivel 1, pierde
el arbitraje sobre otro master que enva un nivel 0 a la lnea de datos SDA. Esta
situacin contina hasta que se detecte la condicin de Stop generada por el
master que se hizo cargo del bus.

43

Tras el arbitraje los master perdedores se deben poner inmediatamente en modo
Master-Receptor y esclavo pues los datos que enve 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 cdigos de direccin, no existen master centrales, ni existen rdenes
prioritarias en el bus.

Si en una transferencia de datos, el procedimiento de arbitraje est todava en
proceso justo cuando se enva al bus una condicin de Stop, el master afectado
debe mandar cdigos de Inicio o Stop.

Bus Desocupado (Bus Free): Estado en el cual ambas lneas (SDA y SCL)
estn inactivas, presentando un estado lgico alto. nicamente en este momento
es cuando un dispositivo maestro puede comenzar a hacer uso del bus.

Formato de Datos (Data Format): Despus de la condicin de Start un cdigo de
direccin es enviado, sta direccin tiene 7 bits seguidos por un octavo, ste
cdigo corresponde a una direccin R/W (0- indica transmisin/1- indica solicitud
de datos).

Una transferencia de datos siempre acaba con una condicin de Stop generado
por el master, sin embargo si un master todava desea comunicarse con el bus,
puede generar repetidamente condiciones de Start y direccionar a otro esclavo sin
generar primero la condicin de Stop.

Varias combinaciones de lectura y escritura son posibles dentro de una misma
transferencia de datos.




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 direccin.

2. Master lee a un esclavo inmediatamente despus 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 an generado por el esclavo. La condicin de Stop es
generada por el master, el cual ha enviado previamente un no- reconocimiento.

3. Formato combinado: Durante un cambio de direccin dentro de una
transferencia, la condicin de Start y la direccin del esclavo son ambos
repetidos, pero con el bit R/W invertido. Si un Master-receptor enva una
condicin repetida de Start, el esclavo previamente ha enviado un no-
reconocimiento.

Direccin (Address): El procedimiento de direccin para el Bus I2C es tal que, el
primer byte despus de la condicin de Start usualmente determina qu esclavo
ha sido seleccionado por el Master. La excepcin se da en la llamada general
(0000 0000) con la que se direcciona a todos los dispositivos, cuando esta
direccin es usada todos los dispositivos en teora deben responder con un
reconocimiento (A), sin embargo algunos dispositivos pueden estar condicionados
45

a ignorar esta direccin. El segundo byte de la llamada general define entonces
la accin a tomar.

2.2.2.5 Formatos de direccin:

Hay dos formatos de direccin:

El ms simple es el formato de 7-bit con un bit R/W que permite direccionar hasta
128 dispositivos, que en la prctica se reduce a 112 debido a que las restantes
direcciones son de uso reservado.

El ms 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 direccin
de 10-bit.

El direccionamiento de 10-bit, permite usar hasta 1024 direcciones adicionales
para prevenir problemas con la localizacin de direcciones esclavas cuando el
nmero de dispositivos I2C se expande rpidamente. Esto no cambia el formato
de direcciones definido en la especificacin del bus I2C, usando direcciones
reservadas en la especificacin 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 direccin del esclavo y el octavo bit
determina la direccin del mensaje. Un 0 en el octavo bit significa que el master
escribir informacin en el esclavo seleccionado y un 1 en el octavo bit significa
que el Master leer informacin del esclavo.

Cuando un Master enva una direccin despus de la condicin de Inicio cada
dispositivo comprueba los siete primeros bits de la direccin con la suya propia. El
46

que coincida se considera el dispositivo direccionado por el Master siendo un
esclavo-receptor esclavo-emisor dependiendo del bit R/W.

Una direccin puede tener una parte fija y otra programable. Con lo que se
pueden conectar dispositivos idnticos 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 direccin de 7 bits.
El octavo bit (el menos significativo LSB) enviado durante la operacin de
direccionamiento corresponde al bit que indica el tipo de operacin a realizar. Si
este bit es alto el dispositivo maestro lee informacin proveniente de un
dispositivo esclavo. En cambio, si este bit fuese bajo el dispositivo maestro
escribe informacin en un dispositivo esclavo.

2.2.3 INTERFAZ PERIFRICA SERIAL (SPI)

2.2.3.1 Introduccin
La Interfaz Perifrica Serial (SPI), un subsistema serial independiente de
comunicaciones, permite a la MCU comunicarse sincrnicamente con dispositivos
perifricos, tales como:
- Sintetizadores de frecuencia
- Drivers de display de cristal lquido (LCD)
- Subsistemas convertidores de analgico a digital(A/D)
- Otros microprocesadores
- Reloj en tiempo real

La Interfaz Perifrica Serial es tambin capaz de establecer comunicaciones entre
procesadores en un sistema con mltiples maestros. El sistema SPI puede ser
configurado como un dispositivo maestro o como uno esclavo. Cuando la
configuracin es como maestro, la transferencia de datos puede ser tan alta como
47

una proporcin de un medio de los ciclos del reloj (1.5Mbps a 3MHz de la
frecuencia del bus) Cuando la configuracin es como esclavo puede ser tan
rpida como la razn del reloj (3Mbps para una frecuencia de bus de 3MHz).

2.2.3.2 Descripcin funcional
La Comunicacin SPI usa un modelo Maestro / Esclavo y tpicamente tiene tres
lneas: lnea de entrada de datos, lnea de salida de datos y la lnea de reloj. Las
seales elegidas del chip se utilizan para direccionar los distintos esclavos del bus
Figura 2.7.

FIG. 2.7 CONFIGURACION DEL SISTEMA MAESTRO - ESCLAVO

Los bits de datos estn cambiando entrada / salida MSB primero. A menudo los
datos estn cambiando simultneamente fuera del pin de salida y dentro del pin
de entrada. La interfaz SPI define solamente las lneas de comunicacin y el reloj,
otros parmetros varan 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
simultneamente. Una lnea de reloj serial sincroniza el muestreo y el corrimiento
de la informacin en dos lneas seriales de datos.

Una lnea de seleccin de esclavo permite una seleccin individual de un
dispositivo esclavo del SPI; los dispositivos esclavos que no estn seleccionados
no hacen interferencia con el SPI y sus funciones. Sobre un dispositivo maestro
48

del SPI, la lnea seleccionadora puede opcionalmente ser usada para indicar un
conflicto de buses de mltiples 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 idnticas para el dispositivo maestro del
SPI y para el dispositivo esclavo con el que est comunicndose. 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 lnea SS- puede ser negada y reactivada entre
cada byte serial sucesivo, tambin si el esclavo escribe datos al registro de datos
del SPI (SPDR) cuando SS es bajo, resulta una colisin de error de escritura.

Cuando CPHA igual a 1, la lnea SS- puede permanecer baja entre las sucesivas
transferencias.

2.2.3.5 Seales 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 lnea de salida del SPI debe tener su bit correspondiente en 1 en el
registro de direccin de datos DDRD. Si el bit del DDRD est en 0, esa lnea est
desconectada de la lgica del SPI y se convierte en una entrada de intencin
49

general. Todas las lneas de entrada estn 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 lnea 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 lnea MOSI medio ciclo antes del final del flanco de
reloj que usa el dispositivo esclavo para tomar el dato.

Las lneas MISO y MOSI son seales 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 lneas MISO y MOSI. Los
dispositivos maestro y esclavo son capaces de cambiar un byte de informacin
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 perifrico serial (SPCR). Ambos, el maestro y el
esclavo deben operar con la misma tasa de bits. Los bits de seleccin 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 operacin del SPI.

Seleccin esclavo (SS-)
La entrada de seleccin 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
duracin de la transaccin.

50

La lnea 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 perifrico
serial (SPSR).

Para deshabilitar el modo de fallas del circuito, escribir 1 en el bit 5 del registro de
direccin de los datos del puerto D. Esto har que la terminal SS- acte como una
salida de intencin 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 lneas
estarn dedicadas al SPI siempre que la interfaz serial est funcionando.

El estado de los bits CPHA del maestro y del esclavo afectan la operacin de SS-.
Los bits CHPA deben de estar colocados idnticamente 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 lnea 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 mltiple sistema maestro donde ms de un
dispositivo del SPI trata de ser el maestro. Este error es llamado modo de falla.
- El segundo tipo de error, colisin 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 contencin entre dos terminales. Para drivers push-pull
CMOS, esta contencin puede causar dao permanente. El mecanismo de falla
de modo intenta proteger el equipo mediante la deshabilitacin de los drivers.

51

El bit de control MSTR y los cuatro bits de control del registro DDRD asociados al
SPI son puestos a 0 y una interrupcin 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 dao de los drivers. Si
dos dispositivos estn hechos maestros al mismo tiempo, el modo de falla no
ayuda a la proteccin de ellos, a menos que uno de ellos seleccione al otro a ser
esclavo. La cantidad de dao posible depende de la longitud del tiempo que
ambos dispositivos intenten actuar como maestros.

Una colisin de escritura ocurre si el SPDR es escrito cuando una transferencia
est en progreso. Porque la SPDR no est doblemente almacenada en la
direccin de transmisin, una escritura a SPDR causa que los datos sean escritos
directamente dentro del registro de corrimiento del SPI.

La configuracin SPI determina las caractersticas 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 estn transfirindose desde el registro de
corrimiento al registro de datos paralelo, pero la transferencia esta an activa
hasta que SS va a alto.

Para un esclavo con CHPA = 1, la transferencia inicia cuando la lnea 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 perifrico serial (SPCR)
Registro de estado perifrico serial (SPSR)
Registro de datos perifrico serial (SPDR)
52

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

Registro de control perifrico 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 PERIFRICO SERIAL

SPIE: Bit para habilitar las Interrupciones por el SPI.
Poner el bit SPIE a 1 para pedir una secuencia de interrupcin de hardware cada
vez que la bandera SPIF o la MODF se haga 1.Las interrupciones del SPI estn
inhabilitadas si este bit es puesto a 0 o si el bit I del registro CCR es 1
0 = Sistema de interrupcin del SPI deshabilitado
1 = Sistema de interrupciones del SPI habilitado

SPE: Bit para Habilitar la Interfaz Serial Perifrica
Cuando el bit SPE est en 1, las terminales 2, 3, 4 y 5 del puerto D estn
dedicados a la funcin 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 Perifrica SPI
1 = Habilitar la Interfaz Serial Perifrica 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 lneas que estn manejando por drenaje abierto.
0 = Salidas normales CMOS
1 = Salidas de drenaje abierto

MSTR: Bit de seleccin del modo Maestro
0 = Modo Esclavo
1 = Modo Maestro

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 conjuncin 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 perifrico 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 PERIFRICO SERIAL

SPIF: Bandera de Interrupcin del SPI por transferencia Completa
SPIF se hace 1 al trmino 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 perifrica
serial genera una interrupcin. Para limpiar el bit SPIF, leer el SPSR con el SPIF
en 1, entonces accesar al SPDR. A menos que el SPSR sea ledo primero (con
SPIF en 1), todo intento de escribir a SPDR queda inhabilitado.

WCOL: Bit de Colisin 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 colisin de escritura
1 = Hubo colisin de escritura
54

Bit 5 y Bits [3:0]: No implementados
Siempre se leern como 0.

MODF: Bit de indicacin 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 perifrico 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 PERIFRICO SERIAL

El SPDR es usado cuando transmitimos o recibimos datos en el bus serial.
Solamente con escribir a este registro iniciamos la transmisin o la recepcin de
byte, y esto slo 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 prdida y la prdida del byte que caus la prdida, primero SPIF debe ser
limpiado antes que una segunda transferencia de datos desde el registro de
corrimiento al buffer de lectura sea iniciada.







55

CAPTULO 3
MDULO DE PRCTICAS Y FUNDAMENTOS BSICOS
DEL SOFTWARE
3.1 MDULO DE PRCTICAS
Para el diseo del Mdulo se tom en consideracin que ste debe servir como
una herramienta de desarrollo para el aprendizaje de los microcontroladores AVR,
en forma prctica, para lo cual el Mdulo consta de diversos dispositivos que en
combinacin 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 ms simples hasta proyectos ms complejos.

Los diversos dispositivos del Mdulo como son LCD, Teclado, etc., estn
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 sern descritos ms adelante para ser identificados.

3.2 CARACTERSTICAS DEL MDULO
Fuente de 5V.
LCD alfanumrico estndar de2 x 16 caracteres.
Teclado matricial de 4 x 4 teclas.
Conector serie RS232.
Reloj en tiempo real
Comunicacin I2C
Comunicacin 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.
56

El programador paralelo AVR consta de un buffer 74HC244 que sirve de interfaz
de comunicacin 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 seales
necesarias para el AVR ISP (programador) son MOSI, RESET, SCK Y MISO.

El mdulo consta de un conector DB9 hembra como entrada de programacin,
por lo tanto el cable de programacin tiene en el un extremo un conector DB9
macho y en el otro extremo un conector DB25 macho, adems el Programador
consta de un led indicador de transicin de datos y un pulsador de Reset con lo
que est listo para programar un microcontrolador, el diagrama esquemtico del
programador STK 200 / STK 300 se puede ver en la figura 3.1
FIG. 3.1 PROGRAMADOR ISP

3.2.2 FUENTE DE ALIMENTACIN
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 mdulo.

La fuente tiene un led el cual indica si la fuente est funcionando, la figura
muestra la fuente de alimentacin del Mdulo.
57











FIG. 3.2 FUENTE DE ALIMENTACIN

3.2.3 LCD ALFANUMRICO ESTNDAR DE 2 x 16 CARACTERES
LCD (Liquid Cristal Display) es un dispositivo microcontrolado de visualizacin
grfica para la presentacin de caracteres, smbolos o incluso dibujos (en algunos
modelos), en este caso dispone de 2 filas de 16 caracteres cada una y cada
carcter dispone de una matriz de 5 x 7 puntos (pixels), aunque los hay de otro
nmero de filas y caracteres.

En la tabla se indica la configuracin de los pines del LCD
PIN N SMBOLO DESCRIPCIN
1 Vss Tierra (GND)
2 Vdd Alimentacin de +5Vcc
3 Vo Contraste del cristal lquido. (0 a +5V.)
4 RS Seleccin del registro de control/registro de datos:
RS=0 Seleccin registro de control
RS=1 Seleccin registro de datos
5 R/W Seal de lectura/escritura:
R/W=0 Escritura (Read)
R/W=1 Lectura (Write)
6 E Habilitacin del mdulo
E=0 Mdulo desconectado
E=1 Mdulo conectado
7-14 D4 D7 Bus de datos bidireccional
1 3
2
V V
GND
IN OUT
78L05
U2
+
1000uF
C5 +
10uf
C6
JACK
JACK1 IN+
IN-
VCC
A
C
1
+
A
C
2
-
BRIDGE1
D12
330
R3
LED
D1
VDD
58


Mediante un potencimetro de contraste se aplica al LCD una tensin variable de
entre 0 y +5 Vcc. Con dicha tensin se consigue ajustar el contraste de los
caracteres de la pantalla, segn 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
seales de control (RS E) como se indica en la figura.




FIG. 3.3 CONEXIN 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 CONEXIN DEL
TECLADO
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 ocasin se bloquea o simplemente para
reiniciar un programa














FIG. 3.5 CONEXIN DEL RESET

3.2.6 RELOJ CALENDARIO EN TIEMPO REAL
Est basado en un integrado DS1307, diseado para conectar al Bus I2C,
dispone de un reloj en tiempo real que cuenta con segundos, minutos, horas,
fecha del mes, mes, da de la semana y ao, el cual est programado hasta el
ao 2100, adicionalmente tiene 56 bytes de RAM no voltil. El DS1307 es
alimentado por una batera de 3V de litio.
PC6(RESET)
1
PD0(RXD)
2
PD1(TXD)
3
PD2(INT0)
4
PD3(INT1)
5
PD4(XCK/T0)
6
VCC
7
GND
8
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
AVCC
20
AREF
21
GND
22
ATMEGA8
A1
RXD
TXD
MISO
MOSI
SCK
4.7k
R6
VCC
RESET
ADC0
ADC1
CS
DI
O1
O2
SW-PB
S1
60

SCL
SDA
X1
1
X2
2
SDA
5
SCL
6
SQW/OUT
7
VCC
8
GND
4
Vbat
3
DS1307
U9
32KHZ
XTAL1
3v
BT1
VCC
LED
D11
330
R19
VCC
330
R18
330
R17
10k
R20
10k
R21
VCC VCC

FIG. 3.6 CONEXIN DEL REAL TIME
3.3 FUNDAMENTOS BSICOS 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
programacin es uno de los ms fciles que se ha diseado; el nombre BASIC es
una abreviatura para: Begginers All-purpose Symbolic Instruction Code, indicando
simplemente que es un Lenguaje de programacin para principiantes. Esta
cualidad para principiantes ha identificado al Basic por largo tiempo, as que
muchos programadores con experiencia han evitado errneamente usar de l.
Sin embargo, a pesar del tiempo y todos los nuevos lenguajes de programacin,
Basic tiene un lugar envidiable con su muy extendido uso, razn por la cual el
lenguaje de programacin Basic se convierte en una herramienta de
programacin moderna, de gran alcance, y extensamente aceptada.
Es por esto que se menciona como una cualidad importante el uso del lenguaje
de programacin Basic en este programa.
Otra de las caractersticas del programa Bascom AVR es que ahora no es
necesario contar con un ensamblador para escribir el cdigo fuente y otro
paquete de software para comprobar y simular un programa, todo esto se lo
realiza con Basic; adems con todo el avance de la tecnologa, se han construido
microprocesadores con memorias tipo flash, con capacidad de programacin ISP
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 explicacin del comando bajo el cursor. Junto a la explicacin
de la sintaxis para cada comando, se encuentra un breve ejemplo para el
comando en particular. Podemos copiar este cdigo (ejemplo) al redactor si lo
queremos probar o utilizar.
62


FIG. 3.7 PANTALLA PRINCIPAL
Dentro de esta primera pantalla encontramos una presentacin tpica 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 inters conocer
la ayuda que nos brindan los siguientes iconos:


FIG. 3.8 ICONOS DEL BASCOM AVR

3.3.1 REVISIN DE LA SINTAXIS
El primer icono con una marca de visto realiza una revisin de los errores de
sintaxis del cdigo o programa fuente escrito, cuando se realiza esta accin,
ningn cdigo adicional es generado en este tiempo, salvo que se encuentre
algn error.

63

3.3.2 REVISIN DEL PROGRAMA
El siguiente icono (Chip) da comienzo al compilador del programa, esta accin de
compilar revisa errores de programacin, como por ejemplo que alguna variable
no est definida, o est mal definido, para realizar esta accin es necesario, que
no existan errores de sintaxis en el programa fuente. Cuando se realiza esta
accin 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












64

ARCHIVO DESCRIPCIN
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 COMPILACIN

Si ocurre un error, se recibir un mensaje de error en una caja de dilogo y la
compilacin terminar. El resto de los errores sern exhibidos en el fondo sobre
la barra de estado.

Cuando se da un click en la lnea con la informacin del error, se salta a la lnea
que contiene el error. El margen tambin exhibir la muestra. En la compilacin
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
compilacin (archivo de informe). En este informe se indica a ms de la
informacin bsica del sistema (versin 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
mecanografa y las direcciones en notaciones hexadecimal y decimal, y al final del
informe tambin se presenta un inventario de las constantes usadas y sus
valores.

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 ms opcin que volver a escribir el programa en
varias ocasiones hasta tener xito. Bascom nos brinda la posibilidad de reducir
drsticamente el nmero 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
automticamente 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 despus de compilar el
programa. Es importante tener esto presente, especialmente si a un archivo ya
compilado se le realiz algn 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
simulacin. En el men (OPTIONS SIMULATOR) El AVR Studio puede ser
cargado a Bascom-AVR.


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 simulacin, respectivamente, adems se puede
hacer la simulacin paso a paso STEP a travs del programa, o por las
subrutinas (Subrutinas, GOSUB, CALL) STEP OVER-BUTTON. Adems se
puede realizar la simulacin del programa solamente hasta cierta lnea,
seleccionndola previamente con el botn 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.
67

- Pulsando los botones INT0, INT1, TO, T1 y SER se puede simular una
interrupcin. Pueden desplegarse botones adicionales cuando el chip
utilizado tiene interrupciones adicionales.
- Con el botn ENABLE/DISABLE REAL HARDWARE SIMULATION se
habilita o deshabilita la simulacin 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 botn de simulacin de hardware LED se visualiza la siguiente
ventana, una caracterstica destacada del simulador es el emulador de displays
LCD, teclado y puertos como se observa en la fig. Permite incluso emular grficos
en el LCD realizados a medida.


FIG. 3.11 PANTALLA DE SIMULACION

3.3.5 PROGRAMADOR
El icono con la figura de un zcalo tipo ZIF, nos brinda la posibilidad de usar un
programador, dependiendo de la configuracin del programa Bascom; men
(OPTIONS PROGRAMER) podemos seleccionar 9 diferentes tipos de
programadores, ms uno externo, claro est que a este ltimo se lo debe disear
y construir. En este caso usamos el programador STK200 / STK300.

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 comunicacin va interfaz RS-232 con el
microcontrolador. El Emulador se encuentra en la barra de herramientas ( TOOLS
TERMINAL EMULATOR) o presionando Ctrl + T. Los parmetros de la
comunicacin pueden ser seleccionados o cambiados en el men (OPTIONS
COMMUNICATION)


FIG. 3.12 PANTALLA DE COMUNICACIN RS-232












69





TEM DESCRIPCIN
COM port Puerto de comunicacin que utiliza la PC para la comunicacin
con el terminal emulador.
Baud rate Es la velocidad en baudios que se va a usar.
Parity Paridad, por defecto es None
Data bits Nmero de bits de datos. Por defecto 8
Stop bits Nmero de bits de parada. Por defecto 1
Handshake Handshake usado, por defecto es None
Emulation Emulacin 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 COMUNICACIN 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
comunicacin entre la PC y el microcontrolador.













70

CAPTULO 4
PRUEBAS Y RESULTADOS

4.1 PRCTICA 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 envo 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 nmero 255 que va incrementando despus de 1
segundo.

En el Mdulo Didctico se debe tener cuidado en colocar el Switch 2P (J3) en la
posicin correcta, para deshabilitar el teclado y habilitar los leds en el puerto B del
microcontrolador.

En la figura 4.1 se presenta el diagrama esquemtico de esta prctica y el
programa correspondiente se lo puede revisar en los anexos adjuntos.
71

PC6(RESET)
1
PD0(RXD)
2
PD1(TXD)
3
PD2(INT0)
4
PD3(INT1)
5
PD4(XCK/T0)
6
VCC
7
GND
8
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
AVCC
20
AREF
21
GND
22
ATMEGA8
A1
RXD
TXD
D
1 2 3 4
8 7 6 5
9 0 A B
C E F
F1 F2 F3 F4 C1 C2 C3 C4
TECLADO
TL1
MISO
MOSI
SCK
4.7k
R6
VCC
RESET
VCC
ADC0
ADC1
CS
DI
O1
O2
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
LED
D10
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
1 2 3
SWITCH2P
J3
VCC
100
R4
0.1uF
C8
0.1uF
C7
VCC
SW-PB
S1

FIG. 4.1 CONTROL DE PUERTOS















72


4.2 PRCTICA 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 prctica genera un onda cuadrada por medio del temporizador del
ATMEGA8 tanto el tiempo en alto como en bajo mximo es de 0.5 segundos o
500msegundos este tiempo puede ser variable por medio del potencimetro.

Tiempo = K * R *Prescaler

Donde: K = 1 / Frecuencia del cristal
R = Resolucin 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 prctica
trabajamos con el TIMER 1 que es de 16 bits por lo que su resolucin es 65535,
la frecuencia del cristal es de 1MHz y escogimos el valor de 8 en el prescaler.




73

4.3 PRCTICA 3 MANEJO DEL LCD

4.3.1 Objetivos
Familiarizarnos con el mdulo didctico y el software de programacin
BASCOM
Aprender a configurar el LCD.

4.3.2 Desarrollo
Programa para realizar el manejo del LCD; Visualiza en la primera fila Esc
Politcnica despus de 1 segundo visualiza en la segunda fila Nacional y despus
de 1 segundo rota 16 caracteres a la izquierda todo el mensaje, despus 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
VCC
7
GND
8
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
AVCC
20
AREF
21
GND
22
ATMEGA8
A1
RXD
TXD
MISO
MOSI
SCK
4.7k
R6
VCC
RESET
VCC
ADC0
ADC1
GND
VCC
GND
VCC
CS
DI
O1
O2
10K
R2
100
R4
0.1uF
C8
0.1uF
C7
VCC
G
n
d
V
c
c
C
t
r
s
R
s
R
/
w
ED
b
0
D
b
1
D
b
2
D
b
3
D
b
4
D
b
5
D
b
6
D
b
7
AK
DISPLAY DE CRISTAL LIQUIDO
LCD
LCD1
SW-PB
S1


FIG. 4.2 MANEJO DEL LCD

74

4.4 PRCTICA 4 ADQUISICIN DE DATOS

4.4.1 Objetivos
Aprender a configurar el teclado.
Realizar la adquisicin de datos utilizando el teclado y visualizando en el
LCD.

4.4.2 Desarrollo
Programa para ingreso de una clave de 5 dgitos 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 posicin
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
VCC
7
GND
8
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
AVCC
20
AREF
21
GND
22
ATMEGA8
A1
RXD
TXD
D
1 2 3 4
8 7 6 5
9 0 A B
C E F
F1 F2 F3 F4 C1 C2 C3 C4
TECLADO
TL1
MISO
MOSI
SCK
4.7k
R6
VCC
RESET
VCC
ADC0
ADC1
GND
VCC
GND
VCC
CS
DI
O1
O2
10K
R2
100
R4
0.1uF
C8
0.1uF
C7
VCC
G
n
d
V
c
c
C
t
r
s
R
s
R
/
w
ED
b
0
D
b
1
D
b
2
D
b
3
D
b
4
D
b
5
D
b
6
D
b
7
AK
DISPLAY DE CRISTAL LIQUIDO
LCD
LCD1
SW-PB
S1

FIG. 4.3 ADQUISICIN DE DATOS

75

4.5 PRCTICA 5 COMUNICACIN SERIAL RS 232

4.5.1 Objetivos
Aprender a configurar los ADCS.
Usar el sensor de temperatura LM35
Verificar la comunicacin serial RS 232 entre el Mdulo y la computadora

4.5.2 Desarrollo

Para realizar la lectura de los ADCS y realizar la comunicacin serial primero
tomamos una muestra con el sensor de temperatura LM35 y este valor lo
convertimos a grados centgrados usando uno de los ADCS, despus usando el
potencimetro 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
VCC
7
GND
8
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
AVCC
20
AREF
21
GND
22
ATMEGA8
A1
RXD
TXD
MISO
MOSI
SCK
4.7k
R6
VCC
RESET
VCC
ADC0
ADC1
CS
DI
O1
O2
100
R4
0.1uF
C8
0.1uF
C7
VCC
SW-PB
S1
VCC
ADC1
5K
R1
V
s
1
VOUT
2
G
N
D
3
LM35
U1
VCC
ADC0


FIG. 4.4 COMUNICACIN SERIAL RS-232


76

4.6 PRCTICA 6 COMUNICACIN I2C

4.6.1 Objetivos
Aprender a configurar el Real Time DS1307
Verificar la comunicacin serial I2C entre el microcontrolador Atmega 8 y el
Real Time DS1307
4.6.2 Desarrollo
Programa para realizar la comunicacin I2C con el real time DS1307 primero
igualamos el real time con la fecha 25 de Octubre de 2005 hora 12:00:00 y
despus realizamos la lectura de este visualizndolo en el LCD, realizando un
reloj digital que mantiene la hora y fecha cuando se desconecta la energa.

PC6(RESET)
1
PD0(RXD)
2
PD1(TXD)
3
PD2(INT0)
4
PD3(INT1)
5
PD4(XCK/T0)
6
VCC
7
GND
8
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
AVCC
20
AREF
21
GND
22
ATMEGA8
A1
RXD
TXD
MISO
MOSI
SCK
4.7k
R6
VCC
RESET
VCC
ADC0
ADC1
SCL
SDA
CS
DI
O1
O2
100
R4
0.1uF
C8
0.1uF
C7
VCC
X1
1
X2
2
SDA
5
SCL
6
SQW/OUT
7
VCC
8
GND
4
Vbat
3
DS1307
U9
32KHZ
XTAL1
3v
BT1
VCC
LED
D11
330
R19
VCC
330
R18
330
R17
10k
R20
10k
R21
VCC VCC
SW-PB
S1

FIG. 4.5 COMUNICACIN I2C


77


4.7 PRCTICA 7 COMUNICACIN SPI

4.7.1 Objetivos
Usar motores paso a paso
Verificar la comunicacin 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 comunicacin SPI. El
motor gira en sentido horario con un mensaje en el LCD que indica que
presionando el nmero 4 del teclado matricial el motor gira indefinidamente a la
izquierda, o si se presiona el nmero 6 el motor gira indefinidamente a la derecha
o si se presiona el nmero 5 cuando el motor est girando se para hasta darle una
nueva orden.



























78




CONCLUSIONES Y RECOMENDACIONES


El Mdulo Didctico basado en el microprocesador ATMEGA 8 es una
herramienta de aprendizaje prctica, eficaz y muy confiable, que con el
desarrollo de las prcticas va mostrando progresivamente las
caractersticas bsicas del microcontrolador as como tambin las
facilidades que nos ofrece el software que se utiliza para la elaboracin de
proyectos.

El software de programacin 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 diseo y la implementacin de las comunicaciones seriales
I2C y SPI y se comprob el funcionamiento de los dos tipos de
comunicaciones, con sendas prcticas de fcil entendimiento, quedando
as demostrado el funcionamiento de este tipo de comunicaciones.

Con este Mdulo Didctico se mejora el equipamiento en el rea de
laboratorios de la ESFOT con un equipo de aprendizaje que brinda al
estudiante acceso a tecnologas innovadoras y recientes para mejorar su
capacitacin.





79





REFERENCIAS BIBLIOGRFICAS


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/








80




ANEXOS:

Glosario de trminos

7 Programas usados en las prcticas para probar el correcto
funcionamiento del Mdulo Didctico para el Microcontrolador
Atmega 8.

Diagrama esquemtico del circuito del Mdulo Didctico para el
Microcontrolador Atmega 8.

Manual del usuario















81


GLOSARIO DE TERMINOS GLOSARIO DE TERMINOS GLOSARIO DE TERMINOS GLOSARIO DE TERMINOS
ADC o A/D CONVERTER ( ADC o A/D CONVERTER ( ADC o A/D CONVERTER ( ADC o A/D CONVERTER (Convertidor analgico/digital Convertidor analgico/digital Convertidor analgico/digital Convertidor analgico/digital).- Dispositivo o circuito
electrnico que convierte una entrada analgica en una seal digital.
ALU (Arithmetic Logic Unit).- Unidad Lgica Aritmtica.- Bloque interno de la CPU
de un sistema microprocesador, que tiene como objetivo realizar una serie de clculos
bsicos 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 cdigo ensamblado para un procesador concreto, en una lista
de instrucciones de mquina 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 Tecnologa (NTH).

BASCOM-AVR.- Es un compilador de BASIC para la familia AVR de ATMEL,
desarrollado por la empresa Holandesa MCS Electronic.
BAUDIO.- Nmero de veces por segundo en que puede cambiar el nivel de una seal
digital para enviar un pulso. En seales binarias, el nmero 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 Elctricamente

I2C (Inter-Integrated Circuit).- Tipo de comunicacin serial, que usa dos alambres para
la comunicacin entre Circuitos Integrados.

ISP (In-System Programmable).- Programable en Sistema

LANGUAGE BASIC.- desarrollado como lenguaje para entrenamiento y representacin
de algoritmos. Es el lenguaje de alto nivel ms extendido entre los ordenadores domsticos
y personales por su facilidad de aprendizaje.
82

LCD (Liquid Crystal Display).- Visualizador de cristal lquido.
PWM (Pulse Width Modulation).- Modulacin por Amplitud de Impulsos

RISC (Reduced Instruction Set Computer). - Computadores de Juego de Instrucciones
Reducido

RS-232 (Recommended Standard 232).- Estndar de comunicaciones desarrollado por la
Electronic Industries Association (EIA).

RX.- Receptor

SPI (Serial Peripheral Interface).- La Interfaz Perifrica Serial es un subsistema de
comunicaciones serial independiente, que permite comunicacin sincrnica de dispositivos
perifricos con dispositivos maestros (CPU o MCU, etc.)

SRAM (Random Access Memory STATIC).- Memoria de Acceso Aleatorio Esttica

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 sincrnico/asincrnico universal, utilizado frecuentemente
para convertir los datos en paralelo de un procesador en datos serie para realizar
una transmisin.




















83






84


1
1
2
2
3
3
4
4
5
5
6
6
D D
C C
B B
A A
Title
Number Revision Size
C
Date: 26/07/2006 Sheet of
File: C:\CRISS\..\Modulo_Atmega8.Sch DrawnBy:
PC6(RESET)
1
PD0(RXD)
2
PD1(TXD)
3
PD2(INT0)
4
PD3(INT1)
5
PD4(XCK/T0)
6
VCC
7
GND
8
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
AVCC
20
AREF
21
GND
22
ATMEGA8
A1
VCC
VCC
V
C
C
1
6
V+
2
V-
6
C1+
1
C1-
3
C2+
4
C2-
5
G
N
D
1
5
TTL-IN1
11
TTL-IN2
10
RS-OUT1
14
RS-OUT2
7
RS-IN1
13
RS-IN2
8
TTL-OUT1
12
TTL-OUT2
9
MAX232
U3
+
1uF
C2
+
1uF
C1
+
1uF
C4
+
1uF
C3
1G
1
A1
2
1Y1
18
A2
4
1Y2
16
A3
6
1Y3
14
A4
8
1Y4
12
2G
19
B1
11
2Y1
9
B2
13
2Y2
7
B3
15
2Y3
5
B4
17
2Y4
3
74F244
U4
100k
R7
100nF
C9
DIODE
D13
VCC
RESET
MISO
MOSI
SCK
TXD
RXD
RXD
TXD
D
1 2 3 4
8 7 6 5
9 0 A B
C E F
F1 F2 F3 F4 C1 C2 C3C4
TECLADO
TL1
MISO
MOSI
SCK
4.7k
R6
VCC
RESET
VCC
ADC0
ADC1
VCC
ADC1
V
s
1
VOUT
2
G
N
D
3
LM35
U1
VCC
ADC0
GND
VCC
GND
VCC
SCL
SDA
1 3
2
V V
GND
IN OUT
78L05
U2
+
1000uF
C5 +
10uf
C6
JACK
JACK1 IN+
IN-
VCC
i Layout Directive
i Layout Directive
CS
DI
O1
O2
O
1
O
2
S
D
A
D
O
C
L
K
S
C
L
1
2
3
CON3
J1
1
2
3
4
5
6
7
8
CON8
J2
A
C
1
+
A
C
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
LED
D10
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
1 2 3
SWITCH2P
J3
VCC
100
R4
0.1uF
C8
0.1uF
C7
VCC
X1
1
X2
2
SDA
5
SCL
6
SQW/OUT
7
VCC
8
GND
4
Vbat
3
DS1307
U9
32KHZ
XTAL1
3v
BT1
VCC
LED
D11
330
R19
VCC
330
R18
330
R17
10k
R20
10k
R21
VCC VCC
330
R3
LED
D1
LED
D2
330
R8
VCC
QB
1
QC
2
QD
3
QE
4
QF
5
QG
6
QH
7
GND
8
SQH
9
SRCLR
10
SRCLK
11
RCLOCK
12
G
13
SERIN
14
QA
15
VCC
16
74HC595
U7
VCC
VCC
GND
IN1
1
IN2
2
IN3
3
IN4
4
IN5
5
IN6
6
IN7
7
IN8
8
DIODECLAMP
10
OUT8
11
OUT7
12
OUT6
13
OUT5
14
OUT4
15
OUT3
16
OUT2
17
OUT1
18
ULN2803A(18)
U8
VCC
1
2
3
4
5
6
7
8
9
10
CON10
J5
VCC
DI
CS
CLK
DO
1 2 3 4 5 6
SWITCH2P 2C
J4
VDD
G
n
d
V
c
c
C
trs
R
s
R
/w
ED
b
0
D
b
1
D
b
2
D
b
3
D
b
4
D
b
5
D
b
6
D
b
7
AK
DISPLAYDECRISTALLIQUIDO
LCD
LCD1
SW-PB
S1


85





86

MANUAL DEL USUARIO


INFORMACIN IMPORTANTE DE SEGURIDAD:

Como cualquier producto electrnico estas precauciones tienen que ser observadas al usar
este producto.

- El rango de temperatura de operacin del microcontrolador interno es de -55C a
+125C, pero el circuito no se debe exponer a temperaturas que puedan daar el
material de la caja (acrlico) o a elementos delicados como el Lcd adems es muy
importante tener cuidado en la manipulacin del mdulo, para evitar golpes o rupturas
del material.

- No exponga al mdulo al contacto con lquidos o a la humedad

- Al circuito se lo alimenta con un adaptador que suministra un voltaje de 12 V,
internamente el mdulo cuenta con un circuito que evita una polarizacin inversa por
error, y adems reduce este voltaje a 5Vdc. Utilice adaptadores con las mismas
caractersticas indicadas en este manual.

- El circuito cuenta con un integrado DS1307 que es, alimentado por una batera de litio
de 3 voltios, esta batera debe ser cambiada cada tres aos.

- Para el correcto funcionamiento del mdulo, asegurese que todos los cables de
comunicacin estn correctamente conectados y en el lugar correcto.























87

DESCRIPCIN DEL MDULO

Este manual describe las funciones bsicas y el modo de funcionamiento del Mdulo
Didctico para el Microcontrolador Atmega 8.

1. Mdulo











































88





















PANEL SUPERIOR











1. Led indicador de encendido.- Indica que el mdulo esta en funcionamiento.
2. Led indicador de programacin.- Se enciende en el momento en el que se esta
realizando la grabacin del programa en la memoria flash del microcontrolador.
3. Interruptor 1.- Con este interruptor se escoge el tipo de comunicacin que se va a
realizar, dependiendo de la prctica que se desee, puede ser comunicacin SPI o I2C.
4. Potencimetro 1.- Para realizar la conversin Analgica Digital.











1
2
3
A
4
5
6
B
7
8
9
C
*
0

89


PANEL FRONTAL































5. LCD (Display de Cristal Lquido).
6. Teclado matricial 4 x 4.
7. Interruptor 2.- Este interruptor habilita o deshabilita al teclado o al juego de leds, para
realizar la prctica.
8. Led indicador del reloj.- Indica la frecuencia a la que esta oscilando el reloj interno del
Mdulo.
9. Potencimetro 2.- Este potencimetro regula el contraste del LCD.
10. Sensor de temperatura LM35.








1 2 A
4 5 6 B
7 8 9 C
* D D
90



















PANEL POSTERIOR
























11. Conector para la comunicacin serial SPI.
12. Conector para la comunicacin 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.
91


2. Un cable programador (DB9 DB25)






















3. Un cable para la comunicacin RS-232 (DB9 DB9)





















4. Un motor Paso a paso con su conector


92























5. Un adaptador TECH, modelo AD-1200F























Como un paso previo a utilizar el mdulo, es necesario que el estudiante tenga editado y
compilado en el programa BASCOM, el programa que desea probar.

1
93

USO DEL MODULO

- Para comenzar a utilizar el mdulo, conecte el plug del adaptador en el conector de
voltaje (16) y encienda el mdulo (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 opcin RUN
PROGRAMMER, en ese momento se encender el led indicador de programacin, 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
perifricos del mdulo.
Estos pasos son los mismos para cualquier programa que se desee probar, a continuacin
se explicara los pasos adicionales necesarios para cada una de las prcticas desarrolladas.

PRCTICA NOMBRE PASO 1 PASO 2
1
Encendido secuencial de LEDS. Coloque el interruptor 2 en la
posicin LEDS.
-
2
Manejo de temporizadores. - -
3
Manejo del LCD. Con el potencimetro 2,
regule el contraste del LCD.
-
4
Adquisicin de datos. Coloque el interruptor 2 en la
posicin TECLADO.
Con el potencimetro 2,
regule el contraste del LCD.
5
Comunicacin serial RS-232. Conecte el cable de
comunicacin RS-232.
Encere el potencimetro 1.
6
Comunicacin I2C. Coloque el interruptor 1 en la
posicin I2C.
-
7
Comunicacin SPI. Conectar el motor paso a paso
en el conector de la
comunicacin serial SPI.
Coloque el interruptor 1 en
la posicin SPI.

También podría gustarte