PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : lohnt soch Assembler?<<<Anfänger



Sp666dy
22.01.2008, 14:53
Also ich habe mir jetzt den RN-Controll geholt und muss mir jetzt eine Programmier sprach aussuchen mit die ich vernümpftig lernen muss!

Aber ich habe gehört Assambler wäre die schwärste aber auch die beste.

Lohnt es sich Assambler zu lernen und kriegt mann auch gut Bücher dafür oder reicht es mit C zu Programmieren?
MFG Sp666dy

Mr Bean
22.01.2008, 15:10
Hallo

Also ich habe mit Assembler angefangen. Da bin ich aber nicht über das Ein und Ausschalten von LED`s und vielleicht noch das verwenden von Tastern (Entprellung) heraus gekommen.
Dann bin ich auf C umgestiegen. Da ist halt der Vorteil dass es für viele Dinge schon fertige Bibliotheken gibt. Sonst könnte ich wahrscheinlich noch kein Display ansteuern etc. Lernen muss man beide Sprachen und ich kann aus Erfahrung sagen dass beides nicht einfach ist.
Assembler hat große Vorteile wenn es um zeitkritische Anwendungen geht, da der Code einfach direkter und somit schneller ist.
Bücher gibt es für beide Programmiersprachen recht viele und teils auch gute. Hier am besten einfach mal auf amazon suchen...

Grüße und viel Erfolg!

Bean

chr-mt
22.01.2008, 15:16
Hi,
ist eher die Frage, was einem besser liegt, oder für was man es denn verwenden will.
Die Frage ist, was für Ansprüche deine Projekte haben, und ob diese sich mit einer Hochsprache erfüllen lassen, oder nicht.

Ich habe zB. mit Bascom (Basic) sehr gute Erfahrungen gemacht und konnte bisher alle meine Projekte damit zum laufen bringen.
Die C Syntax ist mir irgendwie zu merkwürdig und umständlich.
Aber das ist reine Geschmacksache, oder einfach Gewohnheit.
Ich habe mit 8051-Assembler angefangen und bin auch froh darüber,
da ich mich deshalb näher mit der Hardware auseinandersetzen musste.
Auf den AVRs habe ich Assembler allerdings noch nicht gebraucht.

C hat halt den großen Vorteil, daß es, im Gegensatz zu Basic, für so ziemlich jeden Controller, also zB. auch für die neueren AVR32 verfügbar ist.

Gruß
Christopher

MeckPommER
22.01.2008, 15:16
Jede Programmiersprache hat ihne Vor- und Nachteile. In Assembler kann man den schnellsten und kompaktesten Code erzeugen, dafür sind diese Programme weniger gut lesbar.
Für alles, was ein Anfänger vorhaben kann, sollte C vollkommen genügen. Es besteht stets noch die Möglichkeit, später besonders kritische Programmteile in Assembler zu schreiben - sozusagen Sprachen zu kombinieren und damit die Vorzüge dieser Sprachräume zu vereinen.

Willst du schnellere Erfolge haben: C
Willst du tief in die Materie einsteigen: Assembler

Gruß MeckPommER

P.S.: deine Schreibe zieht einem die Schuhe aus ;-)

Sp666dy
22.01.2008, 15:51
Erstmal ein großes Dankeschön an alle!

Ich habe mir jetzt bestimmt 100 Bücher angeguckt und weiß nicht welches das richtige ist.

Habt ihr vielleicht Bücher die ihr empfehlen könntet?
Vielleicht habt ihr ja ein Favorite.

Was ich nur sagen kann, ist Ich habe den RN-control und die sprache sollte C oder Assembler sein.

Ich würde beides nehmen weil ich schnell reinkommen möchte und später sehr tief in die Materie einsteigen.

Ich hoffe ihr habt ein perfektes Buch für mich


MFG Sp666dy

Besserwessi
22.01.2008, 17:05
Es kommt auf das Vorwissen an, für einfache, kurze Programme ist Assembler zum Teil sogar einfacher als C. Denn gerade das direkte ansprechen der Hardware ist in C gar nicht so einfach. Manchmal kommt es so weit das man sich überlegen muss wie man den Compiler dazu bringt den Assembler Code zu erzeugen den man eigentlich haben will.
C Proramme können aber besser lesbar sein als Assembler Programme (müssen es aber nicht). Für längere Programme kommt man kaum um eine Hochsprache herum.

Je nach Vorwissen braucht man nicht unbedingt ein Buch, es gibt reichlich online Tutorials zu C und Assembler. Ganz ohne Programmierkentnisse (in irgend einer Sprache) kann das aber etwas knapp sein.

Bart W.
22.01.2008, 19:09
Hallo

Ich habe mit Assembler angefangen und programmiere heute noch lieber damit. Es gibt aber auch Programme die ich nur in C schreiben würde, da C klar bestimmte Vorteile hat und ab einer bestimmten Programmkomplexität besser darsteht als Assembler.
Ich persönlich fand den Einstieg in C schwerer als Assembler. Nimm C wenn es dir mehr um die Programmierung geht und nimm Assembler wenn du auch etwas mehr mit Hardware zu tun haben möchtest!

Gutes C-Buch (und die Online-Version ist kostenlos!)
http://www.galileocomputing.de/openbook/c_von_a_bis_z/

bye

Sp666dy
23.01.2008, 13:49
Ja danke erstmal für alle antworten.

Also meine vorkentsnisse sind in C# Anwendungs-programme.

Nichts mit hardware.

Ich ich glaube ich bräuchte ein Buch wo auch drinn steht.
Mit diesen befehlen sprichst du dies und das an.

So ein Einführungsbuch.
Das sich aber auf den controller bezieht, oder sehe ich das falsch?

Gock
23.01.2008, 14:06
Dafür gibts Einführungen für Atmel µCs.
Ich kann auch nur raten, sich die Grundlagen von Assembler mal anzuschauen, so für ein paar Stunden, und dann mit C weiterzumachen. Bei mir war es umgekehrt und erst als ich mit Assembler angefangen habe sind einige Groschen gefallen.
Gruß

Sp666dy
23.01.2008, 14:43
Ja perfekt einfühungen suche ich. Was für Bücher hast du den Benutzt wen ich fragen darf.

Weil ich genau so was suche.
Und ich habe mich auch dazu entschieden beides zu lernen.

MFG Sp666dy

oberallgeier
23.01.2008, 14:55
Hei, Sp666dy,

genau das war vor rund zwei Monaten auch meine Frage, mein Problem (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=35618&highlight=).

Ich hatte mit ersten Spielereien an einem Tiny13 mit Assembler angefangen. Mit Assembler hatte ich längst vergessene Erfahrungen, das war mir also nicht sooo fremd. Und ich hatte eigentlich mit Vergnügen mich eingearbeitet und die ersten zig oder paar hundert Zeilen Assembler geschrieben.

C wollte ich (sowieso schon) seit Jahren lernen, da war mir der Einstieg schwer gefallen, aber nicht die Entscheidung, da einzusteigen. Ich finde, dass eine Hochsprache für komplexere Dinge eben notwendig ist - versuche doch mal bitte in Assembler einen Sinus zu berechnen . . . .

Meine Angst vor der hardwarenahen Programmierung in C war unbegründet, da kann man mit Erfahrung in Assembler FAST nix mehr falsch machen (bis auf die irrsinnigen Operatoren |= oder PORTB &= ~(1<<PB3) - - blos um einen einzigen Port auszukippsen :( ).

Auf Anraten und Drängen des Forums hatte ich mir den Kernighan-Ritchie gekauft, die Bibel der Sprache C - und hätte ihn beinahe weggeworfen, weil da drin natürlich keinerlei Bezug zur hardware-nahen Programmierung der AVR´s stand. Diese Programmierung hatte ich mit dem RN-Tutorial für C (https://www.roboternetz.de/wissen/index.php/C-Tutorial) und mit dem C-Tutorial im microcontroller-net (http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial)gelernt. Nicht nur - es war auch etliches an experimenteller Programmierung dabei :) :) :).

Schliesslich war es bei mir ein ziemlich runder (manchmal schauderhaft langwieriger) Weg und heute kann ich sogar Fehler finden, die ich selbst gemacht habe. Die Programme sind noch nicht wirklich komplex, aber ich bin mit mir zufrieden.

Absolut beruhigend und wirklich fürsorglich ist die Betreuung im Forum. Ich hatte das ganze Spektrum durchlaufen - Einsteigerprobleme zu Beginn, unsinnige Probleme anfangs, Schlampereien danach, schliesslich ziemlich versteckte, vertrackte Fehler. Bisher habe ich - und sehr oft mit Hilfe der hiesigen Kollegen, alle Fehler gefunden.

Also mein Rat:
- Lerne C - für komplexere Probleme eine gute Sprache.
- Assembler sollte wirklich sein - weil das auch im AVR-GCC die (einzige) Basis für hardware-nahe Lösungen ist.
- Als hardwarenahe Tutorials kann ich die beiden genannten wirklich empfehlen. Es gibt zahllose andere C-Tutorials im Netz - ich kam mit der hiesigen Auflistung incl. Buch klar.
- Ach ja, und ich hatte mir WINAVR mit AVRStudio (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=35437&highlight=)und zum Programmieren ponyprog installiert. Das passt für Assembler UND C.

Wichtig ist aus Gründen der Vollständigkeit der Hinweis auf BASCOM. Dort hat man mW nach weniger Kontakt mit der Hardwareseite. Es gibt offensichtlich zahllose Bibliotheken, die einem hardwareseitig helfen. Das ist aber natürlich nicht NUR ein Vorteil - man kann manche Lösung dann nur mühevoll mit eigener Bibliothek oder garnicht bringen.

Viel Glück bei Deinem Einstieg.

Gock
23.01.2008, 16:54
Ja, die Einführungen, die ich meinte hat der "Alte vom Berg" eigentlich alle aufgezählt.
Gruß

Sp666dy
23.01.2008, 19:00
OK ich bedanke mich ehrzlich an alle, ich werde diesen Rat folgen und mich mich melden schönen bend noch und nochmals vielen dank


MFG Sp666dy

sechsrad
24.01.2008, 10:08
....man kann manche Lösung dann nur mühevoll mit eigener Bibliothek oder garnicht bringen. .....


genau win in winavr-c.
die winavr-c bibliotheken kann man leicht umsetzen in bascom wenn man die bascomtypischen nicht verwenden möchte.

Sp666dy
31.01.2008, 14:38
OK, brauche nur kurz nohmal eure aufmerksamkeit.


Ich kriege nicht alles zusammen was ich zum prog. brauche.

Gibt es nicht so ein komplett packet , was so alles braucht???

Also ich möchte mit C und Assambler prog. was brauche ich alles dafür???


Danke mfg Sp666dy

Gock
31.01.2008, 15:52
Du brauchst AVRStudio. Damit kannst DU komplett Assembler proggen.
Zusätzlich WinAVR zum C proggen.
Datenblatt des µC (--> Atmel)
Befehlssatz der Sprache (-->Assembler: Atmel)
Einen Programmer, zb AVRISP MKII
Für alles gibt es natürlich Alternativen.
Gruß

rideyourstyle
31.01.2008, 18:15
und viel geduld hast du noch vergessen.

ich programmierte bis jetzt auch alles in assembler. hat auch immer funktioniert für meine kleinen sachen. C will ich irgendwann auch noch anfangen, aber ich weiss noch nicht wann... ;-) vielleicht bleibe ich doch bei assember. es klappt nähmlich schon ganz gut.

und ganz wichtig: wenn man ein fehler gemacht hat, den aufschreiben. so hat man mit der zeit eine liste mit den persönlichen fehler, die sehr nützlich sein kann......

Delfin
31.01.2008, 19:18
Hi
Ich programmiere einige zeit c/c++, allerdings kann ich dir c++ nicht für roboter empfehlen wegen der hardware nähe. http://software-portal.faz.net/ie/8765/Dev-C++
das ist ein guter compiler vor allem für c.
es besteht außerdem immer die möglichkeit in c-programme schnellen assembler code einzubauen um dein c-programm zu optimieren, also kannst du beide sprachen kombinieren. =P~

Merew
13.02.2008, 21:02
Es ist auch meine frage xD
Ich habe vorwissen in C, Basic kann ich (bis auf API/DirectX/ etc.) nahrzu perfekt. Ich habe mir kein einziges Buch gekauft ;D

Ich denke aber ich werde mit C anfangen. In C habe ich vorwissen, und die Syntax ist sehr PHP nah. (bzw. andersherum xD)


es besteht außerdem immer die möglichkeit in c-programme schnellen assembler code einzubauen um dein c-programm zu optimieren, also kannst du beide sprachen kombinieren. echt?!?

Pascal
13.02.2008, 23:01
ja, das geht wirklich

oberallgeier
14.02.2008, 10:17
es besteht außerdem immer die möglichkeit in c-programme schnellen assembler code einzubauen um dein c-programm zu optimieren, also kannst du beide sprachen kombinieren. echt?!?
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Assembler_und_Inline-Assembler
https://www.roboternetz.de/wissen/index.php/Inline-Assembler_in_avr-gcc

PicNick
14.02.2008, 11:07
IMHO:
Abgesehen vom Spass, einem Controller direkt in die Eingeweide zu greifen:
Assembler (kenntnisse) sind vergleichbar mit Kenntnissen über einen Otto-Motor für den Führerschein.
Einerseits Luxus, andererseits kann das schon mal helfen, mehr Verständnis über Möglichkeiten und Probleme zu haben.

Delfin
22.02.2008, 16:24
@ All
Gibt es hier jemanden, der komlett(vor allem bei bots) in Assembler proggt?
Kann der mal so von Erhahrungen posten?
Wäre nett...
Rob

Besserwessi
22.02.2008, 20:02
Ich habe einiges komplett in Assembler geschrieben. Allerdings keine Bots.
Für kleine Projekte bis etwa 500 Zeile Quellcode (ca. 500-1000 Bytes im Flash) geht das eigentlich ganz gut.
Besonders bei ganz kurzen Dingen sogar fast einfacher als in C. Man kann dann praktische alle "Variablen" in Registern halten was die Sache auch noch mal etwas schneller macht.
Problematisch wird es wenn man noch lägerer Zeit mal noch eine Kleinigkeit ändern will. Es kostet dann doch etwas Zeit bis man wieder versteht was man da eigentlich geschrieben hat.

Für größere Projekte muss man sich wirklich vorher überlegen wie man die Unterprogramme aufteilt und was man im RAM und was in den registern hält. Da gehört wirklich eine Menge an Disziplin und Planung zu wenn die Programme länger oder komplizierter werden.
Bei einem Programm bin ich sogar so weit gegangen erst ein Programm am PC zu schreiben (in Oberon, könnte aber auch C sein) um es da auszutesten und zu optimieren und es dann nach Assembler auf den AVR zu übertragen.