42
MICROCONTROLADORES II MÓDULO USART MÓDULO USART (Comunicación Serial Asíncrona) TEMA 5 PROF. LUIS ZURITA

Micro2 tema 5

Embed Size (px)

Citation preview

Page 1: Micro2 tema 5

MICROCONTROLADORES IIMÓDULO USARTMÓDULO USART

(Comunicación Serial Asíncrona)TEMA 5

PROF. LUIS ZURITA

Page 2: Micro2 tema 5

INTRODUCCIÓN

• En los sistemas con microcontroladores puede existirla necesidad de conectarse con el mundo exterior, yesto se logra mediante las comunicaciones seriales yparalelas.

• En este tema se tratará la comunicación serial• En este tema se tratará la comunicación serialasíncrona mediante el módulo USART. Dichacomunicación permite establecer un enlace decomunicación tipo Full Duplex.

DispositivoExterno

TX

TX

RX

RX

GND

RC6/TX

RC7/RX

µC

Prof. Luis Zurita Microcontroladores II

Page 3: Micro2 tema 5

PROTOCOLO RS-232

• Este protocolo es el utilizado por losmicrocontroladores y su módulo USART.

• Cada dato se envía independientemente de losdemás.

• Consta de 8 ó 9 bits de datos• Consta de 8 ó 9 bits de datos• Consta de 1 bit de Inicio (START)• Consta de 1 bit de Parada (STOP)

BIT INICIO BIT PARADA

DATOLSB MSB

Prof. Luis Zurita Microcontroladores II

Page 4: Micro2 tema 5

MÓDULO USART

1. Circuito de Muestreo (RC7/RX)2. Generador de Baudios

La frecuencia en baudios (bits por segundos) es lavelocidad a la que se realiza la transferencia dedatos. Valores normalizados: 330, 600, 1200, 2400,datos. Valores normalizados: 330, 600, 1200, 2400,4800, 9600, 19200, 38400, otros.

• El USART tiene un generador de Frecuencia enbaudios, BRG. Su valor es controlado por elRegistro SPBRG.

• La frecuencia en baudios del generador dependedel bit BRGH del registro TXSTA (2).

Prof. Luis Zurita Microcontroladores II

Page 5: Micro2 tema 5

TRANSMISOR ASÍNCRONO

• El dato a transmitirse se coloca en TXREG. Deinmediato pasa al registro de desplazamiento TSR,que empieza a sacar los bits secuencialmente, segúnla frecuencia establecida. Se incluye antes de losdatos el bit de Inicio. Y después de los bits de datos,se agrega el bit de parada.se agrega el bit de parada.

• Como podemos ver, el corazón del transmisor loconstituye el TSR, cuyo contenido es cargado con elDato a transmitir desde el TXREG.

• Lo va sacando bit a bit desde el LSB hasta el MSB.

Prof. Luis Zurita Microcontroladores II

Page 6: Micro2 tema 5

TRANSMISOR ASÍNCRONO

Prof. Luis Zurita Microcontroladores II

Page 7: Micro2 tema 5

TX9D

TX9=1 1 bitTXREG

REGISTRO DE DESPLAZAMIENTO DE SALIDA

8 bits

RC6/TX

TX9D: 9 bits de datos transmitidos. Puede ser el bit de paridad

D0 D1 D2 D3 D4 D5 D6 D71 10

Bit start Bit stop

D0 D1 D2 D3 D4 D5 D6 D71 10

Bit start Bit stopTX

9D

Tramas a enviarProf. Luis Zurita Microcontroladores II

Page 8: Micro2 tema 5

RECEPTOR ASÍNCRONO

• Los datos se reciben en serie, bit a bit, por el pin RC7/RX, y sevan introduciendo secuencialmente en el registro dedesplazamiento RSR, que opera a una frecuencia 16 vecesmás rápida que la de trabajo.

• Después de recibir el bit de Stop los datos acumulados en esteregistro se cargan en el de datos RCREG (si está vacío).Cuando la transferencia se ha completado, el bit RCIF (PIR1,5)registro se cargan en el de datos RCREG (si está vacío).Cuando la transferencia se ha completado, el bit RCIF (PIR1,5)se pone a uno. La interrupción puede habilitarse odeshabilitarse colocando a uno o borrando, respectivamente,el bit RCIE (PIE1,5). El bit RCIF se borra cuando el registroRCREG se ha leído (se "vacía" el registro).

Prof. Luis Zurita Microcontroladores II

Page 9: Micro2 tema 5

RECEPTOR ASÍNCRONO

Prof. Luis Zurita Microcontroladores II

Page 10: Micro2 tema 5

REGISTRO DE DESPLAZAMIENTO DE SALIDA

8 bits

RC7/RX

1 bit

Recepción de datos

RX9=1

Buffer

RX9D RCREG FIFO

Prof. Luis Zurita Microcontroladores II

Page 11: Micro2 tema 5

Módulo USART en C

• Las siguientes directivas permiten una configuración genéricadel módulo USART:

#USE RS232 (opciones)

Esta directiva permite configurar varios parámetros del móduloUSART, tales como la velocidad de transmisión, pinesutilizados, entre otros. Se puede modificar en cualquier partedel programa, pero siempre después de haber definido ladirectiva #USE DELAY.directiva #USE DELAY.

Esta directiva habilita el uso de funciones tales como GETCH,PUTCHAR y PRINTF. Permite su uso en dispositivos que noposeen módulo USART mediante software USART.

Cuando se utilizan dispositivos con USART, si no se puedealcanzar una tasa de baudios dentro del 3 % del valor deseadoutilizando la frecuencia de reloj actual, se generará un error.

Prof. Luis Zurita Microcontroladores II

Page 12: Micro2 tema 5

Módulo USART en C

BAUD=X Velocidad en Baudios

XMIT=pin Pin de transmisión

RCV= pin Pin de recepción

FORCE_SW Usa un software UART en lugar del hardware,aún cuando se especifican los pines delhardware.hardware.

RESTART_WDT Hace que la función GETC ( ) ponga a cero elWDT mientras espera un carácter.

BRGH1OK Permite velocidades de transmisión bajas enchips que tienen problemas de transmisión.

Prof. Luis Zurita Microcontroladores II

Page 13: Micro2 tema 5

Módulo USART en C

ENABLE= pin El pin especificado estará a nivel alto durante latransmisión. Utilizado en transmisión 485.

DEBUGGER Permite depuración a través del ICD. El pin pordefecto es el B3;

INVERT Invierte la polaridad de los pines serie(normalmente no es necesario con el(normalmente no es necesario con elconvertidor de nivel, como el MAX232). Nopuede usarse con el USART interno.

PARITY= X Donde X es N,E u O

BITS= X Donde X es 5-9 (no puede usarse 5-7 con elUSART interno).

FLOAT_HIGH Se utiliza para las salidas de colector abierto.

Prof. Luis Zurita Microcontroladores II

Page 14: Micro2 tema 5

Módulo USART en C

ERRORS Indica al compilador que guarde los errores recibidos en lavariable RS232_ERRORS para restablecerlos cuando seproducen.

SAMPLE_EARLY No se puede utilizar con el USART interno. Provoca que elmuestreo del dato a través de la función GETC ( ) se realice alprincipio de un bit de tiempo.

RETURN= pin Para FLOAT_HIGH y MULTI_MASTER, este pin se usa para leerla señal de retorno. Por defecto, para FLOAT_HIGH es XMIT ypara MULTIMASTER es RCV.para MULTIMASTER es RCV.

MULTI_MASTER Usa el pin de RETURN para determinar si otro master en el busestá transmitiendo al mismo tiempo. Si se detecta una colisión,el bit 6 se pone a 1 en RS232_ERRORS y todos los posiblesPUTC ( ) son ignorados hasta que el bit 6 esté a 0. La señal escomprobada al final y al principio de cada bit de tiempo. No sepuede utilizar con USART interno.

LONG_DATA Permite manejar INT16 a las funciones GETC ( ) y PUTC ( ). Enformatos de datos de 9 bits.

DISABLE_INTS Provoca la deshabilitación de interrupciones cuando se ejecutaGETC ( ) y PUTC ( ) evitando distorsiones en los datos.

Prof. Luis Zurita Microcontroladores II

Page 15: Micro2 tema 5

Módulo USART en C

STOP= x Número de bits de stop (por defecto 1)

TIMEOUT= x Para establecer el tiempo que GETC ( ) esperaun carácter (en ms). Si no se recibe carácter eneste tiempo, el RS232_ERRORS se pone a 0.

SYNC_SLAVE Provoca una línea RS232 en modo esclavosíncrono, haciendo el pin de recepción comoentrada de reloj y la de transmisión comoentrada de reloj y la de transmisión comoentrada/salida de datos.

SYNC_MASTER Provoca una línea RS232 en modo maestrosíncrono, haciendo el pin de recepción comosalida de reloj y la de transmisión comoentrada/salida de datos.

UART1 Configura el XMIT y RCV para el USART1

UART2 Configura el XMIT y RCV para el USART2Prof. Luis Zurita Microcontroladores II

Page 16: Micro2 tema 5

Ejemplos:#use delay (clock=20000000);#use rs232 (BAUD=9600 , XMIT=PIN_C6 , RCV=PIN_C7 , BITS=8)#use rs232 (BAUD=9600 , XMIT=PIN_A2 , RCV=PIN_A3)

Setup_uart(baud)baud es una constante que define la velocidad. Un 1 enciende el

USART y un 0 lo apaga. Con cualquier valor de velocidad, el USARTse enciende.

Módulo USART en C

se enciende.set_uart_speed (baud)Idéntica a la función anterior. Ejemplo:// Se establece la velocidad mediante la combinación de los pines B0

y B1:switch (input_b ( ) & 3){

case 0: set_uart_speed(2400); break;case 1: set_uart_speed(4800); break;case 2: set_uart_speed(9600); break;case 3: set_uart_speed(19200); break;

Prof. Luis Zurita Microcontroladores II

Page 17: Micro2 tema 5

Transmisión de datos:

putc (cdata)

putchar (cdata)

cdata es un carácter de 8 bits. Esta función envía uncarácter mediante el pin XMIT. La directiva #USE RS232debe situarse siempre antes de utilizar esta función.

Módulo USART en C

debe situarse siempre antes de utilizar esta función.

puts (string)

string: cadena de caracteres constante o matriz decaracteres terminada con un 0. La función puts ( ) mandalos caracteres de la cadena, uno a uno, a través del busRS232 utilizando la función PUTC ( ); detrás de la cadenaenvía un RETURN (13) y un retorno de carro (10)

Prof. Luis Zurita Microcontroladores II

Page 18: Micro2 tema 5

printf (fname, cstring, values…)cstring: es una cadena de caracteres (constante) o matriz

de caracteres terminada con un cero.fname: las funciones a utilizar para escribir la cadena

indicada; por defecto se utiliza la función PUTC ( ), quepermite escribir en el bus RS232.

values: valores a incluir en la cadena separados por comas;

Módulo USART en C

values: valores a incluir en la cadena separados por comas;se debe indicar %nt. El formato es %nt, donde n esopcional y puede ser:

1-9 para especificar cuantos caracteres deben serespecificados;

01-09 para indicar la cantidad de ceros a la izquierda.1.1-9.9 para coma flotante.

Prof. Luis Zurita Microcontroladores II

Page 19: Micro2 tema 5

Módulo USART en C

t puede indicar:c Carácters Cadena o carácteru Entero sin signod Entero con signoLu Entero sin signoLd Entero largo con signoLd Entero largo con signox Entero hexadecimal (minúscula)X Entero hexadecimal (mayúscula)Lx Entero largo hexadecimal (minúscula)LX Entero largo hexadecimal (mayúscula)f Flotante con truncadog Flotante con redondeoe Flotante en formato exponencialw Entero sin signo con decimales insertados. La 1ra cifra

indica el total, la 2da el número de decimales.Prof. Luis Zurita Microcontroladores II

Page 20: Micro2 tema 5

Recepción de datos:

value= getc ( );

value= getch ( );

value= getchar ( );

value (valor) es un carácter de 8 bits. Espera recibir uncarácter por la línea RS232 y devuelve su valor. En losdispositivos con USART interno, se pueden almacenar

Módulo USART en C

dispositivos con USART interno, se pueden almacenarhasta tres caracteres; para evitar esperas se puedeutilizar la función KBHIT ( ).

valor= kbhit ( );

valor es 0 (FALSE) si GETC ( ) debe esperar a que llegue uncarácter; 1 (TRUE) si ya hay un carácter listo para serleído por la función GETC ( ).

Prof. Luis Zurita Microcontroladores II

Page 21: Micro2 tema 5

Ejemplo 1. Enviar los datos del 0 al 10, en modo asíncrono, entre dosPICS. Visualizar con un LCD, los datos enviados y los datos recibidos;la recepción del dato deberá ser por interrupción del USART.

// PIC MAESTRO#include <16F877.h>#FUSES XT,NOWDT#use delay(clock=4000000)#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)#include <LCD.C>void main() {

int valor;int valor;lcd_init();

while(1){for (valor=0;valor<=10;valor++) {PUTC(valor); // Envia valorprintf(lcd_putc,"\fENVIANDO\n");printf(lcd_putc,"%1D",valor);delay_ms(2000);}

}}

Prof. Luis Zurita Microcontroladores IIProf. Luis Zurita Microcontroladores II

Page 22: Micro2 tema 5

// PIC ESCLAVO#include <16F877.h>#FUSES XT,NOWDT#use delay(clock=4000000)#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)#include <LCD.C>#BYTE TRISA=0X85#BYTE PORTA=0X05int valor;#int_RDARDA_isr() {valor=GETC();} //Recibe valorvalor=GETC();} //Recibe valorvoid main() {bit_clear(TRISA,0);lcd_init();enable_interrupts(INT_RDA);enable_interrupts(GLOBAL);

for (;;) {lcd_gotoxy(1,1);printf(lcd_putc,"recibiendo=%1D",valor);

}}

Prof. Luis Zurita Microcontroladores II

Page 23: Micro2 tema 5

Con el “Virtual Terminal”, presionando elbotón derecho del mouse y seleccionandoHex display mode, podemos visualizar losdatos que se están recibiendo.

Prof. Luis Zurita Microcontroladores II

Page 24: Micro2 tema 5

La norma RS232

• Es la más básica de las comunicaciones serie. Comunica unequipo terminal de datos (DTE) con el equipo decomunicación de datos (DCE).

• Las características eléctricas de la señal en esta normaestablecen que la longitud máxima entre dos equipos nodebe ser superior a 15 metros, sin embargo, el autor hadebe ser superior a 15 metros, sin embargo, el autor harealizado pruebas de campo que permiten alcanzar los 30metros. La velocidad máxima de transmisión es de 20 kbps.Los niveles lógicos no son compatibles con los niveles TTL,ya que se situan dentro de los siguientes rangos: 1 lógicoentre -3 v a -15 v y 0 lógico entre +3 v a +15 v.

• Se utilizan conectores DB9 y DB25.

Prof. Luis Zurita Microcontroladores II

Page 25: Micro2 tema 5

• Para una comunicación full duplex desde el USARTdel PIC, se debe conectar un mínimo número deseñales, a saber: TXD, RXD y tierra (GND). Los PICSutilizan señal TTL en el módulo USART, por lo quedebe utilizarse un convertidor de niveles a RS232,como el circuito integrado MAX232

La norma RS232

como el circuito integrado MAX232

MAX232RX

RX

TX

TX

GND GND

NIVELES TTL NIVELES RS232

Prof. Luis Zurita Microcontroladores II

Page 26: Micro2 tema 5

Circuito integrado MAX232

Prof. Luis Zurita Microcontroladores II

Page 27: Micro2 tema 5

• En la actualidad, las computadoras desde el año 1996 han idoerradicando el puerto serie con el conector DB9 y DB25, por elpuerto USB (Universal Serial Port).

• Una solución ha sido la implementación de cables deconversión USB-232.

• Sin embargo, los microcontroladores de la familia PIC18,integran un módulo USB para comunicaciones como protocolode comunicación.

PIC

MóduloUSART

PIC

MóduloUSB

ConvertidorUSB-232

Familia PIC18Familia PIC16F87XProf. Luis Zurita Microcontroladores II

Page 28: Micro2 tema 5

• La selección de las órdenes se realiza mediante unteclado y se visualizan en una pantalla LCD en elMaestro.

• Si se presiona 1, el Maestro envía el dato: 17H, elesclavo activa el led Rojo y muestra en una pantallaLCD: ORDEN1.

• Si se presiona 4, el Maestro envía el dato: 2DH, elesclavo activa el led amarillo y muestra en una

Ejemplo 2. Realizar un sistema Maestro-Esclavo multi-selector.

• Si se presiona 4, el Maestro envía el dato: 2DH, elesclavo activa el led amarillo y muestra en unapantalla LCD: ORDEN2.

• Si se presiona 7 el Maestro envía el dato: 64H, elesclavo activa el led verde y muestra en una pantallaLCD: ORDEN3.

• Si se presiona cualquier otra tecla, el Maestro envíael dato: C2H, el esclavo desactiva todos los leds ymuestra en una pantalla LCD: TODOS OFF.

Prof. Luis Zurita Microcontroladores II

Page 29: Micro2 tema 5

#include <16f877.h>

#fuses XT,NOWDT,NOPROTECT,NOLVP#use delay (CLOCK = 4000000)

#use rs232(baud=9600, xmit=pin_c6,

rcv=pin_c7)#define use_portb_kbd TRUE

#define use_portd_lcd TRUE

#include <lcd.c>#include <kbd.c>

if (k!=0) {

if (x==1){valor=0x17;

PUTC(valor);

printf(lcd_putc,"\fORDEN 1");}else if (x==4)

{valor=0x2D;

PUTC(valor);printf(lcd_putc,"\fORDEN 2");}

else if (x==7)

Ejemplo 2. Sistema Maestro-Esclavo multi- selector.Programa del Maestro:

void main() {char k;

int x;

int valor;lcd_init();

kbd_init();

port_b_pullups(TRUE);printf(lcd_putc,"\fPRESIONE FUNCION");

OUTPUT_C(0x00);

while (TRUE) {k=kbd_getc();

x=k-48;

else if (x==7)

{valor=0x64;PUTC(valor);

printf(lcd_putc,"\fORDEN 3");}

else{valor=0xC2;

PUTC(valor);

printf(lcd_putc,"\fTODOS OFF");delay_ms(1000);}

}

}}

Prof. Luis Zurita Microcontroladores II

Page 30: Micro2 tema 5

#include <16f877.h>#fuses XT,NOWDT#use delay(CLOCK=4000000)#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7,

bits=8)#define use_portd_lcd TRUE#include <lcd.c>int valor;

#int_RDARDA_isr(void){

delay_ms(50);}else if (valor==0x2D){printf(lcd_putc,"\fORDEN 2");output_low (PIN_C0);output_high (PIN_C1);output_low (PIN_C2);delay_ms(50);}else if (valor==0X64){printf(lcd_putc,"\fORDEN 3");output_low (PIN_C0);output_low (PIN_C1);

Ejemplo 2. Sistema Maestro-Esclavo multi- selector.Programa del Esclavo:

RDA_isr(void){valor=GETC();}

void main() {set_tris_c(0x80);lcd_init();enable_interrupts(INT_RDA);enable_interrupts(GLOBAL);

while (TRUE) {if (valor==0x17)

{printf(lcd_putc,"\fORDEN 1");output_high (PIN_C0);output_low (PIN_C1);output_low (PIN_C2);

output_low (PIN_C1);output_high (PIN_C2);delay_ms(50);}else if (valor==0XC2){printf(lcd_putc,"\fTODOS OFF");output_low (PIN_C0);output_low (PIN_C1);output_low (PIN_C2);delay_ms(50);}else{}

}}

Prof. Luis Zurita Microcontroladores II

Page 31: Micro2 tema 5

Ejemplo 2. Sistema Maestro-Esclavo multi- selector.Simulación del Programa:

Prof. Luis Zurita Microcontroladores II

Page 32: Micro2 tema 5

Ejemplo 2. Sistema Maestro-Esclavo multi- selector.Simulación del Programa:

Prof. Luis Zurita Microcontroladores II

Page 33: Micro2 tema 5

PROGRAMA DEL PIC MAESTRO:#include <16F877A.h>#device ADC=10#FUSES XT,NOWDT,NOPROTECT,NOLVP#use standard_io(c)#use delay(clock=4000000)#use rs232(baud=9600, xmit=pin_c6,

for (;;) {set_adc_channel(0); // Conversión//de la señal del potenciómetrodelay_ms(10); // Espera el TADQvalor = read_adc(); // Lee el valor

de //la conversiónp=valor*0.098; // Factor escalar

Ejemplo 3. Realizar una conversión A/D de una señal proveniente deun potenciómetro en un PIC16F877, y enviarlo al puerto serie de unacomputadora. Visualizar los datos en LABVIEW (Opcional), además depoder controlar el puerto B de un PIC16F873 desde la computadora.

#use rs232(baud=9600, xmit=pin_c6,rcv=pin_c7, bits=8, parity=N)

#BYTE TRISA=0X85#BYTE PORTA=0X05

void main() {int16 valor;int p;

setup_adc_ports(AN0);setup_adc(ADC_CLOCK_INTERNAL);

p=valor*0.098; // Factor escalar//para pasar de 0-1023 a 0-100

putc(p);delay_ms(200); //Tiempo de

//muestreo}

}

Prof. Luis Zurita Microcontroladores II

Page 34: Micro2 tema 5

PROGRAMA DEL PIC ESCLAVO:#include <16F873A.h>#FUSES XT,NOWDT,NOPROTECT,NOLVP

#use standard_io(c)#use fast_io(b)#use delay(clock=4000000)

void main() {set_tris_b(0x00);enable_interrupts(INT_RDA);enable_interrupts(GLOBAL);

while (1){

Ejemplo 3. Realizar una conversión A/D de una señal proveniente deun potenciómetro en un PIC16F877, y enviarlo al puerto serie de unacomputadora. Visualizar los datos en LABVIEW (Opcional), además depoder controlar el puerto B de un PIC16F873 desde la computadora.

#use delay(clock=4000000)#use rs232(baud=9600, xmit=pin_c6,

rcv=pin_c7, bits=8, parity=N)

int valor;

#int_RDA //Interrupción por RX de datos

RDA_isr(void){valor=GETC();}

while (1){output_b(valor);}

}

Prof. Luis Zurita Microcontroladores II

Page 35: Micro2 tema 5

Información obtenida en LABVIEW

Prof. Luis Zurita Microcontroladores II

Page 36: Micro2 tema 5

Información obtenida en LABVIEW

Prof. Luis Zurita Microcontroladores II

Page 37: Micro2 tema 5

Puerto Serie en PROTEUS

• El ISIS del PROTEUS proporciona un componente quepermite la simulación a través del puerto serie:COMPIM.

• Utilizando este componente no se necesita colocar unMAX232 para la simulación, debido a que el propiocomponente gestiona la comunicación con el puerto decomponente gestiona la comunicación con el puerto dela computadora.

• Podemos entonces comunicarnos con nuestra propiacomputadora. Si se tiene 2 puertos serie o 1 serie yvarios USB, con su respectivo cable convertidor, y asímanejar los datos que provienen del PIC con diferentesprogramas de aplicación como Visual C, LABVIEW, entreotros.

Prof. Luis Zurita Microcontroladores II

Page 38: Micro2 tema 5

ERROR

TXD3

RXD2

CTS8

RTS7

DSR6

DTR4

DCD1

RI9

P1

Puerto Serie en PROTEUS

ERROR

COMPIM

La configuración del puerto se realiza como cualquier otro componentey se pueden cambiar virtualmente todas las propiedades de un puertoserie: número de puerto, velocidad, paridad, número de bits, entreotros.Prof. Luis Zurita Microcontroladores II

Page 39: Micro2 tema 5

Para este ejercicio, se envían los datos del PIC al COMPIM 1. Para simular que losdatos se reciben en otro puerto (la computadora), se utiliza otro simuladorde puerto (COMPIM 2):

#include <16F877.h>

#device ADC=10

#FUSES XT,NOWDT,NOPROTECT,NOLVP

#use delay(clock=4000000)

#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)

Ejemplo 4. Realizar una conversión A/D de una señal proveniente deun potenciómetro y enviarlo al puerto serie de una computadora.

#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)

#include <LCD.C>

void main() {

int16 valor=0;

float p=0.0;

setup_adc_ports(AN0);

setup_adc(ADC_CLOCK_INTERNAL);

lcd_init();Prof. Luis Zurita Microcontroladores II

Page 40: Micro2 tema 5

Continuación del ejercicio:

for (;;) {

set_adc_channel(0); // Conversión de la señal del potenciómetro

delay_us(10); // Espera el TADQ

valor = read_adc(); // Lee el valor de la conversión

p =5.0 * valor / 1024.0;// Convierte el valor decimal a voltaje

//Es lo mismo que utilizar p=0.004883*valor;

Ejemplo 4. Realizar una conversión A/D de una señal proveniente deun potenciómetro y enviarlo al puerto serie de una computadora.

//Es lo mismo que utilizar p=0.004883*valor;

printf(lcd_putc, "\fADC =%LU\n",valor);

printf(lcd_putc,"\VOLTAJE = %01.2fV",p);

printf("ADC = %4ld ",valor); //Envío de información a la computadora

printf("VOLTAJE = %01.2fV\r", p); // El \r permite cambiar de línea.

delay_ms(100);

}

}

Prof. Luis Zurita Microcontroladores II

Page 41: Micro2 tema 5

Configuración del COMPIM

Prof. Luis Zurita Microcontroladores II

Page 42: Micro2 tema 5

Recibe

Transmite

Recibe

En este ejemplo no se recibe nada,puesto que no se pudo conectar uncable USB entre dos puertos de lamisma computadora.

Prof. Luis Zurita Microcontroladores II