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
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.
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.
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).
Eine eigene Frage?
Dieser Thread ist über 14 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.