por fin he consegudo solucionar el problema que tenia con lo de no poder enviar trans de mas de 520 bytes.se donde esta el fallo
pero no entiendo el porque de este.
como ya sabemos.el buffer ethernet tiene 8192 bytes.y podemos dividirlo en dos partes.una para recepcion y otra para transmision.
para configurar esto hay que introducir el valor de las direcciones en unos registros.
en mi caso configure el buffer de recepcion entre las direcciones 0 y 6499d
y el buffer de transmision entre 6500d y 8191d.
se supone que esto se puede hacer. ¡pues parece que no se puede hacer!.almenos por la experiencia que estoy teniendo en el simulador.
el registro ETXND. es un registro que tenemos que programar con la direccion del ultimo byte del packet que se va a transmitir.
pues aunque programe este registro con cualquier valor que queramos.parece ser que al realizar la transmision,el valor siempre cambia a 1B6Ch.
no se porque pasa esto.pero esta relacionado con el fallo que me ha estado sucediendo.
despues de muchas pruevas de configuracion de los registros de inicializacion del enc28j60.empeze a provar con el cambio de las zonas de
los buffer de recepcion y de transmision.
y he llegado a comprovar que hay una direccion donde apartir de la cual el enc28j60 no transmite la trama.por eso he dispuesto la zona de transmision
un byte antes del fallo.
esta es la configuracion de los registros:
ERXST=0000h ETXST=1582h
ERXND=1581h ETXNDL= no definido.ya que este valor depende del ultimo byte del packet a enviar.en mi caso es el valor 1990h
ya que el packet que estoy enviando es de 1037 bytes.la direccion 1582h contendra el byte de control 00h.+1037=1990h
antes dige que aunque programara ETXST con el valor 1990h.esto no me servia de mucho.ya que al darle a transmitir esta valor cambiaba automaticamente
al valor 1B6Ch.
pues haciendo unas sumas.no si sera coincidencia.pero todo va encajando.
en la inicializacion del enc28j60.se configuro este para enviar tramas ethernet de un maximo de 1500 bytes.que es la cantidad maxima de bytes
que permite el protocomo IP.
asi que 1B6Ch-1582h=1514d -7 Bytes del vector de estado.y algun Byte que que se me scapa a la compresion.se acerca bastante a los bytes maximos
de un packet.
aunque creo que los 1500 bytes eran el tamaño maximo de DATA.
por el momento ya puedo transmitir y recivir datos comodamente.aunque estoy seguro de algo mas se tiene que complicar.
me queda mucho por estudiar todo el funcionamiento de este controlador ethernet.pero de momento iremos pasito a pasito.
adjunto los ultimos avances.de momento desordenado.funcionando solo la transmision.
esta preparado para enviar una trama de 1037 bytes.atrabes de la red.con protocolo udp y IP terminada en 111.para que podais identificarla.
aunque es posible que en el wireshark la identifiqueis como error.por no coincidir algun puerto.