Forum: Mikrocontroller und Digitale Elektronik Generelle Anfängerfrage zu AVR Studio


von Tim (Gast)


Lesenswert?

Hallöle !

Ich spiele mit dem Gedanken in die AVR Entwicklung einzusteigen und habe 
mich gerade mal ein wenig schlau gemacht.
Was mir allerdings nicht so ganz klar wird:

Muss ich mir zwingend Assembler beibringen?

C wird ja öfters nebenbei erwähnt. Wie weit komme ich denn mit reinen 
C/++ Kentnissen?

Wäre zwar nicht schlimm wenn ich mich mit Assembler auseinander setzen 
muss, aber es ist immer gut zu wissen wenn man weiß, was auf einen 
zukommt. Zumal Assembler ja nicht gerade "mal eben" gelernt ist.

Gruß,
Tim

von Justus S. (jussa)


Lesenswert?

Tim schrieb:

> C wird ja öfters nebenbei erwähnt. Wie weit komme ich denn mit reinen
> C/++ Kentnissen?

(fast) genauso weit wie mit asm. Nur bei sehr zeitkritischen Sachen 
sollte man imo auf asm zurückgreifen...

von oldmax (Gast)


Lesenswert?

Hi
>Ich spiele mit dem Gedanken in die AVR Entwicklung einzusteigen..
du willst also AVR's entwickeln...., hm, soweit ich da weiß, brauch's 
weder C noch Assembler.
Ok, Spaß beiseite. Wenn du C- Kenntnisse hast, ist doch eigentlich die 
Basis gegeben, es sei denn, du hast noch nicht programmiert, bzw. keine 
Programme geschrieben. Es ist nicht wichtig, ob man eine Sprache gelernt 
hat sondern weiß, wie man ein Programm erstellt. Das Analysieren der 
Aufgabe und in kleine Routinen packen, das ist wichtig und ist in C wie 
auch in anderen Sprachen die Basis für ein Programm. Da ein AVR oder 
besser gesagt ein µC nunmal spezielle Aufgaben bekommen soll, ist es 
wichtig, zu wissen, wo nehm ich Assembler und wo komme ich mit 
Hochsprachen besser zurecht. Sind mathematische Funktionen erforderlich, 
denke ich, ist man mit Bascom oder C besser dran. Baut man 
Hardware-Steuerungen mit viel Bitlogig ist meines Erachtens Assembler 
der richtige Weg. Manchmal ist aber auch ein Gemisch von Assembler und 
Hochsprache erforderlich, um zum Ziel zu kommen. Wenn man nun gehört 
hat, Assembler sei schwer, der kann sich getrost darauf verlassen, das 
jede Sprache ihre Hürden hat und Assembler in manchen Bereichen 
wesentlich einfacher ist, als man glaubt.
Gruß oldmax

von Tim (Gast)


Lesenswert?

Danke für die Antworten.

Hätte nicht gedacht dass C doch so nützlich sein kann dabei. Ja ich habe 
schon C Programme geschrieben und mir gestern mal asm angeschaut. Asm 
scheint aber mehr SPS Programmierung zu ähneln (nein nicht die modernen, 
die C können). Jedenfalls war ich da nicht sonderlich gut :D

Aber wenn man das in der Freizeit als Hobby macht ist das ja immer was 
anderes als wenn man gezwungen wird es zu lernen.

Ich werde mich dann melden wenn ich Probleme hab ;)

Bis dann

von oldmax (Gast)


Lesenswert?

Hi
ASM ist ähnlich einer SPS - Programmierung, zumindest was AWL betrifft. 
Ist ja auch klar, AWL ist von Assembler abgeleitet und macht es möglich, 
(oder besser gesagt, machte es möglich) komlizierte Programmierung 
umzusetzen. (indirekte Adressierung, mathematische Funktionen etc.) Heut 
sind wir da schon wesentlich weiter und es gibt fertige Bibliotheken, so 
das FUP in der Regel schon alles abdeckt. Für ein ASM -Programm sollte 
man wissen, es gibt bei weitem nicht so viele Funktionen wie in den 
Hochsprachen. Klar, wenn man sich die Assemblerbefehle ansieht, 
erscheint es sehr umfangreich. Allerdings gibt's wenige Gruppen. Lade- 
und Speicherbefehle, Sprünge und Unterprogrammaufrufe, Binäre 
Operationen sowie ein paar mathematische Funktionen. Dazu ein paar 
Controllerabhängige Befehle. Alles ist in der Hilfe für die µC's im AVR 
Studio erklärt. Und nun viel Spaß.
Gruß oldmax

von Oliver (Gast)


Lesenswert?

>Muss ich mir zwingend Assembler beibringen?

Das ist genauso wie auf dem PC. Wie zwingend braucht man Assembler, um 
PC-Programme schreiben zu können?

>C wird ja öfters nebenbei erwähnt. Wie weit komme ich denn mit reinen
>C/++ Kentnissen?

Mit C kannst du auf dem AVR alles machen. Und "alles" meint wirklich 
alles. Die einzige Ecke, in der Assembler seinen Verwendungszweck hat, 
sind zum einen superwinzige Tinys (die man ja nicht benutzen muß, wenn 
man nicht muß), sowie hochgradig schnelle und zeitkritische 
IO-Anwendungen, bei denen es wirklich auf jeden einzelnen eingesparten 
Takt beim Timing ankommt.

Mit reinen C++-Kenntnissen ist der "downgrade" auf C an einigen Stellen 
schmerzhaft, aber ertragbar. avr-g++ ist zwar existent und funktioniert, 
es fehlt aber die essentiellen libs, und alles, was mit dynamischer 
Speicherallokierung zu tun hat, ist per se auf einem Mikrocontroller der 
AVR-Klasse nur mit äußerster Vorsicht einzusetzen.

Fazit:
Fang einfach mit C an.

Oliver

von Peter D. (peda)


Lesenswert?

Oliver schrieb:
> Die einzige Ecke, in der Assembler seinen Verwendungszweck hat,
> sind zum einen superwinzige Tinys

Das ist aber schon sehr sehr lange her.

Die aktuellen ATtiny haben alle SRAM und sind damit in C programmierbar.
Und ab 2kB kannst Du sogar float Variablen verwenden.


Allgemein sollte man bei MCs nicht unnütz mit Variablen umsich schmeißen 
und immer den kleinstmöglichen Typ verwenden. Dann klappt das auch.

Windows-Programmierer sind es ja gewohnt, sämtliche Variablen als double 
zu deklarieren und Arrays immer mindestens 1kB groß. Solche 
Verschwendung geht auf nem MC nicht.


Peter

von Peter (Gast)


Lesenswert?

Ich finde man sollte auf einem µC immer mit den ASM Grundlagen anfangen. 
Nur so lernt man kennen was der µC wirklich kann und welche sachen z.b. 
in C zu vermeiden sind weil es ebend keine einfache möglichkeit für den 
Compiler gibt es umzusetzen.

Beispiel:
   uint_8 b = (irgendetwas)
   for( uint_8 i = 0; i < 8; ++i ) {
       bit[i] = (b >> i) & 1;
   }

von oldmax (Gast)


Lesenswert?

Hi
Mal wieder ein paar Glaubensbekenntnisse... C  contra ASM
Leute, es verschmäht niemand C, also zerredet nicht die 
Daseinsberechtigung von ASM. Wichtig ist doch nur, der TE entschließt 
sich, mit irgendwas anzufamgen. Wenn er später feststellt, das er mit 
Suaheli weiterkommt, wird er vermutlich sich hinsetzen und Suaheli 
lernen....
Gruß oldmax

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Es schadet nicht, wenn man Assembler versteht. Es kann sogar recht 
nützlich sein.

Wenn Du C++ kannst, ist der Sprung zu C nicht so weit, wie zu Assembler.
Wenn Du erst anfängst, wirst Du auch keine zeitkritischen Anwendungen 
schreiben (und auch dann kann man gemischt programmieren). Also kein 
Problem, bei C zu bleiben.

Ich verwende beides. Der größte Teil wird aber in C geschrieben.

Zur Glaubensfrage wird es bei mir nur, wenn es um Basic, Fortran, oder 
ähnliches (auch Klickiklicki-Buntibuni gehört dazu, obwohl auch das 
seine Daseinsberechtigung hat) geht.

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.