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
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.