Sie sind auf Seite 1von 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

Das könnte Ihnen auch gefallen