Hallo Technik Freunde. Seit kurzem lasse ich mein Hobby - Elektronik und insbesondere Embedded Control wieder aufleben. Ein wenig Erfahrung habe ich mit den PIC's und C-Control I + II. Desweiteren noch aus "frühen Tagen" in Assembler Programmierung auf dem guten alten Amiga. Vor wenigen Wochen habe ich bei Pollin das Evulation / Addon, sowie das AVR Net-IO Board gekauft. (- Warum meckern eigentlich alle über Pollin ? Auspacken - zusammenbraten - läuft! -) Programmieren ist ja leicht (dachte ich) und musste mit erschrecken feststellen das es schlicht ZU VIELE Informationen im Internet gibt. Und die "umkehrung" Mathematischer Grundlagen seitens Atmel ist nun wirklich gewöhnungsbedürftig - mov r1,r2 ist meiner Denkweise nach r2 das Zielregister. Aber in England fährt mann ja auch auf der falschen Strasseneite - nichts für ungut. ;-) Aber zum Problem selbst: Eigentlich wollte ich relativ simple Dinge mit dem Controler machen - Netzwerküberwachungen und daraus resultierende Schaltvorgänge. (230V~) Also Ausgegoogled und nur C - Codes und viel zu grosse TCP Stacks gefunden. C ist nun gar nicht mein Ding und nur um einen Source Code zu verstehen wollte ich nicht unbedingt noch ne Programmiersprache dazulernen. Könnte mann in diesem Forum nicht einen Workshop für TCP Anwendungen mit den ATMegas einrichten - für Anfänger - ? Viele Modellbauer haben nämlich genau das gleiche Problem wie ich - Super Hardware zum vernünftigen Preis aber keiner weiss wie sie zu verwenden ist. (Modell Eisenbahn ganz vorran) Die geposteten Threds sind einfach viel zu komplex und für Anfänger "Böhmische Dörfer" - "Der Laie muss nicht wissen wie es funktioniert - ihm reicht es zu wissen dass es funktioniert" Für Buch Tipps währe ich auch dankbar. Vielen Dank im Vorraus.
Hallo, suchst du jetzt eigentlich einen TCP-Stack der in AVRASM geschrieben ist und klein ist oder eine gute Dokumantation wie man einen implemenieren könnte? Ich denke mal das es um einiges schwerer ist einen TCP-Stack in ASM zu bauen als in einer Hochsprache, nicht umsonst sind die meisten für den AVR in C geschreiben, weil die in einer maschinennahen Sprache doch recht schwer und unübersichtlich umzusetzen sind. CA Dirk
Hallo Dirk Es währe schon schön wenn sich bereits jemand die mühe gemacht hätte das Ding in Assembler zu schreiben - nach mehrstündiger Suche habe ich da aber wenig Hoffnung! Dachte hier jemanden zu finden der mehr Erfolg bei der Suche hatte. Also werde ich wohl nicht umhin kommen selber einen zu programmieren. Dazu fehlt mir aber eine Deutschsprachige Dokumentation des Protokolls. (nicht oder kaum zu finden) Und Bücher darüber sind so sau teuer dass meine Frau mir den Kopf abbeissen würde wenn ich eines bestellen würde. Das das ganze in Assembler sehr aufwendig ist weiss ich aus leidvoller Erfahrung. - Habe soetwas ähnliches schon mal auf dem Amiga umgesetzt (Netzwerk) cu Ingo
Hallo, schau mal unter http://wiki.neo-guerillaz.de/mediawiki/index.php/Microwebserver in den Abschnitt Software. Dort hatte ich mal einige Sachen zusammengetragen zu diesen Thema. Vielleicht bringt das einige Ansatzpunkte zu programmieren. Was ich auch sehr empfehlen kann ist Wikipedia, und als unterstützung natürlich Wireshark (Netzwerksniffer). Mit genau diesen Mitteln als Grundlage habe ich auch angefangen. Wenn duch noch Sachen wissen willst kann ich dich gerne unterstützen. CA Dirk
Hallo Also das waren sehr gute Tipps! Das TCP Protokoll ist zumindest schon mal so aufgebaut wie ich es mir in etwa dachte. Dein Link war da sehr hilfreich. Was den Wireshark betrifft wird mir jedoch etwas schwindelig - alleine mein Printserver verursacht im Netzwerk ja einen Datenmüll, der den doch recht "behäbigen" ATMega, arg ins schwitzen bringen wird. Von den drei Festplatten, Laserdrucker, den Rechnern und der Fritz Box mal gar nicht zu reden. Zumal der in meinem Vorhaben ja den ganzen Datenstrom überwachen muss und sich nicht als Eigenständige Netzwerkkomponente einklinken sollte. Wollte Waitstates im Netzwerk möglichst verhindern. Da muss ich wohl mal über andere Möglichkeiten nachdenken. 2 AtMega oder so - einen zum überwachen und einen via irq zur Ereignissbehandlung. Wird doch Komplexer als ich dachte. Werde mich aber erstmal um den "Mini TCP Stack" in AVRASM kümmern - der Rest hat ja noch zeit. Vielen Dank! cu Ingo
Hallo, der ATmega muss nicht den ganzen Netzwerkverkehr auswerten oder überwachen, der ENC28j60 der z.B. auf dem Pollin-board verbaut ist, filtert Broadcast- und Netzwerk-packete die an Ihn gerichtet sind schon raus, sprich er hat eigentlich nicht so viel zu tun, sonst würden ja die ganzen anderen Stacks nicht laufen :-). Es sei denn das du wirklich den ganzen Netzwerkverkehr überwachen willst. Du kannst ja mal in etwas genau beschreiben was du eigentlich machen willst. CA Dirk.
Hallo Ingo, So wie ich Dich verstanden habe willst Du also den Netzwerkverkehr passiv mitschneiden, analysieren und bei einer passenden Bedingung wie z.B. "Host X baut zu Host Y eine Verbindung auf" eine Aktion auslösen. Mit einem gewöhnlichen Stack kannst Du da nichts anfangen, denn die sind dazu gedacht, selbst Verbindungen aufzubauen oder eingehende Verbindungen anzunehmen. Diese Stacks verwerfen Packete, die nicht an sie selbst adressiert sind, bzw. erledigt dies meist schon der Interface-Controller (wie der ENC28J60). Ich denke, ob Dein Vorhaben realisierbar ist oder nicht hängt von der Komplexität Deiner Triggerbedingungen ab, die Du auf dem Netzverkehr analysierst. Etwas einfaches wie oben sollte da schon möglich sein. Doch sobald es komplexer wird und Verbindungen verfolgt oder der Inhalt der Pakete untersucht werden soll reicht ein AVR nicht mehr aus, schon allein aufgrund von Einschränkungen beim Pufferspeicher. Wenn es konzeptionell irgendwie geht, solltest Du dem AVR aktiv über TCP-Verbindungen mitteilen, was er wie zu schalten hat. Das wäre absolut problemlos. Auch solltest Du Dir überlegen, ob es nicht ein einfacheres Protokoll wie UDP auch tut, zumal Du wohl in Assembler programmieren willst. Für mich wäre das bei Dingen wie Netzwerk-Protokollen ein ziemlicher Alptraum... Für Bücher würde ich in diesem Zusammenhang eher kein Geld ausgeben, da alles was Du brauchst in offenen Standards dokumentiert ist. Das wären insbesondere - RFC826 (ARP) - RFC791 (IP) - RFC761 (TCP) - RFC768 (UDP) Wenn Du mit dem Englischen Probleme hast kannst Du entweder, wie Dirk schon angemerkt hast, auf Wikipedia gucken (eher für den groben Überblick), oder auch in den Folien von Uni-Vorlesungen, wie z.B. von der TU München hier: http://www.net.in.tum.de/en/teaching/ws0809/lectures/masterkurs-rechnernetze/ Gruß, Roland
Hallo Dirk, Hallo Roland Also das "Ding" soll soetwas wie die eierlegende Wollmilchsau werden. Als z.B.: Intelligente Steckdosenleiste (IP der Festplatte oder Drucker wird angefragt = Gerät an und Gegenstelle vertrösten bis bereit). Aktives low Level IP Filter (habe 5 Kinder). Home Automation - Fritz Media einschalten = Fernseher, Computer und Festplatte an - Licht aus. Und das ganze am besten noch über Funk. ;-) So soll der Endzustand mal aussehen. (einige Jahre Später?!?) Mal sehen in wie weit das umzusetzen ist. Alleine das Programm sollte wohl so gross werden das ich über kurz oder lang über eine Bootloader SD-Karten Kombination nicht herrum kommen werde. Aber ein Schritt nach dem anderen. (bis dahin ist wahrscheinlich schon nen ATMega 2048 auf dem Markt ;-) ) Deshalb aber auch AVRASM. Um erstmal möglichst viel "unterzukriegen" und meine besagte Abneigung gegen C. @ Roland: Auf die Idee mit den Unis's bin ich noch nicht gekommen. Werde heute abend mal etwas stöbern und mir glaube ich nochmal das Datenblatt des ENC28J60 genauer zu gemüte führen. Vielen Dank euch beiden für die Tipps. Cu Ingo
Ingo Negenborn wrote: > Also das "Ding" soll soetwas wie die eierlegende Wollmilchsau werden. Sowas ist immer praktisch, allerdings möchte ich, bevor Du Dich ins Getümmel stürzt, zwei Dinge zu bedenken geben: 1) Der ENC28J60 ist ein toller Baustein, macht aber nur 10MBit/s. Falls Dein Heimnetzwerk mit 100MBit/s oder gar schon mit 1GBit/s läuft, kannst Du die Idee gleich wieder einstampfen - entweder kriegt der ENC28J60 nur ein Bruchteil des Netzwerkverkehrs mit, oder er bremst die restlichen Netzteilnehmer so stark, dass Du beim Drucken, Kopieren, etc. übers Netz Weinkrämpfe kriegst. 2) Damit der ENC28J60 überhaupt allen Netzwerkverkehr mitbekommen kann, müssen entweder alle Netzteilnehmer über einen Hub angeschlossen sein (die ich schon lange nicht mehr gesehen habe und die man auch kaum noch kaufen kann), oder über einen Switch mit entsprechendem Monitor Port. Die Teile sind aber teuer... Gruss Andreas
>Alleine das Programm sollte wohl so gross werden das ich über kurz oder >lang über eine Bootloader SD-Karten Kombination nicht herrum kommen >werde. SD-Karten können nicht als Programmspeichererweiterung für ATMega benutzt werden. Wenn dein Programm zu groß für den ATMega ist, dann ist es zu groß. Basta. Stückchenweise nachladen kann man da nichts. Dafür müsstest du einen uC nehmen der auch Code aus externem RAM ausführen kann. Z.B. einen ARM?
Ich sollte wohl die Klappe halten aber irgendwie klingt die geplante Ausführung des Projekts wie bei einem Fahrradmechaniker der mit dem Werkzeug aus nem Satteltäschchen und einem alten Dynamo den Anlasser eines LKW ersetzen will. Controller 10 Nummern zu klein, falsche Sprache, …
Hallo Ingo, > Also das "Ding" soll soetwas wie die eierlegende Wollmilchsau werden. Meiner Erfahrung nach sind solche Ansätze meist zum Scheitern verurteilt... > Als z.B.: Intelligente Steckdosenleiste (IP der Festplatte oder Drucker > wird angefragt = Gerät an und Gegenstelle vertrösten bis bereit). Halte ich für schwer machbar. Im lokalen Netz musst Du da auf ARP-Anfragen und/oder TCP-SYN-Pakete lauschen. Doch wie willst Du dem Gegenüber sagen, dass er noch zu warten hat? Du kannst höchstens hoffen, dass der Client seine Anfrage später nochmals wiederholt wenn das Zielgerät bereit ist (TCP Retransmission Timeout). > Aktives low Level IP Filter (habe 5 Kinder). Wie willst Du mit einem einzelnen Interface filtern? Du kannst höchstens versuchen, eine bestehende TCP-Verbindung mit einem gefälschten RST-Paket abzubrechen. > Home Automation - Fritz Media einschalten = Fernseher, Computer und > Festplatte an - Licht aus. Ok. Das klingt als wäre es gut realisierbar. > Alleine das Programm sollte wohl so gross werden das ich über kurz oder > lang über eine Bootloader SD-Karten Kombination nicht herrum kommen > werde. Wie holger schon angemerkt hat, brauchst Du dafür einen Controller mit von-Neumann-Architektur, der Code auch aus dem RAM ausführen kann (ARM, MSP430, ...). > Deshalb aber auch AVRASM. Um erstmal möglichst viel "unterzukriegen" und > meine besagte Abneigung gegen C. Ich denke Deine "Abneigung" ist hier eher in mangelnden C-Kenntnissen oder auch in Vorurteilen begründet. Aber das ist Deine Entscheidung. Viele Grüße, Roland
Ganz ehrlich: Ich finde es schade, dass so viele Leute denken, dass es relativ einfach machbar ist "mal eben" ein paar über TCP schaltbare Ausgänge zu basteln. Meiner Meinung nach ist der Aufwand für so etwas immens. Und oft verzweifelt man auch an einer bestimmten Sache. Vielleicht sehe ich das ganze ja auch nur viel zu eng (was ich allerdings nicht glaube) und ich mache mir alles nur viel zu schwer ;) Bevor du hier Unterstützung in irgendeiner Form suchst, würde ich mal versuchen alle nötigen Informationen zu dem gesamten Projekt zusammenzusuchen. Da hast du schon genug zu tun. Einen eigenen Stack zu schreiben würde ich in Assembler ganz sein lassen. Da kommst du auf keinen grünen Zweig. Der Knackpunkt ist meiner Meinung nach, dass nicht unbedingt TCP/IP, ARP oder die ganzen anderen Protokolle unbedingt sooo schwer zu verstehen sind, sondern, dass du diese ziemlich fetten Protokolle (besonders TCP) auf kleine Prozessoren implementieren musst. Das ist noch mal ne ganz andere Liga.
Hm, wenn Du wirklich das alles irgendwann gerne realisieren willst, dann wird das mit nem ATMEGA wirklich eng (meiner Meinung nach nicht möglich). Gerade wenn Du ein "Aktives low Level IP Filter" realisieren willst kannst Du Dir vielleicht das NGW100 [1] anschauen, wenn Du das als Gateway zwischen den Internetanschluss und einem HUB bzw. ein Switch mit Monitoring (wurde ja beides schon erwähnt) hängst, dann wird es vielleicht möglich sein wirklich alles zu realisieren. Wenn Du das alles dann (alleine) per ASM programmieren willst, dann bin ich mal gespannt wann Du fertig bist. [1] http://www.avrfreaks.net/wiki/index.php/Documentation:NGW/NGW100_Hardware_reference
Ingo Negenborn wrote: > Erfahrung. - Habe soetwas ähnliches schon mal auf dem Amiga umgesetzt > (Netzwerk) Siehst Du, weil Du es in Assembler geschrieben hast, ist es für den AVR nutzlos. Hättest Du es aber in C geschrieben, könntest Du es ohne großen Aufwand auf den AVR portieren. Den Leuten, die in C programmieren, ist einfach nur ihre Zeit zu schade. Peter
Hallo Entschuldigt die späte Antwort. (meine grosse hatte geburtstag) Was habe ich denn hier jetzt losgetreten? Errinnert ihr euch an meine eigentliche Frage? Verzeiht mir wenn ich nicht jedem einzelnem antworte, da sich das ein oder andere ohnehin dann von selbst erklärt. @ Andreas: Leider musste ich das mit den 10 MBit beim Studium des Datenblattes auch lesen. Nun gut für nicht alle, aber einige Dinge schnell genug. Sollte denke ich auch bald ne 100 MBit verfügbar sein. @ Holger: Wie oben. War der Meinung das die Kombi SDkarte/ATMega mit ausfühbarem Code möglich währe. - Falsch gedacht! @ Henry: Also mein "Werkzeug aus dem Satteltäschchen" ist das AVR Studio 4. Das sollte wohl ein üppig ausgestatteter Werkzeugschrank sein!!! Glaube mal das ich so einen lächerlichen LKW Anlasser in ner halben Stunde gewechselt habe! Und ich bin nichtmal Fahradmechaniker! (CNC-Dreher) Mal generell zu c: Diese "Glaubensfrage" hat sich anscheinnend seit meiner Amiga Zeit nicht geändert. Was ist denn C? - Eine Ansammlung jeder Menge Assembler Routinen die vom Compiler anhand des Quelltextes zusammengestellt und mit Variablen bestückt wird. - Mehr nicht! Mir einfach zu unflexiebel und der Code wird Prinzip bedingt grundsätzlich grösser als er sein müsste. Wiedersprüche? @ Jacob: Dein Link macht mir schon grosse Augen - Meine Frau hat aber ein grösseres auf unseren Geldbeutel. ;-) Denke nicht dass solch ein Board in meinen finanziellen möglichkeiten liegt. Danke aber trozdem. Wie lange das dauert? Ein Beispiel: Ein Freund von mir hat sich vor fünf oder sechs Jahren ne C-Control II gekauft und schon viel mit gemacht in Sachen Haus Automation (Licht, Rolläden, Klima, Heizung etc) --- Der ist bis heute nicht fertig!!! Das ist der Vorteil wenn mann soetwas nicht kommerziell vermarkten will! Mann muss nicht komplett fertig werden - immer ein bisschen was neues. Grüsse an alle: Ingo
Hallo Ingo Dann fang doch erstmal mit der Haus Automation an. Dabei lernst Du den ATmega kennen und kannst besser einschätzen, was geht und was nicht. Als zweites Projekt kommt dann die EWMS. Du könntest ein Board mit Embedded Linux und zwei Ethernet Schnittstellen verwenden. Der Datenstrom wird komplett von einer Schnittstelle zur anderen durchgeleitet und kann dabei kontrolliert werden. Nimm den RTL8019 falls du 100 Mbit brauchst. Durch die parallele Ansteuerung ist auch der Durchsatz besser. Größere ATmegas haben teilweise einen externen Daten und Adressbus. An Deiner Stelle würde ich trotzdem mit einer Hochsprache liebeugeln. Es muss ja nicht unbedingt C sein. Aber wie wärs mit Pascal oder Basic (Bascom). Meist sind schon viele umfangreiche Bibliotheken dabei. Warum das Rad neu erfinden, wenn man sich sofort der eigentlichen Aufgabe widmen könnte? Das Ergebnis mit Assembler ist zwar nur halb so gross und in der Ausführung schneller, aber Du brauchst auch 5 mal so lange zum Schreiben. Stell Dir vor, Deine Kinder sind schon aus dem Haus, bevor ... Mfg. Bernd
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.