Forum: Mikrocontroller und Digitale Elektronik Arduino im Arduino


von Klausi (Gast)


Lesenswert?

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

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Wirf den Arduino ausm Fenster, kauf dirn nackten AVR und lern für den 
Assembler.

von Simon K. (simon) Benutzerseite


Lesenswert?

Wir den Arduino nicht aus dem Fenster, denn da ist ein "nackter" AVR 
drauf.

von Klausi (Gast)


Lesenswert?

Was jetzt?

von Karol B. (johnpatcher)


Lesenswert?

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.

von Klausi (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Sen.Heis (Gast)


Lesenswert?

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

von Klausi (Gast)


Lesenswert?

Wenns des schon gibt, schade...

von spess53 (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Klausi (Gast)


Lesenswert?

Wieder was dazugelernt ;)

von Cyblord -. (cyblord)


Lesenswert?

Die C-Control 1 von Conrad arbeitete doch nach diesem Muster.

von Assemblino (Gast)


Lesenswert?

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

von Klausi (Gast)


Lesenswert?

Ok werde AVR Assembler lernen, hab jetz sowieso genuch Zeit in den 
Sommerferien ;)

von Kan a. (Firma: Basta) (kanasta)


Lesenswert?

Von Arduino zu Assembler: na das wird ja ein schöner Kulturschock ;)

von meckerziege (Gast)


Lesenswert?

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!

von Klausi (Gast)


Lesenswert?

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 ;)

von Martina (Gast)


Lesenswert?

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.

von Cyblord -. (cyblord)


Lesenswert?

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

von Uwe B. (boerge) Benutzerseite


Lesenswert?

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

von Klausi (Gast)


Lesenswert?

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