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
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...
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
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
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
>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
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
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; }
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.