Forum: Mikrocontroller und Digitale Elektronik µC Programmierung


von Alexander F. (alexander_f25)


Lesenswert?

Hallo,

ich programmiere Bereits in den Sprachen PHP, JavaScript und ObjectiveC 
und wollte mich nun auch mit dem Thema µC Programmierung befassen.
Ich hab soweit auch schon alles hier (AVR Protoboards und Software) aber 
das eigentliche was ich fragen möchte ist folgendes:

Was würdet Ihr mir raten, mit welcher Programmiersprache sollte ich am 
Besten "anfangen" bzw. arbeiten?

Einerseits würde ich gerne C zum programmieren verwenden (da ich dort 
soweit schon mit der Systematik vertraut bin) aber ich lese immer wieder 
dass es besser wäre in Assembler zu programmieren bzw. zu erlernen...?

Ist das bei der aktuellen Software immer noch so, oder kann man 
mittlerweile getrost bei C bleiben?

Ihr würdet mir hierbei sehr helfen! :)


Viele Grüße,
Alex
von Eumel (Gast)


Lesenswert?

Assembler hilft dir sehr zu verstehen, wie der Controller überhaupt 
funktioniert. Ist auch nicht schwer zu erlernen.
Fang erstmal mit ASM an bis du einen grundsätzlichen Überblick hast, 
dann spricht nichts mehr gegen C.
Viel Spaß :)
von Rene S. (Firma: BfEHS) (rschube)


Lesenswert?

Hallo Alex,

also in C ist es quasi Standard. Alle grossen uC mit komplexen Aufgaben 
kann man gut in C programmieren.

Aus persönlicher Erfahrung finde ich es immer gut auch Assembler zu 
können. Viele zeitkritische Dinge sind in ASM besser bzw. einfacher. 
Assembler ist nun mal die unterste Ebene.

Grüsse aus Berlin,
Rene
von Stephan W. (stipo)


Lesenswert?

Ich spreche nun mal rein für mich.
C habe ich mir schon einige male angesehen, aber so richtig warm konnte 
ich damit nie werden. Im windows Umfeld programmiere ich mit C#, was 
einem durch das Framework und die starke Typisierung und Kapselung sehr 
schnell, sehr guten Code schreiben lässt.
Als ich dann mit den µC angefangen habe ( gute 2 Monate ) war der 
entschluss schnell zu Assembler gefasst. Auch ist ein Grund, warum ich 
Assembler gewählt habe, das ich eben mit C selbst nie so recht klar 
gekommen bin.

Mittlerweile muss ich sagen, ist mein Entschluss bestätigt, das es kein 
Fehler ist, wenn man sich mit dem Assembler beschäftigt. Da ist man sehr 
schnell gezwungen sich doch noch ein Stück Tiefer in die Architektur des 
µC einzuarbeiten, als unter C mit seinen fertigen Bibliotheken.

Also klares Fazit. Wenn man den µC verstehen lernen möchte, dann kommt 
man um Assembler nicht herum. Es wird am Anfang sicher recht holprig 
werden, aber irgendwann platzt der Knoten auf. So ist es mir vor ein 
paar Tagen gegangen. Was auch hilft, wenn man sich geziehlt einmal die 
Beiträge in Assembler im Forum durchliest. Je mehr man liest, desto 
schneller wird man mit dem Programmierstil in Assembler klar kommen.

Hier noch ein Tutorial, was ich Dir dann ans Herz legen möchte, das man 
sich das mal durchliest: 
http://www.avr-asm-tutorial.net/avr_de/index.html

MFG
Stephan
von fddgddg (Gast)


Lesenswert?

ich bin da eher ein "C" fürsprecher
wenn man seinen eigenen stil hat kann man so gut wie jeglichste 
funktionen  auf verschiedenen µC wiederverwerten...
Sei es irgendwelche steuerungen oder menüs ..blubb

in ASM finde ich das extrem schwer ..
allein weil der befehlssatz von AVR zu cortex oder nen Blackfin total 
unterschiedlich ist.
in C ... reinkopieren fertig .. läuft :)

außer hardwarespezifische dinge eben ..
aber diese muss man eh überall anpassen

manche scheinen sich hier an einem AVR oder so festzubeißen
ich bin eher ein freund universeller natur ^^
ich habe keine probleme damit von AVR zu Cortex M0 . M4
bis  ARM + linux zu springen
alles mit "C"

Frage ist immer was man leistungstechnisch braucht ...
möchte man auch mal mit linux spielen ist der AVR nicht geeignet

Ich würde ASM nur zum verstehen nutzen um kleine architekturen 
kennenzulernen
aber sobald man das inne hat würd ich SOFORT auf C wechseln.


ASM ist sicher auch nützlich ..
aber wer schonmal nen mega64 oder 128 in  ASM vollgeklatscht hat
weiß das sowas verdammt schnell unübersichtlich werden kann

und wenn man mal nen TCP/IP stack in ASM hat will man den sicher nicht 
nochmal in ASM für jeden anderen controller schreiben.
in C ist sowas relativ einfach austauschbar


JA der code is größer wenn man universell schreibt ..
aber in zeiten wo ein Cortex M0 mit 64k flash   billige rist wie ein 
Mega8 .. stell ich mir solche fragen garnicht mehr
für mich ist der AVR eigentlich schon gestorben...

zu wenig features , zu teuer



PS: ich  würde mir nen Cortex M0 oder M3 board holen .. und damit 
lernen/spielen

gerade wenn man weiß wie C funktioniert .. warum dann noch ASM lernen
zumal jeder conteroller eigene ASM befehle hat ..
von Husten (Gast)


Lesenswert?

Hallo,

kann meinem Vorredner in den meisten Punkten zustimmen.

Ich würde, wenn man z.B. einen AVR verwendet nicht auf die bestehenden 
Bibliotheken zurückgreifen, sondern eigene schreiben. Das hat dann 2 
Effekte:
1. Man lernt durch Datenblatt lesen den Controller kennen.
2. Man kommt mit C klar.

Wenn man später dann andere Controller verwendet, kann man C und ist mit 
einem allgemeinen Verständnis für uController gesegnet. Und so groß sind 
die unterschiede zwischen den Controllern nicht. Es ist imho einfacher 
die Register im Datenblatt nachzuschlagen, als ASM Befehle neu zu 
lernen. Und die Entwickler der Compiler haben so nebenbei auch ihre 
Lebensberechtigung ;)

Grüße
von Alexander F. (alexander_f25)


Lesenswert?

Oh wow, so viele Antworten! :)
Ich dachte ich würde per Email benachrichtigt werden, wenn mir jemand 
antwortet...

Vielen Dank an alle, ich glaub ich weis nun wie ich "vorgehe".


Grüße,
Alex
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.