Vous êtes sur la page 1sur 15

15/8/2016 Trama de datos por RS485 a RS232 con Pic y Display

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

Inicio Ayuda Buscar Perfil Mis mensajes Mis Favoritos Calendario Usuarios Salir

TODOPIC » Microcontroladores PIC » Lenguaje C para microcontroladores PIC (Moderadores: pikman, pocher, vszener, Suky) »


Trama de datos por RS485 a RS232 con Pic y Display

« 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 RS­485 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 RS­485

La sonda Hydra RS­485 es también digital y usa formato de comunicación RS­
485. La sonda Hydra RS­485 usa 4 cables: un cable de tierra, un cable de
alimentación de 12V y dos cables de datos. LA sonda Hydra Rs­485 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, 0­9 A­Z a­z
                              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, 1­5 dígitos, 0­65535
<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, 45E­3”

<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"

Anuncios Google   ► RS232 to rs485   ► RS232 interface   ► Serial RS232   ► Rs485

RESPONDER FAVORITO NOTIFICAR MARCAR COMO NO LEÍDOS ENVIAR TEMA IMPRIMIR

« anterior próximo »
Páginas: [1] 2 3   Ir Arriba

TODOPIC » Microcontroladores PIC » Lenguaje C para microcontroladores PIC (Moderadores: pikman, pocher, vszener, Suky) »


Trama de datos por RS485 a RS232 con Pic y Display

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

Get Quotes Get Quotes Get Quotes Get Quotes Get Quotes Get Quotes

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

Vous aimerez peut-être aussi