desktop

Comunicación por Radiofrecuencia entre PICs y nRF24L01

Muchas gracias por responder, parece ser que se cuelga el Emisor porque cuando le doy reset o lo apago y prendo vuelve a funcionar sin problemas, se cuelga de repente no se el momento preciso y las circunstancias exactas ya que debe estar encendido todo el tiempo, adjuntare el código y la libreria mas tarde espero lo vean, de nuevo muchas gracias por su tiempo
 
Última edición:
Si D@rk, lo primero que pense, pero me fije en la libreria (la cual adjunto sacada de todopic), y son diferentes banderas, osea que el 0 y el 1, son banderas que indican si hay datos, si no los hay, manda mas de "2".

Ya que ya adjunte la libreria, mejor dinos lo que te consulte mas arriba
 

Adjuntos

  • lib_rf2gh4_10.zip
    3.4 KB · Visitas: 20
Última edición:
Pues sí, y resetearlo en los lugares donde se crea que no haya problemas.
Si el WDT se resetea en donde el programa se pueda colgar, no serviría de nada.
 
Depende del software con que programes, puede ya disponer de librerias que lo hagan por tí.
En caso que no la tengas, deberás estudiar el protocolo.

Mas que precaución, yo diría que lo tengas en cuenta.
La emulación por software implica gastos de recursos, así que se te reduce la memoria de programa y RAM, y aumenta el uso de CPU, aumentando los tiempos de ejecución.
Y dependiendo de la librería, puede consumirse interrupciones, pines y timers.
 
Gracias DJT3...quería ensayar el programa de d@rkbytes, para ir a lo seguro (jaja...es un genio encubierto y me convertí en su "salieri") y leí por ahí que le decía a alguien que usaba el 16f628a que debía emular el protocolo...estoy usando CCS y hasta ahora sabía que se podía emular RS232, pero no me aparece nada en concreto sobre emular SPI...voy a seguir buscando o esperar que d@rkbytes se inspire con algo que quiera compartir.
 
Quizás no es la forma mas optimizada para hacerlo pero:

La función en C seria así (para el Modo 0):

C:
unsigned char spi_write(unsigned char byte)
{
      unsigned char i, SPI_Valor = 0;

      for (i = 0; i < 8; i++) { // 8 bit a transmitir
                                         SCK = 0;
                                         MOSI = (byte & 128) >> 7;
                                         SCK = 1;
                                         SPI_Valor = SPI_Valor << 1;
                                         SPI_Valor = SPI_Valor | MISO;
                                         byte = byte << 1;
                                      }
      MOSI = 1;
      return SPI_Valor;
}

Ojo que el ejemplo es para datos de 8 bits.




(Después subo al foro lo que había escrito, en mi blog, sobre el protocolo SPI).
 
Atrás
Arriba