Autor Tema: comunicacin sensor y 232 con pic  (Leído 1834 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
comunicacin sensor y 232 con pic
« en: 14 de Febrero de 2011, 10:31:20 »
EDITO:
hola bueno edito este mismo hilo para hacer mejor la pregunta, reuslta que tengo un sensor de distancia ultrasonico el cual me entrega 5 digitos, los cuales corresponden 2 a control y los otros tres a los datos de medicion. esto se compone de una trama como sigue:

primero el sensor envia una R (mayuscula), seguido de 3 digitos, que equivalen a la distancia, con una distancia maxima de 765 cm. y por ultimo un retorno de carro igual a 0x0D. el punto que estoy midiendo estos valores pero el punto que que mi codigo no esta leyendo bien esto por que solo me entrega siertos numero y no los 3 numeros que tiene que ser para la distancia, en efecto mido esto y si varia, en cuanto a sentimetros, pero como digo no es correcta la lectura, y no se porque, es por esto que queria ver si me pueden ayudar a saver por que no me lee bien los datos el codigo, para que asi me entregue una lectura correcta.
a todo esto el sensor se comunica con el pic por medio de la comunicacion serial.

Código: [Seleccionar]
#INCLUDE <16F877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT
#USE delay (clock=20000000)         //clock=20Mhz
#USE rs232(baud=9600,parity=N,xmit=PIN_C6, rcv=PIN_C7,bits=8) //Configuracion del puerto serie....
#DEFINE use_portd_lcd TRUE //definir portb lcd
#INCLUDE<LCD420puertD.c>  //libreria manejo lcd de 20x4 modificada por suky para el puerto D
#INCLUDE <stdlib.h>
#include <string.h>


char lectura,destino[6],dato[6];
float convert=0;
int x=0;

#int_RDA
void  RDA_isr(void)
{
lectura=getc();
dato[x++]=lectura;
if(lectura==0x52){
x=0;
}
else if(lectura==0x0D){
strcpy( destino, dato );
x=0;
}
}

void main() {
 
////////////////////////////////////////// INICIALIZACIONES GENERALES
   lcd_init();
   enable_interrupts(INT_RDA);              //avilito interrupcion de resepcion serial   
   enable_interrupts(GLOBAL);               // avilito todo lo necesario...

   output_low(PIN_C0);                      //pone en cero el sensor2
   output_low(PIN_C1);                     //pone en uno el sensor1

While(TRUE){                                //infinito..........

   convert=atof(destino);

   lcd_gotoxy( 1, 1);
   printf(lcd_putc,"%f"convert);

}}

saludos y espero que me puedan ayudar como siempre  :mrgreen: :mrgreen: :mrgreen: :mrgreen:
« Última modificación: 15 de Febrero de 2011, 12:08:48 por japifer_22 »


 

anything