Autor Tema: Nuestro Libro diario con el PIC18F97J60 (Ethernet)  (Leído 265993 veces)

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

Desconectado josep

  • PIC10
  • *
  • Mensajes: 17
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #360 en: 17 de Mayo de 2009, 15:21:06 »
Da igual si la resistencia está antes o después del led, como están en serie ya hace su función de limitar la intensidad. Y los leds solo son indicadores de si está conectado a una red ethernet y si se estan transmitiendo datos, pero está bien tenerlos para ver el estado.

Desconectado PICTRONICUPN

  • PIC10
  • *
  • Mensajes: 3
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #361 en: 17 de Mayo de 2009, 16:08:59 »
Hola a todos, Primero que nada quiero mandar una Felicitación a picmouse por su excelente proyecto. Y segundo tengo una Duda, Me interesa realizar el proyecto, pero con el ENC28j60, la idea es que sirva como tranportador de una variable X de un punto a otro de la red, esto, para implementarlo en un sistema de control, sin uso de las pc`s, Mi pregunta es... entre dos ENC28j60 Se pueden conectar en red?... y recibir y enviar datos entre los dos?...

Espero me de a entender, realmente soy algo nuevo en este ambiente de los pics con ethernet, pero me interesa mucho, de antemano Gracias a todos.

Y me uno a la lista de seguidores de Picmouse  8) :P :-/

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #362 en: 17 de Mayo de 2009, 16:17:02 »
PICTRONICUPN, bienvenido al foro!

Bueno, por topologia de una red Ethernet, deberías poder lograrlo, yo diría que implementando UDP entre los dos microcontroladores seria posible y rápido de lograr. 

http://es.wikipedia.org/wiki/UDP

seria una muy buena practica lo que planteas y la única forma de averiguar si funcionaria seria intentándolo..

SALUDOS!

Desconectado PICTRONICUPN

  • PIC10
  • *
  • Mensajes: 3
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #363 en: 17 de Mayo de 2009, 23:05:02 »
Gracias PICmouse, voy a comenzar con el proyecto :-/ y mas adelante estare reportando los avances,

Desconectado elpintas

  • PIC10
  • *
  • Mensajes: 32
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #364 en: 18 de Mayo de 2009, 17:58:24 »
Hola de nuevo.
Al final tenia un fallo en las conexiones del RJ45, una conexion no hacia buen contacto.
Solucionado esto, parecia que todo iba a funcionar, se encendia uno de los LEDs del RJ45 todo el rato, que creo que tiene que ver con la alimentacion y el otro parpadeaba, asi que he supuesto que ya estaba enviando paquetes. Pero, lo he conectado a la red y no puedo abrir la pagina web desde el explorador. El caso es que como valor de RBIAS segun especificaciones deberia ser 2.27K y yo tengo 2.2K y las resistencias del 49.9 omh, del modulo ethernet las tengo de 47 omh, es posible que esto me este dando problemas? (aunque en principio yo diria que el programa esta funcionando bien, porque por serie funciona perfectamente)

Resulta que tengo tambien la PICDEM.net2 y he estado trabajando el programa en esta placa y me funciona, y le he cargado al pic de la nueva placa hecha por mi el mismo programa, con lo cual creo que si no funciona en esta nueva placa debe ser un problema de hardware, porque he usado las mismas configuracion que la picdem.net.

Aunque ahora que pienso... de momento no le he cargado la web en la EEPROM externa donde la voy a almacenar, asi que es posible que no este funcionando por esto pero no se si sin web cargada en la eeprom externa deberia salirme algo. Mañana mismo intento cargarle la web.

no se si me explicado bien del todo

1 saludo!

Desconectado josep

  • PIC10
  • *
  • Mensajes: 17
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #365 en: 19 de Mayo de 2009, 05:16:41 »
Si no has cargado la web en la EEPROM, si pones la dirección IP de tu placa en el explorer no te saldrá nada, deberías cargarla antes. Yo estoy trabajando solo con la memoria del PIC, ya que el servidor web que quiero hacer no ocupa bastante y este PIC tiene bastante memoria.

Sobre el valor de las resistencias no se si te darán problemas, yo he utilizado los mismos valores que recomiendan en el datasheet.

Desconectado elpintas

  • PIC10
  • *
  • Mensajes: 32
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #366 en: 19 de Mayo de 2009, 05:25:19 »
hola josep,

Pues resulta que al conectarla, me sale un cartelito de windows que pone conectividad nula o limitada y si hago un ping a esta direccion si que me responde.
Y claro, si no tengo conectividad, no puedo cargar la web.

Se me olvidaba añadir, que estoy conectando directamente por cable cruzado a mi pc.
« Última modificación: 19 de Mayo de 2009, 05:33:47 por elpintas »

Desconectado josep

  • PIC10
  • *
  • Mensajes: 17
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #367 en: 19 de Mayo de 2009, 06:55:59 »
Podrías probar a cargarla en la memoria de programa si te cabe, o sino también se puede cargar por el puerto serie, pero deberías hacerlo como si entraras a la configuración de la PICDEM (con hyperterminal y la combinación de pulsadores). No entiendo que quieres decir con que estas conectado con cable cruzado al pc.

Desconectado elpintas

  • PIC10
  • *
  • Mensajes: 32
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #368 en: 19 de Mayo de 2009, 07:22:48 »
Te comento, me acabo de dar cuenta que si me conecto por serie e intento modificar por ejemplo el nombre del host (hyperterminal) y guardo la configuracion, y luego vuelvo a abrirlo  no se me han guardado los cambios. Me parece que esta configuracion se guardaba en los primeros bytes de la memoria, asi que creo que el problema va a estar en la memoria.

Voy a probar a grabar la web en la memoria interna, a ver si esta aqui el problema. Para guardarlo en la interna? es modificar la linea del codigo donde dice que se almacena en la interna..y...como se carga la web en la memoria del pic?

y otra pregunta, como subes la web por el serie?

Lo de cable cruzado lo decia, porque hay dos tipos de configuracion "connecting to  a network" o "connecting to a host system", me referia a la segunda configuracion

Desconectado josep

  • PIC10
  • *
  • Mensajes: 17
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #369 en: 19 de Mayo de 2009, 08:04:19 »
Ok, yo siempre lo he conectado a la red, de hecho cuando hago las pruebas en mi casa tengo conectado al router el pic y el PC.
 
Para cargar la página web en la memoria interna tendrás que incluir el archivo .c que te crea el MPFS en el proyecto y compilar. No se con que aplicación estás trabajando, pero yo te recomiendo que utilizes el TCPIP Stack v5.00 que te puedes descargar desde su web. Tiene una aplicación de demostración para hacer las pruebas y un ejecutable con el que puedes configurar algunas cosas de la pila TCP/IP, como donde irá almacenada la web, dirección IP, etc.

Lo de subir la web por serie lo he hecho con la PICDEM.net2, me parece que era mantener pulsado RB3 y pulsar RB0 (o algo así) con el hyperterminal conectado y te sale un menu de configuración, y una de las opciones es subir la página web. Más o menos es así pero en el datasheet de la PICDEM sale explicado con detalle.

Desconectado elpintas

  • PIC10
  • *
  • Mensajes: 32
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #370 en: 19 de Mayo de 2009, 14:00:37 »
Despues de unas cuantras pruebas, guardando en memoria externa e interna, sigue poniendome conectividad nula y limitada. Y lo del ping que he puesto antes, no es del todo cierto, porq estaba haciendo un ping a otro sitio, no a este server.

Asi que me decanto definitivamente, que el fallo esta en las conexiones.

Voy a intentar conseguir las resistencias de 49.9 y cambiarlas por las de 47, a ver si fuera esto.

josep, el esquematico que deje aqui lo has comprobado tambien mirando el datasheet del RJ45 que uso?, por si tuviera el fallo ahi.

gracias


Desconectado elpintas

  • PIC10
  • *
  • Mensajes: 32
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #371 en: 20 de Mayo de 2009, 07:45:58 »
Problema solucionado  :), resulta que me habia liado con las bobinas que lleva integradas el RJ45 y tenia mal las conexiones con el PIC.
Adjunto el nuevo fichero, con las nuevas conexiones que funcionan, por si a alguien le es de utilidad.

1 saludo

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #372 en: 20 de Mayo de 2009, 15:43:49 »
elpintas, gracias por compartir con todos lo que haces!

Siempre es de utilidad para alguien, es mas cuento un secreto... Yo publico los proyectos porque tengo mala memoria y siempre olvide como se hacia, es por eso que ahora cuando olvido, reviso el foro y recuerdo..  :P

Desconectado elpintas

  • PIC10
  • *
  • Mensajes: 32
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #373 en: 26 de Mayo de 2009, 13:13:02 »

Os comento, resulta que quiero recibir datos, a traves de la eusart, estoy usando el pic18f97j60 para implementar un servidor web, este pic tiene dos puertos eusart, uno lo estoy usando como viene por defecto en la tpcip stack de microchip para comunicaciones 232 con el pc, el cual funciona perfectamente, porque ya viene implementado por la stack de microchip. Y el otro lo quiero comunicar con otro pic para recibir datos, para mostrarlos en mi web y estoy usando comunicacion 485.

asi que tengo una interrupcion, de este estilo, con la cual recibo los datos que me llegan y los guardo en unas variables:

volatile int v;
volatile unsigned char *m;


volatile unsigned char flagGuardado;
volatile unsigned char flagEnvio;
unsigned char empieza;
volatile int temInt;
int aneInt;
int preInt;
int radInt;
int humInt;
int velInt;
int pluInt;
unsigned char ano;
unsigned char mes;
unsigned char dia;
unsigned char hora;
unsigned char min;
//unsigned char acaba;
unsigned char flagRecepcion;


void interrupciones_bajas (void);
                  //interrupcion
   #pragma code las_interrupciones_bajas = 0x18
   void interrupciones_bajas_asm (void)
      {
           _asm goto interrupciones_bajas _endasm
         
      }
      #pragma code

      #pragma interruptlow interrupciones_bajas
      void interrupciones_bajas (void){
   
         
      if(PIR1bits.RCIF==1){//confirmo que el buffer esta llenandose
                       
            while(PIR1bits.RCIF==0); //wait until you receive a character
            flagRecepcion=RCREG;
            if(flagRecepcion==0x69){   
         
     
               m = (unsigned char *)&empieza;//coloco los datos a partir de este puntero
               for (v = 0; v< 20; v++)//el for hace que se repita 21 veces y cada una de ellas incrementa el puntero
                  {
                  while(PIR1bits.RCIF==0); //wait until you receive a character
                  *m=RCREG;
                  ++m;
                 
                  }
               flagGuardado=1;
               LATCbits.LATC1=1;
               flagRecepcion=0x00;
            }
      }
   
   }

esta interrupcion funciona correctamente en un pic cualquiera, pero al intentar integrarla en la tpcip stack, me da un error de este estilo:

Error - section 'lowVector' can not fit the absolute section. Section 'lowVector' start=0x00000018, length=0x00000006

todavia no he configurado la eusart , pero no creo que tenga nada  que ver con esto. Se me olvidaba decir que estoy programando en C18.

Desconectado agiofelipe2

  • PIC10
  • *
  • Mensajes: 3
Re: Nuestro Libro diario con el PIC18F97J60 (Ethernet)
« Respuesta #374 en: 28 de Mayo de 2009, 14:32:17 »
Alguém poderia me ajudar a entender o código seguinte:

static HTTP_IO_RESULT HTTPPostMD5(void)
{
   WORD lenA, lenB;
   static HASH_SUM md5;      // Assume only one simultaneous MD5
   
   #define SM_MD5_READ_SEPARATOR   (0u) // Processed as the "default" state
   #define SM_MD5_SKIP_TO_DATA      (1u)
   #define SM_MD5_READ_DATA      (2u)
   
   // We don't care about curHTTP.data at this point,
   // so we'll use that for our buffer
   
   // curHTTP.data[0] is always at least overwritten with the leading '/'
   // from the filename, so we'll use that as a state machine variable. 
   // If it's value isn't 0x01 or 0x02, then we haven't passed the separator.
   switch(curHTTP.data[0])
   {
   
   case SM_MD5_SKIP_TO_DATA:
      // Look for the CRLFCRLF
      lenA = TCPFindROMArray(sktHTTP, (ROM BYTE*)"\r\n\r\n", 4, 0, FALSE);

      if(lenA != 0xffff)
      {// Found it, so remove all data up to and including
         lenA = TCPGetArray(sktHTTP, NULL, lenA+4);
         curHTTP.byteCount -= lenA;
         curHTTP.data[0] = SM_MD5_READ_DATA;
      }
      else
      {// Otherwise, remove as much as possible
         lenA = TCPGetArray(sktHTTP, NULL, TCPIsGetReady(sktHTTP) - 4);
         curHTTP.byteCount -= lenA;
      
         // Return the need more data flag
         return HTTP_IO_NEED_DATA;
      }
      
      // No break if we found the header terminator
      
   case SM_MD5_READ_DATA:

      // Find out how many bytes are available to be read
      lenA = TCPIsGetReady(sktHTTP);
      if(lenA > curHTTP.byteCount)
         lenA = curHTTP.byteCount;

      while(lenA > 0)
      {// Add up to 64 bytes at a time to the sum
         lenB = TCPGetArray(sktHTTP, &(curHTTP.data[1]), (lenA < 64)?lenA:64);         
         curHTTP.byteCount -= lenB;
         lenA -= lenB;
         MD5AddData(&md5, &curHTTP.data[1], lenB);
      }
            
      // If we've read all the data
      if(curHTTP.byteCount == 0)
      {// Calculate and copy result to curHTTP.data for printout
         curHTTP.data[0] = 0x05;
         MD5Calculate(&md5, &(curHTTP.data[1]));
         return HTTP_IO_DONE;
      }
         
      // Ask for more data
      return HTTP_IO_NEED_DATA;
   
   // Just started, so try to find the separator string
   case SM_MD5_READ_SEPARATOR:
   default:
      // Reset the MD5 calculation
      MD5Initialize(&md5);
      
      // See if a CRLF is in the buffer
      lenA = TCPFindROMArray(sktHTTP, (ROM BYTE*)"\r\n", 2, 0, FALSE);
      if(lenA == 0xffff)
      {//if not, ask for more data
         return HTTP_IO_NEED_DATA;
      }
   
      // If so, figure out where the last byte of data is
      // Data ends if CRLFseparator--CRLF, so 6+len bytes
      curHTTP.byteCount -= lenA + 6;
      
      // Read past the CRLF
      curHTTP.byteCount -= TCPGetArray(sktHTTP, NULL, lenA+2);
      
      // Save the next state (skip to CRLFCRLF)
      curHTTP.data[0] = SM_MD5_SKIP_TO_DATA;
      
      // Ask for more data
      return HTTP_IO_NEED_DATA;
   }
   
}
#endif // #if defined(STACK_USE_MD5)


 

anything