Autor Tema: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)  (Leído 27936 veces)

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

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #15 en: 04 de Octubre de 2009, 09:47:42 »
bueno después de mucho curro tengo la solución para comunicarse con el MRF24J40MA mediante SPI, era un problema de configuración del SPI del micro,  ya que el CCS para el PIC16F722 no tiene predeterminada la opción que hace funcionar correctamente esto, hay que configurar los registros manualmente.

Código: [Seleccionar]
#locate SSPBUF  =  0X13
 #locate SSPCON  =  0X14
 #locate SSPSTAT =  0X94
 
BYTE var1,var2;

void main()
{   
   setup_oscillator(OSC_500KHZ);
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   SSPCON=0b00100010;
   SSPSTAT=0b01000000; //esta es la configuracion definitiva para cumplir
   //con las exigencias del cronograma del fabricante del MRF24J40
   SSPBUF=0XFF; //hay que escribir algo en este registro para que empieze a funcionar el reloj
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_vref(FALSE);
   enable_interrupts(INT_EXT);
   EXT_INT_EDGE(L_TO_H); // esto hay que configurarlo igual en el MRF24J40MA sino iran des-coordinados y no funcionara.
   enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
   set_tris_a (0x00);          // Configurado como salida el puerto A
   set_tris_b (0xF1);          // Configurado forma   I/O el puerto B
   set_tris_c (0xD0);          // Configurado forma   I/O el puerto C
   
   output_high(CSn);

SPIconf();
     
   while(TRUE)
   {
var1=SPIgetcorto(0x2e);
var2=SPIget(0x211);
   }

Y estan son sus funciones:

Código: [Seleccionar]
BYTE SPIgetcorto(BYTE direccion)
{
   BYTE data;
   BYTE parte;
   parte=(direccion<<1)&(0b01111110);
   output_low(CSn);
   spi_write(parte);
   
   data = spi_read(0);
   output_high(CSn);
   
   return data;
}

void SPIputcorto(BYTE direccion, BYTE dato)
{
   BYTE parte;
 
   parte=((direccion<<1)&(0b01111110)|0x01);

   output_low(CSn);
   spi_write(parte);
   spi_write(dato);
   output_high(CSn);
}


BYTE SPIget(unsigned int16 direccion)
{
   BYTE parteH;
   BYTE parteL;
   BYTE data; 
   parteL=direccion<<5;
   parteH=direccion>>3|0x80;
   output_low(CSn);
   spi_write(parteH);
   spi_write(parteL);
   if( spi_data_is_in() )
   {data = spi_read(0); } funciona de las dos maneras con y sin el IF
   output_high(CSn);
   return data;
}

void SPIput(unsigned int16 direccion, BYTE dato)
{
   
   BYTE parteH;
   BYTE parteL;
   parteL=direccion<<5|0x10;
   parteH=direccion>>3|0x80;
   
   output_low(CSn);
   spi_write(parteH);
   spi_write(parteL);
   spi_write(dato);
   output_high(CSn);
}

void SPIconf (void)
{
   OUTPUT_LOW(RSn);
   LCDdelay(254);
   LCDdelay(254);
   OUTPUT_HIGH(RSn);
   LCDdelay(254);
   LCDdelay(254);
   
   SPIputcorto(0x2a,0x07); //reset por software, borrara todo, los bits pasaran a '0' por hardware.
   SPIputcorto(0x18,0x98); //habilitamos la FIFO y ponemos un tiempo de 96us a los GPIOx
   SPIputcorto(0x2e,0x95); //tiempo de estabilizacion de los bits y tiempo de espaciado entre ellos.
   SPIput(0x201,0x01);     //Bits de control de optimizacion del VCO (oscilador controlado por tension)
   SPIput(0x202,0x80);     //activacion del bit PLLEN para habilitar la transmision recepcion.
   SPIput(0x206,0x90);     //activacion del filtro de TX, 1ms de tiempo de recuperacion desde el modo sleep
   SPIput(0x207,0x80);     //se configura el modo sleep con un reloj interno de 100kHz
   SPIput(0x208,0x10);     //se activa el VCO
   SPIput(0x220,0x21);     //se deshabilita el pin de CLKOUT y se configura el preescaler del reloj sleep
   
   SPIputcorto(0x3A,0x80); //configura modo ED deteccion de energia
   SPIputcorto(0x3F,0x60); //habilita el modo anterior
   SPIputcorto(0x3E,0x40); //habilita la recepcion y su almacenaje en RXFIFO
   
   SPIput(0x200,0xF2);     //se habilita el canal 26
   SPIput(0x203,0x00);     //se configura para la maxima potencia de transmision.
   
   SPIput(0x211,0x02);     //Se configura la interrupcion como flanco de subida.
   SPIputcorto(0x32,0xF6); //Se habilitan las interrupciones de RX y TX. Se dejan deshabilitadas las demas.
   
   // Configuracion Non-beacon (sin balizas, no faro) Pero siendo coordinador PAN
   SPIputcorto(RXMCR,0x09);//Configura el dispoditivo como coordinador PAN y modo (promiscuo) que acepta todas las tramas con un buen CRC.
   SPIputcorto(ORDEN,0xFF);//Debe tener el valor FF para que se trate de una comunicacion NORMAL y se use el TXFIFO NORMAL. Posicion 0x000.
   SPIputcorto(TXMCR,0x1C);//Se configura el numero de reintentos y el no uso de los slots
   SPIputcorto(TXPEND,0x7D); //se le pone el valor recomentado de espaciado entre bits y se activa el
   
   SPIputcorto(0x36,0x04); //Se resetea el estado del transceptor, pero no los valores introducidos.
   SPIputcorto(0x36,0x00);
   LCDdelay(254);
}

void SPIstatus (void)
{
BYTE TXstatus;

   TXstatus=SPIgetcorto(TXSTAT);
   TXstatus=(TXstatus&0x21);
   // se usa para comprobar que ha ocurrido si la ultima transmisión se ha realizado correctamente, problemas en el canal o falta de acuse de recibo.
   if (TXstatus==0x00)
   {
   print8bits1c(1,13,0x4F); //muestra una 'O' de ok
   }
   if (TXstatus==0x01)
   {
   print8bits1c(1,14,0x43); //muestra una 'C' de canal bien envio mal
   }
   if (TXstatus==0x21)
   {
   print8bits1c(1,15,0x45); //muestra una 'E' de canal mal envio mal
   }
}

y la interrupcion es esta:

Código: [Seleccionar]
#int_EXT
void  EXT_isr(void)
{
BYTE leido;
BYTE interrupcion;
intext=1;
interrupcion=SPIgetcorto(INTSTAT);

//se comprueba que la interrupcion es producida por transmision
If (interrupcion==0x01){print8bits1c(2,13,0x54);}

//se comprueba que la interrupcion es producida por recepccion
if (interrupcion==0x08)
{
print8bits1c(2,15,0x52);
DISABLE_INTERRUPTS(GLOBAL);   //se deshabilitan para que este proceso no sea interrumpido.
SPIputcorto(BBREG1,0x04);     //desactivar la recepción de paquetes.

leido=SPIget(0x300);         
print8bits1c(2,0,leido);
leido=SPIget(0x301);         
print8bits1c(2,1,leido);
leido=SPIget(0x302);         
print8bits1c(2,2,leido);
leido=SPIget(0x310);         
print8bits1c(2,3,leido);
leido=SPIget(0x311);         
print8bits1c(2,4,leido);
leido=SPIget(0x312);         
print8bits1c(2,5,leido);

enable_interrupts(GLOBAL);    //se habilitan de nuevo las interrupciones.
SPIputcorto(BBREG1,0x00);     //se halitita de nuevo la recepcion de paquetes.
}
}


Ahora mi principal problema es enviar datos entre los módulos. La interrupción por transmisión se produce y me dice que falta acuse de recibo. Y claro el otro modulo no avisa de que ha recibido nada. Por favor si alguien ya ha conseguido transmitir esto que me ayude, muchas gracias por anticipado  :-/
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado enriquedaniel

  • PIC10
  • *
  • Mensajes: 1
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #16 en: 04 de Febrero de 2010, 15:40:28 »
Hola

Yo también tengo dos modulos de estos, y no tengo ni idea de como configurarlos para una red Zigbee
estoy utilizado un ATMEGA32,
alguno de ustedes ya los hizo funcionar?? puede compartir algun ejemplo??
muchas gracias

Desconectado Akone

  • PIC10
  • *
  • Mensajes: 29
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #17 en: 24 de Febrero de 2010, 09:39:43 »
Hola muy buenas.

Estoy comenzando el proyecto de fin de carrera y me gustaría implementarlo con ZigBee, estoy viendo que obligatoriamente necesitas dos Picdem Z y los módulos que vayas a usar, mi idea es el  MRF24J40MB-I/RM que ya viene con antena.

Mi pregunta es, una vez que tenga configurado el módulo, ¿puedo hacer que funcione la aplicación sin necesidade de las Picdem Z? lo que quiero es hacer una pequeña red con un maestro que mande las ordenes a través del USB a una serie de esclavos interconectados por zigbee.

No entiendo muy bien la finalidad de las picdem.

Gracias

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #18 en: 24 de Febrero de 2010, 09:55:51 »
Las PICDem las necesitas para que tengas un PIC comunicandose con el MRF24J40, realizando la programacion sobre el micro que tiene la picdem.
Si armas tu placa es el mismo resultado, aclarando que los ejemplos que da Microchip estan hechos sobre esa placa y micro. :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado anibalismo

  • PIC10
  • *
  • Mensajes: 10
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #19 en: 10 de Marzo de 2010, 10:23:52 »
Ula! este es (creo) mi primer post acá!   :-/ para mi trabajo me ha tocado utilizar los modulos MRF24J40... ya yo tengo los modulitos trabajando, y les comento:
comencé con una explorer16 y un micro (luego les cuento cual pa que no se asusten)
las baquelitas para calzar la MRF en la explorer las hice yo  8)
Agarré el ejemplo que tiene microchip de MiWi, y despues de leerlo un rato y ver que hacía, me decidí a programar...
Programé 2 coordinadores (son los dispositivos que levantan la red y organizan todo)
y mas o menos funciono, y digo mas o menos, por lo siguiente:

para poner los ejemplos a andar, necesité un dspic33fj128gp710 (que es un nombre bastante largo para un cacharro bastante fino :D) pero de pana no es complicado de trabajar! lo dificil es de conseguir los micros... en teoría, el codigo funciona con cualquier dspic33, y yo ya lo probe con unos 64gp202, unos 128gp802 y 128gp804. Los dos primeros los monte ya en el protoboard y el ultimo en la explorer...

esta semana tengo que levantar el plano del circuito y hacer una presentación de zigbee y MiWi, asi que cuando tenga la info terminada, la posteo aca para que más o menos vean...

Y no les voy a hacer la tarea  :5] solo sirven los demos de Micrichick  :g) pero deberia de ser suficiente para empezar  :wink:

No se si el hilo está un poco viejo, pero vamos a ver si se continua. Cualquier cosa, mi correo es konaciando@gmail.com y si usan el Wave, mejor que mejor ;)

Desconectado Pchuqui_1

  • PIC16
  • ***
  • Mensajes: 187
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #20 en: 19 de Marzo de 2010, 10:57:29 »
Hola. Yo también estoy interesado en hacer funcionar estos módulos. Les cuento que con el programa ZENA que microchip distribuye se pueden generar los stack para cada protocolo.  Con el programa hay que ir configurando todo el protocolo, por lo cual es necesario conocerlo bien. Luego se generan los archivos para incluir en el pic. Alguien lo hizo de otra manera?
Gracias.

Desconectado georgedelavia

  • PIC10
  • *
  • Mensajes: 21
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #21 en: 18 de Septiembre de 2010, 09:40:01 »
Ey ey ey!!! ¿Están ahí? Porque el post es medio viejito PERO VALIOSÍSIMO!!!

Al igual que tooodos ustedes me hice de dos MRF24J40MB-I/RM  (El que está listo y aprobado por FCC), pero el consultor de Microchip de la región (Para Arg), me dijo que es recomendable empezar gastándose los U$S260 del entrenador (ZENA+2 x PICDEM) y todo el soft, porque tanto para P2P, MIWI o ZigBee, el ZENA permite explorar y ver qué pasa cuando algo no va bien.

Por lo que veo en el post, debe tener razón, ya estamso por gastar esa valiosa platita.

¿Cómo les fue a ustedes? cuenten algo si están por ahí!!

georgedelavia

Desconectado wannaky

  • PIC12
  • **
  • Mensajes: 92
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #22 en: 21 de Septiembre de 2010, 11:14:07 »
Ey ey ey!!! ¿Están ahí? Porque el post es medio viejito PERO VALIOSÍSIMO!!!

Al igual que tooodos ustedes me hice de dos MRF24J40MB-I/RM  (El que está listo y aprobado por FCC), pero el consultor de Microchip de la región (Para Arg), me dijo que es recomendable empezar gastándose los U$S260 del entrenador (ZENA+2 x PICDEM) y todo el soft, porque tanto para P2P, MIWI o ZigBee, el ZENA permite explorar y ver qué pasa cuando algo no va bien.

Por lo que veo en el post, debe tener razón, ya estamso por gastar esa valiosa platita.

¿Cómo les fue a ustedes? cuenten algo si están por ahí!!

georgedelavia

Hola georgedelavia, yo hace una semana que me ha llegado el entrenador (ZENA+2 x PICDEM), le he estado echando una vistazo, pero aun no he podido ponerme a fondo.
Tengo que realizar la comunicación entre dos PIC's para el intercambio de unas medidas de temperatura, pero aun no tengo ni idea de como funcionan estos dichosos módulos, si tienes algo de idea sobre el tema me sería de grandísima ayuda... yo de todos modos, ya iré dando noticias de mis avances.

Un saludo,
Wannaky

Desconectado georgedelavia

  • PIC10
  • *
  • Mensajes: 21
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #23 en: 21 de Septiembre de 2010, 11:42:23 »
Hola wannaky:

No, desgraciadamente mi proyecto estuvo detenido por 10 meses. Ahora arrancamos de nuevo y todavía no tenemos el entrenador.

Por lo que me parece que vas a contarnos vos antes que nosotros! (Pero no te quepa duda que contaremos apenas tengamos novedades)

La pregunta que dejo en línea al respecto es: ¿Podemos con una simple tecla pasar de MIWI a ZigBee un equipo P2P.

georgedelavia

Desconectado lendros

  • PIC10
  • *
  • Mensajes: 2
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #24 en: 14 de Marzo de 2011, 07:02:01 »
Hola a todos,

veo que este hilo está viejo, pero voy a intentarlo.

Quiero hacer una sencilla aplicacion MiWi, consistente en dos Nodos, donde el nodo A es el coordinador. EL nodo B envia un dato de temperatura (obtenido de un sensor LM71 conectado por un SPI software) al NodoA y este ilumina unos determinados LED.

El equipo que tengo son: 2 PIC18F2525, 2 modulos MRF24J40MA y 2 Pickit 2, trabajando en el entorno MPLAB IDE. Lamentablemente no dispongo de ningun board de entrenamiento, solo del Pickit 2.

He descargado las librerias y demás de Microchip, pero ni siquiera consigo compilar el ejemplo que viene y después ir realizando las modificaciones.

¿Es posible realizar el trabajo sin usar la PICDEM o la Explorer?  No sé si podriais irme dando alguna direcctriz para poder empezar con todo, ya que soy un poco novato en el tema.

Muchas gracias y un saludo a todos.

Desconectado droky

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 628
    • Diseños radikales libres
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #25 en: 14 de Marzo de 2011, 08:43:48 »
En la página de mikroelectronika (http://www.mikroe.com/eng/products/view/364/easybee3-board/) tienes un módulo que incorpora este stick de Microchip.
Ahí puedes descargarte los fuentes para mikroC, mikroBasic y mikroPascal.
Tambien puedes animarte y hacer una portabilidad del código de mikroC a CCS y compartir tu experiencia.
Salu2
Yo... he visto cosas que vosotros no creeríais... atacar naves en llamas más allá de Orión, he visto rayos C brillar en la oscuridad cerca de la puerta Tannhäuser.
Todos esos momentos se perderán en el tiempo como lágrimas en la lluvia.
Es hora de morir.

Si me buscas en twitter, me tienes por @radikaldesig

Desconectado lendros

  • PIC10
  • *
  • Mensajes: 2
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #26 en: 14 de Marzo de 2011, 09:00:00 »
En la página de mikroelectronika (http://www.mikroe.com/eng/products/view/364/easybee3-board/) tienes un módulo que incorpora este stick de Microchip.
Ahí puedes descargarte los fuentes para mikroC, mikroBasic y mikroPascal.
Tambien puedes animarte y hacer una portabilidad del código de mikroC a CCS y compartir tu experiencia.
Salu2

La cosa está en que debo usar únicamente estos componentes de forma obligatoria.

Desconectado droky

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 628
    • Diseños radikales libres
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #27 en: 14 de Marzo de 2011, 15:55:10 »
No veo el problema.
El código de ejemplo de mikroe está desarrollado para un pic de la familia 16F con lo cual te garantizas que con unas pequeñas modificaciones lo vas a poder usar en tus 18F2525.
Y en cuanto a la conexión del módulo con el PIC, pues como indica el fabricante, alimentados con 3,3v y modificando los parámetros del código de ejemplo para que se adapten a los puertos de E/S que selecciones en tu conexión...
No necesitas la placa de mikroe...
Salu2
Yo... he visto cosas que vosotros no creeríais... atacar naves en llamas más allá de Orión, he visto rayos C brillar en la oscuridad cerca de la puerta Tannhäuser.
Todos esos momentos se perderán en el tiempo como lágrimas en la lluvia.
Es hora de morir.

Si me buscas en twitter, me tienes por @radikaldesig

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #28 en: 24 de Marzo de 2011, 11:20:09 »
pues yo me acabo de enterar de que existen.son bastantes varatos.asi que cuando tenga tiempo me pondre con ellos.
« Última modificación: 24 de Marzo de 2011, 11:26:29 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado fernicmarotta

  • PIC10
  • *
  • Mensajes: 5
Re: Como empezar con el módulo MRF24J40MA (ZigBee y MiWi)
« Respuesta #29 en: 15 de Diciembre de 2014, 18:54:26 »
Algun interesado en el tema? tengo bastante info, un codigo funcionando en CCS, mas un VI de LABVIEW, mas el diseño de dos modulos en dual layer con MRF24J40IM/L


 

anything