Hallo Roberto,
dann denk dir doch mal ein Bsp. für irgendeine Berechnung oder sonstiges aus, nur mach es nicht zu einfach, sonst ist es nicht mehr repräsentativ. Ich schreibe dir dann dafür ein C-Programm.
Wenn man den Threads auf mikrocontroller.net die Threads verfolgt, kann man aber nur zu dem Schluß kommen, dass bspw. avr-gcc schon eine Spur schneller als Bascom ist. Ich würde das allerdings nicht negativ sehen, weil für Einsteiger Bascom wesentlich besser geeignet scheint, auch wenn man da wieder das Problem hat, dass dem Benutzer dadurch zum Teil auch grundlegende Funktionsweisen des MC verborgen bleiben.
Eigentlich ist die Diskussion aber müßig, wen interessierts, was spielt es für eine Rolle?
Hallo Freunde
Ich denke für den AVR spricht die Qualität der beiträge und der Unterstützung die man in diesem Forum findet und erhält. Auch der Bascom Compiler ist ein starkes Argument. Ich habe hier begonnen mit der festen Absicht in Assembler zu programmieren, aber wenn man festellt das im Sprachumfang von Bascom schon viele Funktionen drin sind die man sonst erst mühsam selber entwickeln muß, dann habe selbst ich Sturkopf mich überzeugen lassen. Dazu kommt das man hier im Forum soviel Code finden kann mit dem man weiterführend arbeiten kann. Zu guter letzt, Assembler Code ist so einfach in ein Bascom Program einfügbar, das man wo zeitkritisch jederzeit die Vorteile des Assembler nutzen kann. Die hier empfohlenen Bücher, das von C.Kühnle, das von Walter und das zu Bascom Sprachbefehle, ergänzen die Umgebung vortrefflich.
Nicht zuletzt eigentlich möchte ich auf die Produkte von Robotikhardware nach den Richtlinien diesees Forums hinweisen. Hier kann man preiswert hochwertige und sehr gut konzipierte Produkte erwerben. Je mehr man sich mit ihnen beschäftigt, desto mehr erkennt man wie clever konzipiert die sind. Ich bin übrigens nur ein zufriedener Benutzer und kein an Robotikhardware oder Atmel Beteiligter.
MfG
Hellmut
So bestellt wird wahrscheinlich bei elv. nur warum finde ich da keine quarzoszillatoren? einen beheizten quarz braucht man ja nicht wirklich![]()
Keinesweg, das ist leider ein weit verbreiteter Irrtum.Zitat von ThunderD
Bei heutigen PC-Prozessoren wie P4 oder Athlon-XP (oder die 64-Bit-CPUs) ist es extrem schwer bis nahezu unmöglich, in Assembler schnelleren Code zu schreiben als den, den ein guter C/C++-Compiler generiert.
Wenn man nicht gerade ein Assembler-Guru ist und die Datenblätter dieser CPUs im Schlaf aufsagen kann, hat man kaum eine reale Chance einen optimierenden Compiler zu schlagen.
Auf Mikrocontroller lässt sich das natürlich (noch) nicht 100% übertragen, weil diese bei weitem noch nicht die Komplexität eines P4 aufweisen. Zur Zeit kann man daher auch mit grundlegenden Assembler-Kenntnissen schnelleren oder sparsameren Code erzeugen. Leider ist es so, dass Assembler nicht gerade die übersichtlichste der möglichen Programmiersprachen ist, weswegen es für größere Projekte doch häufig ausscheidet. Die Wartung des Codes wird einfach zu aufwändig. Manchmal eignet sich Assembler für zeitkritische Routinen, wenn der Compiler etwas zu viel des guten erzeugt.
Wenn man z.B. in C einen Funktionsaufruf in einer Interruptroutine macht, sollte man schon wissen was das auf Assemblerebene bedeutet.
Man darf aber auf gar keinen Fall den Fehler machen und die Codegenerierungs-Leistung von guten C/C++-Compilern unterschätzen.
Im Zweifelsfall kann man den C/C++-Compiler jederzeit überreden, Assembler-Code auszuspucken und selbst Hand anlegen.
Zu Bascom:
Ich habe Bascom nie benutzt. Nach dem, was ich davon gehört habe, vermute ich aber stark, dass der generierte AVR-Code ziemlich gut sein kann. Das liegt aber nicht gerade am optimierenden Bascom-Compiler, sondern eher daran, dass keine komplizierten Ausdrücke möglich sind. Die (man verzeihe mir den Ausdruck) relativ primitive Sprache lässt sich ziemlich einfach nach Assembler übertragen, viel optimieren muss man da gar nicht.
Es hängt bei Bascom IMHO also ziemlich am Programmierer, ob der Code schnell, sparsam oder beides ist. Langsamer als Assembler-Code ist er dabei nicht unbedingt (außer Bascom optimiert _gar nicht_ und übertragt wirklich stur 1:1 nach Assembler).
p.s.: Ein selbstgebauter ISP-Adapter ist normalerweise um einiges billiger als ein gekaufter. Allerdings hast du dann natürlich das Risiko, dass er nicht funktioniert. Bei einem sehr einfachen Adapter sollte dieses Risiko aber vernachlässigbar sein. Du baust ihn auf, wenn er nicht geht und du nicht lange nach dem Fehler suchen willst kannst du dir immer noch einen kaufen.
(*puh* Monster-Posting; ich sollte mich vielleicht mal registrieren)
Hallo,
also zuerst einmal zum eigentlich Thema dieses Threads: Ich würde jederzeit nen AVR bevorzugen. Gründe hierfür sind der einfache ISP, die gute Unterstützung und Datasheets von Atmel unddie weite Verbreitung.
Nun zu den Programmiersprachen. Uerst einmal muss ich Lekro Recht geben. Bei modernen Prozessoren biste mit nem schönen C-Code oftmals schneller. Aber auf RISC- Prozessoren ist dass eben nicht der Fall. Ich gehe hierbei einen Kompromiss ein: Ich schreibe meine Programme auf nem C- Compiler und nur zeitaufwändige Berechnungen oder sehr Zeitgenaue Port- Arbeiten in Assembler. Sobald ein Programm ne gewisse Grösse erreicht wirds in Assembler einfach zu unübersichtlich...
MfG Marco
Lesezeichen