Forum: Mikrocontroller und Digitale Elektronik Welche Programmiersprache Mikroprozessor


von Lorenz (Gast)


Lesenswert?

Guten Abend

Da ich in der letzten Zeit vermehrt Zeit habe möchte ich endlich aus 
menem Arduino Schatten springen und richtig schreiben lernen.

Ich möchte Atmega und Attiny eventuell MSP430 programmieren, in 
Anwendungen wie zB. Sensoren auslesen und über Netzwerk ICs Daten senden 
sowie die Ansteuerung von einfacher Hardware, zB. TRX ICs (Si4060) und 
von LCD Anzeigen.
Also eigentlich keine kompplexen Sachen...

Welche Sprache eignet sich dafür?

Uch habe folgende in der näheren Auswahl:

C mit Atmel Studio- gibt es irgendwo dazu eine komplette 
Einstiegsanleitun für Widows?

Ada, ist das aktuell mit kostenloser Software möglich, und wie sinnvoll 
ist es als Privatperson?
Wie viel komplexer werden die oben genannten Sachen damit?

Rust, siehe "Ada"

C++ , auch hier.

Es sollten jeweils Compiler vorhanden sein mit denen ich für die 
Prozessoren kompilieren kann.

Schönen Abend

von zitter_ned_aso (Gast)


Lesenswert?

siehst du ;-)

mit Arduino schon einiges gemacht und einfachste Fragen kannst du nicht 
beantworten. Das ist Arduino.


Linke Seite ---> "AVR" (dort gibt es sogar Tutorials dazu)

von zitter_ned_aso (Gast)


Lesenswert?

zitter_ned_aso schrieb:
> Linke Seite ---> "AVR" (dort gibt es sogar Tutorials dazu)


Ähm, da fehlt bei Software "MPLAB X IDE". (wäre gut das zu ergänzen)

von Lorenz (Gast)


Lesenswert?

Guten Abend !
Naja, ich kann mir das eigentlich schon beantworten?
Nur was hilft mir das?
Ich möchte es ja von anderen konkret wissen, im Internet ließt man 
jeweils alles von "sehr gut" bis "bescheuert".

von Stefan F. (Gast)


Lesenswert?

Lorenz schrieb:
> gibt es irgendwo dazu eine komplette
> Einstiegsanleitung für Windows?

Meinst du eine Anleitung, wie man in C Programmiert, oder eine Anleitung 
für einen bestimmten Mikrocontroller oder eine Bedienungsanleitung für 
das Atmel Studio?

C lernt man am Besten zunächst ohne Mikrocontroller. Für den Anfang ist 
die Qt Creator IDE einfach zu installieren und Anwenderfreundlich - 
zudem eignet sie sich auch zur Programmierung von Mikrocontrollern.

von my2ct (Gast)


Lesenswert?

Lorenz schrieb:
> Da ich in der letzten Zeit vermehrt Zeit habe möchte ich endlich aus
> menem Arduino Schatten springen und richtig schreiben lernen.

Dann bleib doch bei C++ mit dem GCC

von Garbage In Garbage out (Gast)


Lesenswert?

Lorenz schrieb:

> Naja, ich kann mir das eigentlich schon beantworten?
> Nur was hilft mir das?

Wenn Dir nicht mehr zu hgelfen ist, was willste dann hier? 'ne Portion 
Mitleid für umsonst??

von zitter_ned_aso (Gast)


Lesenswert?

ohne Arduino ---> dann C.

Aber vorher ein paar Tutorials zu C am Computer durchgehen.

von Lorenz (Gast)


Lesenswert?

Stefanus F. schrieb:
> Lorenz schrieb:
>> gibt es irgendwo dazu eine komplette
>> Einstiegsanleitung für Windows?
>
> Meinst du eine Anleitung, wie man in C Programmiert, oder eine Anleitung
> für einen bestimmten Mikrocontroller oder eine Bedienungsanleitung für
> das Atmel Studio?
>
> C lernt man am Besten zunächst ohne Mikrocontroller. Für den Anfang ist
> die Qt Creator IDE einfach zu installieren und Anwenderfreundlich -
> zudem eignet sie sich auch zur Programmierung von Mikrocontrollern.

Also
Erfahrung habe ich folgende:
Arduino, einfache SW mit Libarys
C++ am PC für eine .exe Sachen (Berechnungen)

Jeweils mit Eclipse und Dev C++

Bzgl. Anleitung Suche ich einfach etwas durchgängiges, derzeit habe ich 
einen Programmieradapter und ATnmel Studio, damit kann ich den Prozessor 
seinen "Namen" auslesen aber das wars schon.
Wie geht es weiter, ein Start wo Sachen grundlegend erklärt werden wäre 
nett.

von Stefan F. (Gast)


Lesenswert?

Lorenz schrieb:
> Bzgl. Anleitung Suche ich einfach etwas durchgängiges

http://stefanfrings.de/mikrocontroller_buch/index.html

von PittyJ (Gast)


Lesenswert?

Ich nehme C++ für alle Plattformen.
Warum auf Objekte und Kapselung verzichten?

von Wolfgang (Gast)


Lesenswert?

Lorenz schrieb:
> Bzgl. Anleitung Suche ich einfach etwas durchgängiges, derzeit habe ich
> einen Programmieradapter und ATnmel Studio, damit kann ich den Prozessor
> seinen "Namen" auslesen aber das wars schon.

Um nicht immer mit dem Programmieradapter rumhantieren zu müssen, wäre 
ein Bootloader auf dem Zielsystem ein erste Schritt - jedenfalls wenn 
das Ding über irgendeine PC-taugliche Schnittstelle verfügt.

von Larry (Gast)


Lesenswert?

Fuer den 8051 koennte man auch PL/M51 in die engere Wahl ziehen.

Praktisch alles was bei "C" kritisiert wird, ist da sauber geloest.

von Lorenz (Gast)


Lesenswert?

Stefanus F. schrieb:
> Lorenz schrieb:
>> Bzgl. Anleitung Suche ich einfach etwas durchgängiges
>
> http://stefanfrings.de/mikrocontroller_buch/index.html

Ok, wirklich gut, dann wird es wahrscheinlich C werden!

Trotzdem, irgendwie geht mir ADA nicht aus dem Kopf, gibt es da eine 
ähnliche PDF Sammlung?
Es soll ja bei weitem weniger Fehler als C produzieren und ich muss ja 
nicht den "normalen" Weg gehen, es ist ja fürs Hobby.


Danke für die Hilfe bisjer

von A. S. (Gast)


Lesenswert?

Lorenz schrieb:
> Ok, wirklich gut, dann wird es wahrscheinlich C werden!
>
> Trotzdem, irgendwie geht mir ADA nicht aus dem Kopf, gibt es da eine
> ähnliche PDF Sammlung?

Ich möchte meinen ersten Marathon laufen. Welche Schuhe dafür? 
Laufschuhe, OK. Aber mit Reitstiefeln soll man auch lange Strecken 
bewältigen können. Oder doch Holzschuhe?

Antwort: es ist egal. Nimm das, was da ist. Und wenn Du das 3 Mal 
gemacht hast, dann probiere auch gern Mal Holzschuhe.

von Manfred (Gast)


Lesenswert?

Lorenz schrieb:
> im Internet ließt man

Dann lasse das Lesen besser sein, bevor Dich die Ideen verlassen.

PittyJ schrieb:
> Ich nehme C++ für alle Plattformen.

Ich glaube, dass das aktueller Standard ist: Beliebige 
Hardwareplattformen werden in C / C++ betan, solange es nicht extrem 
zeitkritisch ist.

von Stefan F. (Gast)


Lesenswert?

Lorenz schrieb:
> Trotzdem, irgendwie geht mir ADA nicht aus dem Kopf

Ich kann Dir bei ADA nicht helfen, kenne ich nicht. Es ist immer gut, 
mehrere Programmiersprachen zu erlernen. Aber C/C++ muss dabei sein. Im 
Mikrocontroller Umfeld ist das einfach der Platzhirsch, wie Windows auf 
dem Desktop PC.

Früher oder später wirst du mit C/C++ Quelltexten konfrontiert sein - 
sei es nur als Modul/Plugin. Praktisch alle Programmiersprachen haben 
Adapter für C/C++ Bibliotheken.

von PittyJ (Gast)


Lesenswert?

Fast alle Beispiele oder Libraries sind in C/C++. Da ist nichts in Ada.
In 30 Jahren Programmiererleben ist mir auch noch keine Anwendung, sei 
es PC oder Microcontroller, in Ada untergekommen.

Das heisst nicht, dass Ada schlecht wäre. Nur in der freien Wildnis 
trifft man Ada eher selten.

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

die AVR- Mikrocontroller wie von Dir genannt, kannst Du in C (AVRGCC) 
oder Assembler programmieren. Mit Assembler lernst Du die Innereien des 
Prozessors gut kennen, welches Dir für C einige Vorteile bietet. Mittels 
C bleiben Dir sonst einige Details der Hardware verborgen oder Du 
erkennst deren Relevanz nicht. Am besten wäre, beides zu können. Mit 
Kenntnissen in C alleine lassen sich trotzdem umfangreiche und 
komplizierte Programme erstellen.

Ich habe früher Assembler gelernt mit dem At90S2313, das war schon 
aufwändig genug. Aus heutiger Sicht halte ich dieses Modell 
für"überschaubar". Für erste Experimente in C war er auch gut geeignet.

Tutorials gibt es hier auf dieser Seite genügend zu finden. Probiere 
halt mehrere aus.


MfG

von (Gast)


Lesenswert?

In Wirklichkeit sind Sprachen wie BASIC, Pascal, C, Ada und auch C++, 
Java und Rust nicht so unterschiedlich (von ein paar wenigen Dingen 
abgesehen). Die unterscheiden sich hauptsächlich in der Syntax.

Ganz etwas anderes ist FORTH, das schadet m.E. auch nicht sich das mal 
genauer anzuschauen. Es gibt recht brauchbare freie FORTHs für kleine 
µCs wie STM8.

Weniger wahrscheinlich anzutreffen auf einem µC ist sowas wie LISP oder 
SCHEME, schadet aber auch nicht, sich damit mal auseinanderzusetzen.

Eine gängige Sprache sollte man sich aussuchen, in der man Programme 
schreibt (für Mikrocontroller am ehesten C und C++).

Lorenz schrieb:
> Trotzdem, irgendwie geht mir ADA nicht aus dem Kopf

Da gibts das GNU Ada Toolkit GNAT. Bin vor kurzem über ADA auf Cortex-M 
"gestolpert", finde den Artikel jetzt zwar nicht mehr, aber hier ein 
paar Anknüpfungspunkte die google ausgespuckt hat:

http://www.inspirel.com/articles/Ada_On_Cortex.html
https://github.com/Fabien-Chouteau/ACNC
https://github.com/adacore/svd2ada

von Andreas M. (amesser)


Lesenswert?

Ist schon Klasse wie hilflos die Leute heute sind. Am besten nur noch 
vorgekauten Einheitsbrei aufnehmen.

Zu meiner Zeit hat man sich selbst einfach mal ausprobiert und ist bei 
dem geblieben was einem gefallen hat oder wechselt je nach 
Aufgabenstellung mal zu was anderem. Heute schwimmt man wohl lieber mit 
dem Strom. Mir solls recht sein, weniger Konkurrenz auf dem 
Arbeitsmarkt...

Letztlich machen doch alle Sprachen irgendwo das gleiche - der Maschine 
sagen was sie machen soll. Ob man das nun mit Assembler, C, C++, C#, 
Python Java, Groovy, Fortran, Python, Perl, Shell oder BAT (Alles schon 
gebraucht) macht, entscheidet im Endeffekt der Anwendungsfall.

Christian S. schrieb:
> oder Assembler programmieren. Mit Assembler lernst Du die Innereien des
> Prozessors gut kennen, welches Dir für C einige Vorteile bietet. Mittels
> C bleiben Dir sonst einige Details der Hardware verborgen oder Du
> erkennst deren Relevanz nicht. Am besten wäre, beides zu können. Mit
> Kenntnissen in C alleine lassen sich trotzdem umfangreiche und
> komplizierte Programme erstellen.

Das mit den Innereien stimmt, aber in wiefern man Assembler braucht um 
"umfangreiche und komplizierte" Programme zu erstellen erschließt sich 
mir nicht. Eher das Gegenteil ist der Fall.

Auch das hier wieder gebetsmühlenartig vorgetragene:

Manfred schrieb:
> Ich glaube, dass das aktueller Standard ist: Beliebige
> Hardwareplattformen werden in C / C++ betan, solange es nicht extrem
> zeitkritisch ist.

ist im allgemeinen nicht richtig. Die CPU Hersteller haben dermaßen viel 
Gehirnschmalz in die Compiler gesteckt, so dass im allgemeinen nur noch 
die Entwickler der CPU selbst in der Lage sind die Compiler 
performancemäßig zu schlagen. (In einer CPU passiert wesentlich mehr, 
als einfach nur stupide Befehle nacheinander abzuarbeiten, ich sag nur 
Register Interlocks, Read/Write Barriers, Out of Order Execution....)

Zum Thema: C/C++ ist ein guter Anfang, Arduino Sketches sind nichts
anders. Ada ist auf jeden Fall nicht uninteressant, das wird u.a. im 
Bereich sicherheitskritischer Software eingesetzt.

von TheBug (Gast)


Lesenswert?

8 Bit Microcontroller mit objektorientierten Sprachen m)
Leute, was stimmt nicht mit euch?

Da muss mnan sich echt nicht mehr wundern, warum so viele aktuelle 
Geräte absaufen können, oder ewig lange brauchen um zu reagieren. Und 
das bei Anwendungen, die auch hart verdrahtet realisierbar wären.

Bei einem 8 Bit Micro ist die Frage wirklich nur, nehme ich C, oder 
schreibe ich es gleich in Assembler?

von svensson (Gast)


Lesenswert?

Mehrere Programmiersprachen zu können, schadet nie - so wie es auch bei 
anderen Sprachen ist.
Man kann sich für eine weit verbreitete Sprache entscheiden oder auf 
etwas Besonderes spezialisieren - beide Ansätze haben ihre Berechtigung!

Jeden Prozessor kann man in Maschinencode programmieren (Binse), den 
gibt es also immer. Das ist aber so mühsam, daß es nur in absoluten 
Ausnahmefällen sinnvoll sein dürfte.

Assembler gibt es auch für nahezu jedes Zielsystem, aber leider passen 
die immer nur für eine Familie oder Linie. Ich würde Assembler heute 
nur noch als Inline-ASM in ganz speziellen Fällen nutzen.

Meistens wird der Assembler dann umgehend verwendet, um einen C-Compiler 
zu erstellen, weshalb es auf nahezu jedem Zielsystem eben C gibt.

Folglich ist C die Sprache, die auf den meisten potentiellen 
Zielsystemen verfügbar sein wird vom µC bis zum Großrechner.
Zudem hat C viele andere "moderne" Sprachen beeinflußt, z.B. Java, Perl, 
Python, Matlab, R.

Andere Ansätze haben Forth, Fortran, Cobol, Basic, Pascal, Oberon usw.

von CPU Historiker (Gast)


Lesenswert?

Ich würde in Assembler coden, damit kannst du das Maximum aus der CPU 
heraus rocken. Besonders wenn es um CPUs mit wenig Ressourcen geht wie 
Attiny.

von Karl M. (Gast)


Lesenswert?

Hallo,

CPU Historiker schrieb:
> CPU heraus rocken

Was soll das bedeuten? in meinen Jahrzehnten ist der Branche ist dieser 
Begriff nie aufgetaucht.

von Dergute W. (derguteweka)


Lesenswert?

Karl M. schrieb:
> Was soll das bedeuten? in meinen Jahrzehnten ist der Branche ist dieser
> Begriff nie aufgetaucht.

Das ist sowas, wie in der Analogtechnik die Amper hochskillen ...

SCNR,
WK

von CPU Historiker (Gast)


Lesenswert?

Das habe ich in einer Stellenanzeige gelesen:

Die Software-Entwicklung nimmt eine ganz entscheidende Rolle in der 
Produktentwicklung ein. Im hardwarenahen Bereich rockt die Software das 
Maximum aus der Hardware heraus und schafft somit erstaunliche 
Performance.

Klingt doch gut, oder?

von Ralph S. (jjflash)


Lesenswert?

CPU Historiker schrieb:
> Klingt doch gut, oder?

sehr super !

von zufaulzumanmelden (Gast)


Lesenswert?

Ralph S. schrieb:
> sehr super !

Plenker haben kurze ...



... Aufmerksamkeitsspannen.

von Gegeg J. (Gast)


Lesenswert?

Pascal oder C sind die richtige Wahl
Ada, rust etc sind keine Option da kaum vetreten, basic ist nicht 
nennenswert  leichter als Pascal.
Auf dem Arbeitsmarkt kommst Du mit Pascal und C weiter, mit Basic 
vermutlich nicht

von Vincent H. (vinci)


Lesenswert?

Gegeg J. schrieb:
> Pascal oder C sind die richtige Wahl
> Ada, rust etc sind keine Option da kaum vetreten, basic ist nicht
> nennenswert  leichter als Pascal.
> Auf dem Arbeitsmarkt kommst Du mit Pascal und C weiter, mit Basic
> vermutlich nicht

lol

von Gegeg J. (Gast)


Lesenswert?

Vincent H. schrieb:
> lol

welch geistreicher Kommentar.
Da haben wir wohl wieder ein ganz besonders helles Lööpfchen aus diesem 
Forum lol


Wenn ich mi BAsic falsch liege korrigiere mich, aber ich kenne aktuell 
kaum Jobangebote dafür.
PAscal ist immer gesucht und gut bezahlt da schwer Leute dafür zu finden 
sind. C Ist dermaßen überlaufen, das nur die besten echt gut bezahlt 
werden.
Der Rest der C Programmierer ist heute so was wie ein KFZ Mechnaiker vor 
20 Jahren. Massenprodukt

von Des-Illusionist (Gast)


Lesenswert?

CPU Historiker schrieb:
> Im hardwarenahen Bereich rockt die Software das
> Maximum aus der Hardware heraus und schafft somit erstaunliche
> Performance.
>
> Klingt doch gut, oder?

Naja für nen Laien vielleicht.
In Real ist es nun mal so das Software immer die Hardware abbremst, 
prinzipbedingt, das kann man nicht verhindern.
So wie die Steuerung der Flugrichtung eines Flieger über diw Leitwerke 
---
willst nach steuerboard schwenken, musste steuerboard abbremsen, dann 
zieht es die Nse rum. Oder schlechte Kanuten, die einfach steuerboards 
das Padel gegen die Strömung stemmen ...

Gute Software ist nun mal die, die am wenigstens die Hardware (durch 
Software-Overhead (bspw durch Runtime-monitoring)) bremsen muß um die 
Daten in die gewünschte Richtung zu prozessieren.
Einige Softwerker kaschieren nun ihr Unvermögen wenig bremsend in die 
Hardware zu greifen mit den Ruf nach potenter Hardware, weil die immer 
zu langsam wäre ... Schuld haben halt immer die anderen.

von Vincent H. (vinci)


Angehängte Dateien:

Lesenswert?

Gegeg J. schrieb:
> Vincent H. schrieb:
>> lol
>
> welch geistreicher Kommentar.
> Da haben wir wohl wieder ein ganz besonders helles Lööpfchen aus diesem
> Forum *lol*


Bitte geh woanders trollen Hawera.

von Gegeg J. (Gast)


Lesenswert?

lol....dann solltest Du mal nicht nur bei einer Agentur suchen Du Clown
Wenn Du es mit der Jobsuche schon nicht raus hast wie programmierst Du 
wohl?

463 Delphi Jobs
https://de.indeed.com/Delphi-Jobs

von Vincent H. (vinci)


Lesenswert?

"Delphi Software" 359
"C Software" 9606

von Gegeg J. (Gast)


Lesenswert?

jep..und nun lies noch mal was ich geschrien habe, und dann schalt mal 
dein Funzel ein und dann erspare dir weitere sinnfreie Kommentare..ich 
jedenfalls will den Faden mit dieser Randdiskussion nicht weiter 
belasten.
C Jobs gibt es immer genug, Programmierer dafür gibt es haufenweise und 
bald wie Sand am Meer

von Laborratte (Gast)


Lesenswert?

Vor zehn Jahren hatte ich in der Firma mit einem FORTH project zu tun. 
Wir hatten da ein auf LPC2476 beruhendes system mit 320x240LCD. Ein 
Kollege baute damals ein auf FORTH beruhendes Testsystem für diese HW. 
Da konnte man über die Serial Link mit dem Gerät kommunizieren. Man 
konnte das in C geschriebene System sehr leicht mit neuen Keywords und 
Funktionen erweitern und ich fand das damals als recht kool. Sogar als 
Calculator im HP RPN Stil war die SW brauchbar. Für die HW Testzwecke 
hat sich das damals sehr gut bewährt und wahr sehr flexibel. Man konnte 
wunderbar Testskripte schreiben die das FORTH Kommandosystem 
abarbeitete. Ich fand die ganze Angelegenheit als sehr flexibel.

Ansonsten sehe ich das 50 Jahre C oder C++ immer noch für viele 
Anwendungen als mehr als ausreichend. Da auch die viele Werkzeuge damit 
ausgestattet sind hat man viel Auswahl. Wenn auch mit den bekannten 
Eigenheiten und Schrullen behaftet, kann man damit trotzdem gut 
arbeiten. Aber es kann ja jeder selber bestimmen welche Sprache er 
verwenden will. Ich kenne einige Ingenieur Firmen in meinem Umkreis die 
embedded Industrie Elektronik entwickeln. Es werden dort hauptsächlich 
STM32, LPC, AVR, PIC und früher Freescale Architekturen verwendet. Alle 
verwenden dort ausnahmslos C und C++. Als ich mal fragte warum man so 
denkt, wurde mir geantwortet, daß man damit trotz der bekannten 
Besonderheiten doch noch am Besten klarkommt und es effizient die 
Ressourcen ausnützt. Als erfahrene Entwickler macht C die keine 
Schwierigkeiten weil man sich mit den Schwächen gut auskenne. Da dort 
mit komerziellen Werkzeugen gearbeitet wird, ist die Wahl der Sprache 
sowieso sehr begrenzt. Die Entwickler hatten übrigens früher alle für HP 
in der SW Entwicklung für Protokol Analysatoren gearbeitet. Da wurde 
übrigens auch FORTH sehr viel verwendet. Aber alles beruhte systemmäßig 
auf C.

von Einer K. (Gast)


Lesenswert?

Laborratte schrieb:
> Da wurde
> übrigens auch FORTH sehr viel verwendet.

Forth ist für Harvard Systeme eher suboptimal.
Es sind einige Klimmzüge nötig.
Denn traditionell werden Code und Daten intensiv gemischt.



TheBug schrieb:
> 8 Bit Microcontroller mit objektorientierten Sprachen m)
> Leute, was stimmt nicht mit euch?
Und, was ist mit dir?
Irgendwas stimmt doch mit dir nicht.
Keine Argumente?
Nur Polemik und Meinungsmache.

von Christopher J. (christopher_j23)


Lesenswert?

Lorenz schrieb:
> Ich möchte Atmega und Attiny eventuell MSP430 programmieren,

Das sind aber eher Mikrocontroller als Mikroprozessoren, da den beiden 
genannten jeweils eine MMU fehlt. Das ist keine allgemeingültige 
Definition zur Unterscheidung aber ich finde sie sehr passend.

Lorenz schrieb:
> Ada, ist das aktuell mit kostenloser Software möglich, und wie sinnvoll
> ist es als Privatperson?
> Wie viel komplexer werden die oben genannten Sachen damit?
>
> Rust, siehe "Ada"

Rust halte ich für sehr sinnvoll. Durch den strengen Compiler 
(Borrowing, Lifetimes, etc.) wird man dazu gezwungen sauberen Code zu 
schreiben. Durch Rust wird man also gewissermaßen auch zum besseren C- 
bzw. C++-Programmierer. Außerdem läuft Rust auch selbst auf kleinen 
Controllern wie MSP430, weil man damit sehr kompakten Code erzeugen 
kann.

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.