Autor Tema: Problema con el encabezado zigbee (IEEE802.15.4)  (Leído 4984 veces)

0 Usuarios y 4 Visitantes están viendo este tema.

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Problema con el encabezado zigbee (IEEE802.15.4)
« en: 03 de Noviembre de 2009, 15:02:57 »
Buenas!!

Estoy pegándome con el transceiver de microchip, el MRF24J40MA, he conseguido comunicarme con el, mandar tramas y recibirlas en modo promiscuo, pero no consigo pasar de ahí.

Necesito que me haga un ACK cuando le envíe la trama. Para ello me pone en el datasheet que tengo que poner a 1 el 5º bit del campo de control de la trama según la norma 804.15.4. No puedo poner la norma porque ocupa 3 megas. Pero si alguien la busca con poner IEEE 804.15.4 te sale y la puedes descargar libremente ya que es un protocolo abierto. De todos modos pongo lo importante de esa pagina.

Me voy a la norma y en la pagina 138 y siguientes viene lo que es cada campo y en principio como rellenarlos. Pero no consigo nada de nada, lo he probado por un lado y por otro, por favor alguien que haya programado alguna vez este protocolo y haya tenido que enviar una trama, seria tan amable de comentar que valores da a cada cosa?

Muchas gracias de antemano
« Última modificación: 03 de Noviembre de 2009, 15:11:45 por Ingeniero_Olaf »
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Problema con el encabezado zigbee (IEEE802.15.4)
« Respuesta #1 en: 03 de Noviembre de 2009, 18:30:22 »
No usas el stack de Microchip??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Problema con el encabezado zigbee (IEEE802.15.4)
« Respuesta #2 en: 04 de Noviembre de 2009, 06:35:39 »
Se que en la web del fabricante hay unas librerías, pero no me han servido de mucho, no se si te refieres a eso con lo del stack??
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Problema con el encabezado zigbee (IEEE802.15.4)
« Respuesta #3 en: 04 de Noviembre de 2009, 09:40:17 »
Si.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Problema con el encabezado zigbee (IEEE802.15.4)
« Respuesta #4 en: 04 de Noviembre de 2009, 12:53:16 »
Yo preguntaba por si alguien lo había hecho manualmente, que he visto que ocupa bastante y yo estoy utilizando un micro pequeño el PIC16F722, además me pone que es para PIC18, PIC24, dsPIC y PIC32 pero igual hay algo que se me escapa.

También me indica que use un programa llamado Zena, que me genera el código necesario, pero no esta incluido mi micro, aunque podría adaptarlo. Veré que puedo hacer, si alguien lo ha hecho antes que yo agradecería que me ayude, sino intentare hacerlo funcionar y en ese caso publicare los resultados por si a alguien le es útil.

Un saludote :)
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Problema con el encabezado zigbee (IEEE802.15.4)
« Respuesta #5 en: 04 de Noviembre de 2009, 15:04:49 »
Yo preguntaba por si alguien lo había hecho manualmente, que he visto que ocupa bastante y yo estoy utilizando un micro pequeño el PIC16F722, además me pone que es para PIC18, PIC24, dsPIC y PIC32 pero igual hay algo que se me escapa.

También me indica que use un programa llamado Zena, que me genera el código necesario, pero no esta incluido mi micro, aunque podría adaptarlo. Veré que puedo hacer, si alguien lo ha hecho antes que yo agradecería que me ayude, sino intentare hacerlo funcionar y en ese caso publicare los resultados por si a alguien le es útil.

Un saludote :)

El programa Zena te genera el código o simplemente es para monitorear las transacciones de la comunicación?? :shock: :shock:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Problema con el encabezado zigbee (IEEE802.15.4)
« Respuesta #6 en: 04 de Noviembre de 2009, 15:55:03 »
Solo me genera el código, para las transacciones de la comunicación, no me valen estos módulos, ya que son los que van conectados a placa, ademas no tengo el ICD2, sino el PICKit2 para programarlo.

Llevo una semana buscando en internet y creo que nadie ha hecho esto como yo quiero hacerlo, o por lo menos no lo ha colgado de internet..... :(

Me explico, de como va el proyecto total.

Dos placas con montaje de grapinng, microprocesadores PIC16F722, display 16x2, módulo transceiver MRF24J40MA conectado por SPI al micro. Hice las funciones para la comunicaciones entre el micro y el transceiver, se comunica perfectamente. Los datos llegan de una placa a otra, los visualizo por el display, si el modo de recepción es promiscuo. Intento configurarlo para que me responda el ACK automático que tiene, para ello hace falta que la recepción no sea promiscua sino normal.

Pongo los registros RXMCR, TXNCON, para que el envío sea respondido con un acuse de recibo. Igual que el resto de registros.

Si alguien sabe como va el encabezado lo agradeceria mucho.

Gracias MGLSOFT por tu interés ;)
« Última modificación: 04 de Noviembre de 2009, 16:19:06 por Ingeniero_Olaf »
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Problema con el encabezado zigbee (IEEE802.15.4)
« Respuesta #7 en: 04 de Noviembre de 2009, 16:12:26 »
Citar
Necesito que me haga un ACK cuando le envíe la trama. Para ello me pone en el datasheet que tengo que poner a 1 el 5º bit del campo de control de la trama según la norma 804.15.4

Entiendo mal o dices que pones en 1 el bit 5 de la trama de control para que el que recibe la trama conteste??
Aun poniendolo en 1 el otro no manda el ACK ??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Problema con el encabezado zigbee (IEEE802.15.4)
« Respuesta #8 en: 04 de Noviembre de 2009, 16:26:01 »
Citar
Necesito que me haga un ACK cuando le envíe la trama. Para ello me pone en el datasheet que tengo que poner a 1 el 5º bit del campo de control de la trama según la norma 804.15.4

Entiendo mal o dices que pones en 1 el bit 5 de la trama de control para que el que recibe la trama conteste??
Aun poniendolo en 1 el otro no manda el ACK ??

A la primera pregunta si. Dentro de la trama de control pongo ese bit a 1, también configuro las direcciones que las habilito, la seguridad he probado habilitada y deshabilitada, aunque deshabilitada es mucho mas sencillo.
A la segunda cuestión efectivamente no manda el ACK.
Tiene que ser algo que se me escapa conceptualmente del protocolo zigbee.

NOTA:He completado el post anterior.

Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Problema con el encabezado zigbee (IEEE802.15.4)
« Respuesta #9 en: 04 de Noviembre de 2009, 16:31:09 »
Alguna razón particular en la elección de los 16F722 ??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Problema con el encabezado zigbee (IEEE802.15.4)
« Respuesta #10 en: 04 de Noviembre de 2009, 18:46:27 »
Alguna razón particular en la elección de los 16F722 ??

La respuesta a tu pregunta es el precio. Muy barato tan solo 2 euros y que tenia SPI, necesario para efectuar la comunicación. Falta de planificación para que esto funcione mas fácilmente, puede ser, pero con esto debería funcionar también no?? Solo es que no hago algo bien y no se que es.
Por eso solicitaba ayuda para saber como se rellena la sección de cabecera, por que la norma te dice como va, pero no encuentro ninguno ejemplo por simple que sea.

Yo pongo lo siguiente:
Nota: SPIput es la función para poner el dato en esa dirección. 0x000 es la dirección de inicio del TXFIFO normal.

Código: [Seleccionar]
         /* Program the short MAC Address, 0xffff */
    SPIputcorto(SADRL,0x32);
    SPIputcorto(SADRH,0x32);
    //load the short address of the device with 0xffff which means that it will be ignored upon receipt
    SPIputcorto(PANIDL,0x31);
    SPIputcorto(PANIDH,0x31);
         //load the pan address also with 0xffff;
   

   // se puede configurar modo promiscuo 01, normal 00, error 10.
   //acuse de recibo.
   SPIputcorto(RXMCR,0x08);   
   //carga los valores adecuados en el TXFIFO normal
   SPIput(0x000,0x07);  // numero de bits cabecera MAC
   SPIput(0x001,0x17);  // numero de bit cabecera MAC + los datos utiles
   SPIput(0x002,0x84);  // comando MAC 0-7 bits
   SPIput(0x003,0x11);  // comando MAC 8-15 bits
   SPIput(0x004,0x11);  // Sequence Number [b]//aqui realmente no se que poner.[/b]
   
   /*SPIput(0x005,0x32);  //PAN ID destino
   SPIput(0x006,0x32);  //PAN ID destino
   SPIput(0x007,0x32);  //direccion corta de destino
   SPIput(0x008,0x32);  //direccion corta de destino
   SPIput(0x009,0x31);  //PAN ID fuente
   SPIput(0x00a,0x31);  //PAN ID fuente
   SPIput(0x00b,0x31);  //direccion corta fuente
   SPIput(0x00c,0x31);  //direccion corta fuente*/ //par un dispositivo y el siguiente para el otro dispositivo.
   
   SPIput(0x005,0x31);  //PAN ID destino
   SPIput(0x006,0x31);  //PAN ID destino
   SPIput(0x007,0x31);  //direccion corta de destino
   SPIput(0x008,0x31);  //direccion corta de destino
   SPIput(0x009,0x31);  //PAN ID fuente
   SPIput(0x00a,0x31);  //PAN ID fuente
   SPIput(0x00b,0x32);  //direccion corta fuente
   SPIput(0x00c,0x32);  //direccion corta fuente*/
   
}

Pues eso si alguien sabe algo perfecto, sino muchas gracias de todos modos  :)
Seguiré intentándolo ;)
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Problema con el encabezado zigbee (IEEE802.15.4)
« Respuesta #11 en: 05 de Noviembre de 2009, 08:51:12 »
Por favor no te enojes ni te pongas tan extremista.
Cuando hago preguntas van en el sentido de ubicarme en tu linea de pensamiento, no para embromarte.
Coincido en que las aplicaciones hay que optimizarlas en costos, aunque luego elegir entre los miles de modelos de Pics que pueden cumplir tu cometido sea un engorro.
Tambien es cierto que normalmente cuando ponen un Stack, este tiene TODO resuelto, de modo que precisa un procesador de alta gama para utilizarlo.
Aqui mismo en el foro hay quien implemento ethernet en un PIC16F84 (creo que es ese), si miras el Stack de Microchip aconsejan Pics de la gama 18F para arriba, es muy parecido a tu caso.

Por las dudas, no has mirado el stack de Microchip a ver como resuelven ellos esta forma de comunicarse?? :shock:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Problema con el encabezado zigbee (IEEE802.15.4)
« Respuesta #12 en: 05 de Noviembre de 2009, 09:21:54 »
Por favor no te enojes ni te pongas tan extremista.
Cuando hago preguntas van en el sentido de ubicarme en tu linea de pensamiento, no para embromarte.
Coincido en que las aplicaciones hay que optimizarlas en costos, aunque luego elegir entre los miles de modelos de Pics que pueden cumplir tu cometido sea un engorro.
Tambien es cierto que normalmente cuando ponen un Stack, este tiene TODO resuelto, de modo que precisa un procesador de alta gama para utilizarlo.
Aqui mismo en el foro hay quien implemento ethernet en un PIC16F84 (creo que es ese), si miras el Stack de Microchip aconsejan Pics de la gama 18F para arriba, es muy parecido a tu caso.

Por las dudas, no has mirado el stack de Microchip a ver como resuelven ellos esta forma de comunicarse?? :shock:

Lo primero lo siento mucho  :oops: :oops: :oops: no pensaba que mi respuesta sonara extremista, intentare moderar mi lenguaje, de verdad que lo siento  :oops: :oops:
Y de verdad que agradezco tus respuestas  :) me dieron otras vías de pensamiento e investigación.
Sigo revisando los ficheros del stack y todavía no he sacado nada en claro, pero confió en que algo encuentre, también he llamado al servicio técnico por si pudieran ayudarme, espero su respuesta.  :)

Por supuesto si logro encontrar la solución la compartiré, pues es lo que hace grande a este foro  :-/ :) ;-)
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Problema con el encabezado zigbee (IEEE802.15.4)
« Respuesta #13 en: 09 de Diciembre de 2009, 15:58:05 »
Muy buenas! no quepo en mi de gozo al anunciar que ya resolvi el problema, espero que le sea útil a alguien  :)

Al final la combinación de bits es la siguiente:

    1º byte 0x002                              2º byte 0x003
B7 B6 B5 B4 B3 B2 B1 B0 B15 B14 B13 B12 B11 B10 B9 B8
0   0   1   0   0   0   0   1    1    0     0     0     1     0    0   0

 Se envía el ACK correctamente.

Configuración del dispositivo, es la siguiente que es muy parecida a la que recomienda el data sheet:

Código: [Seleccionar]
//*****************************************************************************
// La funcion lo reinicia y configura el MRF24J40 tal y como pone
// en el ejemplo de su datasheet, y adaptado a las necesidades del programa.
// Parametros de entrada: ninguno.
// Parametros de salida: ninguno.
//*****************************************************************************
void SPIconf (void)
{
   BYTE i, j;
// Reset por software, borrara todo, los bits pasaran a '0' por hardware.
   SPIputcorto(SOFTRST,0x07);
// Espera a que el sistema diga que esta recuperado.
   do
    {
        i = SPIgetcorto(SOFTRST);
    }
   while((i&0x07)!=0x00);
// Habilitamos la FIFO y ponemos un tiempo de 96us a los GPIOx
   SPIputcorto(PACON2,0x98);
// Tiempo de estabilizacion de los bits y tiempo de espaciado entre ellos.
   SPIputcorto(TXSTBL,0x95);
// Debe tener el valor FF para que se trate de una comunicacion NORMAL
// y se use el TXFIFO NORMAL. Posicion 0x000.
   SPIputcorto(ORDER,0xFF);
// Se habilita el canal 11
   SPIput(RFCON0,0x02);
// Bits de control de optimizacion del VCO (oscilador controlado por tension)
   SPIput(RFCON1,0x01);
// Activacion del bit PLLEN para habilitar la transmision recepcion. PLL debe
// estar habilitado para RF recepción o transmisión
   SPIput(RFCON2,0x80);
// Activacion del filtro de TX, 1ms de tiempo de recuperacion desde el modo sleep
   SPIput(RFCON6,0x90);
// Se configura el modo sleep con un reloj interno de 100kHz
   SPIput(RFCON7,0x80);
// Se activa el VCO
   SPIput(RFCON8,0x10);
// Se deshabilita el pin de CLKOUT y se configura el preescaler del reloj sleep
   SPIput(SLPCON1,0x21);
// Configura modo ED deteccion de energia 
   SPIputcorto(BBREG2,0x80);
// Habilita el modo anterior
   SPIputcorto(RSSITHCCA,0x60);
// Habilita la recepcion y su almacenaje en RXFIFO
   SPIputcorto(BBREG6,0x40);
// Se configura para la maxima potencia de transmision. 
   SPIput(RFCON3,0x00);
// Se configura la interrupcion como flanco de subida.     
   SPIput(SLPCON0,0x02);
// Se habilitan las interrupciones de RX y TX. Se dejan deshabilitadas las demas.
   SPIputcorto(INTCON,0xF6);
   
// Configuracion Non-beacon (sin balizas, no faro)

// Se configura el numero de reintentos y el no uso de los slots
   SPIputcorto(TXMCR,0x1C);
// Se resetea el puntero de RXFIFO
// 0x01 se aceptan todas las tramas (datos comandos etc)
// 0x05 valor para solo aceptar datos.
   SPIputcorto(RXFLUSH,0x01);
// Se halitita la recepcion de paquetes.
   SPIputcorto(BBREG1,0x00);
// Se resetea el estado del transceptor, pero no los valores introducidos,
// despues se deja un tiempo de estabilizacion.
   SPIputcorto(RFCTL,0x04);
   SPIputcorto(RFCTL,0x00);
   LCDdelay(254);

// Espera a que el transceptor se ponga en modo recepcion
    do
    {
        i = SPIget(RFSTATE);
    }
    while((i&0xA0)!=0xA0);
   
   
         
// Introducimos en el MRF24J40 el valor de sus direcciones
// tanto la direccion como el PANid
    SPIputcorto(SADRL,origenbajo);
    SPIputcorto(SADRH,origenalto);
   
    SPIputcorto(PANIDL,dirpan);
    SPIputcorto(PANIDH,dirpan);
         
   
// Damos un valor a la direccionamiento largo
// por no tenerlo vacio.
    for(i=0,j=7;i<8;i++,j--)
    {
        SPIputcorto(EADR0+i,j);
    }
// Configuración coordinador, modos 0xX5 promiscuo, 0xX4 normal, 0xX6 error.
// Configuración coordinador PAN y coordinador
// modos 0xXD promiscuo, 0xXC normal, 0xXE error.
// Configuración con acuse de recibo 0x0X, sin acuse de recibo 0x2X.
   SPIputcorto(RXMCR,modos);   
   
}

Este es el código que se almacena en las direcciones del TXFIFO normal, para que funcione.

Código: [Seleccionar]
// Carga los valores adecuados en el RXFIFO
   
// Numero de bits cabecera MAC, no le hace caso
// si no estamos en modo seguro
   SPIput(0x000,0x0b);
// numero de bit cabecera MAC + los datos utiles
   SPIput(0x001,0x20);
   SPIput(0x002,0x21);  // frame control 7-0
   SPIput(0x003,0x88);  // frame control 15-8
// Sequence Number inicializado al valor 0x00
   SPIput(0x004,sn);
// Direccion PANid destino
   SPIput(0x005,dirpan);
   SPIput(0x006,dirpan);
// Direccion de 16 bits destino
   SPIput(0x007,destinobajo);
   SPIput(0x008,destinoalto);
// Direccion PANid origen
   SPIput(0x009,dirpan);
   SPIput(0x00a,dirpan);
// Direccion de 16 bits origen
   SPIput(0x00b,origenbajo);
   SPIput(0x00c,origenalto);
// A partir de la direccion 0x00d se introcudiran
// los datos a enviar al maestro.
« Última modificación: 09 de Diciembre de 2009, 16:17:26 por Ingeniero_Olaf »
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW


 

anything