Hallo, Folgende Siduation: Ich möchte Daten mit dem USBASP Programmer über den mega8 gleich in das Externe eeprom schreiben. Die Daten liegen im Intel HEX-Format vor. Die Kommunikation zwischen mega8 und dem eeprom funktionieren. Wenn ich Daten in das eeprom des mega8 mittels avrdude schreiben will, mache ich das so: avrdude -p m8 -P usb -c usbasp -U eeprom:w:daten.hex das funktioniert prima. Ich möchte jetzt diese Daten aber gleich in des externe eeprom 24c64 speichern. Ist das möglich ohne die Daten erst in das eerpom vom mega8 zu speichern? Mir fehlt irgendwie die Idee wie das gehen soll! Kann mir jemand helfen??
@ Mario Günther (estummel) >Ich möchte jetzt diese Daten aber gleich in des externe eeprom 24c64 >speichern. >Ist das möglich ohne die Daten erst in das eerpom vom mega8 zu >speichern? Nein. Du könntest Ponyprog mit einem zusätlichen Adapter verwenden, um das EEPROM per PC zu programmieren. MfG Falk
Schade.... Ein zusätzlichen Adapter möchte ich nicht verwenden. Da bleibt mir wohl nichts anderes übrig, als erst in das eeprom vom mega8 zuschreiben. Meine Idee wäre folgende: - daten mit avrdude in das eeprom vom mega8 schreinen - nun in Abständen schauen, ob da was drinne steht - wenn gefüllt, dann daten in das externe eeprom 24c64 verschieben So richtig gefällt mir die Abfolge noch nicht. Geht das auch eleganter?
@ Mario Günther (estummel)
>So richtig gefällt mir die Abfolge noch nicht. Geht das auch eleganter?
Schreib ein extra Programm, in welchem deine EEPROM Daten im FLASH oder
EEPROM des MEGA8 stehen hat. Das Programm hat nur die Aufgabe, das
externe EEPROM zu programmieren.
Ablauf
- Programm zur EEPROM-Programmierung brennen
- Reset, Programm wird ausgfeführt und programiiert den EEPROM
- Normales Programm brennen
MFG
Falk
Falk Brunner wrote: > @ Mario Günther (estummel) > >>So richtig gefällt mir die Abfolge noch nicht. Geht das auch eleganter? > > Schreib ein extra Programm, in welchem deine EEPROM Daten im FLASH oder > EEPROM des MEGA8 stehen hat. ok, ich generiere mir aus mein Daten schon das .hex file und schiebe dann - wie schon erwähnt - das hex file auf den MC. >Das Programm hat nur die Aufgabe, das > externe EEPROM zu programmieren. Geht aber alles über den mega8 ja?? > > Ablauf > > - Programm zur EEPROM-Programmierung brennen Du meinst in mein eeprom vom mega8 schreiben? - Hast du ja geschrieben das ich da nicht drumherum komme. > - Reset, Programm wird ausgfeführt und programiiert den EEPROM Ok, dass wäre nur die Erkennung, dass ich nicht in Abständen das eeprom pollen muss. > - Normales Programm brennen Das bräuchte ich dann nicht, weil ich ja nur Daten im eeprom hinterlegen will. Flash bleibt unverändert. > > MFG > Falk
@ Mario Günther (estummel) >ok, ich generiere mir aus mein Daten schon das .hex file und schiebe >dann - wie schon erwähnt - das hex file auf den MC. Ja, aber wohin denn? In den INTERENEN EPROM? Wenn die Daten dort rein passen, wozu brauchst du dann einen exteren EEPROM? >>Das Programm hat nur die Aufgabe, das >> externe EEPROM zu programmieren. >Geht aber alles über den mega8 ja?? Sicher. Der PC programmiert den AVR via Kabel + avrdude, der AVR programmiert dann den exeteren EEPROM. >> - Programm zur EEPROM-Programmierung brennen >Du meinst in mein eeprom vom mega8 schreiben? - Hast du ja geschrieben >das ich da nicht drumherum komme. Genau. Aber die DATEN kann man entweder im FLASH ODER EEPROM ablegen. >Das bräuchte ich dann nicht, weil ich ja nur Daten im eeprom hinterlegen >will. Flash bleibt unverändert. Naja, wenn genug Platz im FLASH ist kannst du alles in ein Programm packen. Die Version mit zwei geteilten Programmen braucht man nur, wenn es mit dem Speicherplatz eng wird. MFG Falk
Falk Brunner wrote: > @ Mario Günther (estummel) > >>ok, ich generiere mir aus mein Daten schon das .hex file und schiebe >>dann - wie schon erwähnt - das hex file auf den MC. > > Ja, aber wohin denn? In den INTERENEN EPROM? Wenn die Daten dort rein > passen, wozu brauchst du dann einen exteren EEPROM? Es werden mehrere Daten im externen eeprom abgelegt. Beispiel: - eine Liste mit Namen - eine Liste mit sonstigen Informationen - eine Liste mit Meßdaten - ... Alles in einer Größe, die in das eigene eeprom passen und dann halt ins externe eeprom verschoben werden sollen. Die Listen werden einzeln und nicht gleichzeitig ins eeprom programmiert. Daher brauche ich das eigene eeprom als Pufferspeicher. Ok Falk ich danke dir ersteinmal für deine schnelle Hilfe. Mal sehen wie ich das Problem löse. Noch eine Frage: ist es möglich eine Kombination der Lock-Bits zu setzen, wo man nur auf den eeprom Zugriff hat und nicht das Programm des MC auslesen kann?? > >>>Das Programm hat nur die Aufgabe, das >>> externe EEPROM zu programmieren. > >>Geht aber alles über den mega8 ja?? > > Sicher. Der PC programmiert den AVR via Kabel + avrdude, der AVR > programmiert dann den exeteren EEPROM. > >>> - Programm zur EEPROM-Programmierung brennen >>Du meinst in mein eeprom vom mega8 schreiben? - Hast du ja geschrieben >>das ich da nicht drumherum komme. > > Genau. Aber die DATEN kann man entweder im FLASH ODER EEPROM ablegen. > >>Das bräuchte ich dann nicht, weil ich ja nur Daten im eeprom hinterlegen >>will. Flash bleibt unverändert. > > Naja, wenn genug Platz im FLASH ist kannst du alles in ein Programm > packen. Die Version mit zwei geteilten Programmen braucht man nur, wenn > es mit dem Speicherplatz eng wird. > > MFG > Falk
@ Mario Günther (estummel) >Alles in einer Größe, die in das eigene eeprom passen und dann halt ins >externe eeprom verschoben werden sollen. Die Listen werden einzeln und >nicht gleichzeitig ins eeprom programmiert. Daher brauche ich das eigene >eeprom als Pufferspeicher. Das klingt aber nicht so gut. Puffern sollte man besser im RAM, das verträgt beliebig viele Schreibzugriffe. >Noch eine Frage: ist es möglich eine Kombination der Lock-Bits zu >setzen, wo man nur auf den eeprom Zugriff hat und nicht das Programm des >MC auslesen kann?? AFAIK nein. Wozu? MFG Falk
>Das klingt aber nicht so gut. Puffern sollte man besser im RAM, das >verträgt beliebig viele Schreibzugriffe. Ich glaube du hast mich jetzt misverstanden. Mit Zwischenpuffern meinte ich das was aus den .hex Dateien in den externen eeprom soll. Wenn das ginge, dass ich mittels AVRDUDE ins RAM schreiben könnte wäre mein Problem gelöst! Da könnte ich gleich die Daten in das externe eeprom schieben. Mario.
@ Mario Günther (estummel) >Ich glaube du hast mich jetzt misverstanden. Mit Zwischenpuffern meinte >ich das was aus den .hex Dateien in den externen eeprom soll. Wenn das Ach soooo. Klar. Aber dann gehts doch noch einfacher. Wenn genug Platz im FLASH ist, leg deine Daten im FLASH ab. Im Programm wird geprüft, ob schon sinnvolle Daten im exteren EEPROM stehen (Einfache Prüfsumme). Wenn nein, dann werden die Standardwerte aus dem FLASH ins exteren EEPROM geschrieben, sozusagen ein automatischer Reset. Dami hast du nur ein Programm und musst nur das einmal in den AVR programmieren. Einfacher gehts nimmer. MFG Falk
Falk Brunner wrote: > @ Mario Günther (estummel) > ... > Wenn nein, dann werden die Standardwerte aus dem FLASH ins exteren > EEPROM geschrieben, sozusagen ein automatischer Reset. Dami hast du nur > ein Programm und musst nur das einmal in den AVR programmieren. > Einfacher gehts nimmer. Das stimmt, aber die Daten ändern sich in einen gewissen Zeitraum und sollen von dem Benutzer mittels meines Programmes (Konfigurations - Programm) sozusagen upgedated werden. Und da sich der Flash ja nur etwa 10.000 mal programmieren lässt ehe er den Geist aufgibt ist doch der eerpom besser oder? Mario.
@ Mario Günther (estummel) >Das stimmt, aber die Daten ändern sich in einen gewissen Zeitraum und >sollen von dem Benutzer mittels meines Programmes (Konfigurations - >Programm) sozusagen upgedated werden. Und da sich der Flash ja nur etwa Naja, dann wird das nix mit dem FLASH. Aber wenn es sowieso ein Update-Programm gibt, warum dann der Umweg über den interen EEPROM? Die Daten kommen vom Benutzer sicherlicher per RS232/USB, da kann der Prozessor sie auch gleich direkt ins exteren EEPROM schreiben. MFG Falk
Falk Brunner wrote: > @ Mario Günther (estummel) > .. > Daten kommen vom Benutzer sicherlicher per RS232/USB, da kann der > Prozessor sie auch gleich direkt ins exteren EEPROM schreiben. Falk, wenn ich das wüste wie ich das machen soll, wäre ich glücklich. Die Daten kommen mittels usbasp Programmer, angeschlossen an die ISP vom MC. Hast du ne Idee wie das geht? Oder kann man mit den usbasp Programmer direkt das 24c64 programmieren? Ich glaube ich seh jetzt total im Wald! Mario.
@ Mario Günther (estummel) >Falk, wenn ich das wüste wie ich das machen soll, wäre ich glücklich. >Die Daten kommen mittels usbasp Programmer, angeschlossen an die ISP vom >MC. Na erstmal sollte man sich über ein paar grundlegende Sachen klar werden. Z.B. deine Update-Schnittstelle. Du willst also deinem Anwender die Möglichkeit geben, neue Daten ist EEPROM zu schreiben. 1.) Wie oft soll dass im Normalfall passieren? 2.) Mit welcher Schnittstelle soll der Anwender hantieren? USBASP über die ISP-Schnittstelle? Was selbstprogrammiertes per USB/RS232 über den UART des AVRs? 3.) Wie wird der neue Datensatz generiert? Mittels Textdatei vom User? Von dir als Servicepaket? >Hast du ne Idee wie das geht? Oder kann man mit den usbasp Programmer >direkt das 24c64 programmieren? NEIN! >Ich glaube ich seh jetzt total im Wald! JA. Tief Luft holen, bis zehn zählen, Ruhe bewahren. MFG Falk P.S. So wie ich es bisher verstanden habe, willst du nur ab und zu einen Anwenderupdate machen (1 mal pro Tag). Wenn du dem User als Servicepaket die Daten bereit stellst, kannst du das alles in ein Programm und damit HEX-File packen, der Anwender brennt es per USBasp und fertig.
Falk Brunner wrote: > @ Mario Günther (estummel) > > Na erstmal sollte man sich über ein paar grundlegende Sachen klar > werden. Z.B. deine Update-Schnittstelle. Du willst also deinem Anwender > die Möglichkeit geben, neue Daten ist EEPROM zu schreiben. ja > > 1.) Wie oft soll dass im Normalfall passieren? 1 - 2 mal pro Tag - maximal > 2.) Mit welcher Schnittstelle soll der Anwender hantieren? USBASP über > die ISP-Schnittstelle? Was selbstprogrammiertes per USB/RS232 über den > UART des AVRs? usbasp über die ISP Schnittstelle > 3.) Wie wird der neue Datensatz generiert? Mittels Textdatei vom User? > Von dir als Servicepaket? Aus einer generierten hex Datei - macht der user über das Konfigurations - Programm (Windowsprogramm - GUI Oberfläche). Da kann er die Daten verändern. Im Moment schreibe ich die Daten in das eeprom des mega8, das geht ja wie erähnt mit avrdude ... usbasp -U eeprom:w:data.hex . Im hex file stehen ja die Adressen drinne an welcher Stelle die Daten dann im eeprom reingeschrieben werden. ... >kannst du das alles in ein Programm und damit > HEX-File packen, der Anwender brennt es per USBasp und fertig. Ja so solls ja sein. Aber wie kann ich mittels dieses hex-files direkt den externen eeprom programmieren ohne erst ins eeprom ooder im flash zu schreiben? Ich glaube ich komme nicht umhin die externen eeprom Daten erst ins eeprom vom mega8 zu schreiben! Mario.
@ Mario Günther (estummel) >Aus einer generierten hex Datei - macht der user über das Konfigurations >- Programm (Windowsprogramm - GUI Oberfläche). Da kann er die Daten >verändern. Im Moment schreibe ich die Daten in das eeprom des mega8, das >geht ja wie erähnt mit avrdude ... usbasp -U eeprom:w:data.hex . Im hex >file stehen ja die Adressen drinne an welcher Stelle die Daten dann im >eeprom reingeschrieben werden. Na dann mach es doch so. Dein Windowsprogramm generiert (intern) das HEXfile und verbindet es gleichzeitig mit dem Hexfile des Programms (die Daten stehen dann im FLASH). Dieses HEXfile wird gebrannt. Zum Programmstart wird, wie bereits gechrieben, geprüft ob die Daten im exteren EEPROM sinnvoll sind bzw. ob neue Daten im FLASH vorliegen (Datum, Prüfsumme etc.). Wenn ja werden die Daten aus demm FLASH ins exteren EEPROM kopiert. >schreiben? Ich glaube ich komme nicht umhin die externen eeprom Daten >erst ins eeprom vom mega8 zu schreiben! JA! Das hab ich doch nun schon dreimal gesagt! MfG Falk
Der USBasp legt ja noch zwei zusätzliche Pins auf den ISP-Adapter, sind ursprünglich eigentlich fürs Debuggen der Zielschaltung über UART vorgesehen. Pack auf deinen USBasp einfach eine angepasste Firmware drauf, und Verkabel in deiner Schaltung das I2C-Eeprom zusätzlich mit diesen Pins am ISP-Anschluss. Der USBasp könnte dann über I2C dein externes EEProm beschreiben, ohne dass der Ziel-AVR davon was mitkriegt oder gar mithelfen müsste. Sicherheitshalber könnte man den im Reset halten, dann sind dessen I2C Ausgänge hochohmig. Das I2C Protokoll müsste der USBasp dann aber in Software machen, an den ISP-Stecker sind dort nur die RX/TX Leitungen des UARTs dran, IIRC.
Ernst Bachmann wrote: .. > Pack auf deinen USBasp einfach eine angepasste Firmware drauf, und > Verkabel in deiner Schaltung das I2C-Eeprom zusätzlich mit diesen Pins > am ISP-Anschluss. Cool das ist doch eigentlich die Idee ... Mit der angepassten Firmware - ich weis nicht ob ich das hin kriege... i2c routinen habe ich ja schon ... > Der USBasp könnte dann über I2C dein externes EEProm beschreiben, ohne > dass der Ziel-AVR davon was mitkriegt oder gar mithelfen müsste. genau das ist es doch!
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.