Al conectarse a Ethernet a través de ENC28J60, ¿por qué usar ATmega88 en lugar de ATmega8?

Conozco las diferencias generales entre la familia ATmegaX8 (ATmega88, ATmega168 y ATmega328) y la familia ATmegaX (ATmega8, ATmega16 y ATmega32).

Pero estoy confundido, ya que cuando tenía la intención de trabajar en un proyecto para conectar el ATmega8 a Ethernet usando el chip ENC28J60 , descubrí que la mayoría de los proyectos en Internet usan ATmega88 y ATmega168, especialmente los de tuxgraphics.org :

Y cuando traté de portar esos códigos fuente para trabajar con ATmega8 en lugar de ATmega88, enfrenté un problema con el preescalado de la frecuencia muchas veces y algunos otros problemas. No pude alcanzar un código .hex que funciona en ATmega8.

Entonces, ¿por qué ATmega88 y su familia son más adecuados para conectarse a Ethernet que ATmega8?

¿Por qué no lees las hojas de datos y preguntas si algo no está claro?
Esta pregunta es demasiado amplia y no puede responderse razonablemente en su forma actual. RTFM, luego regrese con preguntas específicas sobre lo que no entendió. No estamos aquí como un sustituto para obtener información de fuentes obvias como hojas de datos. Estamos aquí para ayudarlo a interpretar esas fuentes si encuentra cosas que no entiende.
@LeonHeller Supongo que está preguntando por la diferencia general entre las familias mega8 y mega 88
¡Está en las hojas de datos! La pregunta debe estar cerrada.
@mina_g Solo me tomó 30 segundos encontrar la siguiente información en Google, así que intente más antes de publicar una pregunta aquí
@m.Alin: No tiene que hacerlo, ahora que has demostrado que la pereza vale la pena. El punto era enviar a este tipo a casa sin una galleta. Desafortunadamente, solo se necesita un miembro que no lo reciba antes de que se cierre la pregunta. Suspiro.
@OlinLathrop Lo siento, pero quería mostrarle al OP que la información realmente existe.
@m.Alin gracias... Encontré esto, pero me preguntaba por qué se usan este ATMega88 y ATMega168 en los proyectos de ethernet que usan enc28j60... mientras que los disponibles para mí en mi país son atmega8 y atmega16 y atmega32... por eso queria saber la diferencia, ya que por busqueda no encontre mas informacion util.. gracias por su preocupacion
@mina_g Debería editar su pregunta, para que quede más claro lo que realmente quiere averiguar.
@m.Alin gracias, ahora he editado mi pregunta, espero que ahora sea más específica... perdón por la confusión en la última pregunta

Respuestas (2)

Entonces, ¿por qué ATMega88 y su familia son más adecuados para este proyecto "Ethernet AVR"?

La familia ATMega88 se adapta bien a este proyecto porque el autor ha proporcionado una implementación ya probada y depurada.

No hay nada intrínsecamente diferente en ATMega8 que afecte a este proyecto.

Enfrenté un problema con el preescalado de la frecuencia muchas veces y algunos otros problemas. No pude alcanzar un código .hex de este proyecto que funciona en ATMega8.

El problema al que se enfrenta es el de migrar el software integrado a un nuevo dispositivo. Su problema es que ha subestimado la tarea y espera que funcione sin cambios.

Debe rastrear exactamente dónde está fallando su código, resolver ese problema y luego pasar al siguiente problema. Una pila TCP/IP en un microcontrolador no es algo sencillo.

Si estuviera emprendiendo este proyecto, lo desglosaría así:

  • Escribir un programa para hacer parpadear un LED
  • Extiéndalo para enviar y recibir bytes en el UART (esto será invaluable para la depuración)
  • Extiéndalo para usar la interfaz SPI, verificando las formas de onda con un analizador de osciloscopio/lógico
  • Conecte el ENC28J60 a la interfaz SPI, sin olvidar la selección de chip (dejaría la línea de interrupción desconectada por ahora)
  • Amplíe el software para leer desde el registro de id/versión del chip y verifique el resultado
  • Extienda el software para escribir en un registro y volver a leerlo
  • Conecte un cable ethernet, verifique que el estado del enlace ethernet esté cambiando en los registros ENC28J60s
  • Conecte la línea de interrupción ENC28J60 a una entrada en mi microcontrolador y pruebe (habilitar interrupciones en los cambios de estado del enlace parecería una buena prueba)

Ahora, estoy seguro de que mi hardware funciona.

  • Incorpore las funciones del controlador ethernet (accesos a registros de 16 bits, acceso fifo, etc.) a mi proyecto y verifíquelas accediendo a los registros
  • Configure el ENC28J60 para el modo promiscuo y descargue los paquetes entrantes al UART, verifique comparándolo con Wireshark/tcpdump
  • Mire cómo manejó el tiempo el autor original, en particular, con qué frecuencia sondean la pila de IP y el controlador de Ethernet. Implementar un bucle principal para dar servicio a estas rutinas
  • Tire del resto de la pila de IP sobre mi capa de controlador
  • Configurar la pila de IP para mi red (comenzando con una IP estática)
  • haz ping
  • Extraiga el resto del código de la aplicación (servidor web/etc.) en mi proyecto.
Muchas gracias por tu esfuerzo. ¿Puede recomendarme un simulador para tratar? Estoy usando Proteus (ISIS), pero a veces tengo problemas con la depuración, a pesar de compilar el código para el modo de depuración.
No, nunca he usado esas herramientas.

Escribí un tutorial sobre cómo usar el Atmega8 con el enc28J60. Código y detalles disponibles en mi blog, aquí: http://www.pocketmagic.net/?p=2866