TODOPIC
Otros Microcontroladores / Dispositivos programables => Microcontroladores 8 bits => Mensaje iniciado por: CoralGM en 17 de Mayo de 2020, 18:06:41
-
Hola amigos,
Buenos dias a todos.
Quisiera saber si alguien me puede ayudar a solventar un problema que tengo con la comunicacion RS232.
Estoy tratando de hacer un programa en donde todo corre bien, pero la transmision de datos mediante RS232 no la logro.
El puerto SI envia datos, mas estos son erroneos (Envio K y recibo F8F8)
Realmente no se si es un problema del simulador o no.
Agradezco la ayuda de ustedes y muchisimas gracias.
Les cuelgo el codigo y capturas.
Estoy usando proteus 8.8.
Solia trabajar con el 8.1 y no tenia ningun tipo de problemas,
no se si sea el simulador, o la programadora jaja..
Gracias
CODE:
#INCLUDE <16f887.h>
#device adc=10
#USE DELAY(CRYSTAL=4000000)
#FUSES XT,NOPROTECT,NOWDT,NOBROWNOUT,NOPUT,NOLVP
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
long bits; //Variable almacena los bits
float tem; //Almacena la temperatura
char caracter='K';
void main()
{
set_tris_a(0b00000001); //Pongo el RA0 como entrada
setup_adc_ports(all_analog); //Pongo todo el puerto a analogo
setup_adc(adc_clock_internal); //Selecciono reloj interno para conversion
while(1)
{
set_adc_channel(0); //Selecciono el canal 0 (RA0)
delay_ms(1); //llamo retardo de 1 ms
bits=read_adc(); //Guarde el dato del LM en tempe
tem=bits*0.4882; //Conversion de bits a temperatura
//printf("\rLa Temperatura es: %2.3f C\r\n",tem);
printf("%c",caracter); //QUIERO ENVIAR SOLO ESTE DATO. DEBERIA RECIBIR K o DECIMAL 75 o 0x4B
delay_ms(1000);
}
}
-
....
El puerto SI envia datos, mas estos son erroneos (Envio K y recibo F8F8)
Realmente no se si es un problema del simulador o no.
Al terminal lo tenés listando en hexadecimal, de cualquier forma 'K' = 0x4E
El problema parece ser la configuración del terminal, yo a tu código lo copypego y sin tocar nada ejecuto:
- Tienes que ingresar para ver archivos adjuntos -
Terminal: 9600 8 N 1 Polaridad normal
Estoy usando proteus 8.8.
El mismo que yo
-
Hola Eduardo,
Muchas gracias por tu pronta respuesta, y disculpa mi tardanza.
Tengo problemas con la conexion a internet.
Te anexo la configuracion de mi terminar y de mi COMPIM para ver si das con el error.
Realmente tambien pienso que es eso, solo que no doy con la falla.
Ademas, estando en Hexadecimal deberia ver el valor Hexadecimal de 'K', pero veo son otros valores.
Muchas Gracias por tu colaboracion.
Aqui te lo cuelgo
-
Hola!
Mejor subí el archivo en Proteus.
-
Eduardo aqui te envio el Proyecto de Proteus.
El codigo te lo habia anexado en el primer post.
-
Hola, Supe tener problemas con la comunicación UART. Al parecer el problema estaba en la versión del compilador.
Ante la situación decidí escribir directamente en el registro Tx para enviar.
Y leer el registro UART para recibir.
-
Tenés mal puesta la frecuencia del procesador:
- Tienes que ingresar para ver archivos adjuntos -
En el programa declarás 4MHz --> En lugar de 9600baud te va a sacar a 9600/4=2400baud , como podés comprobar con el terminal a 2400
Ojo con las palabras de configuración y la seleccion de la fuente del clock, a veces no importa en la simulación pero otras te la hace a diferente velocidad.
Las veces que he tenido problemas simulando la comunicación, conectando el osciloscopio virtual ves el real baudrate virtual ;)
-
MADRE MIA!!!!
Era eso?
Muchisimas Gracias!!!! Dios mio, habia revisado todo, menos eso.
Muchas Gracias a los dos por los aportes!