für alle, die sich über Weihnachten mal an einem Mikrocontroller versuchen wollen, bei Reichelt gibt es das StarterKit STK500 von Atmel für 78€ und damit viel günstiger wie bei C.... Da hat man dann die Garantie, dass das Board läuft, wenn was nicht klappt, kanns eigentlich nur noch am Code liegen.
dachte mir, an der Hardware soll es nicht hängen. Vermute mal, das steht auf der Wunschliste vieler Bastler, könnte an Weihnachten eine lange Lieferzeit haben...
Wie könnte die Sprache, die die Hardware direkt anpspricht, nicht mehr aktuell sein... Man muss ganz klar mehr denken, dafür weis man, was man macht. (ok, selbst denken ist nicht mehr aktuell, insofern...) Klar kann man auch C benutzen, oder eine andere Hochsprache. Mathematische Aufgaben lassen sich damit leichter implementieren (z.B. Trigonometrie für Lagesensor), aber an die Effizienz eines Assemblercodes kommt das nur in Einzelfällen. Eine Kombination geht übrigens auch, wenn man mal nicht nur "einfache" Sachen wie Regler, Licht und IR Empfänger machen will, sondern mal was richtiges. Bei C braucht man mehr Speicher, der kann einem schon ausgehen, kann aber z.B. direkt zwei Register vergleichen und dann direkt entsprechende Befehle ausführen, mehr oder weniger ein Einzeiler. Bei Assembler kann man wenig machen, addieren, subtrahieren, kopieren springen und verzweigen (1 oder 0 an andere adresse springen), für das z.B. vergleichen von zwei Registern muss man schon ein paar Zeilen schreiben, wobei das beim Atmel noch wenige sind.
Also ich kann euch auch nur empfehlen es einfach mal zu versuchen. Ich habe mir den AVR ISP Adapter von Atmel gekauft. Damit ich an Tinys nicht immer Kabel anlöten muß, habe ich mir einen Testclip "Wäscheklammer" gekauft. So sieht das aus:
Der Tiny wird einfach zwischen die Backen geklemmt und kann bespielt werden. Das funktioniert auch im Eingebauten Zustand.
Die Tinys sind sehr gut zun üben von Assembler. Ich habe so schon einige kleine Erfolge erziehlt. Lauflichter, Blitzer, Timer. Das klappt alles schon ziemlich gut. Vielleicht noch ein kleiner Buch Tipp am Rande:
Ich habe mir das Buch auch gekauft. Es ist sehr informativ. Am Ende ist nochmal eine Tabellen mit allen wichtigen Befehlen und genauere Erklärungen. Zu allen Befehlen und Abläufen gibt es Beispiele.
Wo ich noch etwas am hadern bin, ist der PWM Wiederstand. Damit kann man, wenn ich das richtig verstanden habe, z.B. Lichter dimmen, oder Motoren drosseln, bzw. Regeln.
Ein Buch ist auch nicht schlecht, wenn man ein bisschen Englisch kann, kann man sich das aber sparen, bei Atmel gibts die gleichen Infos zum download, völlig kostenfrei.
PWM ist z.b. beim Tiny15 ja relativ einfach, Hardware PWM einschalten, Wert reinladen, fertig. Im Datenblatt steht, welche Bits man dazu einstellen muss. Über die Einschaltdauer steuert man quasi die Energie, die durch läuft...
Na, dann will ich auch mal meine Meinung dazu sagen:
Zu Beginn würde ich auf jeden Fall Assembler verwenden. Die Entwicklungsumgebung ist einfach zu installieren und man lernt den Controller beim Vornamen kennen. Den Controller zu kennen ist wichtig, wenn man auf C umsteigen will.
C ist einfach und bequemer als Assembler, vor allem, wenn man einen Struktogramm-Editor verwendet.
Was Timing und Speicherverbrauch angeht: wenn man es richtig macht, ist es Assembler gleichwertig.
Dieselbe Diskussion wie zwischen Assembler und C gibt es im Augenblick auch zwischen C und modellbasierter Codeentwicklung.
Mein Fazit: ich habe mit Assembler begonnen und bleibe bei C.
die Diskussion um die optimale Programmiersprache kann leicht zu einem Religionskrieg ausarten. Ich kann mich nur Harry anschließen: Ohne den jeweiligen Controller im Detail durch Assembler-Programmierung kennenzulernen, kann man mit anderen Programmiersprachen nicht alles erreichen.
Ich schreibe etwa die Hälfte meiner AVR-Software rein in Assembler, den Rest in C, wobei ich aber häufig Prozeduren in Assembler schreibe und im C-Programm aufrufe. Der von mir verwendete Compiler (GCC) "verbraucht" bei jedem Prozeduraufruf einigen Platz -- aber heutzutage sind Speicherplatz und Rechengeschwindigkeit nur noch selten wesentliche Gründe, Assembler vorzuziehen; auch wenn ich als "Altprogrammierer" schwer davon abkomme, Assembler zu bevorzugen. Um die Optimierungsoptionen der Compiler wirklich sinnvoll nutzen zu können, ist es übrigen oft hilfreich, einen Blick in die vom Compiler erstellte Assembler-Datei zu werfen (nicht alle Compiler erlauben aber eine solche Ausgabe).
Gruß
Fred
Time flies like an arrow, fruit flies like a banana. Groucho Marx
ja, ist auch ne Glaubensfrage...(wobei das hier nicht auf nicht beweisbarem beruht und damit mit echten Argumenten diskutiert werden könnte) Die Kombination ist sicher am komfortabelsten, blöderweise muss man dazu beides können... Bei meiner MCU ist der C-Compiler beschränkt, ist etwas unpraktisch wenn man nur 1/4 des Speicher benutzen kann, ohne für teuer Geld die Vollversion zu ordern. Weis nicht, wie das bei der Atmel IDE ist, kann der Compiler da unbegrenzt lange Codes ? Die minimal erreichbare Taktfrequenz und damit Stromaufnahme wird aber für einen echten Hardware-Akrobaten noch ein paar Jahre leichter mit Assembler erreichbar sein, da ein Compiler nicht so kompromisslos sein kann, wie ein Programmierer...
Es scheint, wir sind uns in etwa einig: was man verwendet hängt davon ab, was man hat und was man erreichen will.
Ach ja, stromsparen: da ist in der Automobilindustrie doch immer noch der alte MARC4 beliebt. Ein 4-Bit Controller mit einer eigenen und rätselhaften Programmiersprache....
ja da sind wir uns einig. 4-Bit, das wär mir dann doch etwas zu wenig, 8-Bit sind mir da lieber. Ab und zu schau ich mir auch 32-bit Prozessoren an, schon interessant aber der Stromverbrauch ist exorbitant.... Bisher bin ich mit der Hardware noch nicht an die Grenze gestoßen, höchstens bei den Pins...
GCC unterliegt der GNU Lizenz, kostet also nichts. Der Compiler ist recht ausgereift und wird natürlich wie alle GNU Software von vielen Programmieren weltweit laufend verbessert, wobei ich als Außenstehender allerdings den vielleicht falschen Eindruck habe, dass der Kommunikationsprozess zwischen diesen Programmierern etwas "bürokratisch" ist. GCC ist für meine Zwecke völlig ausreichend. Wo es dann ausnahmsweise mal aus Platz- oder Geschwindigkeitsgründen grenzwertig ist, nehme ich eben Assembler. GCC läuft übrigens elegant im Atmel "AVR Studio".
Bei GCC kann man jeweils den gesamten verfügbaren Platz im Flash nutzen.
Gruß
Fred
Time flies like an arrow, fruit flies like a banana. Groucho Marx
da muss ich mal schaun, ob das auch mit meiner IDE läuft, den 8051 sollte er aber können, Atmel benutze ich eigentlich kaum noch... Meine IDE ist auf 1024 Zeilen begrenzt, der Chip hat 4096, bisher wars ausreichend.