You are on page 1of 4

UNIVERSIDAD DE LAS FUERZAS ARMADAS -ESPE

DEPARTAMENTO DE ELCTRICA Y ELECTRNICA


Asignatura: Tecnologas de Software para Electrnica.
Docente:
Ing. Jaime Andrango
Fecha:
Mayo/2015
En conformidad al dispositivo que se detalla a continuacin, el estudiante deber desarrollar una
aplicacin (con interfaz en modo grfico) en java para que sea controlado desde el computador
personal, el cual tiene un sistema operativo linux (debian o distribuciones derivadas). Se
comunican el PC con el dispositivo electrnico utilizando el puerto serial (mediante un cable de
conversin USB-serial). La aplicacin en java debe cumplir conforme las indicaciones
proporcionadas en clase.
El dispositivo electrnico tiene el siguiente diagrama circuital (Figura 1):

Figura 1
Funcionamiento del dispositivo:
Dispone de dos pulsadores (S0 y S1): al presionar sobre el pulsador S0, el uC enva al PC el
mensaje de texto Alarma pulsador 1; mientras que si se presiona sobre S1, el mensaje que se
enva al PC es Alarma Pulsador 2. En la Figura 2, se puede apreciar el texto recibido por el Pc

desde una ventana de terminal para comunicacin serial.

Figura 2
Desde el terminal se puede controlar el encendido/apagado de los leds que se conectan a los pines
PD4, PD5, PD6, y PD7 del uC. Se controla digitando en el terminal los caracteres indicados en la
Tabla 1:
Tabla 1
Caracter
Comportamiento de Leds en uC
digitado en
Terminal de PC
'1'

D4 encendido

'2'

D4 apagado

'3'

D5 encendido

'4'

D5 apagado

'5'

D6 encendido

'6'

D6 apagado

'7'

D7 encendido

'8'

D7 apagado

'a'

D4, D5, D6, D7 apagados todos.

El cdigo fuente correspondiente al firmware del uC, se indica en el Listado 1.

// Listado 1
/* UNIVERSIDAD DE LAS FUERZAS ARMADAS -ESPE
DEPARTAMENTO DE ELCTRICA Y ELECTRNICA
Asignatura: Tecnologas de Software para Electrnica
Docente: Ing. Jaime Andrango
Fecha : Mayo/2015
*/
#include <avr/io.h>
#include <util/delay.h>
#define clear_bit(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define set_bit(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#define toogle_bit(sfr, bit) (_SFR_BYTE(sfr) ^= _BV(bit))
#define USART_BAUDRATE 4800
#define BAUD_PRESCALE (F_CPU / 16 / USART_BAUDRATE - 1)
int main(void)
{
clear_bit(DDRD, DD2); //PD2 como entrada
set_bit(PORTD, PD2); //PD2 (activa pull-up)
clear_bit(DDRD, DD3); //PD3 como entrada
set_bit(PORTD, PD3); //PD3 (activa pull-up)
set_bit(DDRD, DD4); //PD4 (como salida, led D4)
clear_bit(PORTD, PD4); //led D4 apagado
set_bit(DDRD, DD5); //PD4 (como salida, led D5)
clear_bit(PORTD, PD5); //led D5 apagado
set_bit(DDRD, DD6); //PD4 (como salida, led D6)
clear_bit(PORTD, PD6); //led D6 apagado
set_bit(DDRD, DD7); //PD4 (como salida, led D7)
clear_bit(PORTD, PD7); //led D7 apagado
UCSRB |= (1 << RXEN) | (1 << TXEN); // Inicializa la USART para envio y recepcin.
UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // Asincrnica, 8,N,1
UBRRH = (BAUD_PRESCALE >> 8);
UBRRL = BAUD_PRESCALE;
char mensaje1[] = "Alarma Pulsador 1\r\n";
char mensaje2[] = "Alarma Pulsador 2\r\n";
for (;;)
{
if (bit_is_clear(PIND, PD2)) // Detecta presin sobre pulsador S0
{
_delay_ms(20);
if (bit_is_clear(PIND, PD2))
{
char *s = mensaje1;
while (*s != 0)

{
while (( UCSRA & (1 << UDRE ) ) == 0) {};
UDR = *s++;
}
loop_until_bit_is_set(PIND, PD2);
}
}
if (bit_is_clear(PIND, PD3)) // Detecta presin sobre pulsador S1
{
_delay_ms(20);
if (bit_is_clear(PIND, PD3))
{
char *s = mensaje2;
while (*s != 0)
{
while (( UCSRA & (1 << UDRE ) ) == 0) {};
UDR = *s++;
}
loop_until_bit_is_set(PIND, PD3);
}
}
if ( UCSRA & (1 << RXC ))
{
switch (UDR)
{ case '1': set_bit(PORTD, PD4);break; // Caracter '1' enciende Led D4
case '2': clear_bit(PORTD, PD4);break;// Caracter '2' apaga Led D4
case '3': set_bit(PORTD, PD5);break; // Caracter '3' enciende Led D5
case '4': clear_bit(PORTD, PD5);break;// Caracter '4' apaga Led D5
case '5': set_bit(PORTD, PD6);break; // Caracter '5' enciende Led D6
case '6': clear_bit(PORTD, PD6);break;// Caracter '6' apaga Led D6
case '7': set_bit(PORTD, PD7);break; // Caracter '7' enciende Led D7
case '8': clear_bit(PORTD, PD7);break;// Caracter '8' apaga Led D7
case 'a': clear_bit(PORTD, PD4);
// Caracter 'a' apaga los Leds: D4, D5, D6 y D7
clear_bit(PORTD, PD5);
clear_bit(PORTD, PD6);
clear_bit(PORTD, PD7);break;
}
}
}
}

Los correspondientes archivos compilados .HEX, y .ELF, se encuentran en el aula virtual de la


Universidad. La codificacin se realiz para el compilador avr-gcc, y se ha utilizado herramientas
software libre. El uC es un ATMEGA8. Si el estudiante desea, puede acercarse a la oficina del
profesor para grabar el firmware en el uC, para la ejecucin prctica del dispositivo electrnico, con
la finalidad que pueda probar la programacin java a ser desarrollada por los estudiantes.

You might also like