PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welche Sprache (Basic oder C)



AndyTrendy
28.12.2008, 01:48
Hallo

Ich möchte mich nun endlich mal mit dem AVR beschäftigen.
Nun wollte ich mal Fragen mit welcher Sprache ihr am liebsten Programmiert.Mit welcher Sprache habt ihr angefangen und warum.
Was meint ihr welche Sprache ist für den Anfang besser.Welche Sprache ist zukunftsorientierter.

lg

Andy

Gock
28.12.2008, 03:05
Für den Anfang empfehle ich Assembler. Danach kann man mit C weitermachen, weil C sehr verbreitet und ein Art "Grundsprache" ist. Andere Sprachen bauen darauf auf, zB Java, C++.
Basic ist zwar sehr einfach, aber mit modernen Programmiersprachen hat es nicht viel gemein.
Es kommt letztendlich darauf an, was Du vor hast...
Gruß

Neutro
28.12.2008, 09:30
Wie Gock schon sgte kommt es darauf an was du vorhast.
Ich selber Programmiere mit Bascom weil ich durch den Syntax und die ganzen Sonderzeichen von C nicht durchblicke, aber das ist mein persönlicher Geschmack. Assembler ist natürlich das Urgestein aller Programmiersprachen, erfordert aber das du dich mit dem zu Programmierenden Controller sehr genau beschäftigen musst. Besonders für den Anfang ist das nicht gerade ermutigend wenn man viele Zeilen schreiben muss um eine LED zum blinken zu bringen. Das geht mit Basic und C doch wesentlich schneller. ASM hat noch den Nachteil das Jeder Controller Hersteller einen eigenen Befehlssatz verwendet.
Was hast du denn da ao für Anwendungen vor Augen?

MfG

wkrug
28.12.2008, 10:30
Auch ich würde Vorschlagen, das Du dich erstmal mit dem Aufbau des Controllers beschäftigst und das musst Du ohnehin, wenn Du mit Assembler beginnst.
Deshalb ist Assembler zwar ein etwas schwieriger Einstieg, der aber hinterher sehr viel bringt.
Ich selber hab mit Assembler angefangen und progge jetzt in "C". Ich habs Anfangs auch mal mit BASCOM versucht, sobald aber die Aufgaben etwas abseits vom Schema liegen wird das schnell kompliziert.
Ausserdem find ich die Einbindung von inline Assembler in Bascom nicht besonders gut gelungen.

Wenn man sich an die etwas seltsame Syntax von "C" gewöhnt hat, programmiert sichs damit recht flott.

Ich selber benutze CodeVision AVR, eine kostenlose Demoversion kannst Du Dir bei http://www.hpinfotech.ro/ runterladen. Die kann bis zu 2k Code generieren.

Wenn Du denkst, dich mit einer Hochsprache nicht mehr in die Hardware des entsprechenden Controllers einarbeiten zu müssen, bist Du bei allen Controllertypen auf dem Holzweg.

Das schöne an den AVR Controllern ist, das zumidest der Prozessorkern bei allen Typen gleich ist.

radbruch
28.12.2008, 10:31
Hallo


Basic ist zwar sehr einfach, aber mit modernen Programmiersprachen hat es nicht viel gemein.
Das stimmt bei Bascom nicht, es ist genauso modern wie GCC.

Assembler ist für Einsteiger zäh und tückisch, mit Bascom dürften sich die schnellsten Erfolge einstellen (bis man an die 4kb-Grenze stößt). Bei C verwirrt zuerst die flexible Syntax, darunter leidet die Lesbarkeit der Programme. Trotzdem ist es wohl der Standart und als Programmiersprache für Mikrokontroller weit verbreitet.

Bascom dürfte die einfachste Installation haben, kennt keine PN2- oder Makefile-Probleme, hat eine umfangreiche Doku und wird hier gut unterstützt. Obwohl ich inzwischen meist in C programmiere würde ich einem totalen Anfänger eher zu Bascom raten.

Gruß

mic

wkrug
28.12.2008, 10:55
Bascom dürfte die einfachste Installation haben, kennt keine PN2- oder Makefile-Probleme, hat eine umfangreiche Doku und wird hier gut unterstützt. Obwohl ich inzwischen meist in C programmiere würde ich einem totalen Anfänger eher zu Bascom raten.
PN2 und makefile gibts bei CodeVision auch nicht.
Der Einstieg mag in BASCOM einfacher sein als bei "C". Im Prinzip muss man aber dann beim Umstieg auf "C" zwei mal von vorne anfangen.

Ich selber halte BASCOM für einen sehr ausgereiften und einfach zu bedienenden Compiler. Trotzdem würde ich eher zu "C" raten, weil die Sprache flexibler ist und meistens auch kleineren und schnelleren Code generiert als BASCOM. Zudem gibt es für fast alle Aufgaben fertige Librarys.

Ich hab auch schon AVR GCC probiert, aber das war mir dann doch zu tückisch. So bin ich dann bei CodeVision gelandet und bis jetzt sehr zufrieden damit. Vor allem der Automatic Programm Generator kann einem einge Stunden Datenblattstudium ersparen. Vorausgesetzt man kennt den entsprechenden Controller ein wenig.

Ich habs damit geschafft ( obwohl ich absolut kein Freak bin ) innerhalb von 3 Stunden einen funktionsfähigen AVR Dimmer ( ATtiny2313 ) mit Drehimpulsgeber Abfrage und LED Anzeige zu proggen.
Das muss man erstmal in einer anderen Programmiersprache schaffen.

@AndyTrendy
Die Frage nach dem richtigen Einstieg wurde hier schon oft gestellt.
Eine letztgültige Antwort wurde darauf aber meines Wissens noch nie gefunden.
Aber schau Dir die entsprechenden Threats ruhig mal selber an.
Letztlich hängt es von den Vorkenntnissen und Vorlieben des Programmierers ab, für welche Sprache er sich entscheidet.

Da viele Compiler als kostenlose Demoversionen zu bekommen sind, würd ich einfach mal ein paar ausprobieren und dann schauen, womit Du am Besten zurecht kommst.

radbruch
28.12.2008, 11:33
Hallo


Zudem gibt es für fast alle Aufgaben fertige Librarys.
Dafür hat Bascom für viele Standartaufgaben umfangreiche Befehle eingebaut die alle über eine einheitliche Schnittstelle zum Programm verfügen.

Bei C-Libraries, die es auch für alle denkbaren Aufgaben schon gibt, muss man sich selbst erarbeiten wie man die Lib verwendet. Wenn man dann nicht gerade einen Quasistandart wie bei den LCD- oder MMC/SD-Libraries verwendet steht man ziemlich einsam da. Es kann dann schon reichen wenn die Lib für einen anderen Kontroller geschrieben wurde und niemand zu finden ist der das anpassen kann.


Im Prinzip muss man aber dann beim Umstieg auf "C" zwei mal von vorne anfangen.
Im Prinzip kann man (fast) alle Aufgaben mit Bascom lösen, ein Umstieg ist nicht zwingend nötig.

Was noch ein Pluspunkt für Bascom sein könnte: Es spricht deutsch.

Gock
28.12.2008, 11:43
So bin ich dann bei CodeVision gelandet und bis jetzt sehr zufrieden damit. Vor allem der Automatic Programm Generator kann einem einge Stunden Datenblattstudium ersparen. Vorausgesetzt man kennt den entsprechenden Controller ein wenig.

Ich habs damit geschafft ( obwohl ich absolut kein Freak bin ) innerhalb von 3 Stunden einen funktionsfähigen AVR Dimmer ( ATtiny2313 ) mit Drehimpulsgeber Abfrage und LED Anzeige zu proggen.
Das muss man erstmal in einer anderen Programmiersprache schaffen.


Hi!
Ich kenne nur eine alte Version von CodeVision, ohne Codegenerator. Habe mal hier (http://www.hpinfotech.ro/html/cvavr_features.htm) nachgelesen, aber kann mir das nicht so gut vorstellen.
Wie bringt man den Compiler dazu, den entsprechenden Code zu erstellen? Wie wählt man die Funktionen aus?
Gruß

Neutro
28.12.2008, 11:50
Schau dir doch mal die entsprechenden Unterforen für Bascom und C an da erkennst du vielleicht was dir besser liegen wird. Auch ein Blick ins Wiki in die Tuorials kann hilfreich sein.
Selber hatte ich bei Bascom schon nach weingen Stunden arbeit die
ersten "Progrämmchen" die funktionierten.
Für Bascom gibt es auch noch das " Bascom AVR Mikrocontroller Forum" das wirklich sehr gut ist.

maw_hn
28.12.2008, 12:00
Hallo Andy,

das kommt ganz darauf an was du damit machen möchtest.

Wenn du Robotik und Programmieren als Hobby betreibst reicht dir sicherlich eine einfach zu erlernende Sprache wie Bascom.

Wenn du vor hast in der Richtung auch beruflich was zu machen (ich kenne deine Ausbildung nicht) würde ich dir auf jeden fall C empfehlen. Das ist numal eine der Standard-Sprachen für uCs in der Industrie. Außerdem ist C, wie Gock schon sagte, die beste Grundlage wenn du später auf die aktuellen "In-Sprachen" C++, C# oder Java umsteigen willst.

Zu Thema Assembler: Das ist sicherlich ganz hilfreich für ein gutes Verständniss der Vorgänge im uC. Allerdings würde ich jedem Einsteiger empfehlen erst mal mit C anzufangen. Ich hab die Erfgahrung gemacht, dass Leute die sich am Anfang mit ASM rumärgern schnell die Lust verlieren. Wenn du einige Grundkenntnisse besitzt kannst du mit Hilfe von ASM immer noch tiefer in die Materie einsteigen.

Just my two cents...

Marco

wkrug
28.12.2008, 16:06
Ich kenne nur eine alte Version von CodeVision, ohne Codegenerator. Habe mal hier (http://www.hpinfotech.ro/html/cvavr_features.htm) nachgelesen, aber kann mir das nicht so gut vorstellen.
Wie bringt man den Compiler dazu, den entsprechenden Code zu erstellen? Wie wählt man die Funktionen aus?
Das macht man ganz zu Anfang der Programmentwicklung.
Man startet also den APG.
Dann wählt man über die Reiter aus was alles für Hardware wie eingestellt werden soll.
Codevision legt darauf hin ein Projekt an in dem die vorher eingestellte Hardwarekonfiguration schon im Quellcode enthalten ist.
Ausserdem werden dabei benötigte Subroutinen auch gleich generiert.

z.B. Ist ein Timer schon konfiguriert und die eingestellten Interruptroutinen schon angelegt und freigegeben.
Man braucht dann nur noch den gewünschten Code in die etsprechenden Subroutinen einzufügen.
Wer schon mal die Parameter für eine einfache USART Konfiguration gemacht hat weiß, was das für eine Erleichterung ist.

Anbei mal ein Screenshot des APG.

Besserwessi
28.12.2008, 19:25
In Bascom wird man wohl am schnellsten ein Erfolgserlebnis haben. Wenn man aber mehr machen will, ist nicht nur die 4 K Grenze der Demo Version ein Problem. Das nur eine Rechenoberation pro Zeile ist ziehmlich nervend. Solange man mit den vorgefertigten Mustern klarkommt sollte BASCOM noch gehen, aber wenn man mehr von Hand machen muß wirds umständlich.

C ist zwar auch keine moderne Sprache und hat einige tückische möglichkeiten für Anfängerfehler, aber es ist halt der Standard für Programmen im µC. Assembler zu können ist nicht verkehrt, denn dann kann man ggf. darauf zurückgreifen, wenn C nicht schnell genug ist, und man kann leichter verstehen was lange dauert, und was schnell geht. Man kommt aber auch ohne ASM gut aus. Mit der Combination AVRstudio und WinAVR braucht man sich auch nicht mit makefiles rumschlagen.

Wie man anfängt hängt sehr von den vorkenntnissen ab. Es macht auch nichts später eine andere sprache zu lernen, die erste ist mit Abstand die schwerste, die 5 te geht dann eher schnell.

Kevka
29.12.2008, 11:51
Ich denke, dass kommt darauf an, was du schon kannst.
Hast du bereits in JavaScript, PHP, C#, Java oder sonst etwas C ähnlichem Programmiert würde ich dir C empfehlen.
Hast du noch nie Programmiert, könntest du mit Bascom anfangen - früher oder später wirst du so oder so entweder an die Grenzen des mit Bascom möglichen stoßen oder dich fragen, was da eigentlich passiert, wenn ein Bascombefehl eine Zeichenkette per UART verschickt. (mit C kommst du nicht unter 20 Zeilen hin - zumindest, wenn du mit Interrupts arbeiten willst).
MfG Kevka