Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller von "innen" programmieren


von Hannes A. (yoshi)


Lesenswert?

Hallo Community,

schon seit einiger Zeit spiele ich mit dem Gedanken, einen meiner 
AtMega8515 so zu behandeln, dass man ihm, während er läuft, mit 2 oder 
mehr Tastern ein Programm im AVR-opcode eingeben kann (ohne 
angeschlossenen Computer).

Hat hier schon mal jemand damit experimentiert? Oder kann mir jemand 
Tipps geben, wie das zu bewerkstelligen wäre?

PS: Ich schrecke nicht davor zurück, sämtliche Opcodes auswendig zu 
lernen!

von Thomas S. (tsalzer)


Lesenswert?

Dann mußt Du sowas wie ein Betriebssystem einspielen, oder zumindest 
einen Interpreter der dauerhaft auf dem Controller läuft.
Ähnliches gab es mal mit der Basic-Briefmarke.

guude
ts

von Uwe .. (uwegw)


Lesenswert?

Da der AVR ne Harvard-Architektur ist, kann man das Programm zu Laufzeit 
eigentlich nicht verändern... höchstens über die Bootloader-Funktion, 
und auch da kann man den Flash immer nur blockweise beschreiben.

von Hannes A. (yoshi)


Lesenswert?

hmmm... Danke für die Antworten. An das mit der Harvard-Architektur hab 
ich nicht gedacht. Also ist mehr oder weniger die einzige Möglichkeit, 
die Funktionalität während der Laufzeit zu verändern, indem man einen 
Interpreter schreibt?

von Roland Praml (Gast)


Lesenswert?

Also mit dem Bootloader klappt das normal schon.

Wenn du einen seriellen Bootloader verwendest, brauchst du eigentlich 
nur einen Taster und ggf eine LED (für RX, und TX lol)



Gruß
Roland

von Andreas V. (tico)


Lesenswert?

Roland Praml wrote:
> brauchst du eigentlich
> nur einen Taster
Stimmt, man könnte z.B. das Morsealphabet verwenden, um die Opcodes 
seriell einzutackern. Das wäre als Gag sicherlich nicht schlecht.

Gruss
Andreas

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Das Vorhaben hoert sich ja nicht gerade realistisch an... erinnert mich 
an dieses 8088-System aus meiner Ausbildungszeit, wo man ueber ein 
Zaehlwerk (wie man es von alten Kassettenspielern kennt) Adresse und 
Datenwort einstellen konnte und es mit einem Taster programmiert hat ;P 
Viel Spass sag ich da nur :D

von spess53 (Gast)


Lesenswert?

Hi

>Das Vorhaben hoert sich ja nicht gerade realistisch an... erinnert mich
>an dieses 8088-System aus meiner Ausbildungszeit, wo man ueber ein
>Zaehlwerk (wie man es von alten Kassettenspielern kennt) Adresse und
>Datenwort einstellen konnte und es mit einem Taster programmiert hat ;P
>Viel Spass sag ich da nur :D

So habe ich meine ersten Z80-'Programme' auch 'geschrieben'. Zumindest 
lernt man dabei, das einfacher ist, sich erst einige Gedanken zu machen 
und nicht einfach wild drauf los zu programmieren.
Aber der der grundsätzliche Unterschied zwischen 8080 und AVR liegt in 
der Architektur (Neumann/Havard). Der AVR kann halt keine Programme im 
RAM ausführen.

MfG Spess

von Ralf L.K. (Gast)


Lesenswert?

Weshalb AVR-Opcodes ?

Ein 6502 Code-Interpreter und per ATMega32 einen alten EMUF6504 mit 
Harware emulieren im RAM / IOs.

Encoding/Decoding ist für 6502 einfacher als für AVR.
Zudem hatte der nur 3 Arbeitsregister, den PC und eine Statusregister.
Das ist auch Debugging einfacher.

Und es gab früher Designs wie http://de.wikipedia.org/wiki/KIM-1, die 
alles an Bord hatten zur Programmierung.

Aber eine PC-Tastatur und ein LCD-Display würden das ersetzen können.

Der 6502 Code war relativ einfach und mit Akku, x-Reg und y-Reg konnte 
man weniger den Überblick verlieren als bei Assembler-AVR.
Und die Werte auch auf Display ausgeben.

Ich schätze mal, dass ein 6502 bzw. EMUF6504 Emulatur in Hardware auch 
für mehr Leute interessant wäre als irgendwelche Frickeleien am ATMega.

Per RS232 könnte man Sourcecode exportieren/ archivieren und etwas 
größere Software extern schreiben.

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
Noch kein Account? Hier anmelden.