Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

06/06/2016 #41


Buenas tardes luvhines,

He hecho de todo para hacer funcionar estos módulos con el pic 16f887 y 16f877a, de hecho, tengo un led de prueba para observar si encienden y creo que ni eso hacen (aunque si tiene voltaje en los pines del modulo).

No se que puedo estar haciendo mal, hasta copie y pegue tu código y no reaccionan. Me pregunto si las modificaciones que le hiciste a la librería podrían ser mi problema también?, creo que sería de ayuda si me pudieras facilitar tu librería con las modificaciones, si no es molestia.

A continuación mi código:

Código:
#include <16f877.h>
#fuses HS,NOWDT,XT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP,NOCPD,NOWRT                        
#use delay(clock=4000000)
#include "lib_rf2gh4_10.h"
#byte porta=5
#byte porte=9
#define porte,0 PIN_E0

int8 ret1;
int8 ret2;
int8 i;
int8 ON;

#int_ext         
void int_externo() 
{ 
   ret1=RF_RECEIVE;
   porta=RF_DATA[0];
   
}
void main()
{  
   port_b_pullups(FALSE);        
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   set_tris_a(0b000000);     
   porta=0;
   set_tris_e(0b000);
   setup_spi(SPI_SS_DISABLED);
   RF_INT_EN();
   RF_CONFIG_SPI();
   RF_CONFIG(0x40,0x01);
   RF_ON();
   ON=RF_ON;
   delay_ms(1000);
   
   if (ON==1)
  {  output_high(PIN_E0);
      while(1)
    { Delay_ms(5000);
      RF_DIR=0x08;
      for (i=0;i<8;i++)
      {
         RF_DATA[i]=1;
      }
      ret2=RF_SEND();
    }
  }
   
}
06/06/2016 #42
Moderador

Avatar de D@rkbytes

Dentro del tema se encuentra toda la información que requieres y también la librería modificada.
D@rkbytes dijo: Ver Mensaje
Noté que existían varias advertencias cuando se hacía el cambio de modo Master/Slave.
Así que en modo de depuración me dediqué a corregir la librería "lib_rf2gh4_10.h"
En el único programa que expones, tienes varias cosas mal.
Dices usar dos tipos de PIC, uno de ellos, el 16F877A, pero declaras: #include <16f877.h>

#byte porta=5
#byte porte=9
#define porte,0 PIN_E0

La tercer declaración no es correcta para definir un pin.
En dado caso, tendría que ser así: #bit RE0 = porte.0
O así: #define RE0 PIN_E0

Tienes un uso incorrecto para llamar a una función:
ret1=RF_RECEIVE;
Agregar los paréntesis: ret1=RF_RECEIVE();

Tienes configuraciones innecesarias para el microcontrolador:
Código:
   port_b_pullups(FALSE);        
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
D@rkbytes dijo: Ver Mensaje
Todas esas configuraciones son innecesarias, ya que son las que establece por defecto el compilador.
Lo puedes comprobar mirando los valores de los registros en Watch Window.
Mira la información y los programas adjuntos del post #26
06/06/2016 #43


Gracias, d@rkbytes, haré las que recomiendas.Estoy un poco nueva en esto

---------- Actualizado después de 29 minutos ----------

Cuando intento igualar el retorno 3 (ret3), con el comando de encendido del modulo no me lo permite y me dice "A numeric expression must appear here", quisiera saber por qué pasa esto si en la interrupción estoy haciendo lo mismo con el comando RF_RECEIVE()

Código:
#include <16f877.h>
#fuses HS,NOWDT,XT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP,NOCPD,NOWRT                        
#use delay(clock=4000000)
#include "lib_rf2gh4_10.h"
#byte porta=5
#byte porte=9
#bit RE0 = porte.0

int8 ret1;
int8 ret2;
int8 i;
int8 ret3;

#int_ext         
void int_externo() 
{ 
   ret1=RF_RECEIVE();
   porta=RF_DATA[0];
   
}
void main()
{  
   set_tris_a(0b000000);     // Todo el puerto D como salida.
   set_tris_e(0b000);
   setup_spi(SPI_SS_DISABLED);
   RF_INT_EN();
   RF_CONFIG_SPI();
   RF_CONFIG(0x40,0x01);
   RF_ON();
   ret3=RF_ON();
   delay_ms(1000);
   
   if (ret3==1)
  {  output_high(PIN_E0);
      while(1)
    { Delay_ms(5000);
      RF_DIR=0x08;
      for (i=0;i<8;i++)
      {
         RF_DATA[i]=0x01;
      }
      ret2=RF_SEND();
    }
  }
   
}
06/06/2016 #44
Moderador

Avatar de D@rkbytes

allemore dijo: Ver Mensaje
Cuando intento igualar el retorno 3 (ret3), con el comando de encendido del modulo no me lo permite y me dice "A numeric expression must appear here", quisiera saber por qué pasa esto si en la interrupción estoy haciendo lo mismo con el comando RF_RECEIVE()
Porque RF_ON no retorna nada, es una subrutina.
Tan sólo puedes llamarla:
RF_ON();

void RF_ON()
{
}
Y RF_RECEIVE() si es una función que puede retornar un valor.
int RF_RECEIVE()
{
}

Nota que las rutinas que pueden devolver valores, tienen al inicio el tipo que deben retornar.
Int o Int8 en PIC C de CCS = 8 Bits. (1 Byte)
Void = Sin retorno. (O retorno Nulo)

Cuando las rutinas no contienen nada entre los paréntesis, también se entiende como Void.
En éste caso; rutina sin retorno y sin parámetros.
void mi_rutina (void)
{
}

Rutina con retorno y con parámetros:
int16 mi_funcion (int8 param1, int8 param2)
{
int16 x = param1 + param2;
return (x);
}
17/11/2016 #45


buenas tardes luvhines, e visto todos los comentarios que se han dicho es te foro con respecto al modulo nfr NRF24L01 y su funcionamiento es muy bueno, pero tengo una pregunta es posible enviar una cadena de texto "String" o un "hola mundo ", que el maestro envíe el hola mundo y que el esclavo lo reciba y cuando lo reciba enviarlo por serial para verlo en pc.
muchas gracias podría aclarar me esa duda.
18/11/2016 #46


Puedes hacerlo enviando los caracteres uno a uno en hexadecimal. El receptor, o esclavo, lo va almacenando en la EEPROM, y cuando se haya finalizado la transmisión lo envía a la PC.
18/12/2016 #47


Hola.

ante todo, muchas gracias por todo lo compartido.

en los primeros posts hay algunas orientaciones sobre la distancias. Yo aún no recibí mis módulos pero ya quiero empezar a armar los PCB.

Me gustaría saber en que posición de los módulos se tiene la mejor recepción. paralelos o perpendiculares al piso?

Gracias por los comentarios que puedan compartir.

Saluds.
14/01/2017 #48

Avatar de luvhines

rich34 dijo: Ver Mensaje
Hola.

ante todo, muchas gracias por todo lo compartido.

en los primeros posts hay algunas orientaciones sobre la distancias. Yo aún no recibí mis módulos pero ya quiero empezar a armar los PCB.

Me gustaría saber en que posición de los módulos se tiene la mejor recepción. paralelos o perpendiculares al piso?

Gracias por los comentarios que puedan compartir.

Saluds.
Hola, a mi experiencia la posición del modulo no es algo que importe realmente mi amigo.

---------- Actualizado después de 9 minutos ----------

sadj dijo: Ver Mensaje
buenas tardes luvhines, e visto todos los comentarios que se han dicho es te foro con respecto al modulo nfr NRF24L01 y su funcionamiento es muy bueno, pero tengo una pregunta es posible enviar una cadena de texto "String" o un "hola mundo ", que el maestro envíe el hola mundo y que el esclavo lo reciba y cuando lo reciba enviarlo por serial para verlo en pc.
muchas gracias podría aclarar me esa duda.
como dice el compañero más abajo, puedes ver que el modulo envía cada vez un paquete de 8bits que en en el emisor es el estado de un puerto, y el receptor refleja el estado de ese puerto, pero no deja de ser un simple paquete de 8bits, bien puedes usar la tabla ascii para tu propósito, en lugar del estado de un puerto envías un carácter que por naturaleza es un hexadesimal y lo recibes en el receptor.
30/03/2017 #49


nrf24l01 y 16f690
Hola a todos. Estuve probando el ejemplo expuesto aquí y no me funciona. Grabe los 2 pics sin modificarle nada y estoy alimentado mis pics con un regulador (mas o menos 4v) y los nrf con unas bases que traen regulador incluido. Cuando lo pruebo siempre obtengo que el ack no fue recibido..... ayuda D@rkbytes por favor!!!!!!!
30/03/2017 #50
Moderador

Avatar de D@rkbytes

Por favor, adjunta tu proyecto completo dentro de un archivo comprimido, recuerda que no somos adivinos.
Si aún no sabes cómo subir archivos, mira por aquí: ¿Cómo subo imágenes y archivos?
30/03/2017 #51


D@rkbytes
Es tu ejemplo con el pic 16f690 sin cambio alguno. Lo que hace es que el transmisor me marca que no recibe ack y el receptor no hace nada. Probé las antenas con módulos usb y si funcionan. Lo único que no he probado es alimentar todo a 3.3 ya que los pics los tengo a 4v y las antenas con una base que incluyen regulador.

Mañana subo fotos, por cierto está en protoboard
31/03/2017 #52
Moderador

Avatar de D@rkbytes

Ese proyecto está probado físicamente y funciona al 100%
Realiza todo tal cual y debe funcionar.
Principalmente, usa los reguladores de 3.3 V que usa el proyecto. (L78L33)
31/03/2017 #53


D@rkbytes dijo: Ver Mensaje
Ese proyecto está probado físicamente y funciona al 100%
Realiza todo tal cual y debe funcionar.
Principalmente, usa los reguladores de 3.3 V que usa el proyecto. (
Hola de nuevo, pues según yo todo esta bien cableado. lo revise como 3 veces.
adjunto una foto de como lo tengo.

Saludos y gracias por la ayuda
Imágenes Adjuntas
Tipo de Archivo: jpg DSC_0047[1].jpg (56,3 KB (Kilobytes), 15 visitas)
31/03/2017 #54


Yo tuve un problema con los conectores que estás usando: no hacían buen contacto con los módulos.

Trata de fabricar un zócalo para los módulos, de manera que puedas conectarlos directamente al protoboard sin necesidad de cables.


Otro: trata de peinar tus cables, un poco de prolijidad te ayudará a detectar fallas.
31/03/2017 #55
Moderador

Avatar de D@rkbytes

Sí. Por ese motivo diseñé los footprints para los módulos. Jamás me pasó por la mente conectarlos con cables.
También es muy importante la calidad del protoboard.
Yo he tirado varios que con el uso van presentando fallas, e incluso también he comprado algunos que desde nuevos se van directamente al bote de la basura.

El sistema que desarrollé con esos módulos sigue funcionando actualmente y no ha tenido problemas.
31/03/2017 #56


Gracias por la ayuda. Voy a soldar las bases que compré a ver si así logró hacerlo funcionar y comentaré

De nuevo muchas gracias
13/09/2017 #57


Hola

Queria preguntar tu podrias compartir la libreria de NRF24L01 de proteus veo en las imagenes que la usas pero en el proyecto no lo vi
13/09/2017 #58
Moderador

Avatar de D@rkbytes

Las librerías del nRF24L01 para proteus, no son para simular, tan sólo son para crear el esquema y el PCB.
En este post están las que yo diseñé: post #26
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.