Frage:
Welche Sprache verwenden Mikrocontroller außer C?
user2635745
2013-09-08 01:25:29 UTC
view on stackexchange narkive permalink

Ich möchte Geräte herstellen und lese im Internet über Mikrocontroller und andere Dinge. Ich frage mich, ob es neben C noch andere Sprachen gibt, mit denen Mikrocontroller programmiert werden können.

Im Allgemeinen verwenden Sie C oder Assembly, um eine MCU zu programmieren. Möglicherweise gibt es jedoch Compiler für andere Sprachen, die ausführbare Dateien für die von Ihnen ausgewählte MCU erstellen können. Einige Lernwerkzeuge bieten beispielsweise BASIC-Compiler.
Wenn Sie gerade erst anfangen, werfen Sie einen Blick auf Arduino, ein sehr einfaches Framework zum Ausführen von ATMega-Geräten. Sehr benutzerfreundlich.
Sie können PICAXE ausprobieren (verwendet einige Microchip PIC-Geräte). Sie programmieren es mit BASIC - was leichter zu verstehen ist als C, wenn Sie gerade erst anfangen.
Gustavo Litovsky, ich weiß, ich denke, ich werde mit Arduino beginnen, danke.
Welches Arduino Board eignet sich am besten für Anfänger?
@user2635745 Jedes Board reicht aus, aber für Anfänger würde ich so etwas wie das Starter-Kit empfehlen: http://arduino.cc/en/Main/ArduinoStarterKit. Es enthält einfache Tutorials und alle zusätzlichen Teile (Drucktasten, LEDs, ...), die Sie zum Erstellen einiger netter Projekte benötigen.
Fünf antworten:
#1
+17
us2012
2013-09-08 01:33:50 UTC
view on stackexchange narkive permalink

Chips verwenden C überhaupt nicht direkt. Sie haben Befehlssätze, die zwischen verschiedenen Architekturen stark variieren.

Als sehr einfache Abstraktion dieser Befehlssätze bieten die meisten Hersteller einen Assembler an, mit dem Sie Programme übersetzen können, die in der entsprechenden Assemblersprache geschrieben sind (was in etwa eine besser lesbare Form der Maschinenanweisungen ist) ) in binäre Form, die Sie auf Ihren Chip hochladen können.

Auf der nächsthöheren Ebene gibt es Sprachen wie C. C ist auf dieser Ebene bei weitem die dominanteste Sprache für die Mikrocontroller-Programmierung. Für einige Architekturen finden Sie auch den ungeraden Pascal-, BASIC- oder vielleicht Fortran-Compiler.

Theoretisch ist das einzige, was Sie benötigen, um eine bestimmte Sprache für eine bestimmte Architektur zu verwenden, ein geeigneter Compiler (obwohl einige wie Java, C # usw. hängen normalerweise von Laufzeitumgebungen ab, und diese sind für die meisten Benutzeroberflächen unerschwinglich ressourcenhungrig. In der Praxis sind nicht so viele Compiler verfügbar.

Ich würde sagen, Basic ist häufiger als Fortan, aber ich habe keine besonderen Beweise für diesen Glauben.
Du hast wahrscheinlich Recht. Es scheint, dass es für die meisten Architekturen verschiedene Arten von BASIC gibt. Ich werde meine Antwort entsprechend bearbeiten.
Bekomme ich eine Anweisung mit dem Mikrocontroller?
Alle Mikrocontroller werden mit Datenblättern und einer Art Toolchain geliefert, die auf der Website des Herstellers verfügbar sind. Wenn Sie jedoch ein Anfänger sind, kann dieses Material für Sie überwältigend sein. Suchen Sie nach einem Kit, das sich ausdrücklich an Anfänger richtet. Ein Arduino ist eine vernünftige Wahl, es gibt viele Anfänger-Tutorials und Community-Foren.
#2
+4
tcrosley
2013-09-08 04:15:17 UTC
view on stackexchange narkive permalink

Wie us2012 sagte, führt ein µc die C-Sprache überhaupt nicht aus. Stattdessen wird die Maschinensprache ausgeführt, bei der es sich um eine binäre Darstellung des Befehlssatzes des µc handelt, mit Feldern für einen Opcode (was zu tun ist) und entweder Registerspezifizierern und / oder Adressen (aus denen die Daten abgerufen und / oder gespeichert werden). Assemblersprache ist eine symbolische Darstellung dieser binären Maschinensprache.

Im Fall der C-Sprache werden diese Maschinenanweisungen von einem C-Compiler generiert, der fast immer auf einem vom µc getrennten Computer ausgeführt wird (eine Ausnahme ist Embedded Linux, zu dem auch der gcc-Compiler gehört) auf einem µc mit ausreichenden Ressourcen zum Ausführen eines Compilers).

Wenn der Compiler auf einem PC ausgeführt wird, wird dies als Cross-Compiling bezeichnet. Jede separate Quelldatei, die die C-Sprachanweisungen enthält, wird separat kompiliert, und die Ausgabe jeder wird vom Linkerprogramm zu einer einzigen herunterladbaren Datei kombiniert. Diese herunterladbare Datei enthält die oben genannten Anweisungen für die Maschinensprache und kann direkt auf dem µc ausgeführt werden.

Wenn Sie eine andere Sprache auf dem µc ausführen möchten, benötigen Sie einen anderen Compiler für diese Sprache. Es gibt jedoch eine Reihe von Sprachen, die nicht zu Maschinencode kompiliert, sondern zu Bytecodes kompiliert werden. Diese können nicht direkt vom µc ausgeführt werden, sondern müssen von einem auf dem µc ausgeführten Interpreter ausgeführt werden (eine Variante besteht darin, die Bytecodes beim ersten Ausführen durch den Interpreter in Maschinensprache zu kompilieren).

#3
+4
Brian Drummond
2013-09-08 15:09:38 UTC
view on stackexchange narkive permalink

Eine weitere Kandidatensprache für die Programmierung von Mikrocontrollern ist Ada. Es bietet sehr gute Möglichkeiten für die Programmierung auf niedriger Ebene sowie eine bessere Erkennung bestimmter Fehlertypen, bevor Sie zum Ausführen des Programms gelangen. Ich finde, dies hilft mir, mich erheblich schneller zu entwickeln als in C. Die resultierende ausführbare Datei kann genauso sein klein wie C, nicht so überraschend, wenn Sie feststellen, dass der größte Teil des Gnat Ada-Compilers der gleiche Optimierer und Codegenerator ist wie der gängigste C-Compiler (gcc).

Ein weiterer Vorteil ist, dass der Code viel mehr sein kann lesbar als C; eine andere Möglichkeit, Probleme leichter zu beseitigen.

Neben den kleinsten Mikrocontrollern bietet es auch gute objektorientierte und Multitasking-Funktionen. Das Äquivalent eines RTOS ist in die Sprache integriert.

Zwei Nachteile:

Ada hat einen unverdient schlechten Ruf, der von einer 30 Jahre alten Version geerbt wurde, der Sie heutzutage wahrscheinlich nicht begegnen werden - Ihnen kann ziemlich emotionale Reaktionen dagegen hören. Ada-2005 ist eine ganz andere Sprache ...

Und nicht jeder Mikrocontroller verfügt über einen Ada-Compiler und eine Toolchain. Zwei beliebte sind die Atmel AVR (damit Sie Ihre Arduino-Boards in Ada programmieren können) und die Texas Instruments MSP430 -Serie. Es gibt auch Gnat-Builds für viele Varianten des ARM-Prozessors, einschließlich der Raspberry Pi Debian-Distribution.

Jedes andere GCC-Ziel kann möglicherweise Ada unterstützen, obwohl das Erstellen von GCC normalerweise kein triviales Projekt ist ...

http://playground.arduino.cc/Code/AVR-Ada - Neues Projekt auf meiner To-Do-Liste: Programmieren Sie das Blink-Beispiel auf einem ATtiny mit Ada.
Grundsätzlich ist das eigentliche Projekt einfach, wenn Sie die Tools installieren und zum Laufen bringen können! Wenn Sie von Grund auf neu erstellen, stellen Sie sicher, dass Sie AVR-Ada 1.2.x verwenden, das auf gcc4.7 oder höher basiert. gcc4.5 hatte einen Fehler, der verhinderte, dass der eleganteste Ansatz funktionierte ...
@BrianDrummond, Ich habe versucht, mich mit einer Ada für AVR-Toolchain einzurichten, aber alle, die ich finden kann, sind entweder nicht mehr existierende Github-Repositorys oder werden von den Anbietern nicht mehr unterstützt oder sind nicht mehr verfügbar.Kennen Sie aktuelle Ada-Compiler-Toolchains für AVR-Mikros?(vorzugsweise kostenlos oder Open Source)?
#4
+1
Macke
2013-09-08 11:08:44 UTC
view on stackexchange narkive permalink

Wie die anderen Antworten sagen, werden die meisten uCs mit Toolchains geliefert, die C und einige andere ähnliche Sprachen unterstützen, da größere Sprachen, insbesondere solche mit Speicherbereinigung, sehr ressourcenhungrig sind.

Aber im Geiste von Atwoods Gesetz: "Alles wird irgendwann nach Javascript portiert", gebe ich Ihnen den Espruino, "den weltweit ersten JavaScript-Mikrocontroller für Anfänger oder Experten.":

enter image description here

Amüsanter Hinweis: Dass uC Java nicht nativ ausführt. Es ist ein Standard-uC, in dem zufällig ein Java-Interpreter in Flash vorinstalliert ist. Die uC führt "Maschinencode" aus, genau wie jede andere uC.
Dies ist jedoch nicht weniger eine Antwort als diejenigen, die grundlegende Dolmetscher erwähnen. Was das Gerät selbst betrifft, so ist es die Art von Projekt, das von der Leistungsfähigkeit seines Software-Stacks lebt oder stirbt, und es scheint, dass es eine nicht unterstützte Version gibt, die man versuchen kann, auf den Discovery Boards zum Laufen zu bringen, die sowohl bereits verfügbar sind als auch billiger als der Kickstarter-Vorschlag.
@ChrisStratton Ich habe nicht gesagt, dass es "weniger eine Antwort" ist, ich habe es nicht abgelehnt. Ich nannte es eine "amüsante Notiz". Sei nicht so argumentativ. Wenn Sie bei der Beantwortung einen Benutzernamen eingeben, erhält die Person, auf die Sie antworten, eine Benachrichtigung. Andernfalls könnten Ihre Kommentare leicht übersehen werden.
@David Kessner: Hier geht es um "JavaScript", nicht um "Java". Beide sind ganz unterschiedliche Sprachen.
#5
  0
ridecontrol53
2013-09-08 19:32:46 UTC
view on stackexchange narkive permalink

Wie einer der anderen Benutzer unter Ihrer Frage kommentierte, ist Arduino sehr beliebt und vielseitig in Bezug auf Projekte und Verwendungen. Es hat eine eigene Sprache, die C sehr ähnlich ist ... zum Beispiel das Deklarieren von Bibliotheken, Variablen und das Ausführen von Funktionsaufrufen. Es hat jedoch einige seiner eigenen inhärenten Funktionen, für die Sie die Syntax lernen müssen.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...