Hallo! Ich habe zwar noch keine konkreten Pläne, möchte vorher aber wissen ob das geht: Ich habe vor, (vorzugsweise) einen Atmega 16/32 zu verwenden. Damit möchte ich ein 128x64 Display ansteuern. Wäre es möglich, dass ich Unterprogramme in ein externes Flash brenne und dann mit dem µC zu diesem externen Speichersegment springe wo das Programm liegt, dieses zeilenweise einlese und ausführe? Vorzugsweise würde ich ein serielles Flash von Atmel verwenden. Bitte um Antworten!
Marcus schrieb: > Ich habe vor, (vorzugsweise) einen Atmega 16/32 zu verwenden. Damit > möchte ich ein 128x64 Display ansteuern. Wäre es möglich, dass ich > Unterprogramme in ein externes Flash brenne und dann mit dem µC zu > diesem externen Speichersegment springe wo das Programm liegt, dieses > zeilenweise einlese und ausführe? Nein es ist nicht möglich. Du kannst beim AVR Code nur aus dem internen Flash ausführen. Gruß Skriptkiddy
vor der frage stehe ich auch zur zeit, evtl. kann noch jemand einen link reinwerfen wie es überhaupt funktioniert programmcode auf einem externen speicher zu legen und diesen dann über den hauptcontroller auszuführen. vorzugsweise für atmegas. :)
z.B: indem man einen Interpreter auf dem AVR laufen lässt Beitrag "AVR-ChipBasic2 - BASIC-Computer mit ATMega 644"
Marcus schrieb: > Unterprogramme in ein externes Flash brenne und dann mit dem µC zu > diesem externen Speichersegment springe wo das Programm liegt, dieses > zeilenweise einlese und ausführe? Soll da so eine Art Script abgelegt werden? Das zeilenweise macht mich etwas stutzig. Bitte beschreibe den Sinn und Zweck. Da gibt es vielleicht noch andere Lösungen.
peter schrieb: > vor der frage stehe ich auch zur zeit, evtl. kann noch jemand einen link > reinwerfen wie es überhaupt funktioniert programmcode auf einem externen > speicher zu legen und diesen dann über den hauptcontroller auszuführen. > vorzugsweise für atmegas. :) Direkt geht das bei AVRs gar nicht. Was du machen kannst, ist, im ATmega einen Interpreter zu implementieren, der sich dann seinen Code vom externen Medium lädt und ausführt.
Naja du kannst statt eines Mega16/32 auch ein Mega8515 nehmen, der hat
ein externes Speicherinterface oder eben Mega64 /Mega128.
Wenn du direkt den Code vom externen Speicher ausführen willst brauchst
du ein richtiges XMEM-Interface. Wenn du den Code selbst noch
interpretierst ("bytecode interpreter") dann gehts auch ohne.
Auch durch mehrfaches Nachfragen geht es nicht. Man könnte durch den Bootloadermechanimus das gesamte Programm aus einem externen Speicher in den internen übertragen, dann nach einem Reset aus dem internen ausführen. Aber direkt aus einem externen Speicher geht halt nicht. Ein Ausweg wäre nur, im internen Speicher einen irgendwie gearteten Interpreter als Programm zu haben, der seine Befehle nach und nach von externem Speicher liest und ausführt. Das gilt für AVR; bei anderen CPUs kann es anders aussehen.
Matthias Keller schrieb: > Naja du kannst statt eines Mega16/32 auch ein Mega8515 nehmen, der hat > ein externes Speicherinterface oder eben Mega64 /Mega128. > > Wenn du direkt den Code vom externen Speicher ausführen willst brauchst > du ein richtiges XMEM-Interface. Auch über das externe Speicherinterface kann man keinen Code ausführen.
Hi
>Ich habe vor, (vorzugsweise) einen Atmega 16/32 zu verwenden.
Warum diese Dinosaurier? Nimm einen ATMega1284p (pinkompatibel zu den
Oldies) mit 126k Flash und fertig ist es.
MfG Spess
Sorry habt natürlich recht. Der XMEM-Bereich wird ja auf den SRAM Bereich gemappt! Leider kann ich den Beitrag nicht mehr editieren :( Da musst du leider eine andere Architektur nehmen: 8051 ARM ...
ev. ist es ausreichend, alle im Flash gespeicherten Konstanten (Texte, Graphiken, konstante Arrays ...) ins externe Flash zu speichern. Das dürfte bei einem Graphik-Display schon einiges sein. Nur der reine Code bleibt dann im internen Flash. Gruß, Stefan
@Stefan: Danke für deinen (für mich zumindest) hilfreichen Tipp. So könnte ich es ja eigentlich machen. @Spess: Ich verwende vorzugsweise den Atmega 16 bzw. 32 weil ich welche herumliegen habe. @alle Anderen: Vielen Dank für eure schnellen und auch hilfreichen Antworten!
Ich weiß, das ist jetzt eine etwas blöde Frage, aber wie bringe ich eigentlich Daten via PC in das Flash? Ich möchte im Flash ein Charset für das Display ablegen. Kann ich das einfach via Programmer (MySmartUSB MK2) machen oder ist das etwas komplizierter?
Hi >Ich weiß, das ist jetzt eine etwas blöde Frage, aber wie bringe ich >eigentlich Daten via PC in das Flash? Ich möchte im Flash ein Charset >für das Display ablegen. Kommt auf deine Programmiersprache an. In Assembler per .db, in C als Array den Zeichensatz in dein Programm einbinden und mitflashen. >@Spess: Ich verwende vorzugsweise den Atmega 16 bzw. 32 weil ich welche >herumliegen habe. Hoffentlich geschenkt bekommen. MfG Spess
Ich programmiere in C Sorry, ich habe mich jetzt unklar formuliert. Ich möchte das Chaset ins EXTERNE Flash/EEPROM brennen. Wie stelle ich das an? Wenn ich das Charset mitflashe, dann ist es ja nur im AVR drinnen. Das externe Flash/EEPROM ist bzw. wird später via I2C mit dem µC verbunden.
Entweder machst du dir einen AVR, klemmst dort das Flash an und lässt es ihn reinschreiben, oder du nimmst einen dedizierten Brenner (Galep oder sowas)
Hi Dann wirst du dir erst mal ein Programmiergerät basteln müssen. Und u.U. noch die passende PC-Software dazu schreiben. Ehrlich gesagt sehe ich in deinen Vorhaben keinen Vorteil gegenüber einem passenden Controller. Hast du überhaupt schon eine Vorstellung zum notwendigen Flashbedarf? MfG Spess
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.