Académique Documents
Professionnel Documents
Culture Documents
TODOPIC
Hola mariacontenis
Mostrar mensajes no leídos desde la última visita.
Mostrar nuevas respuestas a tus mensajes.
15 de Agosto de 2016, 20:41:40
Este tema Buscar
« anterior próximo »
RESPONDER FAVORITO NOTIFICAR MARCAR COMO NO LEÍDOS ENVIAR TEMA IMPRIMIR
Páginas: [1] 2 3 Ir Abajo
Autor Tema: Trama de datos por RS485 a RS232 con Pic y Display (Leído 5604
mariacontenis y 0 Visitantes están viendo este tema.
BINARIO Trama de datos por RS485 a
Citar
RS232 con Pic y Display
PIC16
« en: 29 de Noviembre de 2013, 15:22:11 »
Mensajes: 142
Estimados:
Estoy comenzando un desarrollo con un sensor de humedad que
tiene dentro de su circuito un micro que devuelve los datos por RS485, estoy
un poco perdido. En realidad lo que quiero hacer es sencillo pero no tanto.
Es asi, yo tengo mi sensor de humedad de suelo es un Hydra probe II el mismo
se puede comunicar con una PDA que tiene un programita que te permite ver
los datos de la humedad del suelo y la constante dielectrica del mismo, asi
como tambien la salinidad. Bien todos esos datos el sensor los devuelve en una
trama que puedo conocer como es porque el fabricante me da esa informacion;
mi idea es para no tener que comprar una pda usar un pic, ya que actualmente
tomo los datos con una netbook y un conversor de RS485 a RS232.
Cuando conecto la netbook mediante el hercules le mando tres comandos al
sensor SN TR y TE
http://www.todopic.com.ar/foros/index.php?topic=41804.0 1/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
SN: me devuelve el numero de serie.
TR: le dice al sensor que realize una medicion.
TE: Me devuelve la medicion que realizo el sensor.
Mi idea es poder migrar todo esto a un PIC, quiero usar un PIC16F873 con un
SN75176 que es un integrado que me convierte los niveles 485 directamente a
RS232 con lo cual podria comunicarme directamente desde el pic al sensor sin
demasiados problemas.
OK hasta aca todo bien, sin embargo mi problema radica en que no se leer
tramas con el pic, usualmente he leido caracteres como 'R' o 'T' y con eso hacia
que se active alguna cosa mediante el puerto serie.
Como yo conozco la trama que me envia el sensor querria saber como se lee
una trama asi de toda esa info puedo seleccionar los datos que necesito.
Saludos y gracias por leer.
Reportar al moderador En línea
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100
101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00
00011111111 0011111 011110001111111111 1011111111101100000000
AngelGris Re: Trama de datos por RS485 a
Citar
RS232 con Pic y Display
Colaborador
« Respuesta #1 en: 29 de Noviembre de
PIC24H
2013, 16:12:29 »
Mensajes: 2459 Todo depende de como sea la trama. Si tiene algún caracter de inicio y alguno
de final de trama es bien sencilla la lectura.
Básicamente es ir recibiendo y almacenando todos los caracteres hasta que
aparezca el final de trama.
Reportar al moderador En línea
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas
BINARIO Re: Trama de datos por RS485 a
Citar
RS232 con Pic y Display
PIC16
« Respuesta #2 en: 02 de Diciembre de 2013,
10:00:43 »
El viernes charlando con un colega me dijo que puedo utilizar un vector e ir
almacenando los datos si tiene caracter de fin de trama leer ese como condicion
para salir, y si no puedo usar algo que el lama timeout, es decir que si paso un
determinado tiempo sin recibir nada dar por terminada la transmision, ahora
Mensajes: 142 estoy leyendo los manuales a ver si sale algo pero mucho no me dice sobre la
trama, tendre que investigar mas.
Reportar al moderador En línea
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100
101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00
00011111111 0011111 011110001111111111 1011111111101100000000
AngelGris
http://www.todopic.com.ar/foros/index.php?topic=41804.0 2/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
Colaborador Re: Trama de datos por RS485 a
Citar
PIC24H RS232 con Pic y Display
« Respuesta #3 en: 02 de Diciembre de 2013,
10:09:01 »
Mensajes: 2459
Puedes subir la información de tu dispositivo, para ver si entre todos
comprendemos como manejar la trama.
Reportar al moderador En línea
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas
BINARIO Re: Trama de datos por RS485 a
Citar
RS232 con Pic y Display
PIC16
« Respuesta #4 en: 02 de Diciembre de 2013,
10:53:33 »
Aca subo el folleto del sensor donde da detalles de la comunicacion que emplea.
http://www.stevenswater.com/catalog/products/soil_sensors/manual/Hydra%20Probe%20M
http://www.stevenswater.com/catalog/products/soil_sensors/datasheet/Hydra%20Probe%2
Mensajes: 142
Reportar al moderador En línea
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100
101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00
00011111111 0011111 011110001111111111 1011111111101100000000
AngelGris Re: Trama de datos por RS485 a
Citar
RS232 con Pic y Display
Colaborador
« Respuesta #5 en: 02 de Diciembre de 2013,
PIC24H
11:27:11 »
Mensajes: 2459 Por lo que entiendo del datasheet, se pueden hacer varias operaciones sobre el
dispositivo. Una muy importante es la configuración del Address si es que
tienes varios dispositivos similares conformando una red. Así como también la
lectura del address.
¿Tienes varios dispositivos en paralelo? ¿Sabes cuál es el address del mismo?
Por lo visto cada una de las tramas termina con los caracteres <CR><LF> que
son los decimales 13 y 10 respectivamente.
Entiendo que para leer cierta información hay que mandar el comando T<set>
y va a devolver la lectura e el formato <readings> que son valores separados
por una coma ",". Según el T que se solicite será la información recibida.
Imagino que si se envía un T0, se recibe toda la información correspondiente a
dicha petición y que, según el datasheet, son 9 parámetros, y por lo tanto
<readings> constará de 9 "valores" separados por una coma.
Reportar al moderador En línea
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas
http://www.todopic.com.ar/foros/index.php?topic=41804.0 3/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
BINARIO Re: Trama de datos por RS485 a
Citar
RS232 con Pic y Display
PIC16
« Respuesta #6 en: 02 de Diciembre de 2013,
16:02:05 »
LA idea es colocar solo un dispositivo, dado que son realmente caros, y de
hecho es para hacer un medidor portatil de humedad del suelo, o sea que solo
se maneja un dispositivo RS485 con el micro
Reportar al moderador En línea
Mensajes: 142
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100
101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00
00011111111 0011111 011110001111111111 1011111111101100000000
BINARIO Re: Trama de datos por RS485 a
Citar
RS232 con Pic y Display
PIC16
« Respuesta #7 en: 16 de Diciembre de 2013,
13:12:42 »
Bueno perfecto, el protocolo SDI12 es solo para algunos de estos sensores,
pero tambien vienen RS485 aca traduje una parte de la hoja de datos del
sensor donde explica en buen detalle como manejar los comandos los voy a
colocar a continucacion:
Mensajes: 142
Apéndice B – Comunicación RS485
La sonda Hydra RS485 es también digital y usa formato de comunicación RS
485. La sonda Hydra RS485 usa 4 cables: un cable de tierra, un cable de
alimentación de 12V y dos cables de datos. LA sonda Hydra Rs485 se
comunica por 2 cables de dato y puede conectarse a un puerto RS485 en un
Logger. Se puede conectar a un conjunto de terminales como la versión SDI
12, pero con 4 cables en vez de 2. La ventaja del RS485 sobre el SDI12 es que
la versión RS485 puede trabajar a más de 3000 pies. La desventaja es que
consume más potencia.
Requerimientos de potencia 9 a 20 VDC (12VDC ideal)
Cable rojo Tensión de alimentación
Cable negro Tierra
Cable azul Señal de datos A – señal no invertida
Cable verde Señal de datos B – señal invertida
Tasa de Baudios 9600 8N1
Consumo <10 mA Idle / 30 mA en modo Activo
Sonda Stevens Hydra RS485 Especificaciones de comando.
Formato de comandos
AAACC<CR><LF> Ejecutar
AAACC=?<CR><LF> Consulta la configuración actual
AAACC=XXX…<CR><LF> Asigna un nuevo valor
AAA: Dirección de 3byte
Caracteres ASCII, 09 AZ az
Carácter comodín ‘/’
Dirección de transmisión ‘///’
http://www.todopic.com.ar/foros/index.php?topic=41804.0 4/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
CC: Comando de 2 bytes
XXX…: Comandos de datos. Ver información de comandos para
requerimientos específicos
<CR> Retorno de carro ASCII 13
<LF> Carácter de retorno de línea ASCII 10
Otros Gramaticales
<d>: Dígitos, ASCII ‘0’ al ASCII ‘9’
<a>: ASCII ‘A’ al ASCII ‘D’, usado para la constante de agua
personalizada
<serial>: Numero serial, 8 dígitos <d><d><d><d><d><d>
<d><d>
<soil>: Tipo de suelo, 1 carácter { ‘1’ |‘2’ |‘3’ |‘4’ |‘C’ |‘D’ }
<quick>: Modo Rápido, 1 carácter { ‘1’ ‘6’, ‘X’ }
<warump>: tiempo de calentamiento, 15 dígitos, 065535
<bool>: Valor booleano, 1 carácter { ‘0’ | ‘1’ }
<firmware> Firmware, 3 o 4 bytes, formateado como “2.7” o “R.2.7”
o “2S7”
<text>: Texto ASCII imprimible
<float>: Numero decimal, opcionalmente usado en forma de
notación científica.
Ej. “+23.54, 0.001, 123.0E5, 45E3”
<readings>: Cadena de flotantes, delimitadas por comas. Ej.
“+23.54, 42.532, +2342.12”
Especificaciones Sonda Hydra comandos RS485
Información de comandos
Numero serial
Descripción: Retorna el número de serie de fábrica.
Nivel de acceso: Solo lectura.
Dirección de lectura: Broadcast, Exact
Comando de lectura: <addr>SN=?<CR><LF>
Respuesta de lectura: <addr><serial><CR><LF>
Versión de Firmware
Descripción: Devuelve el número de versión de firmware.
Nivel de acceso: Solo lectura.
Dirección de lectura: Broadcast, Exact
Comando de lectura: <addr>FV=?<CR><LF>
Respuesta de lectura: <addr><firmware><CR><LF>
Comandos de configuración Estándar
Dirección
Descripción: Captura y establece la dirección de la sonda
Nivel de acceso: Lectura/Escritura
Dirección de lectura: Broadcast, Exact
Comando de lectura: <addr>AD=?<CR><LF>
Respuesta de lectura: <addr><CR><LF>
http://www.todopic.com.ar/foros/index.php?topic=41804.0 5/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
Dirección de escritura: Exact
Comando de escritura: <addr>AD=<serial><new_addr><CR><LF>
Respuesta de escritura: <new_addr><CR><LF>
Tipo de suelo
Descripción: Captura y establece el tipo de suelo de la sonda
Nivel de acceso: Lectura/Escritura
Dirección de lectura: Broadcast, Exact
Comando de lectura: <addr>ST=?<CR><LF>
Respuesta de lectura: <addr><CR><LF>
Dirección de escritura: Broadcast, Exact , Wildcard
Comando de escritura: <addr>ST=<soil><CR><LF>
Respuesta de escritura: <soil><CR><LF> (no hay respuesta en la dirección
comodín)
Comandos de configuración avanzada.
Ubicación
Descripción: Captura y establece la ubicación de la sonda
Nivel de acceso: Lectura/Escritura
Dirección de lectura: Broadcast, Exact
Comando de lectura: <addr>LO=?<CR><LF>
Respuesta de lectura: <addr><text><CR><LF>
Dirección de escritura: Exact
Comando de escritura: <addr>LO=<text><CR><LF>
Respuesta de escritura: <addr><text><CR><LF>
Descripción
Descripción: Captura y establece la descripción de sonda
Nivel de acceso: Lectura/Escritura
Dirección de lectura: Broadcast, Exact
Comando de lectura: <addr>DS=?<CR><LF>
Respuesta de lectura: <addr><text><CR><LF>
Dirección de escritura: Exact
Comando de escritura: <addr>DS=<text><CR><LF>
Respuesta de escritura: <addr><text><CR><LF>
Constante Hídrica personalizada
Descripción: Captura y establece la constante hídrica de la sonda
Nivel de acceso: Lectura/Escritura
Dirección de lectura: Broadcast, Exact
Comando de lectura: <addr>X<a>=?<CR><LF>
Respuesta de lectura: <addr><float><CR><LF>
Dirección de escritura: Exact
Comando de escritura: <addr>X<a>=<float><soil><CR><LF>
Respuesta de escritura: <addr><float><CR><LF>
Modo rápido
Descripción: Captura y establece la constante hídrica de la sonda
Nivel de acceso: Lectura/Escritura
Dirección de lectura: Broadcast, Exact
Comando de lectura: <addr>QM=?<CR><LF>
Respuesta de lectura: <addr><quick><CR><LF>
Dirección de escritura: Exact
Comando de escritura: <addr>QM=<quick><CR><LF>
Respuesta de escritura: <addr><float><CR><LF>
http://www.todopic.com.ar/foros/index.php?topic=41804.0 6/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
Comandos del Debug
Warmup time
Descripción: Captura y establece el tiempo de calentamiento
personalizado de la sonda
Nivel de acceso: Lectura/Escritura
Dirección de lectura: Broadcast, Exact
Comando de lectura: <addr>WT=?<CR><LF>
Respuesta de lectura: <addr><warump><CR><LF>
Dirección de escritura: Exact
Comando de escritura: <addr>WT=<warmup><CR><LF>
Respuesta de escritura: <addr><warmup><CR><LF>
Sonda habilitada
Descripción: Captura y establece si el circuito de la sonda está
habilitado
Nivel de acceso: Lectura/Escritura
Dirección de lectura: Broadcast, Exact
Comando de lectura: <addr>PE=?<CR><LF>
Respuesta de lectura: <addr><bool><CR><LF>
Dirección de escritura: Exact
Comando de escritura: <addr>PE=<bool><CR><LF>
Respuesta de escritura: <addr><bool><CR><LF>
Comandos de medición
//Comandos fundamentales para la lectura de la humedad de suelo
Tomar Lectura
Descripción: Indica a una sonda o un grupo de sondas tomar una lectura
Nivel de acceso: Lectura/Escritura
Dirección de lectura: Broadcast, Exact
Comando de lectura: <addr>TR<CR><LF>
Respuesta de lectura: (ninguna)
Transmitir Conjunto leído
Descripción: Indica a una sonda transmitir una lectura especifica
Nivel de acceso: Lectura/Escritura
Dirección de lectura: Broadcast, Exact
Comando de lectura: <addr>TR<CR><LF>
Respuesta de lectura: (ninguna)
RS485 Conjuntos Transmitidos
(tc) indica valores que deben ser corregidos por temperatura
T0 – Conjunto transmisión 0:
H) Humedad
J) Conductividad eléctrica del suelo (tc)
F) Temperatura °C
G) Temperatura °F
O) Conductividad eléctrica del suelo
K) Permitividad Dieléctrica real.
http://www.todopic.com.ar/foros/index.php?topic=41804.0 7/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
M) Permitividad Dieléctrica Imaginaria.
L) Permitividad Dieléctrica real (tc).
N) Permitividad Dieléctrica imaginaria (tc)
T1 – Conjunto de transmisión 1:
F) Temperatura °C
G) Temperatura °F
I) Tangente de perdida
T2 – Conjunto de transmisión 2:
F) Temperatura °C
G) Temperatura °F
H) Humedad
O) Conductividad eléctrica
J) Conductividad eléctrica (tc)
I) Tangente de perdida
T3 – Conjunto de transmisión 3:
F) Temperatura °C
G) Temperatura °F
H) Humedad
I) Tangente de perdida
J) Conductividad eléctrica del suelo (tc)
K) Permitividad dieléctrica real
L) Permitividad dieléctrica real (tc)
M) Permitividad dieléctrica imaginaria
N) Permitividad dieléctrica imaginaria (tc)
O) Conductividad eléctrica del suelo
P) Temperatura de diodo
Q) Vacío
T4 – Conjunto de transmisión 4:
A) V1 (Volts)
B) V2 (Volts)
C) V3 (Volts)
D) V4 (Volts)
E) V5 (Volts)
T5 – Conjunto de transmisión 5:
R) V1 ADC en bruto
S) V2 ADC en bruto
T) V3 ADC en bruto
U) V4 ADC en bruto
V) V5 ADC en bruto
Ahora comienzo con algunas simulaciones en proteus ocupando el
hyperterminal para ver como mandar los comandos y armar la comunicacion
propiamente dicha, el hardware es sencillo, ya que solo necesito un pic, un
sn75175 y un lcd para visualizar las respuestas y configurar, como veran el hard
es simple, mas aun cuando necesito hacer un dispositivo portatil. Saludos les
voy contando como sale.
Reportar al moderador En línea
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100
101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00
00011111111 0011111 011110001111111111 1011111111101100000000
http://www.todopic.com.ar/foros/index.php?topic=41804.0 8/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
BINARIO Re: Trama de datos por RS485 a
Citar
RS232 con Pic y Display
PIC16
« Respuesta #8 en: 18 de Diciembre de 2013,
10:00:39 »
Hasta ahora e implementado lo siguiente con dos pics como para probar uno de
ellos seria quien simula a la hydra pero de momento los dos hacen lo mismo,
como primera prueba de transmision intente que cuando uno transmite algo al
otro lo publique en el lcd por interrupcion de la USART, pero hasta ahora solo
Mensajes: 142 me funciono una vez, en el compilador me dio mensaje de que las
interrupciones se deshabilitan para prevenir una re entrada, asi que en el ciclo
iterativo le puse que active nuevamente las interrupciones de la USART les
muestro el programa a continuacion:
#include <16F873A.h>
#device adc=10
#FUSES XT,NOWDT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7))
#include <LCD420.C>
int ch;
#int_rda
void serial_isr()
{
ch=getchar();
printf("Recibido = %c", ch);
printf(lcd_putc, "\fANDUVO = %c", ch);
delay_ms(100);
}
void main()
{
int16 q;
float p;
setup_adc_ports(AN0); //Canal 0 analógico
setup_adc(ADC_CLOCK_INTERNAL); //Fuente de reloj RC
enable_interrupts(global);
enable_interrupts(int_rda);
lcd_init();
for ( ; ; ) {
enable_interrupts(global);
enable_interrupts(int_rda);
set_adc_channel(0); //Habilitación canal0
delay_us(10);
q = read_adc(); //Lectura canal0
p = 5.0 * q / 1024.0; //Conversión a tensión
printf(lcd_putc, "\fADC = %4ld", q);
printf(lcd_putc, "\nVoltage = %01.2fV", p);
http://www.todopic.com.ar/foros/index.php?topic=41804.0 9/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
printf(lcd_putc, "\nVoltage = %01.2fV", p);
delay_ms(100);
printf("\fADC = %4ld \r", q);
printf("Voltage = %01.2fV", p);
}
}
Les adjunto el circuito de prueba en proteus, acepto sugerencias sobre como
hacer una transmision de caracteres ascii con la usart, hasta ahora logre eso
sigo renegando mientras.
transmision.JPG (184.61 kB, 2827x1297 visto 57 veces.)
Reportar al moderador En línea
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100
101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00
00011111111 0011111 011110001111111111 1011111111101100000000
AngelGris Re: Trama de datos por RS485 a
Citar
RS232 con Pic y Display
Colaborador
« Respuesta #9 en: 18 de Diciembre de 2013,
PIC24H
10:48:54 »
Mensajes: 2459 La instrucción printf consume muchísimos ciclos de instrucción (en asm) por
lo tanto demora mucho tiempo. Nunca es recomendable tardar mucho dentro
de la interrupción. Será mejor que utilices un flag indicativo de que hay datos y
luego evalues dicho flag en el main del programa. Justamente si hay datos los
muestras en el LCD.
A su vez, quizá sería recomendable hacer funcionar al PIC a una mayor
frecuencia, para tener más ciclos de instrucción para hacer cosas.
La sintaxis básica de la utilización de un flag sería algo así....
Código: C
http://www.todopic.com.ar/foros/index.php?topic=41804.0 10/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
1. unsigned char caracter; // donde se almacenara un byte
llegado del UART
2. unsigned char flag; // flag para saber si hay datos
3.
4. interrupcion
5. {
6. caracter = getchar();
7. flag = 1;
8. }
9.
10. main
11. {
12. while (1)
13. {
14. if (flag == 1)
15. {
16. mostrar en LCD
17. flag = 0;
No utilizo CCS como compilador así que puse una especie de pseudocodigo
para que se entienda la idea
Reportar al moderador En línea
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas
BINARIO Re: Trama de datos por RS485 a
Citar
RS232 con Pic y Display
PIC16
« Respuesta #10 en: 09 de Enero de 2014,
14:34:28 »
Tengo un problemita ahora.
Implemente dos pics para simular la trama de datos, por ahora lo que hago es
leer el valor de un potenciometro con el adc y enviarlo por puerto serie de un pic
Mensajes: 142 al otro, ok funciona, pero lo que le llega al otro pic es otra cosa yo hice asi:
en un display pongo lo que lee el adc y por ejemplo es 1.25, en el otro pic leo
ese valor en un vector que es char y segun yo lee caracter por caracter y lo
almacena en cada posicion del vector, luego muestro ese vecto pero me sale
por ejemplo asi:
< > < 1 > < 1 >
En lugar de mostrarme el valor < 1 > < . > < 4 >
no se porque es, y ademas cuando yo cambio el valor del potenciometro
mantiene esa lectura y no la actualiza como si la interrupcion del puerto serie no
volviese a ocurrir...
Reportar al moderador En línea
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100
101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00
00011111111 0011111 011110001111111111 1011111111101100000000
http://www.todopic.com.ar/foros/index.php?topic=41804.0 11/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
rivale Re: Trama de datos por RS485 a
Citar
RS232 con Pic y Display
Colaborador
« Respuesta #11 en: 09 de Enero de 2014,
PIC24H
17:47:58 »
Algunas correcciones a tu codigo:
Código: [Seleccionar]
#include <16F873A.h>
#device adc=10
Mensajes: 1705 #FUSES XT,NOWDT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7))
#include <LCD420.C>
int ch;
char cadena[30];
int1 flag=0;
#int_rda
void serial_isr()
{
cadena=gets;
flag=1;
Si estas usando printf para enviar datos puedes usar gets para leer la cadena
completa, tambien cambie algunas lineas que no necesitan ir dentro de tu ciclo
infinito
espero te ayude
Saludos
Reportar al moderador En línea
"Nada es imposible, no si puedes imaginarlo"
BINARIO Re: Trama de datos por RS485 a
Citar
RS232 con Pic y Display
PIC16
« Respuesta #12 en: 16 de Enero de 2014,
14:22:27 »
HOLA RIVALE!!!
muchas gracias por tu ayuda, hasta ahora el codigo que implementaste como
correccion parece dar resultado, sin embargo hay un error en proteus, este
Mensajes: 142 seria el codigo
#include <16F873A.h>
#device adc=10
#FUSES XT,NOWDT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7))
#include <LCD420.C>
int i=0;
char cadena[3]={0,0,0};
http://www.todopic.com.ar/foros/index.php?topic=41804.0 12/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
int1 flag=0;
#int_rda
void serial_isr()
{
gets(cadena);
flag=1;
}
void main()
{
int16 q;
float p;
setup_adc_ports(AN0); //Canal 0 analógico
setup_adc(ADC_CLOCK_INTERNAL); //Fuente de reloj RC
enable_interrupts(global);
enable_interrupts(int_rda);
lcd_init();
enable_interrupts(global);
enable_interrupts(int_rda);
set_adc_channel(0); //Habilitación canal0
while(true)
{
delay_us(10);
q = read_adc(); //Lectura canal0
p = 5.0 * (float)q / 1024.0; //Conversión a tensión
printf(lcd_putc, "\fADC = %4ld", q);
printf(lcd_putc, "\nVoltage = %01.2fV", p);
delay_ms(10);
printf("\fADC = %4ld \r", q);
printf("Voltage = %01.2fV", p);
if (flag == 1)
{
printf(lcd_putc, "\fDATO = %s", cadena);
delay_ms(40);
flag = 0;
i++;
if (i==3)
i=0;
}
}
}
Funciona, muestra el valor pero hace un error como veraz en estas imagenes
como si fuese un desplazamiento, he adjuntado el error que me da en proteus,
no se bien porque lo genera hoy le dedique la mañana a esto si logro algun
avance lo publico
saludos y gracias por leer
http://www.todopic.com.ar/foros/index.php?topic=41804.0 13/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
prueba hidra error serial.JPG (51.79 kB, 969x245 visto 49 veces.)
Reportar al moderador En línea
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100
101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00
00011111111 0011111 011110001111111111 1011111111101100000000
rivale Re: Trama de datos por RS485 a
Citar
RS232 con Pic y Display
Colaborador
« Respuesta #13 en: 16 de Enero de 2014,
PIC24H
15:07:06 »
incrementa la longitud de tu variale cadena, si estas enviando 4 caractares
necesitas que su longitud sea de al menos 5
Reportar al moderador En línea
"Nada es imposible, no si puedes imaginarlo"
Mensajes: 1705
rivale Re: Trama de datos por RS485 a
Citar
RS232 con Pic y Display
Colaborador
« Respuesta #14 en: 16 de Enero de 2014,
PIC24H
15:11:43 »
no se si entendí bien el problema
tu envias 2.34 desde un pic, y en el pic que recibes solo ves 35
si es eso creo que es por lo que comenté arriba, en tu cadena no caben los 4
Mensajes: 1705 caracteres por eso te lo corta
si lo entendí mal por favor corrígeme para que pueda ayudarte
Reportar al moderador En línea
"Nada es imposible, no si puedes imaginarlo"
« anterior próximo »
Páginas: [1] 2 3 Ir Arriba
Ir a: => Lenguaje C para microcontroladores PIC ir
http://www.todopic.com.ar/foros/index.php?topic=41804.0 14/15
15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display
SMF 2.0.11 | SMF © 2015, Simple Machines
SMFAds for Free Forums
XHTML RSS WAP2
http://www.todopic.com.ar/foros/index.php?topic=41804.0 15/15