Forum: Mikrocontroller und Digitale Elektronik avr mit c++ programmieren?


von avreinsteiger (Gast)


Lesenswert?

Soweit ich weiß kann man AVR auch mit C programmieren. geht es auch mit
c++ builder oder mit visualC++ und mit welchem Compiler muß ich dann
arbeiten??

C bzw. C++ soll ja doch einfacher sein als Assembler und umfangreicher
als Basic, oder?

von Johan (Gast)


Lesenswert?

Du kannst Keinen VC oder borland compiler nehmen, da die nur für den X86
Befehlssatz code erzeugen können. such mal nach WINAVR

von Thomas K. (thkais)


Lesenswert?

Auf einem µC ist C genau das, wofür es entwickelt wurde... Ein
komfortabler Makro-Assembler.
Die Programmierung eines µC läßt sich überhaupt nicht mit der
Programmierung eines PC vergleichen. Man muß äußerst Hardwarenah
programmieren (können).

von Martin #. (martin-)


Lesenswert?

Lerne erst Assembler. Ohne den µC zu kennen nutzt dir C auch nichts.

von Hartmut Gröger (Gast)


Lesenswert?

Wenn du Assembler richtig kannst ,brauchst du kein C/C++ mehr.

MfG HG

von Jahn (Gast)


Lesenswert?

also ich progge AVRs ziemlich cool mit C++, sogar mit nem
Klassendiagramm... ist echt ne ganz andere qualität an Software...
stimmt zwar das der eigentliche hex dann größer wird aber die
produktivität und übersichtlichkeit beim Entwurf und der Realisierung
sind ein Unterschied wie Dreirad fahren und Jet fliegen
und ich denke die Reise geht eh da hin, denn die Controller werden
immer schneller und haben immer mehr Speicher...


gruß Jahn

von Martin #. (martin-)


Lesenswert?

>ist echt ne ganz andere qualität an Software...
Aber wenn es auf ein Takt ankommt musst du sowieso mit einzelnen
maschinen Befehlen hantieren.
Also zuerst Assembler lernen.

von Jahn (Gast)


Lesenswert?

ja klar muss man zu assembler greifen wenn es auf jeden takt ankommt...
;-) kommt halt auf die aufgabe an... ich keene noch nen kollegem der
ist pc-programmierer und war vor 15 jahren noch der meinung nicht C
lernen zu müssen weil er in assembler alles viel besser lösen könne und
das ganze viel performanter ist ... na ratet mal wie viel assembler der
heute noch programmiert schmunzel

von Hannes L. (hannes)


Lesenswert?

Ein AVR ist aber kein PC.
Beim PC programmiert man unter einem Betriebssystem, welches sich um
die Hardware kümmert.
Beim AVR programmiert man direkt an der Hardware, da sollte man die
Hardware schon kennen und das geht mit ASM am einfachsten. Sicher
erspart einem eine Hochsprache eine Menge Arbeit, aber ganz ohne
ASM-Kenntnisse erreicht man damit (beim MC) nicht allzuviel.

...

von Jahn (Gast)


Lesenswert?

na da muss ich dir natürlich recht geben... also erst assember und dann
zu c++ ;-)

von holm (Gast)


Lesenswert?

Ich würde das nicht so unterschreiben, das man erst Assembler und dann
erst C programmieren können muß.

Ich khabe schon verschiedene Micros in Assembler programmiert, aber den
AVR Befehlssatz kann ich maximal LESEN. Das ändert aber nichts daran,
daß ich fast nur noch AVR's benutze, in Verbindung mit avr-gcc auf
FreeBSD.

Ich komme damit eigentlich sehr gut klar, hätte aber auch keine
Probleme
mal Inlines zu schreiben, oder eben wirklich den Assembler zu nehmen.
Dann muß ich halt erst einmal ein Bisschen lesen..

Gruß,

Holm

von avreinsteiger (Gast)


Lesenswert?

Hallo Leute,
erst mal vielen dank für die vielen zuschriften.

ich muß wohl mal dazu schreiben das ich mit µC bis jetzt noch gar nix
gemacht habe, programiere SPS und will mal was anderes machen. µC sind
ja z.t. noch flexibler und schneller als SPS. Programmiersprache kenne
ich nur Basic aus der schule ist aber viele jahre her. uberall wo ich
lese kommt C++ zum einsatz und wollte es deshalb mal lernen und damit
auch in die welt der µC einsteigen vorzugsweise Atmel.

ML

von Hartmut Gröger (Gast)


Lesenswert?

Hi

Wichtiger als die Programmiersprache ist es ,sich erst mal mit dem
Controller und dessen interner Hardware auseinander zu setzen.
Ansonsten ist es nämlich egal ob du in Assembler,C oder C++ nicht
weisst was du machst.

MfG HG

von Hannes L. (hannes)


Lesenswert?

Das ist wohl wahr...

von Dreiradfahrer (Gast)


Lesenswert?

>ist echt ne ganz andere qualität an Software...
die unterschiede zeig mir mal! (Jet und dreirad)
wenn man c richtig programmiert wirds genau so übersichtlich,
portierbar, wiederverwendbar! Man darf halt nich alles in eine datei
stecken

stell doch mal ein proj vor wo du denn hauptvorteil von c++ vererbung
und polymorphie so richtig schön verwendet hast.

gruß
Dreiradfahrer

von The Daz (Gast)


Lesenswert?

Meiner Meinung nach eignen sich insbesondere OO-Sprachen sehr gut fuer
hardware-nahe Programmierung (wie bei controllern). Alle hardware
Komponenten sind sozuagen Parade-Beispiele fuer Objekte. Was allerdings
dagegen spricht, ist der ueblicherweise groessere code. Wenn man
genuegend Flash/RAM + MHz hat, sollte man sich diesen Luxus aber
durchaus leisten.

von Christian Zietz (Gast)


Lesenswert?

@dreiradfahrer: Hat zwar nichts mit uCs zu tun, aber ich fand es schon
ganz angenehm, libbasicard, meine Implementation der BasicCard API (das
ist eine Smart Card aka Chipkarte) in C++ zu schreiben. Nicht, dass es
nicht in reinem C gegangen wäre, aber so war's bequemer. Inklusive
Vererbung und Polymorphismus. Ich hatte vorher bereits angefangen,
libbasiccard "nur" in C zu programmieren, habe es dann aber
verworfen, weil mir eine Realisierung in C++ übersichtlicher erschien.

Objektorientierte Programmierung kann schon übersichtlicher sein. Ob
man das auf einem uC machen muss, weiß ich allerdings auch nicht. Da
bin ich mit Standard-C bisher genauso gut gefahren.

von Martin #. (martin-)


Lesenswert?

>Ob man das auf einem uC machen muss

Wenn der µC "gross" genug ist und die Software dafür entsprechend
umfangreich dann ist OOP sicher sinnvoll.
Aber bei bei 16KB Speicher macht man sich damit nur mehr Arbeit.

von Rolf Magnus (Gast)


Lesenswert?

Es sei noch angemerkt, daß OOP nicht der einzige Vorteil von C++ ist.

von Rolf Eichenseher (Gast)


Lesenswert?

Der gcc (GNU-Compiler) unterstützt C++ und ist obendrein kostenlos.
Funktioniert prima, braucht aber ein wenig mehr Speicher als reines C.

Die Übersichtlichkeit und Fehlerfreiheit (im Vergleich zu C, aber vor
allem im Vergleich zu Assembler!) machts aber dreimal wieder wett.
C++ ist und bleibt m.E. die Sprache der Wahl: denn: Alles ist
übersichtlich möglich, beliebige Abstraktionslevel lassen sich
angebracht darstellen (von Bitmanipulationen bis hin zu komplexen
Klassenhierarchien. Versuch letzteres mal in Assembler!)

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.