TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: sugardy en 18 de Febrero de 2009, 16:43:11
-
Hola a todos.
Quisiera saber si algien ha trabajado con exito estos modulos. Tengo dos muestras pero no se por donde empezar.
Mi idea es hacer una comunicación MiWi P2P entre ellos y utilizar el programa ZENA.
El problema es que para lanzar la demo tienes que tener dos placas PICDEM-Z y cuestan 250 o 280$ no me acuerdo,
pero vamos, una pasta, para lo que realmente es. (no se si valen la pena):
Por lo poco que he podido entender creo que:
1- La comunicación del modulo es SPI.
2- Solo funciona con PIC18, PIC24, PIC32 y dsPIC33
3- Existen unos Protocol Stack gratuitos que al instalarlos te incorporan el ZENA los APIs y las librerias, asi como documentación.
4- Con programa ZENA podemos generar el codigo de configuración del modulo.
Ahora bien, como hay que decirle las lineas SPI que quiero utilizar en el micro para utilizar los APIs?
Hay que utilizar algun compilador especial o vale CCS?
Muchas gracias . y si algien tiene algún ejemplo que lo cuelge.
-
Como obtuviste dos muestras??
Yo tuve que comprarlas... :( :( :(
Bueno, yo tambien tengo dos plaquitas de esas, mi idea es armar las dos bases, en base al esquematico de las placas Picdem-Z y luego largarme a probar en CCS, tras probar el stack de Microchip primero.
Estaba por armar un hilo en Lenguaje C, pero podemos seguirlo en este, para pasarnos data de nuestros avances o retrocesos... :D :D
-
Trabajo en una empresa de montaje y desarrollo y nos suelen dar muestras los distribuidores de lo que pidamos. (por si les compramos algo).
Pues ya me cuentas algo cuando las montes. Yo también había pensado lo mismo, no parece nada complicado y solo necesitas el pic unos pulsadores y la RS-232.
Pero mi idea era profundizar en el funcionamiento de la comunicación entre modulo y Pic a través de las APIs y también el el protocolo de comunicación. Para así poder insertarlo en programas de proyectos que necesiten una comunicación inalámbrica.
Tiene mucha historia esto :?
-
Yo también estoy en las mismas, dispongo de ese módulo y de un PIC18LF420... Ando bastante perdido sobre cómo empezar también ,así que cualquier reseña que pongais por aquí me sería de gran utilidad.
-
Ahora ando en otra cosa, quiero terminarla asi me puedo dedicar a estos chiches.
Cuando arranque informare asi podemos arrancar juntos, si?? :mrgreen:
-
yo ya me he empezado a mirar el Miwi P2P. Si quereis, ya que hay varios que os vais a poner con ello, coged mi e-mail y nos ayudamos mutuamente: r_oberto_fdz@hotmail.com
-
OK, agendado...
Es messenger tambien??
-
Hola
Tengo un par de modulos tambien y me interesa ponerlos a trabajar, hice una libreria en eagle para el modulo, va adjunta para el que la necesite,
Mi email, joscarblanco@hotmail.com
-
Hola yo me apunto, también cuento con unos de estos módulos y creo que antes de aventurarnos a utilizar el Stack ZigBee o MiWi deberíamos provar con el Radio Driver UtilityRadio Driver Utility (http://ww1.microchip.com/downloads/en/AppNotes/01192a.pdf) que provee Microchip ya después le entramos con todo a los otros Stacks.
Saludos
logan_web@hotmail.com
-
Hola a todos. Estamos con un amigo en esto de armar una red zigbee con los modulos MRF24J40MA y un 18f452 o 4620 . . . Llevamos ya un mes y no logramos entender el stack como para empezar a hacerlo funcionar. Alguna idea como para empezar? Gracias a todos.
-
Pues aqui le otros modulo RF y explican muy bien todos sus aplicacion. http://www.hoperf.com/rf_fsk.asp ya estoy por entrar con uno de ellos y mi AVR Bascom :P
Un saludos
-
Pues aqui le otros modulo RF y explican muy bien todos sus aplicacion. http://www.hoperf.com/rf_fsk.asp ya estoy por entrar con uno de ellos y mi AVR Bascom :P
Un saludos
Yo utilizo esos módulos y hay que tener cuidado porque se corren solos de frecuencia y dejan de andar. Tuve que comprarlos con una determinada configuración y frecuencia fija especialmente para terminar con los problemas. Son bastante lentos, mucho más que lo que dice la documentación. Suerte. Fernando
-
Hola a todos. Estamos con un amigo en esto de armar una red zigbee con los modulos MRF24J40MA y un 18f452 o 4620 . . . Llevamos ya un mes y no logramos entender el stack como para empezar a hacerlo funcionar. Alguna idea como para empezar? Gracias a todos.
Hola, Yo también tengo dos módulos de MRF24J40MA, y en principio en las hojas características, admite también los PIC16F, simplemente tiene que tener el chip la comunicación SPI.
Alguien ha hecho un programa que pueda servir de ejemplo, en el micro que sea?? ya que las funciones SPI_WRITE() y SPI_READ() solo mandan 8bits y para el direccionamiento largo necesitas enviar 10 bits de dirección, para poder configurarlo correctamente.
Editado: la solución para esto esta en la paginas de 13 a 17 del datasheet del MRF24J40, es decir del chip y no del modulo MRF24J40MA, donde no viene demasiada información. El caso es que, si a alguien le sirve de ayuda, hay que mandar un byte para el corto y dos para el largo, con la distribución correspondiente que viene en el datasheet.
Si alguien pudiera ayudarme lo agradecería mucho, un saludo a todos :)
-
Editado: Yo estoy trabajando con el micro PIC16F722 que posee comunicación SPI máster. Como es alimentado a 5 voltios interpongo un buffer con colector abierto como adaptador de niveles, el sn74ls07n. Pero es que ni siquiera consigo que salga las señales del micro, o al menos yo no las veo. Este es mi código para leer los registros de direccionamiento corto.
void main()
{
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
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_4);
setup_vref(FALSE);
enable_interrupts(INT_SSP);
enable_interrupts(GLOBAL);
while(TRUE)
{
dato=SPIgetcorto(ORDER);
}
}
y esta es la función a la que llamo de momento con lectura me conformo.
BYTE SPIgetcorto(BYTE direccion)
{
BYTE data;
BYTE parte;
parte=(direccion<<1)&(0b01111110); //se ordenan los bits segun especificaciones del datasheet.
output_low(CSn);
spi_write(parte);
if( spi_data_is_in() )
{data = spi_read(0);}
output_high(CSn);
return data;
}
Con el direccionamiento largo estoy en las mismas.
BYTE SPIget(unsigned int16 direccion)
{
BYTE parteH;
BYTE parteL;
BYTE data;
parteL=direccion<<5;
parteH=direccion>>3|0x80; //se ordenan los bits segun especificaciones del datasheet.
output_low(CSn);
spi_write(parteH);
spi_write(parteL);
data=spi_read();
output_high(CSn);
return data;
}
He comprobado que los pines SPI funcionan correctamente como entrada salida en el modo normal.
Si alguien pudiera ayudarme lo agradecería mucho. un saludo :)
-
Pues aqui le otros modulo RF y explican muy bien todos sus aplicacion. http://www.hoperf.com/rf_fsk.asp ya estoy por entrar con uno de ellos y mi AVR Bascom :P
Un saludos
Yo utilizo esos módulos y hay que tener cuidado porque se corren solos de frecuencia y dejan de andar. Tuve que comprarlos con una determinada configuración y frecuencia fija especialmente para terminar con los problemas. Son bastante lentos, mucho más que lo que dice la documentación. Suerte. Fernando
a mi me paso lo mismo, son de juguete no los recomiendo
-
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.
#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:
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:
#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 :-/
-
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
-
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
-
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:
-
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 ;)
-
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.
-
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
-
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
-
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
-
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.
-
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
-
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.
-
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
-
pues yo me acabo de enterar de que existen.son bastantes varatos.asi que cuando tenga tiempo me pondre con ellos.
-
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
-
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
Buenas tardes. Estoy muy interesado. Estoy tratando de comunicar dos modulos MRF24j40MA usando PICs de la familis 18F compilando en C18. Pero si tienes algún codigo que pueda utilizar en CCS me sería de mucha ayuda. Quizás luego puedo migrarlo a C18. Agradeceré tu ayuda. Saludos.