Vous êtes sur la page 1sur 8

PRACTICA No. 5

LABORATORIO DE SISTEMAS MICROPROCESADOS

Tema: Programación de los microcontroladores atmel mega 16 (Implementación del hardware)

1.- Objetivo:

Implementar un circuito en hardware que permita sumar o restar 2 números utilizando

el microcontrolador ATMEL MEGA 16.

2.- Marco Teórico

Características del microprocesador Atmega16

El ATmega16 es un microcontrolador de 8 bits y de bajo consumo de potencia, basado en la arquitectura AVR RISC, capaz de ejecutar un millón de instrucciones por segundo, posee bajo consumo de potencia contra velocidad de procesamiento. El voltaje de alimentación puede variar en 4.5 y 5.5V. Presenta una memoria volátil en donde están los 32 registros de propósito general como también una memoria no volátil memoria de datos (memoria flash) Internamente presenta periféricos: 2 timers counters de 8 bits, un contador temporizador de 16 bits, un contador en tiempo real, 4 salidas PWM útil para conversores D/A, 8 canales A/D, interfase serial a 2 hilos, para transmisión y recepción de datos tenemos un puerto Usart. Presenta memoria volátil y no volátil (memoria flash), esta memoria flash permite 10000ciclos de escritura, lectura. Tiene 512B de memoria EEPROM que se utiliza para datos (se guarda algo que no quiero que se borre), tiene 1KB de SRAM. También presenta un watch dog timer (WDT (circuito de vigilancia)), un comparador, circuitos especiales tenemos Power Reset (POR (colocar el contador de programa en la posición cero)), interrupciones internas y externas (pines externos, un evento que viene fuera del UP Ejemplo: un contador, un teclado). Tiene un puerto JTAG 1149.1IEEE que fue diseñado para el testeo de circuitos impresos y para depurar aplicaciones en bebidas o empotradas.

Configuración de pines del atmega16

Diagrama de Bloque Indicadores de 7 segmentos

Diagrama de Bloque

Diagrama de Bloque Indicadores de 7 segmentos

Indicadores de 7 segmentos

Los indicadores de 7 segmentos se colocadas en forma de ocho tal. Aunque externamente su forma difiere considerablemente de un diodo LED típico, internamente están constituidos por una serie de diodos LED con unas determinadas conexiones internas.

Los indicadores de 7 segmentos se colocadas en forma de ocho tal. Aunque externamente su forma

Muchas veces aparece un octavo segmento, entre paréntesis en el ejemplo anterior, que funciona como punto decimal.

Los indicadores de 7 segmentos se colocadas en forma de ocho tal. Aunque externamente su forma

Características

Solidez: excelente Angulo de visibilidad: 150 grados Consumo por digito: 50 mW Vida media en horas: 100000 Luminosidad: buena Facilidad de montaje: excelente Vcc general: 1.5 volt.

Conversiones

Los indicadores de 7 segmentos se colocadas en forma de ocho tal. Aunque externamente su forma

3.- Trabajo Práctico

Equipo y elementos utilizados:

  • - Una computadora con:

AVR Studio 4.0 (Para ensamblar y compilar el programa)

Proteus 7 Profesional (Para hacer pruebas de simulación)

ProgIsp (para programar el microcontrolador Atmega16)

  • - Un programador quemador de microcontroladores Atmel.

  • - Un microcontrolador Atmega16

  • - Dip Switchs de 9 bits, para dos numero de 8 bits y uno para selección de la operación

  • - Un pulsador, para el reset.

  • - Dos displays de 7 segmentos ánodo común

  • - Un led, para indicar el carry.

  • - 18 Resistencias de 5.6KΩ y 15 de 330Ω

  • - Un protoboard y varios alambres

Procedimiento:

Primero se realizó los últimos ajustes y modificaciones al programa, para hacerlo más

eficiente al reducir las líneas de código.

Luego se ensambló y simuló el programa con los softwares correspondientes, igual que en la práctica anterior, para verificar su correcto funcionamiento.

Una vez comprobado el funcionamiento del programa, se procedió a armar el hardware con todos los elementos y programar el microcontrolador con el hardware y software requerido para esta tarea; en nuestro caso se uso un programador usb de Atmel y el software “ProgIsp”. Con nuestro programador simplemente se coloca el microcontrolador en el zócalo zif y después de cargar el archivo de extensión .hex , generado por el ensamblador AVRStudio, en el programa progisp, y después de verificar la configuración del programa, como los bits fusibles, la configuración del oscilador interno que se utilizó, y que este bien seleccionado el micro y el programador, se da la orden al software de programar el micro, tarea que tomó solo unos segundos.

Una vez programado el microcontrolador se lo coloca en el protoboard, en la ubicación correspondiente junto con el resto del hardware y se procede a probar el circuito.

Programa implementado en lenguaje assembler:

.include "m16def.inc" .org 0x00 .cseg clr r0 clr r20 clr r21 ldi r22,$80 ldi r18,$7f ser r19 out ddra,r0 out ddrb,r0 out ddrc,r18 out ddrd,r19

ingreso:

in r16,pina

in r17,pinb

sbic pinc,7

rjmp resta

suma:

add r16,r17

decodificador:

adc r20,r20 mov r19,r16 andi r19,$0f ldi r30, low(tabla*2) ldi r31, high(tabla*2) add r30, r19 clr r0 adc r31,r0 lpm r0, z out portc, r0

andi r16,$f0 swap r16 ldi r30, low(tabla*2) ldi r31, high(tabla*2) add r30, r16 clr r1 adc r31,r1 lpm r1, z cpse r20,r21 add r1,r22 out portd, r1 rjmp ingreso

resta:

 

sub r16,r17 rjmp decodificador

tabla:

.db 0b1000000,0b1111001 .db 0b0100100,0b0110000 .db 0b0011001,0b0010010 .db 0b0000010,0b1111000 .db 0b0000000,0b0010000 .db 0b0001000,0b0000011 .db 0b1000110,0b0100001 .db 0b0000110,0b0001110

Circuito Implementado

V C C G N D R 18 R 1 7 5.6k 5 .6k VC C
V C C
G N D
R 18
R
1
7
5.6k
5 .6k
VC C
S E LE C T
U
1
9
22
R E S ET
P C 0 /SC L
R
1 R
2 R 3 R
4 R
5 R 6 R
7 R 8 R 9 R
10
23
P
C 1 /SD A
13
24
5.6 k 5 .6 k 5.6 k 5 .6 k 5 .6 k 5 .6 k 5 .6 k 5.6 k 5 .6 k 5.6k
XTA L1
PC 2 /TC K
12
25
D SW 1
XTA L2
PC 3 /TM S
26
PC 4 /TD O
O FFO N 1
16
40
27
PA 0 /AD C0 PC 5 / TD I
15
2
39
28
PA 1 /AD C1 PC 6 /TO SC 1
14
3
38
29
PA 2 /AD C2 PC 7 /TO SC 2
13
4
37
PA 3 /AD C3
12
5
36
PA 4 /AD C4 PD
0 /R XD 14
11
6
35
15
PA 5 /AD C5 PD 1 /TX D
10
7
34
16
PA 6 /AD C6 P D 2/I N T0
9
8
33
17
D SW 2
PA 7 /AD C7 P D 3/I N T1
18
PD 4 /O C 1B
O FFO N 1
D IPS W _8 16
1
19
PB 0 /X C K /T0 PD 5 /O C 1A
15
2
2
PB 1 /T1
P D 6/ ICP 20
14
3
3
21
PB 2 /IN T2 /A IN 0
P D 7 /O C 2
13
4
4
PB 3 /O C 0/A IN 1
12
5
5
PB 4/SS
?
11
6
6
PB 5 /M O SI
10
7
7
30
PB 6 /M ISO
A VC
C
9
8
8
PB 7 /S CK
A R EF 32
R 19
D IPSW _8
ATM E G A 16
3 30
R
1
1 R
1 2 R
1 3 R
1 4 R
1 5 R
16
G N D
5.6k 5 .6k 5 .6k 5.6k 5.6k 5 .6k
C A R R Y
LED

G N D

Pantalla del software de grabación lista:

Pantalla del software de grabación lista: 4.- Resultados: Nuestro circuito tuvo un funcionamiento correcto. El diseño

4.- Resultados:

Nuestro circuito tuvo un funcionamiento correcto. El diseño de nuestro programa y nuestro circuito tiene como entrada de datos en el microcontrolador: Todos los pines de los puertos A y B, para ingresar los dos números de 8 bits que serán sumados o restados; el pin 7 del puerto C, para seleccionar la operación, de suma si el pin esta en 0 o resta si está en 1. Y tiene como salidas del microcontrolador los pines del 0 al 6 del puertos C y todos los pines del puerto D, donde los pines 0 – 6 del puerto C son los que se conectan al display que muestra la cifra menos significativa del resultado, los pines 0 – 6 del puerto D se conectan al display que muestra la cifra más significativa del resultado y el pin 7 del puerto D nos muestra el carry del resultado y también nos indica si el número es negativo, es decir, esta en complemento de dos. El circuito realizó la suma o resta de dos números de 8 bits en binario, es decir de dos números hexadecimales y nos muestra el resultado en hexadecimal en los dos displays de 7 segmentos, pudiendo obtener para la suma números del 00H al 1FEH, donde el 1 de los resultados mayores a FFH nos lo indica el led de carry. Al realizar la resta de los dos números se podrían obtener resultados de FFH hasta –FFH, donde los números negativos son mostrados en complemento de 2, es decir que el –FFh será mostrado como 01H y el bit de carry nos indicara que el número es negativo, es decir que esta en complemento de 2. Todo lo explicado se comprobó en la práctica obteniendo los resultados esperados de la programación y simulación.

5.- Conclusiones y Recomendaciones

  • - Se programó, simuló e implementó en hardware un circuito que nos permitió sumar o restar 2 números de 8 bits utilizando el microcontrolador ATMEL MEGA 16.

  • - Nos Familiarizamos con el microcontrolador Atmega16 ya como hardware, teniendo

nuestras primeras nociones del encapsulado, su distribución de pines y el manejo del chip como tal, ya para la implementación en hardware del circuito simulado.

  • - Debemos de tener en cuenta que en la simulación no se requiere poner un cristal,

capacitores, ni una fuente de polarización para el microcontrolador, pero en la implementación ya real en hardware se debe tomar muy en cuenta todo esto ya que sin un oscilador programado ni una fuente de polarización el microcontrolador simplemente no funcionará.

-

Es

muy

importante

conocer

la

forma

correcta

de

programar

o

grabar

el

microcontrolador con el software y hardware apropiado, ya que por ejemplo si no se conecta de forma correcta el micro al quemador no se grabará el micro, o si en el software de grabación, progisp, se programan erróneamente los bits fusibles no funcionará bien el micro.

  • - Hay que tener mucho cuidado al momento de grabar el microcontrolador con los bits

fusibles y las opciones de grabación, ya que con estas opciones se programa el oscilador a utilizarse, si se programará la memoria flash o la EEPROM, y si se le bloqueará al microcontrolador. Esta ultima opción hay que verificarla cuidadosamente, ya que si se bloquea el micro, nos quedará inhabilitado para una nueva grabación.

  • - Con ciertos programadores es posible programar al microcontrolador sin necesidad

extraerlo de su ubicación, simplemente conectando los pines de salida que indica el programador con los respectivos pines del micro, pero teniendo muy en cuenta que el

programador ya cuenta con su propia alimentación, así que se debe conectar cualquier otra fuente de alimentación del circuito en el que se encuentra el integrado.

-Se recomienda traer armados los circuitos, para evitar de esta manera una perdida de tiempo, simular en algún software los circuitos o en lo posible tratar de probar dichos circuitos antes de entrar al laboratorio.

  • - Se recomienda tener un conocimiento claro de lo realizado en las prácticas anteriores,

ya que todo lo aprendido en estas prácticas se aplicó en esta, por lo que sin un claro

conocimiento de lo practicado antes no se podría realizar esta práctica a cabalidad.

  • - Se recomienda también saber muy bien el funcionamiento del software y hardware de grabación y programación del microcontrolador, para poder realizar un correcto grabado

de la memoria de programa del microcontrolador y que no tenga problemas su funcionamiento.

Bibliografía

TOCCI, Ronald; “Sistemas Digitales, Principios y Aplicaciones”, Prentice Hall,

Sistemas Digitales, Ing. Carlos Novillo