Autor Tema: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?  (Leído 8405 veces)

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

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« en: 11 de Enero de 2013, 18:34:41 »
Me gustaría saber si alguien ha experimentado y me quiere ayudar con MplabX + TCP/IP + ENC424j600. Quiero hacer un experimento/proyecto y no se por donde empezar, tengo muy poca informacion y acabo de hacer una plaquita para reventarla.



Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #1 en: 11 de Enero de 2013, 20:11:21 »
La base es bajarte los ejemplos de Microchip, Microchip Solutions. De allí tomar un ejemplo, adaptarlo a tu PCB y controlador.

Por cierto, muy linda placa  ;-)

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #2 en: 11 de Enero de 2013, 22:00:52 »
Me gustaría saber si alguien ha experimentado y me quiere ayudar con MplabX + TCP/IP + ENC424j600. Quiero hacer un experimento/proyecto y no se por donde empezar, tengo muy poca informacion y acabo de hacer una plaquita para reventarla.



Que padre pcb has hecho!!

Te quedo muy bien! :-/ :-/

Que dispositivos contiene ??

Saludos!

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #3 en: 12 de Enero de 2013, 04:47:56 »
La base es bajarte los ejemplos de Microchip, Microchip Solutions. De allí tomar un ejemplo, adaptarlo a tu PCB y controlador.

Por cierto, muy linda placa  ;-)

Saludos!

Había pensado en eso, pero quiero empezar desde el principio, es decir, de momento que responda al ping, necesito saber los archivos que tengo que incluir en mi codigo en mplab xc16, como configuro la conexión, etc.
Creo que los ejemplos de Microchip Solutions son para sus placas y sólo determinados micros.

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #4 en: 12 de Enero de 2013, 04:59:52 »

Que padre pcb has hecho!!

Te quedo muy bien! :-/ :-/

Que dispositivos contiene ??

Saludos!

Tiene un pic 24fj256gb106 conectado por SPI a un ENC424j600 y por otro SPI a una tarjeta de memoria microsd. Tambien está conectado por UART a un MAX487 y aprovechando las funciones de este pequeño monstruo a un conector USB.

Tiene un 7812 un 7805 y un LT1117 de 3.3v un par de led's, el conector rj45 con sus bobinas, su pequeño pero efectivo filtrado y condensadores y resistencias aqui y alla.
Tiene 4 resistencias 49R9 troughole soldadas a los pad's porque no las encuentro en SMD, ademas de tener que hacer una chapuza porque no encuentro la resistencia de 12k4 y he tenido que soldar de 12k+470. Haber si funciona. Tambien lleva una bobina de ferrita a modo de filtro, el boton reset con sus pull-up y condensadores de desacople y por supuesto el conector para programarlo.
Importantes los dos condensadores de tántalo para el core del PIC y el ENC.
He tenido que corregir algun que otro fallo pero espero que funcione.

Vamos que una plaquita para no aburrirme durante un tiempo

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #5 en: 12 de Enero de 2013, 05:32:54 »
Bonita placa alperez.

Coincido con suky... lo más sencillo es que te instales las Microchip solutions y allí encontrarás una aplicación llamada TCPIP Configuration Config en la que, a través de varios cuadros de diálogo, vas configurando las opciones que quieres probar (cliente, servidor, eeprom, sdcard, ...), y te genera un archivo tcpip.h con los "defines" necesarios para habilitar sólo esas funciones.

De este modo podrás saber al menos que tu placa funciona.

Por ejemplo, yo empecé configurando sólo un cliente tcpip, con el que pude comprobar que el dhcp y los pings funcionaban correctamente. Luego amplié al servidor web... y así sucesivamente. El código es sencillo de estudiar si te vas fijando en cada módulo por separado... de hecho, debido a su licencia, jamás podrás distribuir el stack de microchip, por lo que es mejor que te acostumbres a trabajar dentro de su "corsé".

Lo mejor de este stack es lo bien documentado que está (echa un vistazo al archivo de ayuda, donde te explican cómo adaptar los ejemplos a tu placa en particular a través del archivo hardwareprofile.h)

Respecto a las resistencias raritas, yo las compré en digikey... de hecho, aquí tienes este hilo en el que voy a comprar más por si te viene bien:

http://www.todopic.com.ar/foros/index.php?topic=39926.0

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #6 en: 12 de Enero de 2013, 05:44:18 »
Bonita placa alperez.

Coincido con suky... lo más sencillo es que te instales las Microchip solutions y allí encontrarás una aplicación llamada TCPIP Configuration Config en la que, a través de varios cuadros de diálogo, vas configurando las opciones que quieres probar (cliente, servidor, eeprom, sdcard, ...), y te genera un archivo tcpip.h con los "defines" necesarios para habilitar sólo esas funciones.

De este modo podrás saber al menos que tu placa funciona.

Por ejemplo, yo empecé configurando sólo un cliente tcpip, con el que pude comprobar que el dhcp y los pings funcionaban correctamente. Luego amplié al servidor web... y así sucesivamente. El código es sencillo de estudiar si te vas fijando en cada módulo por separado... de hecho, debido a su licencia, jamás podrás distribuir el stack de microchip, por lo que es mejor que te acostumbres a trabajar dentro de su "corsé".

Lo mejor de este stack es lo bien documentado que está (echa un vistazo al archivo de ayuda, donde te explican cómo adaptar los ejemplos a tu placa en particular a través del archivo hardwareprofile.h)

Respecto a las resistencias raritas, yo las compré en digikey... de hecho, aquí tienes este hilo en el que voy a comprar más por si te viene bien:

http://www.todopic.com.ar/foros/index.php?topic=39926.0

Ya instalé Microchip solutions, pero me pide que seleccione un archivo existente y no sé cuál ¿sólo con incluir ese tcpip.h ya funciona?.
No entiendo lo de la licencia, creia que era libre

El problema para las resistencias son los portes, compre un monton de resistencias "normales" y condensadores de varios valores a los chinos de ebay por un buen precio por que no cobran portes, pero tengo que comprar muchas para esos valores "raros" o comprarlas a otros proveedores que me cobran un paston en gastos de envío. No es que sea caro pero para 5 resistencias de un par de centimos me cobran 7€ de portes y yo me niego por que ellos se niegan a meterlas en un sobre con un sello, vamos un despilfarro.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #7 en: 12 de Enero de 2013, 05:52:09 »
Elige el archivo de la placa de microchip que más se parezca a la tuya... creo que en tu caso es el C:\Microchip Solutions v2012-10-15\TCPIP\Demo App\Configs\HWP EX16_ENC624 XC32.h

Luego échale un vistazo a la sección 9 de la ayuda, donde te dicen qué archivos tienes que modificar y cómo.

Sólo con eso ya tiene que funcionar. (yo lo he probado con un PIC18).

Totalmente de acuerdo contigo en que es un despilfarro el tema de los componentes... por eso he abierto el hilo que te comentaba, para ver si podemos organizarnos para comprar lo que necesitamos reduciendo los gastos de envío al mínimo.


Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #8 en: 12 de Enero de 2013, 06:07:36 »
Elige el archivo de la placa de microchip que más se parezca a la tuya... creo que en tu caso es el C:\Microchip Solutions v2012-10-15\TCPIP\Demo App\Configs\HWP EX16_ENC624 XC32.h

Luego échale un vistazo a la sección 9 de la ayuda, donde te dicen qué archivos tienes que modificar y cómo.

Sólo con eso ya tiene que funcionar. (yo lo he probado con un PIC18).

Totalmente de acuerdo contigo en que es un despilfarro el tema de los componentes... por eso he abierto el hilo que te comentaba, para ver si podemos organizarnos para comprar lo que necesitamos reduciendo los gastos de envío al mínimo.




A ver si consigo que funcione, con que responda al ping me conformo de momento.
He visto el post del pedido y es una gran idea. ¿Has buscado en ebay?

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #9 en: 12 de Enero de 2013, 06:14:16 »
Yo tenía el mismo objetivo que tú con una placa que construí a principio de semana (constatar que funcionaba)... y en una mañana lo conseguí como te he explicado... luego me sorprendió lo fácil que era incorporar otros módulos (servidor web, ...).

Si la placa ex16 no contempla el microcontrolador que has usado tendrás además que incorporarlo en algunos if (es lo que me pasó a mí con la ex18 y el pic18f27j53)... además tuve que configurar el Pin Peripheral Select en la función initboard del main.c

En ebay no hay esos componentes y comprarlos en digikey o mouser sale bien de precio si conseguimos llegar entre todos al pedido mínimo (65 euros) para que no nos cobren gastos de envío.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #10 en: 12 de Enero de 2013, 06:44:32 »
Ah, y respecto a la licencia del stack de microchip no te autoriza a distribuir el código, de modo que tendrás que recurrir a alguna alternativa como la de dangerous prototypes si quieres hacer tu código de acceso libre:

Citar
//Due to licensing issues, we can't redistribute the Microchip USB source.


//You can get it from the Microchip website for free:

//http://www.microchip.com/usb


//
//1.Download and install the USB source. These files install to c:\Microchip Soultions\ by default.


//2.Place the project folder in the Microchip source install directory (c:\Microchip Soultions\ by default)


//3.Copy usb_config.h & usb_descriptors.c from \Microchip Solutions\USB Device - CDC - Basic Demo\CDC - Basic Demo - Firmware3\ to the project folder.


//4. That's it. You've got the latest source and we're compliant with the license.


//


//Depending on the install location you may need to tweak the include paths under Project->build options.


#include "GenericTypeDefs.h"


#include "Compiler.h"


#include "HardwareProfile.h"


//#include "config.h"

#include "./USB/usb.h"


#include "./USB/usb_function_cdc.h"


#include "usb_config.h"


#include "USB\usb_device.h"


#include "USB\usb.h"

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #11 en: 12 de Enero de 2013, 06:53:11 »
Vale, entiendo que no se pueda distribuir el código pero si una referencia a éste ¿no? Si no, que sentido tiene

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #12 en: 15 de Enero de 2013, 05:04:39 »
Bueno pues después de dos dias "cacharreando", no funciona.
He intentado con un firm para la EX16 pero no encuentro la forma de cambiar los pines del SPI para adaptarlos a los de mi placa. Tampoco tengo un osciloscopio para ver si funciona el SPI y lo que he observado es que se calienta bastante el estabilizador de 3.3v y el ENC. Había un corto en la placa con uno de los LED's y es posible que se haya quemado.

Haber si averigüo donde se cambian los pines del SPI para estar seguro de que es el ENC averiado.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #13 en: 15 de Enero de 2013, 09:11:51 »
En el hardwareprofile.h tienes que añadir un if para tu placa en particular. Por ejemplo, en mi caso:

Código: [Seleccionar]
#if defined(CFG_INCLUDE_HACKERMESH)
#include "Configs/HWP HACKERMESH.h"

La macro CFG_INCLUDE_HACKERMESH, o como quieras llamarla, la defines en Project>Build options>Project>MPLAB Cxxx>Preprocessor macros.

Luego te creas el archivo HW HACKERMESH.h, o como quieras llamarlo, duplicando el que más se parezca de los que vienen con el stack, y en el que tienes que definir los pragmas de tu placa y la frecuencia de trabajo (código 1) y los pines (código 2) (yo también he cambiado al mssp2):

Código 1

Código: [Seleccionar]
#define PIC18_HACKERMESH

// Set configuration fuses (but only in MainDemo.c where THIS_IS_STACK_APPLICATION is defined)
#if defined(THIS_IS_STACK_APPLICATION)
#if defined(__18F27J53)
#pragma config WDTEN = OFF         
#pragma config CPUDIV = OSC1       
#pragma config CFGPLLEN = ON
#pragma config OSC = INTOSCPLL
#pragma config PLLDIV = 2
#pragma config XINST = OFF
#endif
#endif


// Clock frequency values
// These directly influence timed events using the Tick module.  They also are used for UART and SPI baud rate generation.
#define GetSystemClock() (48000000ul) // PIC18F87J50

Código 2:

Código: [Seleccionar]
// ENC28J60 I/O pins
//#define ENC_RST_TRIS (TRISBbits.TRISB5)
//#define ENC_RST_IO (LATBbits.LATB5)
#define ENC_CS_TRIS (TRISCbits.TRISC2)
#define ENC_CS_IO (LATCbits.LATC2)
#define ENC_SCK_TRIS (TRISBbits.TRISB2)
#define ENC_SDI_TRIS (TRISBbits.TRISB3) //MISO
#define ENC_SDO_TRIS (TRISBbits.TRISB1) //MOSI
//El mssp2 del 18f27j53 sólo admite spi y por eso lo uso aquí
#define ENC_SPI_IF (PIR3bits.SSP2IF)
#define ENC_SSPBUF (SSP2BUF)
#define ENC_SPISTAT (SSP2STAT)
#define ENC_SPISTATbits (SSP2STATbits)
#define ENC_SPICON1 (SSP2CON1)
#define ENC_SPICON1bits (SSP2CON1bits)
#define ENC_SPICON2 (SSP2CON2)

Por último, si estás usando PPS para el SPI, indícalo en la función initializeBoard de MainDemo.c... por ejemplo:

Citar
   #if defined(PIC18_HACKERMESH)
      //pps
      #include <pps.h>

      PPSUnLock();
        iPPSOutput(OUT_PIN_PPS_RP4,OUT_FN_PPS_SDO2);
        iPPSOutput(OUT_PIN_PPS_RP5,OUT_FN_PPS_SCK2);
      iPPSInput(IN_FN_PPS_SCK2IN,IN_PIN_PPS_RP5);
      iPPSInput(IN_FN_PPS_SDI2,IN_PIN_PPS_RP6);
   
        PPSLock();

   #endif

Si se te encienden los leds al enchufar un cable de tu router al conector de tu placa quizás quiera decir que el controlador ethernet sí está funcionando.

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Stack TCP/IP básico en MplabX. ¿Por donde empiezo?
« Respuesta #14 en: 15 de Enero de 2013, 09:38:23 »
Tengo eso en hardwareprofile.h los pps junto a la declaración de los pines como entrada y/o salida en main. Getsystemclock es FOSC? O FCY
El stack inicia el spi?

Las luces encienden pero no coge ip. Hubo una de las pruebas que hice en las que aparecio en la aplicación de microchip dicover con una ip 169 pero no indicaba el nombre del host