You are on page 1of 21

CONTROL CON

MICROPROCESADORES
Departamento de Automatizacin y
Control Industrial - DACI
Interrupiones ATMEGA164P
Interrupiones ATMEGA164P
Interrupiones ATMEGA164P
Comunicacin Serial

Generacin del Reloj:

La base de tiempo de Transmisin-Recepcin tiene dos modos asincrnicos de


funcionamiento: Modo Normal Asincrnico y modo de doble velocidad. Esta
eleccin se lleva a cabo con el Bit U2X del registro UCSRA.

El clculo del Baud Rate se realiza de la siguiente forma:


Comunicacin Serial

Generacin del Reloj:


Comunicacin Serial ATMEGA164p

Operacin Full Duplex


Operacin asncrona o sncrona
Funcionamiento sncrono Maestro o Esclavo
Soporta Frames con 5, 6, 7, 8 o 9 bits de datos y 1 o 2 bits de parada
Generacin y comprobacin de paridad
Deteccin de exceso de datos
Deteccin de errores Framing
Filtro de ruido Incluye Bit de inicio False Deteccin y Digitales Filtro de paso
bajo
Tres alarmas separadas al respecto TX completo, datos TX y RX Registro
vacio
Modo de comunicacin multi-procesador
Modo doble de velocidad asncrona Comunicacin
Comunicacin Serial
Comunicacin Serial
Comunicacin Serial
Comunicacin Serial
Comunicacin Serial
Ejercicio comunicacin entre 2 microprocesadores
Comunicacin Serial

ASSEMBLER
Comunicacin Serial

.include "m164pdef.inc"

.equ F_crystal=8000000
.equ bauds=9600
.cseg
.org 0x00
rjmp inicio
.org 0x28 ; interrupcion recepcion
rjmp dato

inicio:
; configuro puertos
clr r16
out DDRA,r16 ;puerto como entrada
out PORTC,r16
com r16
out PORTA,r16 ;puerto como salida
out DDRC,r16
ldi r16,(1<<1) ;salida tx
out DDRD,r16
Comunicacin Serial
; memoria ram
ldi r16,low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16
; cargo velocidad
ldi r16, high((F_crystal/(16*bauds))-1)
sts ubrr0h,r16
ldi r16, low((F_crystal/(16*bauds))-1)
sts ubrr0l,r16

ldi r16,0b1001_1000 ; habilito interrucpcion por recepcion y habilito transmision y


recepcion
sts ucsr0b,r16

;ldir16,0b0011_1110 ; 8bits paridad impar modo asincronico 2 bits de parada


ldi r16,0b0000_0110 ; 8bits sin paridad modo asincronico
sts ucsr0c,r16
sei
Comunicacin Serial

primer_dato:
lds r16,ucsr0a
sbrs r16,5 ; revisa si esta limpio el buffer para envio
rjmp primer_dato
in r16,PINA ; leo lo del puerto A
sts udr0,r16 ; envio dato del puerto

; programa principal
lazo:
nop
rjmp lazo

// interrupcion por recepcion


dato:
lds r16,udr0 ; leo el el Rx
out PORTC,r16 ; muestro en portC
in r16,PINA ; envio dato de puerto
sts udr0,r16
reti
Comunicacin Serial

EN C

#include <avr/io.h>
#include <avr/interrupt.h> // libreria para interrupciones

void USART_init(void);

int main(void)
{

DDRA=0x00;
PORTA=0xFF; // configuro como entradas pull -up

DDRC=0xFF; // configuro como salidas


PORTC=0x00;

DDRD|=(0<<0)|(1<<1); //
PORTD|=(1<<0)|(0<<1); //
Comunicacin Serial

USART_init();
sei();
while(!(UCSR0A & (1<<UDRE0)));
UDR0=PINA;

while(1)
{
//TODO:: Please write your application code
}
}

// Interrupcion recepcion
ISR(USART0_RX_vect){
PORTC=UDR0;
UDR0=PINA;
}
Comunicacin Serial

void USART_init(void){

UCSR0B|=(1<<TXEN0)|(1<<RXEN0)|(1<<RXCIE0); //enciendo transmision y


recepcion
UCSR0C|=(1<<UCSZ00)|(1<<UCSZ01); // 8 bits
UBRR0=51; // 9600 baudios
}
Bibliografa

1. Muhammad Ali Mazidi (2011). The avr


microcontroller and embedded system.

2. Yago Torroja & Jorge Portilla, Curso de


Microcontroladores, Escuela Tcnica
Superior de Ingenieros Industriales,
Universidad Politcnica de Madrid
CONTROL CON
MICROPROCESADORES
Departamento de Automatizacin y
Control Industrial - DACI

Marco Herrera
marco.herreraepn.edu.ec

You might also like