Mit dem ATmega im Heimnetzwerk.

Im Herbst 2006 las ich im Internet das erste Mal etwas über das "Easy TCP/IP" - Projekt der Firma MCS Electronics aus den Niederlanden. MCS war mir bereits ein Begriff, da ich berufsmässig mit den AVR 8 Bit RISC-Controllern von Atmel zu tun hatte und MCS hatte für diese Controllerfamilie den BASCOM-Compiler entwickelt.

Damit konnte man diese sehr leistungsfähigen Prozessoren in BASIC programmieren und war durch die anschliessende Kompilierung des BASIC-Codes in Maschinensprache im Prinzip fast genauso schnell wie bei einer Programmierung in Assembler.

Das "Easy TCP/IP" - Projekt hatte zum Ziel den Entwicklern von sogenannten 'embedded systems' eine einfache Möglichkeit für die Anbindung von kleineren Controllern mit begrenzten Ressourcen an ein Heimnetzwerk zu ermöglichen. Sinngemäss wurde in der Einleitung des Handbuches von Backöfen, welche sich neue Rezepte aus dem Internet besorgen oder Videorekordern, welche per Webinterface über das Internet programmiert werden können, gesprochen.

Der grosse Vorteil von Mikrocontrollern gegenüber PC's liegt bei solchen Anwendungen vor allem in einem sehr geringen Leistungsbedarf im 24h-Dauerbetrieb - andererseits ist es sehr schwierig einen Controller mit 64 oder 128 kB Programmspeicher mit der nötigen Gerätefunktionalität und der umfangreichen und komplizierten Software für einen vollwertigen TCP/IP-Anschluss an Heimnetzwerke auszustatten.

Was war also die Lösung dieses Widerspruches - ein Internet-Chip von der Firma "WIZnet", welcher im Projekt "EasyTCP" in Form des W3100A zum Einsatz kam. Das war die erste Generation, welche aber bereits alle Probleme anderer Netzwerkanbindungen, wie hohen Programmieraufwand und/oder Speicherbedarf für den Programmcode löste und den Anschluss an das Netzwerk zu einer einfachen Aufgabe machte.

Für die kleinen Controller und damit auch für den KC85 war die Leistungsfähigkeit des W3100A vollkommen ausreichend, schliesslich hatte ich nicht die Absicht, einen 24h-Webserver o.ä. auf dem KC laufen zu lassen. Man kann mit ihm 4 Verbindungen gleichzeitig ins Netzwerk aufbauen und er verfügt über jeweils einen konfigurierbaren Sende- und Empfangspuffer von 8kByte. An Protokollen unterstützt der W3100A TCP, UDP, IP, ARP, ICMP, MAC und kann über das eingebaute Intel/Motorola MCU Bus Interface an fast jeden 8 Bit Mikrocontroller gekoppelt werden. Ethernetseitig werden an den Chip die gleichen Ethernet-Controller wie auf PC-Netzwerkkarten angeschlossen.

Darum musste man sich glücklicherweise beim EasyTCP-Projekt überhaupt nicht mehr kümmern, da WIZnet genau für diese Zwecke fertige Module anbot, wo Internet-Chip und Netzwerkcontroller fix und fertig bestückt und geprüft mit zwei 24-poligen Stiftleisten beispielsweise auf einer Entwicklungsplatine aufgesteckt werden konnten, dieses Modul mit dem W3100A und RTL8201 nannte sich dann IIM7000A und sah so aus:

 

IIM7000A - Modul


Das EasyTCP-Projekt umfasste dann genau so eine Experimentierplatine für einen Atmel-AVR oder 8051/52 Mikrocontroller, wo das IIM7000A aufgesteckt wurde. Den Netzwerkübertrager, das IIM7000A-Modul und die notwendigen Bauteile für den Aufbau der Schaltung musste man extra kaufen, ohne Versandkosten hat mich das ca. 70€ gekostet, lag also noch unter meiner Schmerzgrenze von 100€ für Männerspielzeug:

 

EasyTCP



Was gab aber nun den entscheidenden Anstoss dafür, so ein Projekt überhaupt anzufangen? Der interessanteste Punkt am EasyTCP war die fertige BASCOM-Bibliothek mit dem WIZnet-Treiber in AVR-Assembler. Die war beim Projekt inklusive, allerdings erhielt man sie erst nach dem Kauf der Experimentierplatine. Auf diese Art und Weise konnte ich mir zumindest anschauen, wie der W3100A programmiert werden kann und musste mir nicht alles mühsam aus dem Datenblatt herausziehen und selbst ausprobieren.

Also wurden kurzentschlossen alle Zutaten für das "EASY TCP/IP" bestellt und zunächst diese Variante mit der Programmierung der Controllersoftware in BASCOM-BASIC mit dem Modul IIM7000A aufgebaut und in Betrieb genommen.

Das Ergebnis war sehr erfreulich, der WIZnet-Chip funktionierte auf Anhieb und die mitgelieferten BASCOM - Beispiele (UDP, TCP, DHCP, HTTP) haben auch alle, teilweise nach der Beseitigung von Mängeln in den BASCOM-Quellen, funktioniert.

Der gewählte Controller ATmega 162 wurde über die serielle Schnittstelle an den PC angeschlossen und die EasyTCP-Platine per Patchkabel an die Netzwerkkarte des PC. Nun konnte man mit Hilfe eines Terminalprogrammes, welches der Software im AVR-Controller Befehle übermittelt, die Netzwerkfunktionen des gerade geladenen Programmes ausprobieren. Im UDP-Programm konnte man beispielsweise  Textnachrichten vom Terminalprogramm über den W3100A per Netzwerkverbindung an den PC schicken, welche dort in einem anderen Programm, welches diese Texte über die Netzwerkkarte entgegennahm, anzeigen lassen.

Damit war alles klar und ich konnte mich nach diesen Tests ernsthaft mit der BASCOM-Bibliothek beschäftigen, um hinter die genauen Details der Programmierung des Internet-Chips durch den ATmega in Assembler zu kommen.

Das anvisierte Ziel war natürlich, auf diesem Wege dem KC85 den Zugang zum Ethernet zu ebnen. In der heutigen Zeit werden DSL-Flatrates und passende Hardware in Form von früher sehr teuren Hardwareroutern fast verschenkt. Der Router stellt alle Funktionen für den Aufbau eines kleinen Heimnetzwerkes zum Nulltarif zur Verfügung.

Damit war das ein sehr zeitgemässes Projekt für den KC85 und würde dem System ungeahnte Möglichkeiten eröffnen. Ein standardisierter Ethernetanschluss mit integrierter TCP/IP Schnittstelle hebt die Kommunikations- und Datenübertragungsmöglichkeiten von 8 Bit Computern auf das Niveau der heutigen PC-Technik und ermöglicht den unkomplizierten Zugang auch zu anderen Betriebssystemen als beispielsweise Windows, da die Protokolle der Applikationen seit langer Zeit genormt und damit sehr ausgereift sind.