Guten Abend ;) Benutze einen Atmega8 und Programmiere ihn in C, habe an dem Atmega ein EEPROM angeschlossen und würde nun gerne dort verschiedene Programme speichern und Ausführen, also ich stelle mir das so vor, die Firmware des Atmega's soll über die RS232 die Programme im Hex Format empfangen und im EEPROM speichern, das zu realisieren dürfte für mich kein Problem sein, was mir mehr Probleme bereitet ist wie ich den Hex Code dann von der Firmware ausführen lassen kann, vllt. kann mir ja jemand nen Tipp geben. gruß Walter D.
geht IMHO nicht ohne Weiteres, da der AVR keine Programme im RAM abarbeiten kann. Du müßtest den EEPROM Inhalt auf den Flash umkopieren mit einer Art Bootloader und danach den AVR Restarten.. Gruß, Holm
Ein AVR kann Programme grundsätzlich nur aus dem Flash ausführen. Der Code muss also zunächst ins Flash geschrieben werden. Dazu müsstest Du einen Bootloader programmieren, der die Daten nach Bedarf aus dem EEPROM ausliest und ins Flash schreibt.
Das ist mit dem Atmel auf Grund der Harvard Architektur (getrennter Speicher für Daten und Programme) eher unmöglich sein - vom evtl. RAM Bedarf mal ganz abgesehen. Der einzige Weg wäre, die Programme wieder ins interne Flash zu schreiben aber das ist sicherlich nicht das was Du vor hast. Gruß, Marcus
Hallo, einfache Antwort: geht nicht. Die AVR können Programmcode nur aus dem Flash ausführen. Allgemeine Anmerkung: als Hex-Format ist es natürlich unsinnig, weil Hex-Format eine ASCII-Kodierte Darstellung eines Binär-Codes mit Adressangaben ist, wo er hingehört. Kostet also das 2-3fache des Platzes und Routinen , die den HEX-Code wieder in die Binär-Darstellung konvertieren. Wenn überhaupt, also als Binär-Code ablegen. komplizierte Antwort: man könnte einen Bootloader ablegen, der den Flash des AVR aus dem EEPROM jeweils umprogrammiert. Nicht sinnvoll, weil der Flash sich nicht beliebig oft neu programmieren läßt. Für solche Sachen ist ein AVR einfach garnicht geeignet. Möglich wäre ein Interpreter als Firmware (Java, Basic, eigenes Konstrukt, daß den Code aus dem EEPROM interpretiert. Ich gebe zu, daß ich schon ein paarmal darüber nachgedacht haben, ein uraltes Tiny-Basic oder das klassische 8k-Basic auf einen AVR zu tragen... Allerdings mehr zum Spaß als für ernstafte Anwendungen. ;) Gruß aus Berlin Michael
@Michael U.: Er hat ja nicht gesagt, wie oft er ein neues Programm überspielen will. Wenn das nicht allzu häufig geschieht, ist das auch mit einem AVR mit Bootloader kein Problem (ATMEL garantiert für das Flash mittlerweile 100000 Lösch-Schreib-Zyklen, die muss er erst mal hinbekommen, und die Wahrscheinlichkeit, dass das Flash beim 100001. Zyklus kaputtgeht, ist verschwindend gering). Ist halt ein bisschen Programmieraufwand, aber ich würde auf keinen Fall sagen, dass ein AVR da ungeeignet ist. Im Übrigen hast Du recht: die Programmdaten sollten natürlich binär abgelegt werden, sonst muss der Bootloader erst noch den Hex-Code auseinanderwurschteln. Gruß Johannes
ah so viele Antworten ;) hm das mit dem basic ist keine schlechte Idee hab ich noch garnicht dran gedacht, wenn ich die Programme Kompiliere liegen sie doch im Binär Code vor? der Code müsste doch direkt ausführbar sein.
Hallo, @Paul Baumann: Danke, sieht seht interessant aus. Muß mir seinen Source mal genauer anschauen. Gruß aus Berlin Michael
@ Manfred D. Nein, eine Hex-Datei ist nicht direkt ausführbar. In der Datei sind z.B. Checksummen, etc. enthalten, die für die fehlerfreie Programmierung des Chips notwendig sind.
@Michael U. Ja, das funktioniert auch prima. Ich habe eine Maschinensteuerung damit realisiert, die ich jederzeit mit dem "Müh- und Notbook" ändern kann. Für ein Einzelstück wolte ich keine SPS nehmen. Ist nur eine einfache Ablaufsteuerung, aber dafür ist das wie gemacht. MfG Paul
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.