TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: Abner_emanuel en 21 de Febrero de 2015, 12:13:45

Título: DIMMER RF PIC18F2550
Publicado por: Abner_emanuel en 21 de Febrero de 2015, 12:13:45
Buen día, estoy realizando la comunicación serie de pic a pic con el pic18F4550. Pues resulta que no recibe bien la cadena de números que envía el TX. Etoy utilizando el pic a 32Mhz y pienso que eso tiene algo que ver, quizá la velocidad es elevada para la recepción en Baud. Por favor me podrían orientar.

Aquí pongo los códigos TX y RX.

EL CODIGO TX

#include <18F4550.h>
         #device adc=10
         #FUSES HSPLL,NOWDT,NOPROTECT,NOLVP,NOPUT,NODEBUG,USBDIV,PLL5,CPUDIV2,VREGEN,MCLR
         #use delay(clock=32MHz)
         #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, PARITY=N, BITS =8, STOP=1, TIMEOUT=1000, ERRORS)
         #use fast_io(b)
        
         int valor;                
        
         void main()
         {  
         while(true)
         {
         for (valor=0;valor<=100;valor++) { printf("\f%2d",valor); delay_ms(100);  }                
         }
         }


EL RX
         #include <18F4550.h>
         #device adc=10
         #FUSES HSPLL,NOWDT,NOPROTECT,NOLVP,NOPUT,NODEBUG,USBDIV,PLL5,CPUDIV2,VREGEN,MCLR
         #use delay(clock=32MHz)
         #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, PARITY=N, BITS =8, STOP=1, TIMEOUT=1000, ERRORS)
         #include <lcd4x20.c>
         #use fast_io(b)
        
         int valor;
        
         #int_RDA
         void RDA_isr()
         {valor=getc();}
        
         void main()
         {
         lcd_init();
         set_tris_b(0x0f);
         enable_interrupts(INT_RDA);
         enable_interrupts(GLOBAL);
        
         while(TRUE)
         {
         lcd_gotoxy(1,1); printf(lcd_putc,"recibiendo=%d",valor);                                      
                                            
         }
         }


Anexo código para u descarga y simulación.

Título: Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
Publicado por: juaperser1 en 21 de Febrero de 2015, 14:07:00
buenas tardes Abner_emanuel, muchas veces nos centramos en el código cuando el problema puede estar en el hardware, antes de nada asegurate de que los pinse tx y rx esten cruzados de un PIC a otro y que has referenciado las masas, si no referencias las masas los dispositivos tendrán una diferencia de potencial diferente y lo que pa uno puede ser un 0 para el otro puede ser un 1.

un saludo
Título: Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
Publicado por: Abner_emanuel en 21 de Febrero de 2015, 14:17:43
Hola juaperser1

No lo tengo armado físicamente aun, pero si lo voy a armar el día de hoy y comento.

Yo imagine que hera por la velocidad del pic que no me permitía recibir bien los datos, pero lo armo físicamente y te digo.

Gracias por responder
Título: Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
Publicado por: Abner_emanuel en 23 de Febrero de 2015, 21:00:36
 :-/

Ya quedo solucionado, el problema estaba en el envío del dato por el transmisor

El dato lo envíe como: putc(valor); y yo lo estaba enviando como printf.

Saludos..
Título: Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
Publicado por: KILLERJC en 23 de Febrero de 2015, 22:52:27
putc() es para una letra creo..

Si no me equivoco usan:

printf(putc,"Mensaje a enviar");
Título: Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
Publicado por: juaperser1 en 24 de Febrero de 2015, 03:16:41
enorabuena trasteando se arreglan las cosas
Título: Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
Publicado por: Abner_emanuel en 24 de Febrero de 2015, 12:04:54

Gracias por comentar, asi es como quedo el TX con algunos cambios.

Saludos a todos...

         #include <18F4550.h>
         #FUSES HSPLL,NOWDT,NOPROTECT,NOLVP,NOPUT,NODEBUG,USBDIV,PLL5,CPUDIV2,VREGEN,MCLR
         #use delay(clock=32MHz)
         #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, PARITY=N, BITS =8, STOP=1, TIMEOUT=1000, ERRORS)
         #use fast_io(b)
         
         unsigned int iluminacion=0;
         int tiempo=10;
         void main()
         {   
         while(true)
         {         
         if(input(pin_b1)==0 && iluminacion>=0&&iluminacion<100) {iluminacion++; delay_ms(tiempo); putc(iluminacion);}    // No pasa de 100         
         if(input(pin_b2)==0 && iluminacion<=100&&iluminacion>0) {iluminacion--; delay_ms(tiempo); putc(iluminacion);}    // No baja de 0                     
         }
         } 
Título: Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
Publicado por: KILLERJC en 24 de Febrero de 2015, 14:23:47
Citar
unsigned int iluminacion=0;
if(input(pin_b1)==0 && iluminacion>=0&&iluminacion<100) {iluminacion++; delay_ms(tiempo); putc(iluminacion);}    // No pasa de 100  

Lo definis sin signo por lo cual jamas va a ser menor que 0, y estas agregando un condicion mas. Y el maximo es 99

Al igual con:

Citar
if(input(pin_b2)==0 && iluminacion<=100&&iluminacion>0) {iluminacion--; delay_ms(tiempo); putc(iluminacion);}    // No baja de 0      

Aqui tambien tenes una condicion de mas ya que ese solo te importa que entre para bajar el numero de iluminacion, por lo cual solo te importaria el limite inferior que creo que la mejor conversion a codigo maquina seria si es iluminacion!=0 , ya que constaria con 2 instrucciones de ASM pero eso es otro capitulo aparte.
Título: Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
Publicado por: Abner_emanuel en 24 de Febrero de 2015, 18:42:36
Una vez mas gracias por tu comentario KILLERJC, cada vez me sirven de mucho.

Realice un dimmer controlado por RF, en unos días subo el vídeo.

Saludos..
Título: Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC DIMMER RF
Publicado por: Abner_emanuel en 17 de Abril de 2015, 21:14:06
Por fin realice el Dimmer RF, aquí en enlace del vídeo:


https://www.youtube.com/watch?v=ZCmQHi93x_M


Título: Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
Publicado por: juaperser1 en 20 de Abril de 2015, 11:26:17
Funciona muy bien enorabuenA
Título: Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
Publicado por: mariacontenis en 20 de Abril de 2015, 18:06:01
Se ve muy bien tu Dimmer rf. Que distancia alcanzará el modulo del dimmer?.
Título: Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
Publicado por: Abner_emanuel en 20 de Abril de 2015, 20:42:07
Saludos...

E probado la comunicación a una distancia de 25 mts con linea de vista y con obstáculos el modulo alcanza 15 mtrs atravesando las paredes de mi habitación.

Gracias por su interés.