Hi ihr, ziemlich enttäuscht muss ich gerade feststellen, dass im Mikrocontrollerkurs Assemblerprogrammierung nur sehr oberflächlich behandelt wird. Also werde ich mich da auf eigene Faust tiefer hineinfuchsen, mir macht das richtig Spaß. Wir verwenden hier einen MSP430. Zuhause hätte ich einen Arduino liegen. Klar ist mir, dass man sich in jede Controllerfamilie separat einarbeiten muss, weil sich Befehlssätze, Speicherstrukturen usw. unterscheiden. Mir geht es darum, generell ein wenig fitter in Sachen Assemblerprogrammierung zu werden. Deshalb meine Frage an euch: Eignet sich ein Arduino dafür genauso gut wie Controller der Familien MSP430, 8051..., die ja für Einführungen meist verwendet werden? Oder sind Arduinos schon eher zu komplex zum Einstieg oder würde sonst irgendetwas eher dagegen sprechen? Dann würde ich natürlich einen anderen kaufen, sind ja nicht teuer... In dem Fall hätte ich nichts gegen Empfehlungen. Danke
Es kommt auf den Arduino an. Wenn das ein AVR basierter ist, spricht nichts dagegen, mit ISP Programmer und AVR Assembler auch Assembler auf den Arduino zu programmieren, der ja nichts weiter als ein AVR mit ein wenig Peripherie auf einer Platine ist.
@Emil G. (balsamico) >Deshalb meine Frage an euch: Eignet sich ein Arduino dafür genauso gut >wie Controller der Familien MSP430, 8051..., die ja für Einführungen >meist verwendet werden? Ja, ggf. sogar besser. 8051 ist der Klassiker aber nicht mehr wirklich up to date, vor allem wenn es um Assembler geht. MSP430 ist so lala. >Oder sind Arduinos schon eher zu komplex zum Einstieg Nein. Wobei man bei Arduino genau sagen muss, WELCHER Arduino. Die meisten basieren auf dem AVR, das ist der König von uC.net. Es gibt aber auch andere Arduinos, welche auf ESPxyz oder AT91SAM3X8E (Due) basieren. Das sind andere Mikrocontroller mit anderer Struktur und Assembler. > oder würde sonst >irgendetwas eher dagegen sprechen? Nix.
Man muss sich im klaren sein, dass man eigentlich nicht mehr mit "Arduino" arbeitet, sondern lediglich mit dessen Platine und Chips. Arduino beschreibt ja das ganze Ökosystem mit Libraries, IDE usw. In diesem Fall wirst du ja nur mit einem ISP und dem Datenblatt (-Buch) bewaffnet den Controller direkt programmieren wollen.
Ich glaube, für Assembler ist der PIC tatsächlich etwas geeigneter, weil weniger Befehle. Man muss sich nur an das Bank Switching gewöhnen.
Prinzipiell ist auch der AVR-Assembler gut zu verstehen. Ist nur etwas umständlich, da man viel mit LD/ST bzw. IN/OUT arbeiten muß. Der 8051 ist da einfacher, da man viele Operationen direkt im RAM/SFRs ausführen kann. Er hat auch hübsche Kombibefehle (DJNZ, MOVC) für Schleifen und Tabellenzugriffe. Und auch Bitbefehle, mit denen man logische Gleichungen quasi direkt hinschreiben kann (ORL C,/Bit usw.)
SebiR schrieb: > Ich glaube, für Assembler ist der PIC tatsächlich etwas geeigneter, weil > weniger Befehle. Weniger Befehle sind ein Nachteil, aber kein Vorteil. Man bricht sich da schnell einen ab, wenn die Programme etwas größer werden. Hat man dagegen mehr Befehle, zwingt einen ja niemand, sofort alle zu benutzen. Aber sobald man komplexere Befehle braucht, freut man sich sehr, wenn es die schon gibt. Du kannst auch AVR- oder 8051-Programme so umschreiben, daß Du mit 35 Befehlen auskommst. Nur wird das weder Spaß machen, noch sonderlich lesbar sein. SebiR schrieb: > Man muss sich nur an das Bank Switching gewöhnen. Leute, die bereits andere Architekturen kennen, werden (und wollen) sich nie daran gewöhnen.
Ist vermutlich auch eher eine religiöse als eine technische Entscheidung. Ich habe Assembler auf dem PIC gelernt und bin damit gut zu recht gekommen. C dann aufm AVR.
Auch im Arduino AVR Umfeld kann man Assembler einsetzen. Allerdings kann der Editor damit nicht umgehen, man braucht einen externen. Automatisch Kompilieren, nur, wenn sich die *.S in einer Lib befindet. Wie schon gesagt wurde: Arduino Boards sind auch mit dem Atmel Studio nutzbar. Wäre wohl die bessere Umgebung um AVR Assembler zu üben.
Emil G. schrieb: > Deshalb meine Frage an euch: Eignet sich ein Arduino dafür genauso gut > wie Controller der Familien MSP430, 8051..., die ja für Einführungen > meist verwendet werden? Arduino hat nichts mit der Controller Familie. Es ist ein ziemlicher Unterschied, ob auf dem Arduino ein ATmega, ein Cortex-M3 oder sonstwas drauf ist.
Die Arduino IDE und das dazugehörige Framework setzen auf C++. Für den Einstieg in Assembler empfehle ich Dir das "alte" AVR Studio, denn da ist alles drin, was du brauchst. Sogar ein Debugger und ein handlicher Simulator. Als Hardware kannst du gerne Arduino Module verwenden. Du solltest dabei allerdings berücksichtigen, dass das AVR Studio (wie auch das neuere ATmel Studio) den Arduino Bootloader nicht unterstützen. Also musst du zum Flashen entweder a) in externes Tool (z.B. avrdude, eventuell mit GUI) benutzen. Das geht mit dem Bootloader, also direkt über den USB Anschluss des Arduino Moduls. oder b) einen Atmel kompatiblen ISP Programmieradapter verwenden. Den steckst du an den ISP Anschluss des Arduino Moduls an. Vielleicht gefällt Dir dieses Tutorial dazu: http://stefanfrings.de/avr_workshop/index.html Das alte AVR Studio kannst du mit offizieller Genehmigung von meiner Seite downloaden, falls Atmel es nicht mehr anbietet: http://stefanfrings.de/avr_tools/index.html Für andere Controller Familien benötigst du andere Hardware und andere Software. Fange erstmal mit AVR an, denn dafür findest du am meisten Anleitungen.
SebiR schrieb: > Man muss sich nur an das Bank Switching gewöhnen. und wenn man sich mit Assembler genug gequält hat dann ist Bank switching das Sahnehäubchen oben drauf ;-)
Stefanus F. schrieb: > Das alte AVR Studio kannst du mit offizieller Genehmigung von meiner > Seite downloaden, falls Atmel es nicht mehr anbietet Sorry, ich meinte natürlich Microchip.
Danke euch allen. Jetzt weiß ich schon um einiges mehr. Hab grade nachgesehen, hab einen at2560 :) Stefanus F. schrieb: > Für den Einstieg in Assembler empfehle ich Dir das "alte" AVR Studio, > denn da ist alles drin, was du brauchst. Sogar ein Debugger und ein > handlicher Simulator. Ist die AVR besser als die Atmel Studio, weil es weniger umfangreich und deshalb einsteigerfreundlicher ist? -Oder aus einem anderen Grund?
Die IDE "AVR Studio 4.x" ist weniger umfangreich und schneller. Für Assembler bietet das neue "Atmel Studio 7" meiner Meinung nach keine Vorteile. Ganz sicher ist das Atmel Studio komplexer zu bedienen. Es basiert auf Visual Studio von Microsoft, schleppt daher eine Menge Ballast mit sich, den du sicher nicht brauchen wirst. So mancher scheitert beim Atmel Studio schon daran, Quelltext-Dateien hinzuzufügen und Compiler Optionen (Aufrufparameter) zu ändern. Das AVR Studio ist deutlich überschaubarer gestaltet, darin findet man sich in der Regel ohne Hilfe zurecht. Es sei denn, du bist bereits mit Visual Studio vertraut, dann würde ich das nehmen.
Heute Assembler auf 8 Bit lernen zu wollen, ist ja auch kontraproduktiv. Warum bleibst du nicht einfach bei den MSP430? Schau dir mal den AVR Assembler an! Der hat nichts von der Eleganz der MSP430-Architektur.
Karl M. schrieb: > Emil G. schrieb: >> Hab grade nachgesehen, hab einen at2560 :) > > Was soll das sein? > > Ein Bug? Stell Dich doch nicht absichtlich dumm! Er hat ein Arduino Board mit ATmega2560. Vermutlich dieses: https://store.arduino.cc/arduino-mega-2560-rev3 Die Diskussion, welche CPU den elegantesten Assembler Befehlssatz hat, gehört hier nicht hin. Der TO hat klar gestellt, dass er Assembler lernen möchte, also auf Einsteiger-Niveau. Das kann er mit jedem Mikrocontroller machen, der nicht allzu kompliziert ist.
Danke Stefanus F. schrieb: > Stell Dich doch nicht absichtlich dumm! Er hat ein Arduino Board mit > ATmega2560. Vermutlich dieses: > https://store.arduino.cc/arduino-mega-2560-rev3 Ja das hatte ich, warum sollte man nicht den korrekten Typ nennen wollen?
SebiR schrieb: > Ich glaube, für Assembler ist der PIC tatsächlich etwas geeigneter, weil > weniger Befehle. Umgekehrt. Bei PIC braucht man normalerweise 2-3 Befehle, wo AVR nur 1 reicht. So wird Programm übersichtlicher und verständlicher. Als Beispiel: zwei Variablen addieren, die in den Registern sind. Bei AVR reicht 1 Befehl, PIC sollte noch Daten in W laden und danach irgendwo speichern.
:
Bearbeitet durch User
Maxim B. schrieb: > Umgekehrt. Bei PIC braucht man normalerweise 2-3 Befehle, wo AVR nur 1 > reicht. So wird Programm übersichtlicher und verständlicher. Ich habe Assembler auf 6502 gelernt, dann auf Z80, dann auf 8051, dann auf AVR. Den 8051 empfand ich dabei als am angenehmsten. Aber zum Lernen und auch für reale Anwendungen eignen sich alle gut. Heute empfehle ich AVR wegen der guten Informationslage und Verfügbarkeit.
Stefanus F. schrieb: > Den 8051 empfand ich dabei als am angenehmsten. Das kann ich nur zustimmen. Im 2000 habe ich Projekt gemacht, wo 2051 und 51 zusammen arbeiteten. Dabei habe ich das ohne Computer, einfach mit Pseudo-Assembler auf dem Papierblatt gemacht. Mit AVR geht das kaum, da HEX-Code viel komplexer ist.
> Die Diskussion, welche CPU den elegantesten Assembler Befehlssatz hat, > gehört hier nicht hin. Aha, und ein PIC ist also zu winzig: > Du kannst auch AVR- oder 8051-Programme so umschreiben, daß Du mit 35 > Befehlen auskommst. Nur wird das weder Spaß machen, noch sonderlich > lesbar sein. Natuerlich erleichtert ein orthogonaler und einigermassen vollstaendiger Befehlssatz die Assemblerprogrammierung. Und macht damit natuerlich auch das "Lernen" einfacher... Die SW-Tools von TI (IDE, Compiler, Debugger) fuer MSP430 sind mittlerweile auch kostenlos. Und zum "richtige" Debuggen gibt es guenstige Einsteigerboards. Deren Debug-Adapter kann fuer eigene Projekte ebenfalls genutzt werden. Leg den AVR wieder in dunklen Karton und lass ihn da blos liegen.
supergrobi schrieb: > Leg den AVR wieder in dunklen Karton und lass ihn da blos liegen. Ich finde AVR aber gerade für Assembler-Lernen sehr geeignet, abgesehen von C51 natürlich... 32-bit sind für Assembler zu kompliziert, dort lieber C.
Emil G. schrieb: > ziemlich enttäuscht muss ich gerade feststellen, dass im > Mikrocontrollerkurs Assemblerprogrammierung nur sehr oberflächlich > behandelt wird. Nun ja, Assembler ist zum Glück praktisch nicht mehr notwendig, wenn man von ganz speziellen Sonderfällen absieht. Zum einen sind die C Compiler inzwischen so hoch optimierend, dass der Output auf Wunsch extrem klein oder extrem schnell ist. Zum anderen decken Controller ein sehr weites Leistungs Spektrum ab und sind zudem noch extrem günstig zu haben. Wenn ich mit C nicht mehr auskomme, dann nehme ich einfach einen größeren Controller … Emil G. schrieb: > … mir macht das richtig Spaß. Na dann … … ist dir nicht zu helfen.
Maxim B. schrieb: > Als Beispiel: zwei Variablen addieren, die in den Registern sind. Bei > AVR reicht 1 Befehl, PIC sollte noch Daten in W laden und danach > irgendwo speichern. Anderes Beispiel: Wenn man eine Speicherzelle im RAM incrementieren will, dann braucht der AVR dafür 3 Befehle, der PIC schafft das mit einem!
Thomas E. schrieb: > Anderes Beispiel: Wenn man eine Speicherzelle im RAM incrementieren > will, dann braucht der AVR dafür 3 Befehle, der PIC schafft das mit > einem! Da aber die meisten MCU-Architekturen RISC mit Load-Store sein dürften, ist es vielleicht besser sich das direkt wie beim AVR anzugewöhnen... Der Cortex-M3 braucht auch 3 Befehle um eine Zahl zu inkrementieren (ldr,add,str). Der Cortex-M4 kann in drei Befehlen (ldr,uadd8,str) 4 8-Bit Additionen durchführen. Der Cortex-A8 kann in drei Befehlen (vldm, vadd.i8,vstm) 16 8-Bit Additionen durchführen. Welcher ist jetzt besser... :-)
Thomas E. schrieb: > Anderes Beispiel: Wenn man eine Speicherzelle im RAM incrementieren > will, dann braucht der AVR dafür 3 Befehle, der PIC schafft das mit > einem! Das ist völlig irrelevant. Letztlich muss auch der PIC drei Schritte ausführen. - RAM read - ADD - RAM write Auch die OP-Code Breite sagt wenig aus. Der Fetch einer 32 Bit CPU umfasst immer 4 Bytes (in einem Takt).
Hallo Emil G. Meine Empfehlung für Assembler-Programmierer: dsPIC/PIC24. Der Befehlssatz ist Assembler-freundlich und deutlich besser als beim ATMEGA. Und sehr gut dokumentiert. Als IDE verwende ich die alte MPLAB IDE 8.91 Version. Die neuere MPLABX iat mir zu aufgeblasen. Den IDE-Editor verwende ich nur beim Debuggen, zum schreiben PSPad. Der dsPIC ist vor allem für Assembler-Programmierer interessant, C-Programmierer merken nichts und werden beim STM32 bleiben. Ich habe mir mal die Frechheit erlaubt und einen Bericht für Anfänger verfasst: http://www.hcp-hofbauer.de/indexwups3.htm Gruß Peter
> Letztlich muss auch der PIC drei Schritte ausführen. > - RAM read > - ADD > - RAM write Noch einer der die PIC-Architektur nicht begriffen hat. - Lade Operand1 in das Operandenhuelfsregister (W) - Addiere Operand1 zu Operand2 Wobei Operand2 natuerlich schon an seinem Platz/Register ist. Das blosse Inkrementieren schafft der PIC tatsaechlich mit 1 Befehl.
Thomas W. schrieb: > Letztlich muss auch der PIC drei Schritte ausführen. > - RAM read > - ADD > - RAM write Das ist aber irrelevant, weil es trotzdem nur ein Befehlszyklus ist. Nicht irrelevant ist übrigens hier, daß beim PIC diese Operation nicht unterbrochen werden kann. Maxim's Argument war aber die Anzahl der zu codierenden Befehle und damit die Übersichtlicheit und leichtere Erlernbarkeit durch übersichtlichere Programme. Mir ging es eigentlich eher darum, zu zeigen, daß man sich immer Beispiele 'raussuchen kann, um "seine" Architektur besser darzustellen.
Wenn ein Operand schon in einem Register steht, kann der AVR mit einem einzigen Takt etwas dazu addieren. Dass Variablen Dauerhaft in Registern liegen, ist bei AVR Assembler Anwendungen durchaus üblich.
Wir vergleichen also rote Äpfel mit grünen Äpfeln und mit Birnen. Glaubt ihr ernsthaft, diese Pillepalle Details sind schon jetzt für den TO wichtig?
Wenn man durch aeussere Umstaende zum Einsatz einer gewissen Architekur gezwungen wird, spielt das > Pillepalle Detail ueberhaupt keine Rolle. Der TO moechte jedoch Assembler lernen. Die Eleganz einer Architektur die sich eben auf Orthogonalitaet und Vollstaendigkeit gruendet wird von dir ja negiert. Die macht jedoch das Lernen lehrreich und damit einfach. Der AVR (und die PICs auch) ist eine so alte Kruecke, die gehoert allenfalls in Museum. Und nicht als Lernhilfsmittel empfohlen.
Wenn du weiter rein gehst wirst du sehen dass die AVR-Opcodes sehr eigen zusammengesetzt werden, und einige IO-Bereiche komisch adressiert werden müssen weil sie irgendwie woanders eingeblendet wurden.
Ich meine natürlich nicht dass der AVR schlecht wäre, immerhin ist er sehr gut für schnelle Echtzeit-Spielereien geeignet!
Danke euch allen für diese angeregte Diskussion. Ich lese hier unterm Strich raus, dass manches gegen einen AVR und anderes gegen einen PIC sprechen würde. Fällt euch etwas ein, weshalb ihr mir von so einem MSP430-LaunchPad abraten würdet? An den ~10€ soll es nun wirklich nicht scheitern...
> Fällt euch etwas ein, weshalb ihr mir von so einem MSP430-LaunchPad > abraten würdet? An den ~10€ soll es nun wirklich nicht scheitern... Ja nuex. Ausser das die MSP430 eine stellenweise "seltsame" Peripherie und bis auf die Dickschiffe auch recht wenig RAM haben. Aber der Befehlssatz ist Klasse!
Thomas E. schrieb: > Wenn man eine Speicherzelle im RAM incrementieren > will, dann braucht der AVR dafür 3 Befehle, der PIC schafft das mit > einem! PIC hat nicht einmal ununterbrochene RAM-Speicher. Man sollte dazu noch Verluste für Banking enkalkulieren. Wenn es um Geschwindigkeit geht, arbeitet AVR mit Quarz-Frequenz. In PIC wird Quarz-Frequenz zuerst auf 4 dividiert! D.h. mit 20 MHz Quarz macht AVR 20 000 000 kompliziertere Befehle und PIC nur 5 000 000 weniger kompliziertere Befehle!
:
Bearbeitet durch User
supergrobi schrieb: >> Fällt euch etwas ein, weshalb ihr mir von so einem MSP430-LaunchPad >> abraten würdet? An den ~10€ soll es nun wirklich nicht scheitern... > > Ja nuex. > > Ausser das die MSP430 eine stellenweise "seltsame" Peripherie > und bis auf die Dickschiffe auch recht wenig RAM haben. > > Aber der Befehlssatz ist Klasse! Hast du ja heute schonmal gemeint. Die Idee mit dem AVR war ja nur, weil ich schon so ein Arduino-Board da habe. Wenn sonst niemandem was gravierendes einfällt, dann hol ich mir so ein MSP430-LaunchPad. supergrobi schrieb: > Schau dir mal den AVR Assembler an! Der hat nichts von der > Eleganz der MSP430-Architektur. Fällt dir da ein Beispiel ein? -nur aus Interesse...
Emil G. schrieb: > Fällt euch etwas ein, weshalb ihr mir von so einem MSP430-LaunchPad > abraten würdet? An den ~10€ soll es nun wirklich nicht scheitern... Die MSP430 sind m.W. hauptsächlich auf Low-Power optimiert. Das ist an sich nicht verkehrt, aber wenn man sich da detailliert rein vertieft ist man quasi auf einen Anwendungsfall spezialisiert. Wenn man jetzt z.B. ARM lernen würde, kann man das Wissen auf alle möglichen Gebiete anwenden; allerdings ist der ARM Assembler nicht gerade anfängerfreundlich.
supergrobi schrieb: > Der AVR (und die PICs auch) ist eine so alte Kruecke, > die gehoert allenfalls in Museum. > Und nicht als Lernhilfsmittel empfohlen. So ein Quatsch. Die Grundlagen von Assembler kannst du mit jeder beliebigen CPU erlernen. Hinderlich wäre höchsten allzu komplexe Peripherie rund um die CPU. Die ganze AVR Serie wird nicht nur aktuell produziert und benutzt, sondern auch weiter entwickelt. Aber selbst wenn das nicht der Fall wäre, spielt es keine Rolle. Deine MSP430 Serie ist jedoch mit ihren 16 Bit inzwischen eine seltsame Besonderheit.
Meiner Meinung nach ist gibt es im Moment nur zwei Assembler, mit denen man sich beschäftigen sollte: 1. ARM 2. RISC V Nimm also irgendein ARM-Board z.B. den Arduino Zero mit Debugging Interface und versuche es damit. ARM hat den höchsten Verbreitungsgrad im Gegensatz zu den anderen MCUs und wird zunehmend die anderen Architekturen verdrängen. Der ARM-Cortex-M0 Befehlssatz hat 56 Instruktionen. Das Ganze ist also ziemlich übersichtlich zum lernen. Es bringt keine Vereinfachung einen 8051, AVR oder sonstige 8-Bitter zu nehmen.
> Fällt dir da ein Beispiel ein? -nur aus Interesse... Da hoffe ich mal das du der englischen Zunge maechtig bist und empfehle die Lektuere des Dokuments von TI: SLAA024 "MSP430 Family Mixed-Signal Microcontroller Application Reports" von Herrn Lutz Bierl (besonders die Kapitel 8, 9 und 7). Da gibt es nebenbei auch gleich eine gute Einfuehrung in die Assemblersprache des MSP430. Die MSP430 sind nebenbei eine deutsche Entwicklung.
> Meiner Meinung nach ist gibt es im Moment nur zwei Assembler, mit denen > man sich beschäftigen sollte: > > 1. ARM > 2. RISC V Das sind ja nicht nur zwei :-). Den einfachen M0 hast du ja schon erwaehnt. Dann kaemen dann im Embeddedbereich noch M0+, M3, M4 und vllt noch M7 dazu. Von den dicken Brummern (A/R) noch gar nicht zu reden. Ab ARM M3 wird es doch deutlich umfangreicher und komplexer. Aber wer mit einem MSP430 in Assembler klar kommt, wird das auch spaeter leicht mit einem ARM M0 schaffen, sofern er den nicht gleich in C programmiert.
>Den einfachen M0 hast du ja schon erwaehnt. Dann kaemen dann >im Embeddedbereich noch M0+, M3, M4 und vllt noch M7 dazu. Was willst Du damit sagen? Hast Du Dich schon mal mit dem Befehlssatz befasst?
> Was willst Du damit sagen? Hast Du Dich schon mal mit dem Befehlssatz > befasst? Ich kenne noch droellfzig andere Controller. Mindestens.
Hallo Emil G.! Ich beschäftige mich auch gerade mit solchen Sachen (Assermbler + C auf Arduino Uno (ATmega328p). Auf dem Arduino Mega (ATmega2560) ist alles ähnlich) Zum Einstieg versuche ich immer auf IDEs und so zu verzichten und arbeite mit den Kommandozeilen-Tools (auf die eine IDE ja intern auch zugreift). Auf https://www.instructables.com/id/Command-Line-AVR-Tutorials/ gibt es Tutorials zum Thema Im ersten Tutorial wird erklärt, wie man mit Editor, AVR-Tools und AVRdude zum Ziel kommt. Allerdings wird von Linux auf dem Entwicklungsrechner ausgegangen. Dort heisst der Assembler avra. Unter Windows läuft das alles ähnlich, hier nimmt man avrasm2 (musst mal bei den Kommentaren zum Tutorial 1 gucken) Ich habe dort nur die ersten 3 Tutorials durchgearbeitet, mir war das zu unsystematisch. Wenn das erste LED_Blink erstmal läuft, kann man sich auch andere AVR Tutorials suchen, wobei die verschiedenen ATmega sich in den Registern mehr oder weniger unterscheiden. Da muss man sich dann ggf mal durch die Datasheets wühlen. Es gibt noch einen anderen Assembler (avr-as). Der unterstützt aber eine abweichende Syntax (z.B. andere Assembler-Direktiven).
Man könnte einen Cortex M0 Simulator auf eine AVR laufen lassen https://github.com/bravegnu/usim Das wär doch mal was ;-)
supergrobi schrieb: > Ich kenne noch droellfzig andere Controller. > Mindestens. Und ich wette, dass du nicht einen einzigen davon richtig kennst, sondern einfach nur ein Schwätzer bist.
Emil G. schrieb: > Oder sind Arduinos schon eher zu komplex zum Einstieg Diese Fragestellung solltest Du Dir selbst beantworten können, mit minimal eigenem Denkvermögen. Was ist ein Arduino: Schaue den Typ an (Uno, Nano, ProMini ..) und besorge von der Arduino-Webseite den Schaltplan. Gucke den Schaltplan an: Ach ja, ein Mikrocontroller, meistens ein ATmega328 mit der notwendigen Beschaltung (Quarz, Spannungsregler) drum herum. Wann wird aus einem Mikrocontroller ein Arduino: Er bringt, im Gegensatz zum fabrikfrischen Controller, schon etwas Software mit - den Bootloader. Wie bekommt man Software in einen fabrikfrischen ATmega: Das Datenblatt erklärt das, es geht über seine Programmierschnittstelle ISP. Im Schaltplan findet man 6 Pins, auf die diese herausgeführt ist. Du brauchst natürlich ein Stück Programmierhardware zum AT328 passend. Du hast also für kleines Geld ein fertiges Stück Hardware, niemand zwingt Dich, die Arduino-Entwicklungsumgebung und deren Bootloader zu nutzen. Also, genau so, wie es einige aus diesem Forum tun: Der Arduino kann einfach als Controller betrachtet werden und natürlich auch in Assembler programmiert werden, da ist nichts "zu komplex" dran. Ist mein Ton jetzt böse oder arrogant ... ja, dann sei es so: Beitrag "Arroganz-Bundeswettbewerb" - ich stelle es genau so dar, wie ich es sehe. Wer programmieren will, muss sich auch mit der Hardwareumgebung befassen, und die bietet der Arduino eben günstig und fertig an. In Deinem Fall würde ich auf den ProMini schauen, den der Chinese für niedrig einstellige Euro liefert, es spricht aber wenig dagegen, auch einen Uno zu verwenden.
Manfred schrieb: > es spricht aber wenig dagegen, auch > einen Uno zu verwenden. Vor allen Dingen spricht nichts dagegen, den Mega zu nehmen. Den hat er nämlich schon.
Stefanus F. schrieb: > Ich habe Assembler auf 6502 gelernt, dann auf Z80, dann auf 8051, dann auf AVR. Auf 6504 habe ich mit ASM angefangen, danach eine eigene Europakarte mit 6502, 6532 und 6522 und Akkugepuffertem RAM gemacht. Danach kamen Controller 68HC805, wieder auf einer eigenen Platine mit einem achtstelligen Display drauf - im Prinzip das, was viele Jahre später für einen Bruchteil des Preises der Arduino gekonnt hätte. x80xx war nicht relevant, 68xxx hatten wir im Menge in Serienprodukten im Einsatz. Dann kam irgendwann der berufliche Abschied vom Lötkolben in Richtung Server und Jahre später der Bedarf an Mikrocontrollern für private Zwecke. Ich habe keine Bock mehr auf Assembler und bin aktuell mit Arduinos samt deren Kinder-IDE gut bedient. Irgendwie schade, die alte Hardware 6502 / 68x05 habe ich noch verfügbar, für 6502 sogar noch einen Hardware-Emulator - aber die Zeiten ändern sich, soll ich mich damit noch quälen? chris schrieb: > 6502 wäre vielleicht auch nicht schlecht: > http://www.6502asm.com/ Ich glaube, alles, was ich damit gemacht habe, könnte ich heute mit dem ATmega in C++ wesentlich einfacher haben.
Stefanus F. schrieb: > Deine MSP430 Serie ist jedoch mit ihren 16 Bit > inzwischen eine seltsame Besonderheit. Naja, ich würde das als etwas verdrehte Sichtweise betrachten und sagen, dass die AVRs mit ihren 8 Bit eine seltsame Besonderheit sind. Auf 8 Bit verkürzte Register haben nämlich gegenüber 16 Bit langen Registern keinerlei TECHNISCHEN Vorteil (der möglichweise niedrigere Preis wäre ein ÖKONOMISCHER Vorteil, kein technischer), aber dafür den Nachteil, dass man für Adressrechnungen immer mit zwei Registern basteln muss. Ich bin vor Jahrzehnten mit dem Z80 großgeworden. Wenn ich heute freie Wahl für den Einstieg hätte, würde ich vermutlich den MSP430 wählen -- 8 Bit würde ich mir nicht mehr antun wollen, und ARM wäre mir eine Nummer zu groß.
>Auf 8 Bit verkürzte Register haben nämlich gegenüber >16 Bit langen Registern keinerlei TECHNISCHEN Vorteil Genau. Und deshalb gehen wir lieber gleich auf 32 Bit mit dem ARM Cortex M0 mit seinen übersichtlichen 56 Instruktionen. Dessen Code ist dann noch aufwärtskombatibel zum M3, M4 und M7. Dann sind wir wenigstens aktuell, wenn es schon Assembler sein muss.
chris schrieb: >>Auf 8 Bit verkürzte Register haben nämlich gegenüber >>16 Bit langen Registern keinerlei TECHNISCHEN Vorteil > > Genau. Und deshalb gehen wir lieber gleich auf 32 Bit > mit dem ARM Cortex M0 mit seinen übersichtlichen > 56 Instruktionen. ... oder man bleibt eben beim MSP430 mit 27 Instruktionen.
>... oder man bleibt eben beim MSP430 mit 27 Instruktionen. Beim Spielchen "wer bietet weniger" biete ich die J1-CPU wie sie im FT800 Display Treiber eingebaut ist mit 16 Befehlen: https://nanode0000.wordpress.com/2017/04/08/exploring-the-j1-instruction-set-and-architecture/
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.