Hallo leuet, ich habe vor einen Microcontroller zu programmieren. Da ich aber keinerlei erfahrung damit habe ergibt sich erstmal die Frage welche Programmiersprache soll ich wählen? Programmieren will ich mit AVR Studio einen: Atmel ATEMega8A-PU Es sollen nur die Ausgänge verschaltet werden. Praktisch will ich mit jedem Port eine andere LED ansteuern.Insgesamt 8 unterschiedliche, dazu kommen noch 2 LED anzeigen, die Zahlen von 0-99 ausgeben können sollen. Die anzeigen besitzen auch jeweils einen Microcontroller. Kann mir da jemand helfen? Gruß Markus
Mit sehr hoher Wahrscheinlichkeit ist C hierfür eine geeignete Sprache. Für einen Anfänger kann auch Bascom sinnvoll sein.
Gehen tut beides, Assembler ist gut um die grundlegende Funktionsweise eines µPs kennen zu lernen und die Frage führt hier regelmäßig zu kriegerischen Auseinandersetzungen...
asm schrieb: > Ich würde so beschreiben: > Zu Fuß gehen oder Bus fahren? Motorrad :-) Lerne beides, es lohnt sich. Mit Assembler (viel Arbeit) kannst Du aus dem Chip alles herausholen, mit C (erheblich weniger Arbeit) nur "fast" alles. Je besser Du in Assembler bist umso besser wird auch Dein C.
Vielleicht macht es umgekehrt noch mehr Sinn. C ist leicht lesbar für Leute die ohnehin die mathematische Ausdrucksweise drauf haben und jetzt noch programmieren lernen. ASM leichter fassbar für Leute die sich die Hardware (ALUs, Rechenwerk, etc.) vorstellen. Lernen sollte man sicher beides. Beginnen aber mit dem, wo man nach 5 Minuten draufgucken irgendeine Idee davon hat, was da geschieht (auch wenn die dann letztlich nicht stimmt). Stimmt man dem zu, dann kann die erste eigentlich eine beliebige Sprache sein.
>5 min halte ich für recht optimistisch Ich bin nicht sicher ob wir uns recht verstehen. Es geht nicht darum, beim ersten Anblick eines Textes eines Programmes innerhalb von 5 Minuten zu verstehen, was da läuft. Schon garnicht wenn man die Sprache garnicht kennt. Ich zitiere mich mal selbst: >wo man nach 5 Minuten draufgucken irgendeine Idee davon hat, was da >geschieht Es geht um "irgendeine Idee", oder sagen wir eine Intuition, ein vages Bild; darum ob der Code eine Vorstellung erweckt. Ob das Angucken nun 5 Minuten oder drei Wochen dauert ist eigentlich egal. Betrachten wir es mal von der Warte des Kenners: Wer ein gewöhnliches C-Programm anschaut und nach 5 Minuten keine mathematischen Ausdrücke (mit so komischen doppelten Kaufmans-Und) und englische Ausdrücke wie "if" und "else" erkannt hat und damit nicht "wenn" und "sonst" und deren Relevanz für die Idee des Programmierens an sich verbunden hat für den ist halt C als erste Sprache nichts. Bei Assembler ist das sicher weniger wahrscheinlich. Trifft aber doch die Menschen, die sich auf der Register-Transfer-Ebene dem Thema genähert haben und was von Microcode etc. gehört haben. (OK. Wenn ihm das mit 5 anderen Sprachen auch so geht, dann fehlt ihm Vor- und Allgemeinbildung. Aber dennoch kann er sicher programmieren lernen, wenn er das nachholt).
Markus G. schrieb: > ich habe vor einen Microcontroller zu programmieren. Also hast du - schließe ich mal messerscharf - noch keine Ahnung, was für einen uC du programmieren willst, kennst noch nicht dessen Innereien und fragst dann so eine Frage. Mein Rat: 1. Guck dir einen uC aus 2. Lies dessen Manual - und zwar gründlich 3. Lerne dabei auch, wie es mit den Registern, Speicher-Räumen, Taktzeiten, Maschinenbefehlen usw. bei diesem Typ aussieht 4. und dann entscheide dich, mit welchen Tools du das Programmieren dieses Chips angehen willst. W.S.
Die Sprachen sind sich alle irgendwie ähnlich - klar gibt es Besonderheiten. Assembler ist da halt total anders. Eigentlich die "Macht" über den Rechner ;). Es dauert bis man es draufhat. Ein fremdes Programm zu verstehen ist nicht ganz einfach, jeder Programmierer hat seinen eigenen Stil, seine eigene Art an Probleme heranzugehen. Das kommt halt viel später wie eine LED mal blinken zu lassen. C ist nach oben offen - mit Assembler kommt man irgendwann an eine Grenze, der Sourcecode ist kaum noch überschaubar (mach mal eine Assemblerprojekt mit 100 kB Sourcecode. Das macht man nur einmal im Leben). Ich hatte mal mit C als Ersatz für Assembler angefangen, mittlerweile benutze ich C eigentlich für alles. Ich kann ein SQLite einhängen, Websites damit bauen und einen kleinen ATTiny damit programmieren. Immer wieder erstaunlich wie weit man damit kommt ...
Lerne C - auf dem PC! Lerne Assembler auf dem uC den Du Dir ausgesucht hast. Insbesondere Register, Timer, Interrupts. Lerne das in Assembler gelernte in C einzufügen. Joachim Drechsel schrieb: > mach mal eine Assemblerprojekt mit 100 kB Sourcecode. Das macht man > nur einmal im Leben Wie viele Leben habe ich denn? Gruß Jobst
Für das was du machen willst ist Assembler nicht notwendig. Also willst du schnell ein Erfolgserlebnis ==> C Bist du leidensfähig und hast viel Zeit bis das funktioniert ==> Assembler. Im Endeffekt wenn du das programmieren von C mal wirklich auf Dauer und ernsthaft weiterführen willst, brauchst du beides. Programmieren wirst du dann später wahrscheinlich zu 99% in C und nur wenige Subfunktionen in Assembler. Aber zumindest zum debuggen , oder zum optimieren deines C-Codes solltest du dann Assembler lesen und verstehen können.
Suche dir zur gewählten µC-Familie ein passendes Tutorial oder ein gutes Einsteigerbuch und arbeite es durch. Lerne wenigstens die Grundlagen der Assemblerprogrammierung, denn nur so steigst du wirklich dahinter, was der µC intern wirklich macht. Danach kannst du dich mit C beschäftigen. Es geht natürlich auch ohne Assemblerkenntnissen, wenn aber der Compiler oder du mal Mist machen, dann ist die Fehlersuche um so komplizierter, einfach deshalb, weil du den erzeugten ASM-Code nicht verstehst. Als ich mit der µC-Programmierung angefangen habe, gab es für diese Familie noch keine sinnvollen / kostenlosen C-Compiler. Deshalb war Assembler das Mittel der Wahl und auch heute mache ich vieles in Assembler. Doch spätestens wenn es etwas komplexere Sachen werden sollen, wo vielleicht noch eine fertige Lib des Controllerherstellers verwendet werden soll, komme ich nicht mehr um C herum.
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.