Hallo an alle,
programmiere Mikrocontroller noch nicht lange, denke habe aber schon
einige Erfahrung. Ich hatte eines Abends eine ziemlich abgefahrene Idee
(Bitte nicht auslachen, wenn kompletter Mist) :
Da ich mich von Anfang an praktisch für das wirklich DIREKTE Ansprechen
des Controllers (Nat. in Maschinencode ;) ) interessiere, dachte ich mir
ich könnte auf Basis des Arduino einen
komplett eigenen Befehlssatz schreiben, Register durch gespeicherte
Werte simulieren, binäre Rechenoperationen programmieren, usw. Die
verschiedenen Befehle sollten dann mit entsprechenden Binärcode
ausgewählt und durchgeführt werden. Programmiert wird praktisch durch
addressweises Beschreiben des
internen EEPROMs mit passenden Befehlen.
Es sollte dann praktisch so ablaufen, dass ich mein "Programm" in das
EEPROM manuell schreibe, der Arduino sich die Werte nacheinander holt,
überprüft welcher Befehl dazu passt und welche Variablen er verwenden
soll (Natürlich auch so was wie Stopcodes setzen, woran der Arduino
Anfang und Ende des Codesegments erkennt).
Hatte mir den Programmcode so gedacht, dass er den geholten Binärcode
durch viele if, oder switch-case Segmente dem richtigen Befehl zuordnet.
Bei Ein- und Ausgabe dachte ich an eine serielle Verbindung zum PC.
Mir ist natürlich klar, dass ich jetz keinen 300er Befehlssatz
reinprogrammieren kann.
Auch wenn das fertige Projekt nicht unbedingt meinen Vorstellungen
entsprechen sollte, hat
man doch ziemlich viel über den internen Aufbau und Arbeitsweise des
Mikrocontrollers gelernt, oder? Es steht ja der Lerneffekt im
Vordergrund.
Wäre das mit mittlerem Skill schaffbar und funktionsfähig?
Oder totaler Mist?
Bitte ehrliche Antworten!
Klausi
Klausi schrieb:> Auch wenn das fertige Projekt nicht unbedingt meinen Vorstellungen> entsprechen sollte, hat> man doch ziemlich viel über den internen Aufbau und Arbeitsweise des> Mikrocontrollers gelernt, oder?
Da ist es - wie schon gesagt - viel sinnvoller sich direkt mit den AVRs
auseinander zu setzen.
Klausi schrieb:> Wäre das mit mittlerem Skill schaffbar und funktionsfähig?> Oder totaler Mist?
Wenn überhaupt, dann wäre das vermutlich alles andere als "brauchbar".
Im Endeffekt versuchst du eine Art virtuelle Machine zu erschaffen. Das
stampft man mal nicht eben aus dem Boden. Überhaupt ist es fragwürdig
inwiefern das bei Mikrocontrollern im Stile der AVRs Sinn macht. Da sind
die Ressourcen doch ganz schön beschränkt, viel Platz für Abstraktionen
gibt es da nicht.
Klausi schrieb:> Oder totaler Mist?
So würde ich das zumindest einordnen.
Klausi schrieb:> Was jetzt?
Je nachdem welchen Arduino du hast (keine SMD Version) lässt sich der
AVR, der Haupt-Bestandteil des Arduino, im Prinzip auch direkt
verwenden. Allerdings brauchst du dafür einen (vernünftigen) Programmer.
Kann ich nicht eigentlich einen ICSP Programmer, wenn schon PINs auf dem
Board vorhanden sind, verwenden? Hab nämlich gesehen die sind im
Vergleich zu anderen Brennern ziemlich günstig.
Klausi
Klausi schrieb:> ich könnte auf Basis des Arduino einen> komplett eigenen Befehlssatz schreiben, Register durch gespeicherte> Werte simulieren, binäre Rechenoperationen programmieren, usw. Die> verschiedenen Befehle sollten dann mit entsprechenden Binärcode> ausgewählt und durchgeführt werden. Programmiert wird praktisch durch> addressweises Beschreiben des> internen EEPROMs mit passenden Befehlen.
Gratuliere, Du hast gerade das Prinzip eines Interpreters neu entdeckt.
Ist nicht ungewöhnlich. Gabs vor 40 Jahren auch schon.
> man doch ziemlich viel über den internen Aufbau und Arbeitsweise des> Mikrocontrollers gelernt,
Nicht wirklich.
Denn deine 'simulierte' CPU wirst du sinnvollerweise mit höherwertigen
Instruktionen ausstatten, als diejenigen, die der AVR sowieso schon hat.
Ich glaube der Lerneffekt ist ziemlicher Käse.
Das was du in "Software" machen möchtest, ist ja in einem nackten AVR
bereits in HW gegossen. Wenn es dir um das HW-Design geht, dann schnapp
dir ein Buch zur Mikrocontrollertechnik.
Wenn du die Funktionsweise kennenlernen möchtest, dann nimm den nackten
AVR und programmiere in Assembler. Spätestens bei komplexeren Aufgaben
wirst du dann den Durchblick brauchen/kriegen
Meine Meinung ...
HI
>komplett eigenen Befehlssatz schreiben, Register durch gespeicherte>Werte simulieren, binäre Rechenoperationen programmieren, usw. Die>verschiedenen Befehle sollten dann mit entsprechenden Binärcode>ausgewählt und durchgeführt werden. Programmiert wird praktisch durch>addressweises Beschreiben des>internen EEPROMs mit passenden Befehlen.
Klassischer Interpreter. Gibt es seit über 30 Jahren z.B. für BASIC.
MfG Spess
Kannst ja mal nach einem 'Forth' für den AVR Ausschau halten.
Ein UCSD Pascal hingegen wirst du für den AVR eher nicht (mehr) finden.
Der Zug ist schon lange abgefahren.
Bevor du einen VM-Interpreter schreibst wäre es gut, eventuell mal
wirklich ASM egal welcher Plattform zu lernen. Da du ja schon einen AVR
mit dem Arduino hast, kannst du ja gleich AVR-ASM lernen. Sehr
empfehlenswert ist http://www.avr-asm-tutorial.net/
Ich hab mir auch ein Arduino gekauft um es als normales 28-Pin
AVR-Devboard zu nutzen, da beides (Arduino-Kopie und diverse
interessante Shields) in letzter Zeit für einen Nasenrammel auf Ebay zu
erstehen ist....
Übrigens: Sowas, was andere als total abgefahren bezeichnen würden hat
bereits jemand gemacht - und zwar einen ARM Cortex M0 auf einem ATtiny85
emuliert: http://dmitry.co/index.php?p=./04.Thoughts/08.%20uM0
Klausi schrieb:> Oder totaler Mist?> Bitte ehrliche Antworten!
Jep! Totaler Mist.
Sowas was du machen willst, hat der Chip ja schon im Silizium!
Assembler lernst du am besten direkt mit nem anständigen AVR. Also lass
den Arduino ;-) Meiner meinung nach nur Spielzeug. Wenns anständig
werden soll, kommt man um eine EIgenentwicklung eines Boards nicht
herum.
Wie ich angefangen habe:
Atmega8 auf nem Steckboard. Dann mit ein paar Drähten alles wichtig
dran. So lernt man es!
Auch wenn ich wohl auf den "nackten" AVR umsteigen werden, muss ich den
Schwachsinn trotzdem mal aus Spaß in den Arduino reinkloppen und das
Resultat sehen ;)
meckerziege schrieb:> Also lass> den Arduino ;-) Meiner meinung nach nur Spielzeug.
Wie kommst du zu dieser Meinung? Der Arduino ist genau so ein einfaches
AVR-Entwicklungsboard wie diverse andere auch. Die Benutzung der
Arduino-Libs ist optional, niemand zwingt dich dazu sie zu benutzen.
Martina schrieb:> meckerziege schrieb:>> Also lass>> den Arduino ;-) Meiner meinung nach nur Spielzeug.>> Wie kommst du zu dieser Meinung? Der Arduino ist genau so ein einfaches> AVR-Entwicklungsboard wie diverse andere auch. Die Benutzung der> Arduino-Libs ist optional, niemand zwingt dich dazu sie zu benutzen.
Das ist falsch. Der Begriff Arduino umfasst das Gesamtpaket aus fertiger
Hardware, fertiger Software und Bootloader. Nutzt man das nur Teilweise
nutzt man kein Arduino.
Und wie bei jedem Framework, Shortcut, IDE oder sonst was gilt: Man kann
es nutzen wenn man es nicht nutzen MUSS. Sprich wenn man nicht darauf
angewiesen ist, kann man es als Erleichterung einsetzen. Kann man aber
eben nur damit irgendwas zu stande bringen ist es hochgefährlich. Und
leider trifft dies auf 99% aller Arduino Nutzer zu.
Das ist wie mit Eclipse. Ich liebe Eclipse und seine umfangreichen
Funktionen. Aber wenn jemand kein Java Programmieren könnte, ohne
Eclipse, dann wär das doch eine Katastrophe.
gruß cyblord
cyblord ---- schrieb:> Das ist falsch. Der Begriff Arduino umfasst das Gesamtpaket aus fertiger> Hardware, fertiger Software und Bootloader. Nutzt man das nur Teilweise> nutzt man kein Arduino.>
jetzt gleiten wir aber in Glaubens-/Definitionsfragen ab...
Ich sehe es anders: Arduino ist erst mal eine nette, kompakte
Hardwareplattform, die man beliebig mit den angebotenen Shields
erweitern kann.
Ob man nun die mitgelieferte IDE benutzt muss jeder selbst entscheiden.
Ich habe sie noch nie für die Programmierung meiner Arduinos verwendet,
sondern benutze meine eigene Toolchain...
Ob nun Assembler, natives C oder die arduino-eigene Sprache das Mittel
der Wahl ist, sollte jedem selbst überlassen werden. Und das man mit
letzteren keine Ahnung von der Hardware haben muss, halte ich für ein
Gerücht...
Mal zurück zum Ursprungsthema: wie schon von mehreren Leuten richtig
erkannt, der TO sucht eigentlich einen Interpreter (mal unabhängig
davon, auf welcher Abstraktionsebene). Ich hätte da einen im "Angebot":
http://www.mikrocontroller.net/articles/AVR_BASIC
Das Ding habe ich u.a. auch mal auf einem Arduino-Board ausprobiert.
Grüße Uwe
Hallo noch mal,
hab das ganze jetzt fast komplett in Java umgesetzt.
Wollte wissen, ob es funzt ;)
Jetzt werde ich dann versuchen, das ganze mit dem Arduino zu
verheiraten.
Wünscht mir Erfolg ;)
Klausi