Hallo, ist es emfehlenswert mit C Abzufangen wenn man den Assembler nicht gut blickt? Wenn ja kann man gleich mit C Anfangen oder soll man erst BAsic lernen? Habe mal ein wenig mit GFA-Basic rumexperimentiert! Danke schonmal. Peter
Hallo Peter, Basic ist sehr schön, aber wenn mal irgendwas nicht implementiert ist (im Compiler) entsteht sehr schnell ein furchtbar unübersichtlicher Code, und C zu lernen ist nicht schwieriger als irgendeine andere Programmiersprache. C ist hochgradig portabel, Basic in der Regel überhaupt nicht. Alle Welt spricht C, Basic ist immer Implementierungssache. Meine Erfahrung (und die vieler anderer) ist: mit C gehts immer noch am besten, und viele können helfen. Für die AVRs scheint mir WINAVR das Ding schlechthin zu sein. Allerdings solltest Du dich schon ein bischen mit dem Assembler auskennen, hilft manchmal um Missverständnisse zwischen Dir und dem Compiler zu entdecken wenn man sich das Compilat anschaut. Besorg Dir Kernighan, Ritchie: "Programmieren in C", da steht alles drin, was man braucht. Hoffe das hilft Dir Berndt
Hallo Peter, ich kann Berndt nur zustimmen. Vergiß alles und nimm C !! Ich kann Dir aus Erfahrung sagen, daß man den Assembler-Code nicht mehr vollständig verstehen muß. Die 8051-Controller konnte ich damals noch komplett in Assembler programmieren, aber die neuen viel leistungsfähigeren Controller wie z.B. die C167'er von Intel haben bereits einen so umfangreichen Befehlssatz, daß es fast unmöglich ist fehlerfreie Programme oder sogar kürzere Programme als das Compilat zu entwickeln. Ich gehe daher so vor, daß ich ausschließlich C programmiere und mir immer .LST-Files generieren lasse. Die kann ich mir dann ansehen und "interpretieren". Das geht, wenn man grundsätzlich weiß, wie Assembler im Durchschnitt aussieht ganz gut, obwohl man den genauen Befehlssatz nicht komplett kennt. Damit kann man immerhin beurteilen, ob der C-Code effektiv ist oder nicht. Auch muß man nicht für jeden Befehl wissen, ob er nun das Carry-bit beeinflusst oder nicht. Aber das brauchst Du eigentlich nur machen, wenn Du zeitkritische Funktionen entwickelst, für kleinere Programme ist das alles völlig egal. Der Vorteil von C ist jedenfalls, daß du den Code ohne größeren Auffwand auf jedem anderen Rechner laufen lassen kanst, wenn Du den entsprechenden Compiler besitzt. Von allen anderen Programmiersprachen, insbesondere Basic, kann ich nur abraten. Das ist was für Warmduscher. Und wenn Du dann irgendwann in ANSI-C fit bist und die ersten objektorientierten Programm in C++ schreibst, wirst Du feststellen, daß diese Möglichkeiten andere Programmiersprache überhaupt nicht hergeben. Also mach keine falschen Fehler. Markus
Da kann ich Markus nur zustimmen. Basic ist so, wie mit Bauklötzern zu spielen. es geht schnell irgendwelche Standardsachen zu machen. Aber sobald ein Bauklotz nicht mehr paßt, stehst Du voll auf dem Schlauch. Z.B. wenn Du ein LCD nicht mit 11 sondern nur mit 3 Drähten ansteuern willst. Bei C nehme ich auch grundsätzlich nur die Standardbibliotheken (math.h, stdio.h, stdlib.h, string.h usw.). Z.B. LCD, I2C, 1-Wire ist zu stark von dem konkreten Projekt abhängig (AVR-Typ, Pinbelegung, CPU-Takt), als das man dafür einigermaßen funktionssichere Bibliotheken hinkriegt. Im eigenen Code kann man die Fehler wenigstens suchen und man weiß, welche Resourcen belegt werden (z.B. auch max / min Interruptlatenzzeit). Peter
Nu ja, C ist keine für Anfänger besonders gut geeignete Sprache. Die Syntax ist teilweise nicht ganz simpel zu verstehen. Pascal ist eher geeignet, ein Gefühl für eine (prozedurale, nicht objektorientierte) Hochsprache zu erlangen. BASIC zählt schlicht gar nicht als Hochsprache. :) Objektorientierung auf einem Micro sollte man nur angehen, wenn man wirklich ein gutes Verständnis für all die internen Zusammenhänge hat. Bis dahin sollte insbesondere für einen Anfänger C++ tabu sein. Man kann sich damit verdammt schnell ins Knie schießen (besonders was den Ressourcenverbrauch anbelangt). Obwohl ich alles andere als ein Gegner von Hochsprachprogrammierung für Microcontroller bin: ein grundlegendes Verständnis für die Maschine und deren Assembler sollte man besitzen. Das muß nicht unbedingt so weit gehen, daß man selbst freihändig ein Assemblerprogramm zusammenbekommt, aber man sollte sich schon in der Anfangsphase häufiger mal ansehen, was der Compiler so aus dem Programm tut. Dazu bedarf es übrigens nicht unbedingt eines Listings, avr-gcc ... -S übersetzt direkt in den Assemblercode (Dateiendung .s).
Hallo, Danke schon mal für eure ausfürlichen Antworten! Wie gesagt ich verstehe auch ein wenig Assembler. Mit C++ will ich ja auch gar nicht schaffen sondern mit dem normalen C. Mein Bruder hat mir ja gesagt das C++ praktisch nur ein paar mehr befehle und die anderen vieleicht ein kleinwenig verändert sind. Für weitere Tips wäre ich dankbar. Peter
Oh, da hat Dein Bruder aber offensichtlich absolut keine Ahnung von C++... Von der Komplexität her ist C++ einige Grössenordnungen von C entfernt, im Gegensatz zu C ist es da mit Syntay-Lernen nicht getan. C lernt man an einem Tag, wenn man das will, C++ lernt ein erfahrener Programmierer vielleicht in einem Jahr Vollzeit...
Hallo, Wo lernt man den zumindesten halbwegs C in einem Tag oder Nacht? Habe noch kein gutes Touterial gesehen das wirklich von ganz Anfang an Anfängt. Werde mal schauen das ich das "Programmieren in C" ind er Bücherrei bekomme. Hat sonst noch jemand einen guten vorschlag was Bücher oder internetseiten angeht? DAnke schon mal für eure gute und schnelle Hilfe. Peter PS. Vitamin C nehme ich schon die ganze Zeit aber kann immer noch nicht C reichen den da nicht 10 hochdosierte Tabeletten:)
hier das erste oben im link. ist wohl schlecht hin das beste http://www.mikrocontroller.net/buecher.htm dass man c an einem tag lernen kann halte ich für ein gerücht. da es auch viele abstrakte sachen gibt die man mit sicherheit auch an zwei oder drei tagen nicht lernen kann. das meiste lernt man aus erfahrung. bücher zeigen meist nur die grundfunktionen. obwohl in dem oben ganannten buch auch tiefer in die materie eingangen wird. gruss, BAB
Ich hatte auch von einem erfahrenen Programmierer gesprochen. Und C hat nunmal keinen hohen Abstraktionsgrad, so dass ein erfahrener Programmierer da auch auf nichts Neues stösst! In C++ ist das hingegen völlig anders.
Hallo Peter, versuchs mal hier. http://www.mikrocontroller.net/articles/c/ Ich habs noch nicht gemacht, scheint aber bei vielen sehr beliebt zu sein.
Hallo, ich habe mich jetzt entschieden mit C anzufangen. Und jetzt kommt schon meine erste Frage wie bekomme ich aus UltraEdit-32 ein file raus des ich mit Ponyprog brennen kann? Peter
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.