PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR-Assembler, das wahre Basic!



rungo
06.06.2006, 20:17
Endschuldigt bitte die kleine Provocation. Es drückt aber in etwa aus, was für einen Eindruck ich nach den ersten Monaten ASM-Lernen habe.
Nun gut, ich bin schon etwas älter und Elekronic ist schon lange mein Hobby. Die AVRs sind aus dieser Sicht ideal und so preiswert, daß man wirklich fast jeden Sensor oder Aktor mit einem eigenen Controller ausrüsten kann.
Aber nun zum Thema Assembler. Ich kenne natürlich die oft verlinkten Einsteigerseiten und habe da (wie auch hier) schon viel gelernt und einen erstmal ausreichenden Überblick gewonnen. Jetzt kommen die Details. Da wäre z.B. die Frage nach einem guten Programmierstil, der allgemein besten Programmstruktur und sonstige Fragen, die ich gern klären möchte. Eure Gedanken hierzu....?

MfG
Georg

PS: Von wegen dem 'Basic': Bin VB-Fan und liebe Klassen (Hab sogar schon eine ATtiny15-Klasse ;-)

PicNick
06.06.2006, 20:31
Gleich die Provokation zurück: EINE Klasse ist ein bißchen mickrig. :-)
Das gibt ja Kraut und Rüben.
Etwas Hierarchie und Vererbung hat sich der kleine Sch...er schon verdient.

Der beste Programmierstil ? harhar.

Im Forum ist schon lang kein Blut mehr geflossen. Offenbar eine gute Gelegenheit, das Ganze ein wenig aufzumischen

Florian
06.06.2006, 20:52
Hallo Georg!
Leider hast Du mit dem Vergleich (ASM <=> Basic) auch gleich die Nachteile von jener Programmiersprache auf ASM abgewälst! *lol*
Nein, im Ernst:
Bitte lasst uns nicht wieder den 3. Weltkrieg in Sachen Programmiersprachen ausrufen, das tut meinem unserem Gemüt nicht gut ... ;o)
Ich kann als guten Programmierstiel in ASM auf jeden Fall die Verwendung von Bibliotheken empfehlen, damit das ganze übersichtlich bleibt.
Desweiteren habe ich immer die selben Abstände gemacht, das macht den Code auch lesbarer:

ldi temp , 0xFF
out PORTB , temp
Außerdem sind Kommentare ganz wichtig, sie erleichtern das Lesen eines Codes enorm, auch wenn man länger braucht, um die ganzen Kommentar-Texte zu lesen! *g*

Ich hoffe damit habe ich geholfen die eigentliche Frage (exkl. Provokation) zu beantworten! ;o)

Viele Grüße
Florian



PS: Ich bin überigens mittlerweile bei C gelandet! *lol*

rungo
06.06.2006, 21:13
Gleich die Provokation zurück: EINE Klasse ist ein bißchen mickrig. :-)
Das gibt ja Kraut und Rüben.
Etwas Hierarchie und Vererbung hat sich der kleine Sch...er schon verdient.

Der beste Programmierstil ? harhar.

Im Forum ist schon lang kein Blut mehr geflossen. Offenbar eine gute Gelegenheit, das Ganze ein wenig aufzumischen

:-)
Hallo,
woher willst du wissen, daß ich nur EINE Klasse habe?
Im Ernst. Ich packe alle harten Fakten zu den ATtinys in ein Programm. Das heißt ich veriefe so das Gelernte. Im Laufe der Zeit sind so sämtliche Befehle, I/O Register und anderes als blanke Info in Klassen gelandet. So habe ich jetzt schon einen brauchbaren Editor, der mir alle Befehle und Register/Bits in Listen präsentiert und so jede Programmzeile in Assembler meistens mit drei Mauscklicks erledigt ist. Außerdem hab ich das Ganze noch mit einer Datenbank für Beispielcode ausgestattet, in dem ich bei Bedarf blättern kann. Und für kurze Initialisierungen oder öfter benötigte Code-Stücke fülle ich derzeit EINE eigens dafür geschaffene Klasse - ein Mauscklick und z..B. der Stapel ist eingerichtet.

So lerne ich gut!
Gruß!

rungo
06.06.2006, 21:26
[....]
Ich kann als guten Programmierstiel in ASM auf jeden Fall die Verwendung von Bibliotheken empfehlen, damit das ganze übersichtlich bleibt.
[....]
PS: Ich bin überigens mittlerweile bei C gelandet! *lol*

Bibliotheken - so was gibt es? Klar, für C, aber Assembler? Wo sind welche?:)

Und zu C würd ich sagen, daß das für mich irgendwann vielleicht relevant wird, wenn mir meinen kleine Projekte gelingen und ich größere anvisieren kann. Man bekommt ja schon allein aurch die Lektüre der Datenblätter einiges von C mit - ich nehms mit.

Danke für die Antwort!

Florian
06.06.2006, 21:56
Hallo rungo!

Bibliotheken - so was gibt es? Klar, für C, aber Assembler? Wo sind welche?Selber erstellen! ;o)
Ansonsten findet man ab und zu mal (auch im RN) ein paar Include-Bibliotheken für ASM!

Und zu C würd ich sagen, daß das für mich irgendwann vielleicht relevant wird, wenn mir meinen kleine Projekte gelingen und ich größere anvisieren kann.So war es bei mir auch, irgendwann kommt man mit ASM nicht mehr effektiv weiter, also schnell zum Ziel. *meine Meinung*
Ich bleibe aber dabei, ASM ist eine sehr schöne Programmiersprache! ;o)

Viele Grüße
Florian

Hanni
06.06.2006, 22:27
So war es bei mir auch, irgendwann kommt man mit ASM nicht mehr effektiv weiter, also schnell zum Ziel. *meine Meinung*

Hmm, Ansichtssache ... das schöne bei Assembler ist ja, das man es eben nicht auf den Compiler schieben kann :D

Wenn das Programm sch... läuft, muss man sich schon selbst an die Nase packen.

Im übrigen: Die einzig wirklich brauchbaren Bibliotheken sind nun mal die, die man selbst geschrieben hat. (zumindest in Assembler)

So, und nun noch nen kleinen Text zum Quote:
Sicherlich wird man für eine Programmentwicklung in Assembler immer etwas länger brauchen. allerdings, wenn man ökonomisch denkt rechnet sich auch dieses irgenwann einmal. (z.B. dann benn sich bei Stückzahlen auf einmal ein kleinerer AVR bemerkbar macht.)

Grüße,

da Hanni.

Florian
06.06.2006, 22:36
Hallo Hanni!

Im übrigen: Die einzig wirklich brauchbaren Bibliotheken sind nun mal die, die man selbst geschrieben hat. (zumindest in Assembler)Jap! *lol*

Sicherlich wird man für eine Programmentwicklung in Assembler immer etwas länger brauchen. allerdings, wenn man ökonomisch denkt rechnet sich auch dieses irgenwann einmal.Damit hast Du wohl Recht, der Meinung bin ich auch, aber für mein Projekt ist es jetzt langsam entscheidend, dass ich schneller zum Schluss komme!

Wenn das Programm sch... läuft, muss man sich schon selbst an die Nase packen.Ja, das ist in der Tat ein Vorteil bzw. Nachteil der Compiler und das hat mich auch schon des öfteren genervt, aber irgendwas muss man halt opfern ...

Viele Grüße
Florian

rungo
06.06.2006, 23:22
Schön, mit dem Begriff 'Bibliotheken' hab ich Verständnisprobleme. Ich kann mir schon denken, daß ein teurer prof. Assembler einige Include-Dateien mitbringt, Routinen, Codeschnipsel, die der Assembler bei Aufruf einfügt. Sind das 'Bibliotheken'?
Daß ich gelungene Codeteile aufhebe ist klar. Daß ich an einem eigenen Editor in VB bastele, der mir dann diese Routinen auf Click einfügt, das schrieb ich schon. Wäre so eine Sammlung von Code das, was ihr mit Bibliothek meint?

Gruß

Florian
07.06.2006, 06:33
Hallo rungo!
Natürlich ist der Begriff der "Bibliothek" hier nicht ganz korrekt, eigentlich sind diese ja Teil einer hohen Sprache! ;o)
Ich denke aber, dass man sie trotzdem mit Vorsicht als solche bezeichnen kann, denn im Prinzip machen die Includes nichts anderes.
Ich hatte damals z.B. immer für die passenden Controller eine "Bibliothek" für den Stack und brauchte dann nur noch die Passende einfügen [.include "m8stack.inc"].

Ich hoffe ich habe das ganze verständlicher gemacht?

Viele Grüße
Florian

PicNick
07.06.2006, 09:14
..Hab sogar schon eine ATtiny15-Klasse

EINE Klasse ist ein bißchen mickrig


Hallo, woher willst du wissen, daß ich nur EINE Klasse habe? ..
Was denkst du ? :mrgreen:

"Bibliotheken" würde ich im Sinne des Behaviourismus sehen
(Was aussieht wie eine Ente und quakt wie eine Ente, ist wahrscheinlich auch eine Ente)

Wenn du also in deiner Workbench etwas hast, was du wie eine Bibliothek verwenden kannst und womöglich noch ".LIB" heißt, dann isses eine Bibliothek.

Den Urgrund des Seins sollen andere finden.

rungo
07.06.2006, 19:28
Ok, hab das mit den LIBs auch richtig verstanden. Je mehr einfügbarem Assembler-Code ich habe - und den auch verstehe -, desto mehr wird mein Assembler (meine Programmierumgebung) zu einer (meiner) Hochsprache.

Um jetzt hier nicht wirklich unsinnig zu provozieren, will ich euch folgendes zu bedenken geben: Hauptsächlich unterscheiden wir uns dadurch, daß die einen mit der Industrienorm leben und arbeiten müßen. Hier ist C schlicht Pflicht und Assemblerkeentnisse nicht verkehrt. Entscheidend ist bei C die Portierbarkeit. Ein gutes C-System ermöglicht die Arbeit mit verschiedenen Controllern und macht es dadurch für die industrielle Massenproduktion tauglich. Dafür ist aber der Lernaufwand auch entsprechend.

Die andere große Gruppe sind die Hobbyisten, die in vielerlei Hinsicht mit den industriellen Anforderungen nicht mithalten müßen und sich gut überlegen sollten ob sie wirklich den Preis der Portierbarkeit zahlen wollen. Man muß bei C doch schon einiges mehr lernen und vieles ist eben dabei, das der Industrienorm gerecht werden muß, aber für die Praxis des 'Bastelns' nur Ballast darstellt. Hier sind es doch in der Regel relativ bescheidene Projekte, die aber möglichst schnell fertig sein sollen. Ich z.B. weiß ganz gut, was ich mit den AVRs realisieren möchte und weiß auch, daß gerade die ATtinys und ich - mit meinen kleinen Ansprüchen - gut zueinander passen. Darum kann ich alle Hochsprachen relativ gelassen links liegen lassen und mein Ding mit dem Assembler der Controller machen, die ich verwenden will. Da es die AVRs wohl noch lange im Handel geben wird, gehe ich auch da kein Risiko ein, wenn ich mich auf diesen Controllertyp festlege.

Leute, es ist kein Geheimnis, Assembler ist bei modernen Mikrocontrollern einfach. Was schwierig ist, und was keine Programmiersprache leisten kann, das ist die Erfahrung mit elektronischen Bauteilen allgemein - wer da bei den Controllern anfängt... :-(

Hoffe mich verständlich gemacht zu haben.

MfG
Georg

Florian
07.06.2006, 21:20
Hoffe mich verständlich gemacht zu haben.Ja, durchaus!
Du sprichst mir den Klos aus dem Hals, was heißen soll, dass ich Dir Recht gebe! *lol*

Leute, es ist kein Geheimnis, Assembler ist bei modernen Mikrocontrollern einfach. Was schwierig ist, und was keine Programmiersprache leisten kann, das ist die Erfahrung mit elektronischen Bauteilen allgemein - wer da bei den Controllern anfängt...Man muss einfach mal bedenken, was mittlerweile schon sehr leicht möglich ist.
Man muss keine serielle Schnittstelle mehr selber programmieren, man hat seine fertigen Registerchen, in denen die Werte stehen und fertig.
Allerdings ist es so, dass viele Anfänger über das Programmieren (PC ...) auf die µCs gekommen sind und deshalb schon den C-Sprachsatz beherrschen.
Das erleichtert ihnen gleich den Einstieg, warum sollten sie dann noch Asm lernen?
Nagut, man könnte argumentieren, dass sie so die Hardware des µC besser kennenlernen würden, aber so hoch über der Hardware steht C da auch nicht, Basic dann schon eher, aber das ist dann das selbe Prinzip, wie manche mit ihren ASM-Libs, nur halt selbsterstellt.

Ich hoffe ich war verständlich, mein Gehirn quillt gerade über vor BuV-Begriffen (BWL / VWL), BuV schreibe ich Fr. eine heftige Klausur! *schluck*

Viele Grüße
Florian

Rage_Empire
07.06.2006, 21:43
der nachteil bei asm ist, das du diese wenn du sie behersch nur auf den einin Prozessortyp anwenden kannst. Wenn du dann mal umsteigen willst, hast du pech. Ging mir jedenfalls so, hatte viel mit asm mit den 8051er (80535) zu tun. tja, schön wars zu lernen, was ein controller macht. aber als ich mit den avrs anfing, konnte ich mein asm in den müll werfen...egal wieviele makros ich geschrieben hatte.

Hanni
07.06.2006, 22:13
Die andere große Gruppe sind die Hobbyisten, die in vielerlei Hinsicht mit den industriellen Anforderungen nicht mithalten müßen und sich gut überlegen sollten ob sie wirklich den Preis der Portierbarkeit zahlen wollen.

Es mag vielleicht hart klingen, und mögen tu ich es auch nicht wirklich ... aber für genau diese Zielgruppe kann man nur Bascom empfehlen.

rungo
08.06.2006, 01:14
der nachteil bei asm ist, das du diese wenn du sie behersch nur auf den einin Prozessortyp anwenden kannst. Wenn du dann mal umsteigen willst, hast du pech. Ging mir jedenfalls so, hatte viel mit asm mit den 8051er (80535) zu tun. tja, schön wars zu lernen, was ein controller macht. aber als ich mit den avrs anfing, konnte ich mein asm in den müll werfen...egal wieviele makros ich geschrieben hatte.

Tja, dann vergleich doch allein mal die notwendige Minimalhardware, die außer dem Controller (8051) noch mindestens ein est. Ram und ext. Eprom brauchte. Mit allen sonstigen noch nötigen Bauteilen war das schon eine halbvolle Euro-Platte. So, und heute ist all das schon in so einem Mikrocontroller, wie dem AVR.
Nun gut, du hast sozusagen die Familie gewechselt und konntest von daher mit deinem frührem Code nicht mehr viel anfangen. Aber trotzdem wirst du von dieser hardwarenahen Auseinandersetzung mit dem Controller in Zukunft profitieren. Vielleicht sagst du mir auch was der Grund ist, weshalb du nicht bei der 8051er Familie geblieben bist, hier hat doch Atmel auch ein sehr gutes Angebot?

@Florian,
in Ordnung. Habe jetzt erst gesehen, daß du ja hier Moderator machst und ich verstehe deine Sorge was 'Krieg' anbelangt ganz gut. Du darfst dich beruhigt zurücklehnen, das was ich mir hier durch die provokante Betitelung dieses Treads geleistet habe, das war es schon, mehr kommt von meiner Seite nicht. Ich bin auch kein sehr fleißiger Schreiber. Das ist jetzt nur damit ihr ein wenig wißt in welche Schublade ihr mich stecken könnt: z.B. Bekennender Hobbyist! (Ist das auch eine Provo?) :-)
Danke!

@Hanni,
Ja, unter der Voraussetzung, daß jemand von Elektronik nur wenig Ahnung hat und gern für sein Hobby fertige Module verwenden möchte.
Warum nicht?

Nun habe ich wohl genug schwadroniert und wende mich dem nächsten Kapitel zu. So klein ein Projekt auch ist, man soll mit einem PAP einem Programmablaufplan anfangen, heißt es. Jo, das wäre so meine nächste Frage. Vielleicht hat ja jemand hier einen guten Link oder ein paar Tips parat. Würd mich freuen auch hierzu eure Erfahrung oder auch Meinung zu lesen.

MfG
Georg

Florian
08.06.2006, 06:46
Habe jetzt erst gesehen, daß du ja hier Moderator machst und ich verstehe deine Sorge was 'Krieg' anbelangt ganz gut.Ist schon alles in Ordnung, wenn micht etwas stören würde, dann hätte ich schon gemosert! *lol*

Viele Grüße
Florian