Hallo liebe User, Bisher habe ich ein funktionierendes System (Ein Bedienungsboard für 4 Schrittmotoren mit Tastern, LED´s, LCD Display,...) Habe den Atmega16 µC mit einem STK500 Board Programmiert und es funktioniert alles 'Einwandfrei'. So, nun möchte ich das Projekt gerne über Internet ansteuern, d.h. eine Lösung wäre vllt. das ich die Kommunikation mit einem http://elmicro.com/de/foxboard.html Linux Board erstelle und dort über den vorhandenen Webserver den Atmega16 flashe. Nun stellt sich mir die Frage wie ich das flashen von dem Webserver aus starten kann? Kann ja die AVR Studio.exe nicht einfach auf den mini chip laufen lassen. Gibts da shcon welche Ansätze, oder embedded flash tools für Atmega16 chips? MFG Willi
avrdude arbeitet mit allen möglichen programmieradaptern zusammen und läuft unter so ziemlich allen linuxen: http://www.nongnu.org/avrdude/
Kann ich dieses Programm auf den Webserver laden? Ich möchte den Atmega nämlich von jedem beliebigen PC flashen können ohne das der jeweilige PC irgend ein Flashprogram auf der Festplatte hat. D.h. das das flashprogramm das C-Code in Maschinen-Code umsetzt und in die jewieligen Register des Atmega16 lädt, auf dem Webserver installiert sein muss und von dort aus starten sollte.
Willi S. schrieb: > Kann ich dieses Programm auf den Webserver laden? Klar, aber bin mir immer noch nicht sicher, was du vorhast. AVRDude kann nicht kompilieren, sondern nur programmieren. Du bräuchtest also einen Satz von vorgefertigten HEX files , die du dann per CGI oder PHP entfernt startest . AVRDude muss also auf der Maschine laufen, die den AVR programmieren soll und per Programmierer ( schlimmstenfalls PonyProg oder ne ähnlich simple Lösung) auf den AVR zugreift. Da der AVR sich nur ca. 10000 mal programmieren lässt, solltest du evtl. auch ein Passwort vorsehen :)
Bist du sicher, dass du tatsächlich ein komplett neues Steuerprogramm in den AVR geladen haben willst (wegen zb C-Programmierer Ausbildung) und nicht einfach nur das auf dem AVR laufende Programm mit zb neuen Bahndaten füttern willst, welche die Schrittmotoren abfahren. Im ersten Fall musst du flashen, im zweiten Fall ist das aber einfach nur eine Datenübertragung und das auf der Steuerung laufende Programm muss sich die Bahnkoordinaten irgendwo zwischenspeichern. Für den ersten Fall (also neues Programm flashen) wäre eventuell auch ein Bootloader eine Alternative.
@Karl Heinz Buchegger Ok du hast recht ich muss nicht unbedingt das komplette Programm frisch drauf flashen, ich müsste nur einige Parameter ändern können über den Webserver, wie z.B. die Drehrichtung des Stepmotors ändern oder die Phasenverschiebung der einzelnen Rotoren. Wie meinst du dann das mit "nur eine Datenübertragung"? Meinst du ich sollte das komplette Programm auf dem Atmega16 laufen lassen und die Parameter dann über ne SD Karte oder der gleichen Speichern die ich dann über den Webserver beschreiben könnte und dieser dann von dem µC als eingang der Parameter, oder besser gesagt auslagerungsspeicher der Parameter dient? Ist das möglich? Und wenn ja was von den beiden Sorten ist die schönste? Ein fertigen Bootloader wird es wohl nicht geben oder?
Willi S. schrieb: > Ok du hast recht ich muss nicht unbedingt das komplette Programm frisch > drauf flashen, dachte ichs mir doch. > ich müsste nur einige Parameter ändern können über den > Webserver, wie z.B. die Drehrichtung des Stepmotors ändern oder die > Phasenverschiebung der einzelnen Rotoren. > Wie meinst du dann das mit "nur eine Datenübertragung"? Na ja Datenübertragung halt. So wie man das zb mit einer UART macht: PC schickt Kommandos über die serielle Schnittstelle und das Programm am µC wertet sie aus. > Meinst du ich sollte das komplette Programm auf dem Atmega16 laufen > lassen und die Parameter dann über ne SD Karte oder der gleichen > Speichern die ich dann über den Webserver beschreiben könnte und dieser > dann von dem µC als eingang der Parameter, oder besser gesagt > auslagerungsspeicher der Parameter dient? Es dürfte wohl schwer werden, einen SD-Speicher so zu verdrahten, dass sowohl PC als auch µC gleichzeitig darauf zugreifen können. Und wenn du die Karte händisch umstecken musst, kannst du die ganze Sache mit Web-Zugriff auch gleich vergessen. Nein, ich meine eine ganz normale Datenübertragung, so wie sie in jedem mittelmässigen Tutorial gelehrt wird. Serielle Schnittstelle vom µC wird an den PC angestöpselt, dort ein Terminalprogramm aufgemacht und wenn du an diesem Terminal eintippst: S1,50; wird vom µC-Programm die S_peed vom Motor _1_ auf _50 gesetzt (was immer dann auch 50 sein soll). Und wenn du D1,-; einstippst, veranlasst das µC Programm, dass der Motor rechts rum dreht, und bei D1,+; lässt es ihn links rum drehen. Der PC schickt über die Serielle Schnittstelle zb Texte zum µC, die der in seinem Programm als Kommandos auffasst und ausführt. So wie du zu Hause anrufst und deiner Freundin/Frau sagst: mach das Fenster zu. Und die macht das dann. > Ein fertigen Bootloader wird es wohl nicht geben oder? vergiss den Bootloader. Der wäre zum flashen eines Progammes gedacht gewesen. Hat mit Datenübertragung nix zu tun.
Ich denke Karl Heinz Buchegger meinte es so das du mitels Ethernet die Daten an den Webserver überträgst. Und dieser leitet dann bsw. per USART, SPI, sonstige freie Schnittstelle die Daten an den uC weiter. im uC werden dann die empfangenen Daten bsw. in globale Variablen geschrieben (einfachste Variante) und dann im eigentlichen programm verwendet.
Albert ... schrieb: > Ich denke Karl Heinz Buchegger meinte es so das du mitels Ethernet die > Daten an den Webserver überträgst. Und dieser leitet dann bsw. per > USART, SPI, sonstige freie Schnittstelle die Daten an den uC weiter. im > uC werden dann die empfangenen Daten bsw. in globale Variablen > geschrieben (einfachste Variante) und dann im eigentlichen programm > verwendet. Ganz genau. Wobei noch nicht klar ist, ob der Webserver jetzt ein hochgeladenes File an den µC weitergibt, oder ob er eine Web-Site mit Buttons drauf anzeigt und beim Drücken eines Buttons wird dann ein entsprechendes Kommando an den µC geschickt. Das hängt dann davon ab, was der TO konkret machen will.
Albert ... schrieb: > Ich denke Karl Heinz Buchegger meinte es so das du mitels Ethernet die > > Daten an den Webserver überträgst. Und dieser leitet dann bsw. per > > USART, SPI, sonstige freie Schnittstelle die Daten an den uC weiter. Ganz genauso hät ichs gern. Ich kann mir nur noch nicht vorstellen wie die normale kommunikation zwischen Webserver und µC ablaufen soll. Karl Heinz Buchegger schrieb: > Wobei noch nicht klar ist, ob der Webserver jetzt ein hochgeladenes File > > an den µC weitergibt, oder ob er eine Web-Site mit Buttons drauf anzeigt > > und beim Drücken eines Buttons wird dann ein entsprechendes Kommando an > > den µC geschickt. Es soll im Endprodukt eine Web-Site sein bei denen ich Häckchen oder Buttons hab. Ich kann also dem µC über bestimmte Ports einfach Integerwerte vom Webserver übergeben oder wie soll ich mir das vorstellen?
Willi S. schrieb: > Ich kann also dem µC über bestimmte Ports einfach Integerwerte vom > Webserver übergeben oder wie soll ich mir das vorstellen? Du kannst zb in PHP eine serielle Schnittstelle aufmachen und dort zb Texte ausgeben. Für den µC spielt es keine Rolle, wer am anderen Ende der Leitung sitzt. Ob das ein Web-Server ist, der ihm da einen Text zuschanzt oder ob das ein Benutzer ist, deran einem Terminal sitzt und vor sich hintippt oder ob das ein Visual Basic Programm ist welches die serielle Schnittstelle füttert, das alles ist dem µC völlig schnurz. Der sieht einfach nur, dass an seiner UART ein Text reinkommt, den er als Befehl auffassen und ausführen soll.
Auf der folgenden Seite gibt es das Gewünschte oder zumindest viele Anregungen: http://mikrocontroller.heldt.eu/index.php?page=enc28j60-io-webserver (Platinen usw. werden ebenfalls angeboten.) ...Rolf
Ich überlege gerade welche Ports ich zur Komunikation zwischen µC und Webserver benutzen sollte. Am einfachsten ginge das ja über den USART, da aber meine beiden Sende- und Empfangs-PINS PD0 und PD1 leider schon in meinem Programm zur Ansteuerung der Schrittmotoren belegt sind und die Platine schon geätzt und gelötet ist kann ich die Pinbelegung schlecht ändern. Ich lese soeben das ich mit Port A als Ausgang externe Speicher ansprechen kann, da ich ja nur die Parameter über den Webserver ändern möchte wäre dies doch eine Möglichkeit oder? PS: Die Ports B und C sind auch schon voll belegt.
Du kannst auch einen UART in SW implementieren... Dann kann das mit jedem beliebigen Portpin erfolgen.
SW ... in Software D.h. du programmierst dir die Bitbehandlung deiner UART selber anstatt das die Hardware machen zu lassen. > und die Platine schon geätzt und gelötet ist kann ich die > Pinbelegung schlecht ändern. Es gibt nichts, was man nicht mit einem scharfen Teppichmesser und ein bischen Draht auftrennen bzw. umlöten könnte. Würde ich in deinem Fall machen. An die Platine musst du sowieso ran, wenn du eine UART nachrüsten willst. Irgendwie musst du ja auch den MAX232 bzw. die RS232 Buchse anschliessen. Selbst wenn du die beiden Komponenten auf eine Huckepackplatine gibst, musst du sie ja immer noch mit dem µC verdrahten. Hake es als Lehrgeld ab, dass man vor dem Ätzen der Platine überlegt, welche Komponenten gebraucht werden und im Prototypen einer Platine Hardware-Änderungen ganz normal sind. Schaltpläne gleich aktualisieren und bei der Version 1.1 der Platine ist dann wieder alles sauber.
Ja gut ihr habt ja recht, ich dachte das ich meine vorhandene Platine zu Testzwecken missbrauchen könnte aber so wenig Schaden wie möglich verursachen möchte da diese noch gebraucht wird. Mit der Version 1.1 werd ich dann natürlich eine neue Platine ätzen lassen da wie du ja sagtest noch ein MAX232 zwischen mein RS232 und die Pins geklemmt werden sollte. Dachte eben ich könnte den die PINS PD0 und PD1 für 2 verschiedene zwecke nutzen aber das wird dann vllt to much. Also nutze ich jetzt einfach PD0 und PD1 in Zukunft als Autobahn für die Parameter ablage auf dem Webserver zum µC.
Willi S. schrieb: > Ja gut ihr habt ja recht, ich dachte das ich meine vorhandene Platine zu > Testzwecken missbrauchen könnte aber so wenig Schaden wie möglich > verursachen möchte da diese noch gebraucht wird. Na, ja der Schaden hält sich in Grenzen. Die Leiterbahnen in der Nähe der Pins D0 und D1 mit dem Messer unterbrechen. Die jetzt in der Luft hängen Leitungen zu den Motoren vom Lötstopplack befreien (mit dem Messerchen runterschaben) und mittels Draht (Fädeldraht geht da ganz ausgezeichnet) quer über die Platine mit 2 Pins vom Port A verbinden. Programm ändern - fertig. Die Pins D0 und D1 sind jetzt frei und man kann mit Draht dort andere Komponenten anschliessen. Die Drähte noch ein wenig gegen unabsichtliches Herunterreißen sichern. (Tropfen Klebstoff) Die ganze Hardwareaktion dauert normalerweise keine halbe Stunde und du hast die Pins frei.
Ich habe jetzt diesen XPORT von Lantronix gefunden http://www.lantronix.com/device-networking/embedded-device-servers/xport.html Der kann wie ich sehe eigentlich schon so gut wie alles was ich brauche, Preis spielt auch keine Rolle. Ich möchte den XPORT 1. benutzen um die Schnittstelle übers Internet mit meinem µC herzustellen und 2. den Webserver des XPORT als Terminal zur veränderung bestimmter Variablen nutzen. Nun weis ich noch nicht so genau wie das wirklich von statten geht. Also ich stell mir das so vor: Über die IP Adresse komme ich über den Explorer auf den Webserver des XPORT, dort kann ich dann beliebige Variabeln ändern. Muss ich nun den Webserver als externen Speicher von sicht des µC sehen oder soll der Webserver Daten an den µC schicken und die Werte im internen µC-Programmspeicher ändern (fals das überhaupt möglich ist).
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.