Warum sollten Sie bei einer Ethernet-Verbindung über ENC28J60 ATmega88 anstelle von ATmega8 verwenden?

Ich kenne die allgemeinen Unterschiede zwischen der ATmegaX8-Familie (ATmega88, ATmega168 und ATmega328) und der ATmegaX-Familie (ATmega8, ATmega16 und ATmega32).

Aber ich bin verwirrt, denn als ich an einem Projekt arbeiten wollte, um den ATmega8 mit dem ENC28J60- Chip mit Ethernet zu verbinden, stellte ich fest, dass die meisten Projekte im Internet ATmega88 und ATmega168 verwenden, insbesondere die von tuxgraphics.org :

Und als ich versuchte, diese Quellcodes zu portieren, damit sie mit ATmega8 anstelle von ATmega88 funktionieren, hatte ich ein Problem mit der häufigen Vorskalierung der Frequenz und einigen anderen Problemen. Ich konnte keinen .hex-Code erreichen, der auf ATmega8 funktioniert.

Warum also sind der ATmega88 und seine Familie besser geeignet für die Verbindung mit Ethernet als der ATmega8?

Warum liest du nicht die Datenblätter und fragst, wenn etwas nicht klar ist?
Diese Frage ist zu weit gefasst und kann in der jetzigen Form nicht vernünftig beantwortet werden. RTFM, dann kommen Sie mit konkreten Fragen zu dem zurück, was Sie nicht verstanden haben. Wir sind hier nicht als Ersatz für die Beschaffung von Informationen aus offensichtlichen Quellen wie Datenblättern. Wir sind hier, um Ihnen bei der Interpretation dieser Quellen zu helfen, wenn Sie Dinge finden, die Sie nicht verstehen.
@LeonHeller Ich denke, er fragt nach dem allgemeinen Unterschied zwischen Mega8- und Mega88-Familien
Das steht in den Datenblättern! Die Frage sollte geschlossen werden.
@mina_g Ich habe nur 30 Sekunden gebraucht, um die folgenden Informationen bei Google zu finden, also geben Sie sich mehr Mühe, bevor Sie hier eine Frage stellen
@m.Alin: Das muss er nicht, jetzt wo du gezeigt hast, dass sich Faulheit auszahlt. Es ging darum, diesen Typen ohne Keks nach Hause zu schicken. Leider muss nur ein Mitglied vorbeikommen, das es nicht bekommt, bevor die Frage geschlossen wird. Seufzen.
@OlinLathrop Tut mir leid, aber ich wollte dem OP zeigen, dass die Informationen wirklich da draußen existieren.
@m.Alin danke. Ich habe das gefunden, aber ich habe mich gefragt, warum dieser ATMega88 und ATMega168 in den Ethernet-Projekten mit enc28j60 verwendet werden. Deshalb wollte ich den Unterschied wissen, da ich bei der Suche keine hilfreicheren Informationen gefunden habe. Vielen Dank für Ihre Besorgnis
@mina_g Sie sollten Ihre Frage bearbeiten, damit klarer wird, was Sie wirklich herausfinden möchten
@m.Alin danke, ich habe jetzt meine Frage bearbeitet, ich hoffe, sie ist jetzt spezifischer. Entschuldigung für die Verwirrung in der letzten Frage

Antworten (2)

Also, warum sind ATMega88 und seine Familie besser geeignet für dieses Projekt "AVR-Ethernet"?!

Die ATMega88-Familie ist für dieses Projekt gut geeignet, da der Autor eine bereits getestete und debuggte Implementierung bereitgestellt hat.

Der ATMega8 unterscheidet sich nicht grundsätzlich von diesem Projekt.

Ich hatte viele Male ein Problem mit der Vorskalierung der Frequenz und einige andere Probleme. Ich konnte keinen .hex-Code aus diesem Projekt erreichen, der auf ATMega8 funktioniert

Das Problem, mit dem Sie konfrontiert sind, besteht darin, eingebettete Software auf ein neues Gerät zu portieren. Ihr Problem ist, dass Sie die Aufgabe unterschätzt haben und erwarten, dass sie ohne Änderungen funktioniert.

Sie müssen genau herausfinden, wo Ihr Code fehlschlägt, dieses Problem lösen und dann zum nächsten Problem übergehen. Ein TCP/IP-Stack auf einem Mikrocontroller ist keine einfache Sache.

Wenn ich dieses Projekt durchführen würde, würde ich es wie folgt aufschlüsseln:

  • Schreiben Sie ein Programm zum Blinken einer LED
  • Erweitern Sie es, um Bytes auf dem UART zu senden und zu empfangen (dies ist für das Debugging von unschätzbarem Wert).
  • Erweitern Sie es, um die SPI-Schnittstelle zu verwenden, und verifizieren Sie die Wellenformen mit einem Oszilloskop/Logikanalysator
  • Verdrahten Sie den ENC28J60 mit der SPI-Schnittstelle, ohne die Chipauswahl zu vergessen (ich würde die Interrupt-Leitung vorerst unverbunden lassen)
  • Erweitern Sie die Software, um aus dem Chip-ID/Versionsregister zu lesen und das Ergebnis zu überprüfen
  • Erweitern Sie die Software, um in ein Register zu schreiben und es zurückzulesen
  • Schließen Sie ein Ethernet-Kabel an und überprüfen Sie, ob sich der Status der Ethernet-Verbindung in den ENC28J60s-Registern ändert
  • Verdrahten Sie die Interrupt-Leitung ENC28J60 mit einem Eingang an meinem Mikrocontroller und testen Sie (das Aktivieren von Interrupts bei Änderungen des Verbindungsstatus scheint ein guter Test zu sein).

Jetzt bin ich zuversichtlich, dass meine Hardware funktioniert.

  • Bringen Sie die Ethernet-Treiberfunktionen (Zugriffe auf 16-Bit-Register, Fifo-Zugriff usw.) in mein Projekt und überprüfen Sie sie, indem Sie auf Register zugreifen
  • Konfigurieren Sie den ENC28J60 für den Promiscuous-Modus und geben Sie eingehende Pakete an den UART aus, überprüfen Sie dies durch Vergleich mit Wireshark/tcpdump
  • Schauen Sie sich an, wie der ursprüngliche Autor mit der Zeit umgegangen ist, insbesondere wie regelmäßig er den IP-Stack und den Ethernet-Treiber abfragt. Implementieren Sie eine Hauptschleife, um diese Routinen zu bedienen
  • Ziehen Sie den Rest des IP-Stacks auf meine Treiberebene
  • Konfigurieren Sie den IP-Stack für mein Netzwerk (beginnend mit einer statischen IP)
  • Pingen Sie es
  • Ziehen Sie den Rest des Anwendungscodes (Webserver/etc.) in mein Projekt.
Vielen Dank für deine Mühe. können Sie mir einen Simulator empfehlen, mit dem ich umgehen kann, ich benutze Proteus (ISIS), aber manchmal habe ich Probleme mit dem Debuggen, obwohl ich den Code für den Debug-Modus kompiliert habe.
Nein, ich habe diese Tools nie benutzt

Ich habe ein Tutorial geschrieben, wie man den Atmega8 mit dem enc28J60 verwendet. Code und Details sind in meinem Blog verfügbar, hier: http://www.pocketmagic.net/?p=2866