PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmel Programmierung



Reeper
03.09.2005, 14:52
Hallo,

ich habe ein Asuro mit einem Atmel und will mir demnächst ein eigenen Roboter bauen.
Wenn ich den Atmel vom Asuro programmieren will, habe ich ja versch. Dateien, die im Hintergrund die vorgefertigten Commandos in Maschinensprache übersetzen.

Muss ich, wenn ich mir zB. einen Atmel Atmega16 kaufe, die kompletten Dateien selber erstellen (Command´s unsigned char usw. wie beim Asuro in der Datei asuro.c und asuro.h usw.?). Also erstmal die ganze Basis (damit der überhaupt was mit meinen Programm anfangen kann, welchen Port ich gerade benutzen will ... ) zum Programm zum Programmieren oder sind diese schon vorgefertigt zu haben?

linux_80
03.09.2005, 15:08
Hallo,

die musst Du selber anfertigen, denn nur Du weisst an welchem Port was angeschlossen wird, beim Asuro ist das ja bei jedem gleich, deshalb gibts vorgefertigte Dateien.

Reeper
03.09.2005, 15:19
Hab nochmal nachgeschaut, sind es doch nur die 2 Dateien, die man schreiben muss?
Beim Asuro: .h und .c für Commandos und Port-Belegung.

Reicht das auch für die anderen Atmels ( die Anzahl der Dateien, die Port-Belegung und Commandos werden sich natürlich je nach Atmel verändern).

Marco78
03.09.2005, 15:34
In welcher Sprache willst du denn programmieren?
Für Basic brauchst du solche Dateien nicht. In Assembler meiner Meinung nach auch nicht.

Da werden die jeweiligen Pins mit bestimmten Befehlen angesprochen. Es bedarf keiner Datei, die aliase für Pins defeniert oder so.

Reeper
03.09.2005, 15:52
Bis jetzt programmiere ich noch über das Asuro Programm: Programmers Notepad 2, welches mir dann eine übersetzte .hex Datei als output generiert.
Was ich aber bis jetzt nicht so kapiert habe (programmiere erst seit kurzem, bin noch am Anfang), sind die Variable, die man selber deklarieren kann.
zB. k und i, diese deklariere ich ja im Programm selber (außer wenn ich sie global nutzen will). Aber den richtigen Sinn verstehe ich immernoch nicht, kann man nicht auch direkt mit Zahlen rechnen oder arbeiten (man deklariert oft wieso nur Zahlen).
int i; ist klar, zB. für wahr oder falsch benötigt man ein zeichen, aber k oder andere? Oder denke ich falsch?

Marco78
03.09.2005, 16:58
Kannst du denn eine Programmiersprache? Wie wäre es, die Atmels später mit Basic zu programmieren? Oder C als alternative.

Man kann in den Programmen auch mit Zahlen rechnen. Aber einige Zahlen müssen erstmal irgendwo herkommen. Blödes Beispiel: Die Geschwindigkeit soll sich nach der Helligkeit richten in der der Asuro fährt. Die Helligkeit kann mit einem LDR gemessen werden. Die Zahl kommt dann vom ADC und muss in einer Variable abgelegt werden.

Bestimmte Werte braucht man im ganzen Programm. z.B. Werte die zur Anpassung der Hardware dienen. Faktoren um andere Werte zu bestimmen. Wieder ein blödes Beispiel: Der Radumfang bei Fahrradtachos.
Irgendwann stellt man fest, man möchte den Wert ändern. Hätte man immer den Wert in den betreffenden Progammzeilen eingetragen, müsst man lange suchen und übersieht evtl doch einen Wert. So kann man sie zu Anfang des Programms als Konstante festlegen.

Ich denke die Programmierumgebung des Asuros ist anders als andere. Ich würde an deiner Stelle auch auf andere umsteigen um 1. Die Funktionen des Atmels besser und vollständig nutzen zu können und 2. auch mehr Hilfe zu bekommen. Nicht jeder hat den Asuro und weiss deshalb was du vor hast wenn du ein Listing nach Fehlern durchsuchen lassen willst.

Reeper
03.09.2005, 17:08
Ah, ich danke dir, Variable als Konstante leuchtet ein.

Ich kann keine Programmiersprache, jedenfalls nicht für dieses Gebiet/Hobby.

Der Asuro ist mein einzigster und erster Roboter überhaupt und dieser sollte mein eigentlicher Einstieg werden.
In welcher Umgebung kann ich den Atmel noch programmieren und welche wäre für den Einstieg die beste (vielleicht eine, bei der man relativ "nah an der Hardware" arbeitet)?

Marco78
03.09.2005, 17:50
Was meinst du mit relativ nah an der Hardware? Das ist im Prinzip jede Umgebung. Du musst die einzelnen Pins angeben usw...
Da ich die Umgebung das Asuro nicht kenne, denke ich das jede andere Umgebung so ist wie du es meintest.


Ich kann keine Programmiersprache, jedenfalls nicht für dieses Gebiet/Hobby.
Sondern? Welche?

Reeper
03.09.2005, 20:12
Hallo Marco78,

Die Programmiersprache die ich kenne, sind versch. CNC Sprachen (also für dieses Hobby nicht relevant).
Ich werde jetzt mich mit Bascom (Basic) beschäftigen, da sie ja universell einsetzbar ist (nicht an einen speziellen Roboter gebunden).

Marco78
03.09.2005, 20:19
Es hätte ja auch C++ oder so sein können.
CNC? Kann ich mich bei dir melden wenn ich was gefräst haben möchte?

BASCOM kann ich sehr empfehlen. Da gibt es keine { und } und alles sieht logisch aus :D

Reeper
03.09.2005, 21:48
Das mit dem Fräsen wird leider nichts.
Ich habe mein Beruf vor kurzem eines größeren Zieles "geopfert", ich berschreite dem Weg zum Ingenieur (eigentliche Ziel: "Master of Engineering"), bin aber jetzt erst am Anfang dieses Weges. :D

toeoe
04.09.2005, 10:05
Ich werde jetzt mich mit Bascom (Basic) beschäftigen, da sie ja universell einsetzbar ist (nicht an einen speziellen Roboter gebunden).

Hallo,

wie schon gesagt wurde, kann man das auch mit C/C++ machen. Mit Assembler bist du doch auch nicht auf einen speziellen Roboter gebunden.
Ich würd dir für den Anfang, wenn du noch gar nicht programmieren kannst, Assembler empfehlen, da du damit die Arbeit deines Mikrocontrollers besser verstehst. Basecom macht ja bekanntlich nicht so sauberen Maschinencode aus deinem geschriebenen Code. Sodass die *.hex Datei schnell mal etwas größer wird und evtl. nicht mehr auf den Chip passt. Da hast du meiner Meinung nach mit Assembler die bessere Kontrolle.

So, das war nun meine Meinung O:)

Gruß
Thomas

Marco78
04.09.2005, 10:39
Basecom macht ja bekanntlich nicht so sauberen Maschinencode aus deinem geschriebenen Code.
Wo wurde das denn bekanntgegeben???
Ich gebe zu, das die HEX ggf etwas größer als nötig wird. Aber wenn man die kleinen Tricks kennt, kommt man auch wieder auf normale Größe.
Tatsache ist aber, das andere Hochsprachen da auch nicht besser bei wegkommen können. Nur in Assembler hat man die volle übersicht, was in der HEX stehen wird.

Als Anfänger Assembler zu lernen finde ich persönlich nicht vorteilhaft. Man muss zu viel auf einmal lernen. Es ist ja nicht nur die Sprache, die man lernen muss, sondern auch die Register, die dann von Typ zu Typ unterschiedlich sind. Alles muss man aus den Datenblättern rauslesen. Die es nur in (fach)englisch gibt.
Es ist zwar möglich anhand vorgefertigter Beispiele LEDs leuchten zu lassen, aber wenn man das Beispiel nur kopiert hat man dabei nichts gelernt. Irgendwann steht man vor der Situation, das man selber nachdenken muss.

Meiner Meinung nach würden da zu viele Misserfolge auftreten und das ganze dauert länger zu lernen, deshalb könnte man schnell die Lust verlieren. Und das wäre eigentlich schade.

PS: Auch in Assembler kann man ein Word mit einer 0 oder 1 belegen. Und das sind die Kleinigkeiten, die den großen BASCOM-Code erzeugen.

PicNick
04.09.2005, 10:53
Basecom macht ja bekanntlich nicht so sauberen Maschinencode aus deinem geschriebenen Code.
So, das war nun meine Meinung
In dieser Formulierung ist das keine Meinung, sondern eine Gerüchteverbreitung.
Sagst du uns in kurzen Worten, was ein "nicht sauberer" Maschinencode ist ?
"bekanntlich"
Mir ist das zum Beispiel nicht bekannt.

toeoe
04.09.2005, 12:49
Mit der Aussage meinte ich ja nur, dass die *hex- Dateien größer sind, als wenn man zum Beispiel in Assembler programmiert.
Und wenn man einen Roboter programmieren will, wird so eine Datei dann auch schnell mal größer.
Und ihr stimmt mir ja zu, dass man bei Assembler viel besser die Aufgaben des µC kennenlernt. Ok, wenn man das nicht will und nur die Funktion am Ende haben will, muss Assembler nicht sein. Ich fände es aber persönlich schade, wenn mein Robi da einfach rumfährt und Gegenständen ausweicht, aber ich nicht weiß, warum er da eigentlich rumfährt? Da finde ich, dass ich mit Assembler das ganze viel besser verstehe und nachvollziehen kann.

Gruß
Thomas

PicNick
04.09.2005, 14:56
Gut, das ist ja alles ok, unabhängig, ob ich der gleichen Meinung bin oder nicht.
Nur, "bekanntlich nicht sauber" einfach in den Raum gestellt, ist nicht so gut. Bei so einer Aussage mußt du Fakten auf den tisch knallen, sonst wird sich immer wer aufregen

:wink:

toeoe
04.09.2005, 15:01
Nagut, ich seh ein, dass ich mich ein wenig missverständlich ausgedrückt habe, sorry O:)
Ich akzeptier ja auch die Meinungen anderer, aber bleib trotzdem bei meiner *g* Wollt sie hier einfach nur mal niederschreiben :-({|=

Gruß
Thomas

pebisoft
04.09.2005, 16:02
eine hex-datei enthält auch code der nicht mit geladen wird. er steuert nur.
die wirkliche grösse der datei erkennt man an der bin-datei. diese kannst z.b. in bascom einstellen, das bascom die produzieren soll.
wenn dein roboter-hobby nur vorübergeheng ist, dann ist bascom für dich das richtige. wenn du aber das als hobby ausbauen möchte für längere zeit, so kann ich dir dann fastavr-basic empfehlen ist zwar ca 40 euro teurer aber es lohnt sich. wenn du regelmässig und viel, so wie ich (pensionär) mit bascom arbeitest, stellst du schnell die grenzen fest. ich hatte mich damals mit bascom verkauft, wusste nicht das ich mich so schnell eingefuchst habe (wie gesagt ich habe die zeit) und als ich dann ins eimngemachte gehen wollte musste ich auf winavr-c umwechseln, da ich abr noch nie was mit c zu tun gehabt habe war es sehr schwer. die suche nach einem systemmnahen programm mit leichten wortlaut und der schnelligkeit von winavr-c hat sich gelohnt, es ist fastavr-basic.
mfg pebisoft

bluebrother
05.09.2005, 17:50
wenn dein roboter-hobby nur vorübergeheng ist, dann ist bascom für dich das richtige.
ich halte Basic auch in dem Fall für ungeeignet. Wenn du dir die Arbeit machst gleich C zu lernen wirst du es später mit anderen Sprachen deutlich einfacher haben -- wenn das aber wirklich nur ein Einmalprojekt ist und du in Zukunft keine Programmierambitionen hast kannst du auch Basic nehmen ...
Generell ist C etwas schwieriger zu lernen, aber es lohnt sich. Assembler ist noch ne Nummer härter ...

Reeper
09.09.2005, 14:14
Mensch, da schaut man mal kurz nicht vorbei und schon hat man viele Antworten verpasst 8-[

Ich habe jetzt das Buch "C-Programmieren von Anfang an" von Helmut Ehrenkötter mir zugelegt und werde mich mal damit von Beginn an reinfuchsen (auch erstmal die ganze Oganisation und "Konstruktion" einer solchen Sprache, als gleich mit dem Programmieren eines Controller anzufangen).