# Comunicacion TCP/IP con Pic 18f4550 y ENC28J60



## josesilva26 (Sep 16, 2010)

Hola buenas,
Estoy realizando un proyecto de comunicación tcp/ip con el pic 18f4550 y el controlador ethernet enc28j60 por medio de comunicacion SPI. la programacion del pic la realice con el mikrobasic de mikroelektronica ya me funciona todo ya el pic me hace ping con la pc y la aplicacion en visual basic me enciende los leds, el problema es que cuando programo una entrada y una salida para que funcione de manera autonoma sin utilizar visual basic no lo hace o si lo hace pierdo la comunicacion.

alguien puede ayudarme con esta programacion?
a continuacion dejo toda la informacion del proyecto de lo q llevo.
aqui dejo el link del proyecto:

http://ingeniedia.blogspot.com/2009/04/m2eth-board-conecta-tu-pic-ethernet.html

son 3 paginas para ver todo le dan en la parte de abajo entradas mas recientes y ahi se ve toda la programacion.
por favor cualquier ayuda me seria muy util


----------



## schppcss (Oct 8, 2010)

Hola ... oie me podrias enviar el codigo (o postearlo) q estas utilizando para  conectar el pic al enc28j60....
la pagina que dejas tira un error... 
De antemano muchas gracias 
Saludos


----------



## Moyano Jonathan (Oct 8, 2010)

Tu blog no existe más. Igual ahora en las ultimas versiones de proteus podés simular el ENC28J60 y funciona perfecto...yo mismo lo he probado con los ejemplos que trae


----------



## schppcss (Oct 8, 2010)

Gracias moyano por el dato ... ahora mismo me bajare la ultima version de proteus para probar los ejemplos q trae sobre ethernet... Saludos


----------



## Moyano Jonathan (Oct 8, 2010)

Ahora disculpá pero tenés que tener en cuenta algo antes:
*Tenés que instalar el software *WinPCAP para que te simule una conección de red activa.

Luego de instalar este soft podés simular tus ejemplos siempre y cuando estés conectado a internet


----------



## juan0519 (Sep 3, 2012)

Hola a todos!!
Estoy enviando datos por ethernet y para esto utilizo un PIC y el ENC28J60, comunicandose a traves de SPI (a 8MHz). Si bien puedo enviar los datos me di cuenta que el ENC se toma cerca de 4ms antes de enviar los paquetes de datos. La hoja de datos no me ayudo en encontrar el motivo de tal delay.
Si alguien ya tuvo oportunidad de trabajar con este controlador ethernet, tuvieron este de problema???
Les agradeceria cualquier aporte.
Saludos!!!


----------



## panchon (Sep 6, 2012)

hola,

estoy haciendo funcionar el ENC28J60 con el PIC 18F2550, he probado todos los ejemplos por Internet y no soy capaz ha hacer ping al pic. Para el encapsulado ENC28J60 tengo el de OLIMEX que viene ya preparado para conectarlo al puerto SPI.

¿Como se pone la velocidad del SPI a 8Mhz?

Si alguien me pude ayudar.

Muchas gracias


----------



## Moyano Jonathan (Sep 6, 2012)

> hola,
> 
> estoy haciendo funcionar el ENC28J60 con el PIC 18F2550, he probado todos los ejemplos por Internet y no soy capaz ha hacer ping al pic. Para el encapsulado ENC28J60 tengo el de OLIMEX que viene ya preparado para conectarlo al puerto SPI.
> 
> ...



Hay muy poca información para ayudarte, por favor se más específico y gráfico. Explica con detalle que proceso de investigación has llevado a cabo...caso contrario no creo que nadie pueda ayudarte.

Saludos !


----------



## panchon (Sep 7, 2012)

hola,

ahora mismo tengo un ENC28J60 de olimex y un PIC 18F2550, estoy intentando hacer ping al pic, pero no soy capaz. Estoy usando un ejemplo que hay por los foros que se llama "11 Ethernet", que lo he visto publicado en varios foros. 
Este ejemplo es para le PIC 18F4550 y he hecho unas modificaciones para el PIC 18F2550.(Modificados los pines del PIC y los FUSES XTPLL por HSPLL; y el PLL1 por el PLL5(Tengo un cristal de 20MHz))
El problema es que no pasa de la  funcion StackInit.
El problema puede ser por la MAC?, debería cambiarla?
Las modificaciones que he realizado son correctas?
deberia tocar algo en la libreria "tcpip/stacktsk.c"?


Muchas gracias y saludos.

os adjunto el codigo:


```
//////////////////////////////////////////////////////////////////////////////////////////////
//Este programa sirve para revisar la correcta conexión entre el PIC18F4550 y                 //
//el modulo ENC28J60, crea un WebServer en la direccion IP 192.168.1.111                    //
//El cual muestra el siguiente mensaje "Test Conexión PIC18F4550 y ENC28J60 V1.0"             //
//También emula un puerto serial en el PC donde vamos viendo como se desarrolla el programa //                                                                            //
//////////////////////////////////////////////////////////////////////////////////////////////
//original
//#include <18F4550.h>
//#fuses XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN   // Ocupa cristal 4Mhz, cambiar a PLL5 para ocuparlo con 20Mhz.
//modificaciones para PIC 18F2550
#include <18F2550.h>
#fuses HSPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN   // Ocupa cristal 4Mhz, cambiar a PLL5 para ocuparlo con 20Mhz.
#use delay(clock=48000000)

#define  ON    output_high
#define  OFF   output_low

#define  LedV  PIN_B4
#define  LedR  PIN_B2

// Conexión entre el PIC18F4550 y el Modulo ENC28J60 (Se conecta directamente sin adaptador de voltajes).
// Se adjunta el datasheet del Modulo ENC28J60.
/*Original
#define  PIN_ENC_MAC_SO    PIN_C7   // Conectar con PIN MISO del ENC28J60.
#define  PIN_ENC_MAC_SI    PIN_B0   // Conectar con PIN MOSI del ENC28J60. 
#define  PIN_ENC_MAC_CLK   PIN_B1   // Conectar con PIN SCK del ENC28J60. 
#define  PIN_ENC_MAC_CS    PIN_B3    // Conectar con PIN CS del ENC28J60. 
#define  PIN_ENC_MAC_RST   PIN_B5   // Conectar con PIN RST del ENC28J60. 
#define  PIN_ENC_MAC_INT   PIN_D2   // Conectar con PIN INT del ENC28J60. 
#define  PIN_ENC_MAC_WOL   PIN_D3   // Conectar con PIN WOL del ENC28J60. 
*/
//Modificaciones para PIC18F2550
#define  PIN_ENC_MAC_SO    PIN_C7   // Conectar con PIN MISO del ENC28J60.
#define  PIN_ENC_MAC_SI    PIN_B0   // Conectar con PIN MOSI del ENC28J60. 
#define  PIN_ENC_MAC_CLK   PIN_B1   // Conectar con PIN SCK del ENC28J60. 
#define  PIN_ENC_MAC_CS    PIN_B3    // Conectar con PIN CS del ENC28J60. 
#define  PIN_ENC_MAC_RST   PIN_B5   // Conectar con PIN RST del ENC28J60. 
#define  PIN_ENC_MAC_INT   PIN_B2   // Conectar con PIN INT del ENC28J60. 
#define  PIN_ENC_MAC_WOL   PIN_C4   // Conectar con PIN WOL del ENC28J60. 

#include "usb/usb_cdc.h"         // Descripción de funciones del USB.
#include "usb/usb_desc_cdc.h"    // Descriptores del dispositivo USB.

//Protocolos a utilizar.

#define  STACK_USE_MCPENC  TRUE
#define  STACK_USE_ARP     TRUE
#define  STACK_USE_ICMP    TRUE
#define  STACK_USE_TCP     TRUE

#include "tcpip/stacktsk.c"

#define MY_HTTP_SOCKET  80

int8 HTTPSocket=INVALID_SOCKET;

// Microchip VendorID, MAC: 00-04-A3-XX-XX-XX
void MACAddrInit(void)
{
   MY_MAC_BYTE1=0x00;
   MY_MAC_BYTE2=0x04;
   MY_MAC_BYTE3=0xA3;
   MY_MAC_BYTE4=0x00;
   MY_MAC_BYTE5=0x00;
   MY_MAC_BYTE6=0x01;
}

void IPAddrInit(void)
{
   //Direccion IP
   MY_IP_BYTE1=192;
   MY_IP_BYTE2=168;
   MY_IP_BYTE3=1;
   MY_IP_BYTE4=111;

   //Puerta de Enlace
   MY_GATE_BYTE1=192;
   MY_GATE_BYTE2=168;
   MY_GATE_BYTE3=1;
   MY_GATE_BYTE4=1;

   //Mascara de Subred
   MY_MASK_BYTE1=255;
   MY_MASK_BYTE2=255;
   MY_MASK_BYTE3=255;
   MY_MASK_BYTE4=0;
}

void HTTPPut(char c)
{
   TCPPut(HTTPSocket, c);
}

void HTTPTask(void)
{
   static enum {HTTP_ST_CONNECT=0, HTTP_ST_WAIT_CONNECT=1, HTTP_ST_GET=2, HTTP_ST_PUT=3, HTTP_ST_DISCONNECT=4} state=0;
   static TICKTYPE timeout_counter;
   static char lc, lc2;
   char c;
   char content[250];

   if (HTTPSocket==INVALID_SOCKET)
      state=HTTP_ST_CONNECT;
   else if (!TCPIsConnected(HTTPSocket))
      state=HTTP_ST_WAIT_CONNECT;
   else if (TickGetDiff(TickGet(), timeout_counter) > TICKS_PER_SECOND*60)
      state=HTTP_ST_DISCONNECT;

   switch(state) {
      case HTTP_ST_CONNECT:
         HTTPSocket=TCPListen(MY_HTTP_SOCKET);
         if (HTTPSocket!=INVALID_SOCKET) {
            printf(usb_cdc_putc,"\r\nHTTP: Listening");
            state=HTTP_ST_WAIT_CONNECT;
            timeout_counter=TickGet();
         }
         break;

      case HTTP_ST_WAIT_CONNECT:
         timeout_counter=TickGet();
         if (TCPIsConnected(HTTPSocket)) {
            state=HTTP_ST_GET;
            printf(usb_cdc_putc,"\r\nHTTP: Connected");
         }
         break;

      case HTTP_ST_GET:
         if (TCPIsGetReady(HTTPSocket)) {
            while (TCPGet(HTTPSocket, &c)) {
               if ( (c=='\n') && (lc2=='\n') ) {
                  state=HTTP_ST_PUT;
                  printf(usb_cdc_putc,"\r\nHTTP: Got Page Request");
               }
               lc2=lc;
               lc=c;
            }
         }
         break;

      case HTTP_ST_PUT:
         if (TCPIsPutReady(HTTPSocket)) {
            printf(usb_cdc_putc,"\r\nHTTP: Putting Page Response");
            sprintf(content, "<HTML><HEAD><TITLE>WebServer PIC18F4550 ENC28J60</TITLE></HEAD><BODY><H1>Test Conexión PIC18F4550 y ENC28J60 V1.0</H1>");
            sprintf(&content[0]+strlen(content),"</BODY></HTML>");
            printf(HTTPPut, "HTTP/1.1 200 OK\r\n");
            printf(HTTPPut, "Content-Type: text/html\r\n");
            printf(HTTPPut, "Content-Length: %u\r\n",strlen(content));
            printf(HTTPPut, "\r\n");
            printf(HTTPPut, "%s", content);
            printf(usb_cdc_putc,"\r\nHTTP: Flushing...");
            TCPFlush(HTTPSocket);
            printf(usb_cdc_putc,"\r\nHTTP: Flushed!");
            state=HTTP_ST_GET;
         }
         break;

      case HTTP_ST_DISCONNECT:
         if (TCPIsPutReady(HTTPSocket)) {
            printf(usb_cdc_putc,"\r\nHTTP: Force Disconnect");
            TCPDisconnect(HTTPSocket);
            state=HTTP_ST_WAIT_CONNECT;
         }
         break;
   }
}

void main(void)
{
   ON(LedR);
   OFF(LedV);
   
   usb_cdc_init();
   usb_init();                    //Inicializamos hardware USB del PIC18F4550.
   usb_task();                    //Habilita periferico usb e interrupciones.
   usb_wait_for_enumeration();    //Esperamos hasta que el PicUSB sea configurado por el host.
   
   printf(usb_cdc_putc,"USB Configurado");

   MACAddrInit();
   IPAddrInit();
   StackInit();

   ON(LedV);
   OFF(LedR);   

   while(TRUE)
   {      
      StackTask();
      HTTPTask();
   }
}
```


----------



## Pablet (Sep 7, 2012)

Por si os sirve de ayuda, en mi blog he desarrollado un proyecto con un PIC18F4685 y el enc28j60, la placa la estoy haciendo pero el firmware ya esta completo, y lo podeis consultar aquí http://mipsandchips.blogspot.com.es/search/label/Servidor WEB


----------



## josemaX (Sep 7, 2012)

Pablet, muy interesante y útil tu entrada.


----------



## Pablet (Sep 7, 2012)

Muchas gracias!! a ver si puedo terminar ya la placa y os lo mostrare completo.

Un saludo


----------



## Moyano Jonathan (Sep 7, 2012)

Te voy a intentar responder de la manera más concreta posible. Igual no tengo muchos datos de tu parte para hacerlo de manera objetiva.

1) - Si usas un módulo ENC28J60, nos tenés que especifar cuál es. Igual sea cuál sea no hace falta que hagas ningún adaptador de tensión, lo podés conectar directo con el PIC, respetando el sentido de las señales del puerto SPI.

2) - Hay que configurar bien los fusibles del microcontrolador, en caso de que uses un PIC18F2550 o PIC18F4550, es indiferente. Hay que tener en cuenta la configuración del oscilador para poderlo trabajar a 48Mhz, en caso de usar el puerto USB.

3) - Si haces un análisis minucioso, paso a paso, (lo cuál obviamente es lo recomendable), te vas a dar cuenta que en el archivo ENC28J60, se implementan 2 maneras de comunicarnos por SPI, una por software y otra por hardware. Trabajando por software, el compilador automáticamente regulará las velocidades para que sean las adecuadas en la comunicación con el dispositivo.

En caso de que trabajes con el puerto por Hardware, vas a tener que configurar el puerto SPI y los pines asociados a este. Teniendo en cuenta que a 48Mhz, sería imposible que la velocidad del puerto SPI se adaptara a los requerimientos de velocidad del ENC28J60.

4) - Tanto la MAC, como la dirección IP y la puerta de enlace son configurables totalmente por el usuario. Lo único que no se recomienda es cambiar la MAC.

5) - La conexión con la PC se realiza mediante un cable de red UTP cruzado y con el router se hace con un cable de red UTP recto.

6) - Hay que configurar la IP de nuestro dispositivo y la puerta de enlace para poder enlazarnos con el módulo:







Con estas recomendaciones y un estudio más minucioso lo vas a lograr 

Saludos !


----------



## panchon (Sep 14, 2012)

muchas gracias por la ayuda pero sigo igual 

Mi ENC28J60 es uno de la marca olimex que he comprado en RS:
http://es.rs-online.com/web/p/kits-de-desarrollo-de-interfaz/7055259/
Estoy sigueindo las funciones paso a paso y hay de una que no me pasa:

la MacInit()


```
void MACInit(void)
{
   BYTE i;

   ENCSPIInit();

   // Wait for CLKRDY to become set.
   // Bit 3 in ESTAT is an unimplemented bit.  If it reads out as '1' that
   // means the part is in RESET or otherwise our SPI pin is being driven
   // incorrectly.  Make sure it is working before proceeding.
   do
   {
      i = ReadETHReg(ESTAT).Val;
   } while((i & 0x08) || (~i & ESTAT_CLKRDY));
```

se me queda en el while y no pasa.

he puesto una puerta ADN logica despues del ENC28J60 para aumentar la tension de 3.3v a 5v. no se si estara bien.

el WOL esta sin conectar y el CLK tampoco(¿El que se conecta al pic es el SCK?)

Si alguein puede ayuidarme para poder pasar de este paso??


Muchas gracias de nuevo

PD: Tengo varios pic en 18F4550, el 18F2550 y el 18F4620, y con todos ellos me pasa lo mismo.
PD: estoy siguiendo los ejemplos del CCS. El ejemplo 11.


----------



## panchon (Sep 17, 2012)

otra pregunta,   como puedo saber si el modulo ENC28J60 funciona perfectamente?

muchas gracias


----------



## Moyano Jonathan (Sep 17, 2012)

1 - Cuál es el ejemplo 11...que tipo de verificación hace.
2 - Estás seguro de haber conectado bien el módulo. Acordate que se hace de manera directa, sin la necesidad de un adaptador.
3 - Necesitas un cable de red cruzado para poder establecer comunicación.
4 - El stack TCP-IP de CCS funciona bien, vas a tener que revisar el hardware que estás utilizando y el driver del CCS, donde se define si la comunicación es por software o por hardware.
5 - Si pudiste leer algo del stack, te vas a dar cuenta que se define el debug, para hacer pruebas en las diferentes capas, usálo y fijate que está fallando.

Saludos !

PD: El ejercicio 11 lo tenés que conectar al router para que te de IP, si lo conectas a la PC no te va a asignar la IP automáticamente.


----------



## panchon (Sep 17, 2012)

Hola,

muchas gracias por la ayuda.
1 - El ejemplo 11 es el ex11.c que esta en PICC\TCP-IP\PIC Examples Source
2 - Tengo conectado el modulo ENC28J60 directamente al pic he quitado la puerta logica.
3 - El ejemplo 11 lo estoy probando conectando el cable UTP directo al router, he probado otro ejemplo con el UTP cruzado y tampoco me funciona
4 - Como puedo chequear el HW(ENC28J60) para comprobar que funciona. 

¿La comunicacion tiene que ser port HW o por SW??

5- Como hago el debug? Yo ahora estoy poniendo printf y los saco a traves del puerto serie. Se queda pillado en la inicializacion de la MAC.


Muchas gracias por intentar ayudarme.



Moyano Jonathan dijo:


> 1 - Cuál es el ejemplo 11...que tipo de verificación hace.
> 2 - Estás seguro de haber conectado bien el módulo. Acordate que se hace de manera directa, sin la necesidad de un adaptador.
> 3 - Necesitas un cable de red cruzado para poder establecer comunicación.
> 4 - El stack TCP-IP de CCS funciona bien, vas a tener que revisar el hardware que estás utilizando y el driver del CCS, donde se define si la comunicación es por software o por hardware.
> ...


----------



## panchon (Sep 20, 2012)

muchas gracias por la ayuda, ya lo conseguí!!!!!!!!!!!!

Al final, volví a rehacer todo el circuito quitando otros que tenia unidos al pic, los cuales forman parte de un proyecto mas grande y conseguí hacer ping y abrir la pagina en el navegador. Mi trabajo me costo. jeje

no he necesitado hacer ninguna modificación en el código del ejemplo "11 Ethernet", lo único que he modificado han sido el PID y el VID, para poner instalar los drivers del USB y modificado los fuses del pic para adaptarlo a un crystal de 20MHz(XTPLL por HSPLL; y PLL1 por PLL5) 

Las conexiones del pic al ENC son directas MOSI(ENC) en SI(PIC) y MISO(ENC) en SO(PIC), por lo menos en este encapsulado(ENC28J60 de Olimex).


----------



## panchon (Sep 20, 2012)

Hola de nuevo

Ahora me ha surgido una duda, la interrupción WOL. He mirado por Internet y no he encontrado mucha información. 
Mi pregunta es la siguiente. Cuando envías un paquete a través de ethernet de wake-on-lan a través del encapsulado, este tendría que activar el WOL, sin necesidad de pasar por el PIC? o primero tendría que recibir el paquete el pic y luego enviarle la señal al ENC por el SPI, para que este active el WOL??

Mi problema es que a veces se me queda trabado el pic, debido a radiación, y quisiera resetearlo, enviando una señal desde el PC de wake-on-lan.

sabe alguien algo de este tema??

muchas gracias y un saludo.


----------



## panchon (Sep 21, 2012)

Hola, ahora tengo otro problema.(Todos son problemas).

He conectado el ENC28J60 a un switch y este a un router y si conecto un PC al switch, desde este se puede hacer ping y acceder a la pagina web a traves del navegador. 
En cambio si conecto el PC al router solo puedo hacer ping, la pagina web no se abre.

He observado que las luces del switch, en la boca que esta conectado el ENC28J60 solo se enciende el led de link, pero no se enciende la de velocidad(10Mb, 100Mb), sin embargo en la boca del PC se encienden las dos.

Sabe alguien cual es el problema si hay que modificar algo de velocidades en el codigo?

Gracias por la ayuda.

Saludos.


----------



## Morganita (Nov 11, 2012)

¿sera que me podrían explicar como hago la conexión con el enc28j60 y el computador?, es decir yo se que este modulo va directo al internet, ¿pero el pic es necesario conectarlo al-computador mediante usb o algo así? por-favor alguien que me explique.


----------



## miguelfgp (Nov 12, 2012)

alguien tiene un ejemplo en proteus o sea simular la conexion ethernet con una compu nomas? intente simular un ejemplo que tiene proteus de ethernet pero no me funciono o el esquematico de como conectar en proteus para simular un codigo con el enc?


----------



## ByAxel (Nov 12, 2012)

miguelfgp dijo:


> alguien tiene un ejemplo en proteus o sea simular la conexion ethernet con una compu nomas? intente simular un ejemplo que tiene proteus de ethernet pero no me funciono o el esquematico de como conectar en proteus para simular un codigo con el enc?



Hola.

Intenta con esto:
Tutorial Proteus para simular enc28j60


----------



## coferni1999 (Ene 7, 2014)

Hola, necesitaria si alguien pueda indicarme algun ejemplo en mikrobasic para utilizar el modulo enc28j60 con un pic 18f2550 o 18f4550.
He tratado de realizarlo utilizando los ejemplos de ayuda del microbasic pero no logro nisiquiera verlo linkiado en el router, y ni que hablar de un ping.
He buscado varios ejemplos pero todos los encontrados estan en c o en asembler.
Mi idea es lograr conectar a al pic atravez del router con un pc y realizar el tipico programa de encender un led o leer la temperatura.
Saludos.


----------



## canaanmax (Jul 19, 2014)

panchon dijo:


> hola,
> 
> ahora mismo tengo un ENC28J60 de olimex y un PIC 18F2550, estoy  intentando hacer ping al pic, pero no soy capaz. Estoy usando un ejemplo  que hay por los foros que se llama "11 Ethernet", que lo he visto  publicado en varios foros.
> Este ejemplo es para le PIC 18F4550 y he hecho unas modificaciones para  el PIC 18F2550.(Modificados los pines del PIC y los FUSES XTPLL por  HSPLL; y el PLL1 por el PLL5(Tengo un cristal de 20MHz))
> ...


Tienes que quitar la función de USB para q*ue* funcione, yo lo tengo funcionando al pelo en el proteus, pero quiero poner un código serio a parte como lo hace el compilador de PIC-C, el cual lo coloca en otra carpeta y llama, pero analizando el código en el Wizard no logro entender como funciona, estoy probando inicialmente con 18f4550.

¿Alguien conoce la función que compila la pagina web q*ue* está en esa carpeta?


----------



## Dr34Dl0rD (Feb 13, 2015)

Buenos días compañeros.
Estoy en medio de un diseño que consiste en un sistema de seguridad donde al detectar una novedad, éste es capaz de mandar una alarma e inmediatamente mandar un mensaje de texto a algún usuario pre-grabado de cualquier proveedor.
El asunto es que soy completamente ignorante de como trabajar con estos equipos, mucho menos para adaptarlos para tal fin.

Tengo para implementar el ENC18j60 que sé que es un microcontrolador para trabajar con ISP.
Tengo en este momento para disponer de un PIC18F4550, un PIC18F2550 y también adquirí un PIC18F8722 para usarlo una vez termine mi prototipo.
Ya estoy por terminar el sistema de detección, pero no he podido hacer lo otro, puesto que soy total ignorante del asunto.

Me gustaría me orientaran por donde empezar y si pueden facilitarme bibliografía o cualquier fuente de información que me ayude a continuar mi proyecto.

Saludos.


----------



## ernestogn (Jul 20, 2015)

Amigos, estoy investigando el asunto de la "Comunicacion TCP/IP con Pic 18f4550 y ENC28J60"
me instale el CCS 5 ,
me baje el "ejemplo 11" web server , que indica ser usado con el 18f4550 .
lo compilo sin errores y obtengo un hermoso Main.hex de 64kb, visto y considerando que el 18f4550 . tiene 32kb de memoria para programa, 
pregunto,
Como es la cosa?
**+************
ya vi como es la cosa ,. pesa 64kb pero tiene 11 mil instrucciones..


----------



## TRILO-BYTE (Jul 20, 2015)

eso me hace decir ay no inventes como se te ocurre decir semejante barbaridad

.HEX no es lo mismo que un .BIN

un .HEX si lo abres con block de notas veras que es texto AA,FE,0A ,etc.

un .BIN es un archivo binario que si lo abres con block de notas veras NADA puros garatos al azar

lo que pasa es que un.HEX esta diseñado para abrirse con un editor y poderse modificar y el binario es el archivo que debe ser


----------



## ernestogn (Jul 21, 2015)

en ningun momento dije nada de ningun .bin y ni lo abri con nada mas que un editor  hexadecimal , fijate , tiene segun el sistema tiene 64kb
D:\Dropbox\Electronica\pia\11 Ethernet\WebServer v1.0>dir *.hex
 El volumen de la unidad D es Acer D
 El número de serie del volumen es: C4FF-22F2

 Directorio de D:\Dropbox\Electronica\pia\11 Ethernet\WebServer v1.0

20/07/2015  10:57 p.m.           * 65.119 Main.hex*
               1 archivos         65.119 bytes
               0 dirs  133.302.673.408 bytes libres

D:\Dropbox\Electronica\pia\11 Ethernet\WebServer v1.0>

pero al ponerlo en el programador del CCS indica 11mil y pico de instrucciones..


----------



## TRILO-BYTE (Jul 21, 2015)

sigues sin entender la diferencia de un binario y un HEX

lo explicare con manzanas

no ocupa el mismo espacio 10 manzanas que la fotografia de 10 manzanas

un *.hex* es un archivo que si lo abres con un editor de *texto* veras letras perfectamente entendibles.

un *.bin* es un archivo que ya trae las instrucciones maquina es decir si tu lo abres no veras mas que puros garabatos obviamente *pesa menos que un .HEX*

cuando compilas un programa el compilador genera un .HEX y cuando el grabador o el programa que graba traduce internamente las letras AA, FE ,1E ,etc. a binario, nunca veras como lo hace pues es interno.

cuando tu quieres grabar un microcontrolador o una memoria EEPROM hay 2 formas de grabarla
1.- teniendo un archivo *binario*
2.- teniendo el archivo *hexadecimal* los hay en formato *S* y formato *intel* el formato *S* es mas largo que el de intel y pesa aun mas que el de intel

espero que esa duda se desaparesca


----------

