Está en la página 1de 30

MICROCONTRLADOR

ATMEGA8

ALGUNAS CARACTERISTICAS

ARQUITECTURA RISC

8KBYTES DE MEMORIA FLASH

32 REGISTROS DE
PROPOSITO GENERAL

512BYTES DE MEMORIA
EEPROM

1KBYTE DE MEMORIA SRAM

3 CANALES DE PWM

8 CANALES DE ADC

2 RELOJ/CONTADOR DE 8 BITS

1 RELOJ/CONTADOR DE 16 BITS
M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

ALGUNAS DEFINICIONES

RISC: Reduced Instruction Set Computer.

MEMORIA FLASH: Memoria de tipo eeprom que permite que mltiples


posiciones de memoria sean escritas o borradas en una misma
operacin de programacin mediante impulsos elctricos. Es en sta
memoria en donde se guardar nuestro programa.

REGISTROS DE PROPOSITO GENERAL: Memoria de alta velocidad


que almacena valores para ser usados en operaciones matemticas
dentro del microcontrolador (alu).

MEMORIA SRAM: Memoria ram esttica en donde se pueden guardar


datos, valores. Cuando se desenergiza el micro. Se pierden estos
valores.

MEMORIA EEPROM: Memoria del micro en donde podemos guardar


datos los cuales no se perdern al desenergizar el micro.

PUERTO: Conjunto de terminales para el envo y recepcin de datos.

ADC: convertidor analgico


digital
M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

ESTRUCTURA INTERNA

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

INICIALIZACION DE PUERTOS

EL MICROCONTROLADOR ATMEGA8 TIENE TRES PUERTOS:


PORTB: BIDIRECCIONAL DE 8 TERMINALES (PB0-PB7)
PORTC: BIDIRECCIONAL DE 7 TERMINALES (PC0-PC6)
PORTD: BIDIRECCIONAL DE 8 TERMINALES (PD0-PD7)
LAS TERMINALES DE LOS PUERTOS SON BIDIRECIONALES , POR LO
QUE STAS SE PUEDEN CONFIGURAR COMO ENTRADA O COMO
SALIDA. LA CONFIGURACIN DEPENDER DE NUESTRAS
NECESIDADES DE HARDWARE.
DATA DIRECTION REGISTER (DDRX): Registro especial usado para poner
los pines del puerto especificado como entrada (0) o como salida(1) .
DATA REGISTER (PORTX): Registro especial usado para escribir un dato
de salida en el puerto especificado.
INPUT PIN ADDRESS (PINX): Registro especial usado para leer los datos
de entrada del puerto especificado.

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

DDRB=0XAC;

DDRB=0XF0;

INICIALIZACION DE PUERTOS

// INICIALIZA PB7,PB5,PB3,PB2 COMO SALIDA


// Y PB6,PB4,PB1,PB0 COMO ENTRADA
DDRB
7

DDRB
6

DDRB
5

DDRB
4

DDRB
3

DDRB
2

DDRB
1

DDRB
0

// INICIALIZA PB7-PB4 COMO SALIDA


// Y PB3-PB0 COMO ENTRADA
DDRB
7

DDRB
6

DDRB
5

DDRB
4

DDRB
3

DDRB
2

DDRB
1

DDRB
0

SE DESEA HACER UN PROGRAMA PARA INCREMENTAR UN DISPLAY


DE 7 SEGMENTOS CONECTADO AL PUERTO B, CADA VEZ QUE SE
PULSE UN BOTON CONECTADO AL PD3.
CAL SER LA INICIALIZACIN DE LOS PUERTOS?
DDRB=0XFF;
DDRD=0X00;

DDRB=0X7F;
DDRD=0XA7;
M.C. Arnoldo Ulises Villalobos Guerra

DDRB=0XFE;
DDRD=0XF7;

MICROCONTRLADOR

ATMEGA8

RESISTENCIS DE PULL-UP

La resistencia de pull up tiene la funcin de asegurar que la seal de


entrada no quede en estado flotante, adems de evitar un corto circuito. El
Atmega8 como la mayora de los microcontroladores tienen esta
resistencia de pull up interna.

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

RESISTENCIS DE PULL-UP

EN EL DATA REGISTER (PORTX) SE ACTIVAN LAS RESISTENCIAS DE PULL UP,


SI SE FIJA UN UNO LGICO EN EL PORTXn ENTONCES SE ACTIVAR LA
RESISTENCIA DE PULL UP EN ESE PIN.
SI EL PIN ESTA CONFIGURADO COMO SALIDA, ENTONCES EL ESTADO QUE
LE PONGAMOS A PORTXn SER LA INICIALIZACIN DE STE(PXn).
DDRB=0X00;

PORTB=0XFF;

// INICIALIZA PB7-PB0 COMO ENTRADA


DDRB
7

DDRB
6

DDRB
5

DDRB
4

DDRB
3

DDRB
2

DDRB
1

DDRB
0

// ACTIVA TODAS LAS RESISTENCIAS DE PULL UP DEL PUERTO B


PORTB
7

PORTB
6

PORTB
5

PORTB
4

PORTB
3

PORTB
2

PORTB
1

PORTB
0

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

DDRB=0XF0;
PORTB=0XAC;

RESISTENCIS DE PULL-UP

DDRB7

DDRB6

DDRB5

DDRB4

DDRB3

DDRB2

DDRB1

DDRB0

PORTB
7

PORTB
6

PORTB
5

PORTB
4

PORTB
3

PORTB
2

PORTB
1

PORTB
0

// PB7 salida estado inicial 1


// PB6 salida estado inicial 0
// PB5 salida estado inicial 1
// PB4 salida estado inicial 0
//PB3 entrada pull up activada
//PB2 entrada pull up activada
//PB1 entrada pull up desactivada
//PB0 entrada pull up desactivada
Se desea conectar leds al puerto B para una rotacin secuencial a la derecha o la
izquierda segn el estado lgico de PD7 (botn conectado en el PD7), se
requiere activar la resistencia interna de pull-up de este pin. Realice la
inicializacin del problema.

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

DECLARACION DE VARIABLES

unsigned char x; //variable x char sin signo


//inicializada con 0

signed Int var1=0x0080; // variable var1 tipo


// entero con signo
//
inicializada con
// 80 hex. o 128
decimal.

signed char a=20,b=30;


// a y b con signo tipo char a inicia con 20
unsigned char c=7,d=0b01100111,e;
//
b inicia con 30
//c, d y e sin signo tipo char c inicia con 7
//
d inicia con 103
//
inicia
cero
M.C. e
Arnoldo
Ulisescon
Villalobos
Guerra

MICROCONTRLADOR

ATMEGA8

OPERACIONES ARITMETICAS Y LOGICAS

unsigned char a=10,b=47, var1,var2;


Var1=b/a;
Var2=b%a;
// despus de las operaciones anteriores var1 ser igual a 4 y var2=7
Var1= a&b;

var2=var2 <<(3);

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

ENMASCARAMIENTOS

Los enmascaramientos son tiles para la manipulacin de bits individuamente.


Enmascaramiento con AND:
1.- Se utiliza para poner en cero los bits deseados. (sin alterar los otros)
2.-Tambin es til para averiguar el valor del bit en una posicin
Supongamos que dato1 =47 y queremos poner en cero el bit menos significativo (LSB)
sin alterar los otros bits. Entonces la mascara ser 11111110
0
0
1
0
1
1
1
1 Dato1
dato1=dato1&0xFE;
1
1
1
1
1
1
1
0 Mascara
0

resultado

Si se quiere poner en cero los 4 bits mas significativos , entonces la mascara ser 0X0F
Y=Y&0x0F ;

Mascara

resultado

Cual ser la mascara si se desea poner el bit0 y el bit4 en cero?


M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

ENMASCARAMIENTOS

Supongamos que queremos averiguar si el bit 2 de una variable esta en cero. La


mascara tiene que ser 00000100
0
0
1
0
1
1
1
1
0
0
1
0
1
0
1
1
0

Supongamos que queremos averiguar si el bit5 y el bit7 de una variable esta


en cero. La mascara tiene que ser 10100000
0

0
0
0

Note que cuando el resultado es cero, el bit o los bits a averiguar son cero. Por lo
tanto, la instruccin en C puede ser:
If(var1&0xA0=0) ;

// se desea saber si el bit5 y el bit7 estn en cero

Note que cuando el resultado es igual a la mascara, el bit o los bits a averiguar son
unos Por lo tanto, la instruccin en C puede ser:
If(dato1&0x08=8);

//se desea saber si el bit3 del dato1 esta en 1


M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

ENMASCARAMIENTOS

Enmascaramiento con OR:


1.- Se utiliza para poner en uno los bits deseados.(sin alterar los otros)
Si se quiere poner en uno el bit 4 , entonces la mascara ser 0X10
1

De tal manera si se desea poner en uno los bit 3 y 6 la mascara ser 01001000 y
la operacin una OR
dato3=dato30x48;

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

PRACTICA #1

PRACTICA #1

DIVIDIR DOS NUMEROS DE 4 BITS, PARA ELLO SE USARA EL PUERTO B, LOS 4


LSB SER El DIVIDENDO LOS 4 MSB SER EL DIVISOR.
EL RESULTADO SE MOSTRAR EN LEDS CONECTADOS AL PUERTO D, EL
COCIENTE EN LOS LSB Y EL RESIDUO EN LOS MSB.

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

PRACTICA #1

#include <mega8.h>
unsigned char var1,var2,var3,var4;
void main(void)
{
DDRB=0x00;
//PUERTO B COMO ENTRADA
PORTB=0xFF;
//ACTIVA LAS RESISTENCIAS DE PULL-UP
DDRD=0xFF;
//PUERTO D COMO SALIDA
PORTD=0x00;
//INICIA EL PUERTO D CON CEROS
while (1)
{
var1=PINB;
//lee el puerto B y lo guarda en var1
var2=var1&0xF0; //los bits LSB de var1 los pone en cero
var2=var2>>(4);
//hace un corrimiento de 4 bits a la derecha
var1=var1&0x0F; //pone en cero los bits MSB
var3=var1/var2;
//cociente de la divisin lo guarda en var3
var4=var1%var2;
//residuo lo guarda en var4
var4=var4<<(4);
//corrimiento a la izquierda de 4 bits
var4=var4|var3;
//en la parte alta el resido y en la parte baja el cociente
PORTD=var4;
};
}
M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

PRACTICA #1

EXPLICACIN DE PROGRAMA
Lo primero que tenemos que hacer es leer el puerto B y guardar ese dato en una
variable, es por eso que la primera lnea es:
var1=PINB;
En este caso la instruccin es leer el puerto B y guarda el dato en var1
Supongamos que queremos dividir 10/3 entonces la combinacin binaria en el puerto B
ser 00111010. Por lo que tenemos que dar esa combinacin con el DIP SWITCH.
PB7
0
0

PB0
0

Divisor=3
Dividendo=10
La variable var1 entonces tiene el dato 0x3A. Pero tenemos que separar el divisor y el
dividendo. La separacin del divisor se realiza con las dos siguientes instrucciones del
programa.
var1
var2=var1&0XF0;
var2=var2>>(4);

0X0F

var2

0
0
0
1
var2=divisor

M.C. Arnoldo Ulises Villalobos Guerra

&

MICROCONTRLADOR

ATMEGA8

PRACTICA #1

El dividendo se obtiene haciendo ceros la parte mas alta de la variable var1.


var1=var1&0x0F;

var1

0X0F

&

var1

Var1=dividendo

Las siguientes instrucciones es para obtener el cociente y el residuo


var3=var1/var2;
//cociente de la divisin lo guarda en var3
var4=var1%var2;
//residuo lo guarda en var4
Despus de estas instrucciones var3=3 y var4=1 porque 10/3=3 y sobra 1
var3

cociente

var4

residuo

Por ultimo tenemos que juntar el resultado (cociente y residuo) en una variable. Hay que
recordar que el residuo se desea tenerlos en los MSB entonces haremos un corrimiento
a la izquierda de 4 bits 0
0
0
0
0
0
0
1
var4
var4=var4<<(4);

M.C. Arnoldo Ulises Villalobos Guerra

Var4 despus del


corrimiento

MICROCONTRLADOR

ATMEGA8

PRACTICA #1

Nada mas nos queda realizar una OR para unir en una sola variable el resultado
var4=var4|var3;

var3

var4

var4

residuo

cociente

Para finalizar solo tenemos que mandar el resultado al puerto D


PORTD=var4;

M.C. Arnoldo Ulises Villalobos Guerra

OR

MICROCONTRLADOR

ATMEGA8

PRIMER PROYECTO

Es hora de realizar nuestro primer proyecto . En primer lugar abra el codevision avr

Una vez abierto hay que crear un nuevo proyecto

Seleccionamos project y ok

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

PRIMER PROYECTO

Nos abrir una ventana en donde nos pregunta que si queremos usar el asistente,
le indicamos que si.

Una vez abierto el asistente buscamos nuestro microcontrolador ATmega8

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

PRIMER PROYECTO

El asistente es de gran ayuda, pues es donde configuramos varias cosas. En esta


primera practica solo tenemos que configurar los puertos. El puerto B lo
configuraremos como entrada (con resistencia de pull-up) y el puerto D como
salidas.

Configuracin de los pines puerto B


como entrada y pull-up activada

Configuracin del puerto D


como salida y valores inciales en
Cero.

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

PRIMER PROYECTO

A continuacin seleccionamos la pestaa project information y le damos un


nombre, si queremos podemos poner la versin , comentario y compaa. Y para
finalizar la creacin de nuestro proyecto seleccionamos file
Generar, Salvar Y
Salir.

Se abrir una ventana en donde escogeremos el folder destino e introduciremos el


nombre . En mi caso observe que he creado una carpeta llamada practicas

Nos saldrn dos


ventanas ms, solo hay
que poner el mismo
nombre

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

PRIMER PROYECTO

Primero declaramos nuestras variables.

El programa lo escribiremos en la parte inferior dentro del while

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

PRIMER PROYECTO

A continuacin lo compilamos

Nos saldr una ventana de informacin , si no hay errores ni advertencias el proyecto


esta finalizado, y podremos grabar nuestro microcontrolador ATmega8 con nuestro
primer programa

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

PROGRANMACION DEL MICROCONTROLADOR

Cuando compilamos los programas y no aparecen errores ni advertencias el codevision


avr nos genera unas carpetas y archivos . Pues el archivo que utilizaremos Para
programar se encuentra dentro de la carpeta Exe en donde fue guardado el proyecto.
En mi caso yo guarde el proyecto en una carpeta llamada practicas, pues en esa
carpeta es donde se encuentra la carpeta Exe y dentro de ella el archivo que nos
interesa con la extensin .hex . A mi proyecto le llame p1, por lo tanto, el archivo que
utilizar para programar el micro ser p1.hex

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

PROGRANMACION DEL MICROCONTROLADOR

Para pasar el programa al micro conectamos el programador al protoboard y unimos


las terminales correspondientes del programador y el microcontrolador. Entre el reset y
VCC debe de llevar una resistencia de 10k

P
R
O
G
R
A
M
A
D
O
R

RST
MOSI
MISO

10K

SCK
VCC
GND

Una vez hecho lo anterior conectamos el programador al computador por medio del
cable USB(si es la primera vez hay que instalar el driver)
M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

PROGRANMACION DEL MICROCONTROLADOR

El software que utilizaremos para pasar la informacin de la computadora al


programador y de ste al micro se llama AVR Burn-O-Mat
1.- Ejecutar AVR Burn-O-Mat.exe
Seleccionas el micro y buscamos el archivo a grabar

2,-Despus seleccionamos settings y a continuacin AVRDUDE

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

3.- Localiza estos archivos


en tu compu. :

PROGRANMACION DEL MICROCONTROLADOR

Para buscar los archivos

avrdude.exe
avrdude.conf
(Estos archivos se crearon
cuando se instalo el
winavr) OJO si no los
encuentras te puedes
apoyar en la herramienta
de busqueda de windows
DESPUES CIERRAS TODO
EL BURN Y LO VUELVES A
ABRIR

4.-Despus seleccionas el
programador usbasp y port
usb
5.- clik OK
NOTA: esta configuracin de opciones (pasos del 2 al 5) solo se hace la primera vez. Despus no es necesario
hacerla, pues el programa guarda esta informacin.
M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

PROGRANMACION DEL MICROCONTROLADOR

6.- y para programar nuestro microcontrolador Atmega8 seleccionamos WRITE

Si todo sale bien nos aparecer esta ventana

M.C. Arnoldo Ulises Villalobos Guerra

MICROCONTRLADOR

ATMEGA8

REFERENCIAS

REFERENCIAS:
Infante S. David.
Notas del curso programacin en c de los
Microcontroladores ATMEL.
Instituto tecnolgico de Morelia.
Versin 8.10
Steven f. Barrett and daniel J. Pack
Atmel AVR microcontroller primer: programming and interfacing
Dhananjay V. Gadre
Programming and Customizing the avr Microcontroller
http://avr8-burn-o-mat.aaabbb.de/avr8_burn_o_mat_avrdude_gui_en.html

M.C. Arnoldo Ulises Villalobos Guerra