Cuando se conecta a Ethernet a través de ENC28J60, ¿por qué usar ATmega88 en lugar de ATmega8?

2

Sé 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 ENC28J60 , descubrí que la mayoría de los proyectos en Internet utilizan ATmega88 y ATmega168, especialmente los de tuxgraphics.org :

Y cuando intenté portar esos códigos fuente para trabajar con ATmega8 en lugar de ATmega88, enfrenté un problema con el ajuste de la frecuencia muchas veces y otros problemas. No pude llegar a un código .hex que funcione en ATmega8.

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

    
pregunta mina_g

2 respuestas

12
  

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

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 acerca de ATMega8 que afecte este proyecto.

  

Me enfrenté a 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   trabaja en ATMega8

El problema al que te enfrentas es el de trasladar 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 una cosa simple.

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

  • Escriba un programa para hacer parpadear un LED
  • Extiéndalo para enviar y recibir bytes en la UART (esto será invaluable para la depuración)
  • Extiéndalo para usar la interfaz SPI, verificando las formas de onda con un analizador de alcance / lógica
  • 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)
  • Extienda el software para leer el registro de id / versión de 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 parece una buena prueba)

Ahora, estoy seguro de que mi hardware funciona.

  • Traiga las funciones del controlador de Ethernet (accesos a registros de 16 bits, acceso de fifo, etc.) a mi proyecto y verifíquelos mediante el acceso a los registros
  • Configure el ENC28J60 para el modo promiscuo y descargue los paquetes entrantes al UART, verifique comparando con Wireshark / tcpdump
  • Observe cómo gestionó el tiempo el autor original, en particular la frecuencia con la que 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 en la parte superior de la capa de mi controlador
  • Configurar la pila de IP para mi red (comenzando con una IP estática)
  • Ping it
  • Introduzca el resto del código de la aplicación (servidor web / etc.) en mi proyecto.
respondido por el Toby Jaffey
6

Escribí un tutorial sobre cómo usar el Atmega8 con el enc28J60. Código y detalles disponibles en mi blog, aquí: enlace

    
respondido por el Radu

Lea otras preguntas en las etiquetas