PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Startprobleme



bassdart
20.03.2005, 19:23
Hallo,
ich beschäftige mich jetzt seit Anfang dieses Jahres mit C-Programmierung um endlich meinen ersten Robbi zum Leben zu erwecken.Sein Hirn und Körper :cheesy: sind schon fertig ,bloß mit dem Gedächtnis hab ich so meine Probleme. Obwohl ich mehrere Tutorials über Microcontrollerprogrammierung gelesen habe, hab ich immer noch nicht die leiseste Ahnung wie ich das anstellen soll. Könnte mir da jemand, der vieleicht ähnliche Probleme hatte ein Buch empfehlen oder mir einen Tipp geben?
Ich wäre sehr dankbar darüber,
Tobias.

Arexx-Henk
20.03.2005, 20:37
Du brauchst
1. programentwicklung application (hast du vielleicht schon, WinAVR?)
2. program (die Gedanken)
3. programmer (die Gedanken mahl in die microcontroller zu schicken) gibts einie selbstbau (Google)
4. microcontroller


gruss
Henk

bassdart
21.03.2005, 15:15
Hallo Henk.Du hast meine Frage etwas falsch verstanden. Die nötige Elektronik besitze ich schon und habe mir auch die Grundlagen in C-programmierung angeeignet allerdings hab ich keinen Ahnung wie man Microcontroller programmiert.

Siggi83
21.03.2005, 15:37
Und wo genau liegt da dein Problem?

An den Befehlen vom Quellcode, oder wie man den geschriebenen Code in den Controller bekommt?

gruss Siggi

muraad
21.03.2005, 15:52
Ich glaube was du suchst/meinst findest du hier
http://www.mikrocontroller.net/wiki/AVR-GCC-Tutorial
und hier
http://www.mikrocontroller.net/tutorial/
und noch hier
www.mc-project.de
Als Buch kann ich "Mobile Roboter von der Idee zur Implementierung" empfehlen.
Ach und allgemein C programmierung www.pronix.de
Gruß Muraad

bassdart
21.03.2005, 19:09
Mein Problem besteht darin, dass ich keinerlei Grundlagen über Microcontrollerprogrammierung habe und deshalb mir die von muraad genennten Seiten (die ich bereits kenne) nicht helfen. Schlicht gesagt scheck ich es einfach nicht.
Ich bin auf der Suche nach einem Buch, dass weit ausholt "Als Buch kann ich "Mobile Roboter von der Idee zur Implementierung" empfehlen." gibt es bei Amozon leider nicht mehr.
Es würde mir sehr helfen wenn ihr mir sagen würdet wie ihr eure ersten Schritte gemacht habt.
Tobias

Siggi83
21.03.2005, 20:03
Servus,

ok aber das dauert ein bissle…

Also Angefangen habe ich auch erst vor ein paar Wochen. Bei mir haben die Semesterferien begonnen und ich wusste nichts Sinnvolles anzufangen. Da ich in meiner Ausbildung zum IT-Systemelektroniker in Kontakt mit AVR’s bekommen habe dachte ich mir ich mach was in diese Richtung. Zuerst wollte ich eine Platine entwerfen auf der es ein Haufen Anschlussmöglichkeiten gibt um direkt ne Peripherie daran anzuschließen. Irgendwann habe ich dann gemerkt das sich dies nicht lohnt ohne ein konkretes Projekt zu haben. Auf der suche nach AVR bin ich im Internet auf die Seite www.kreatives-chaos.com gekommen. Als ich da den „Mini-Sumo“ entdeckte hat es bei mir sofort gefunkt *g*. Nun, nachdem ich wusste was ich machen wollte habe ich mich in Internet speziell auf die Suche nach Roboter und AVR gemacht. Da bin ich dann auf dieses Forum gestoßen…
Den Rest zu erzählen geht eigentlich ganz schnell: Gedanken gemacht was ich machen will (wie soll der erste Roboter aussehen, was soll er können) und mich im Forum unter den Vorstellungen fertiger Bots umgeschaut um noch weitere Anregungen zu bekommen. Habe mir dann Gedanken um den Antrieb, Sensoren, Schaltplan (und sich die daraus resultierende Platine) und Karosserie gemacht.
Nachdem das Konzept gestanden ist, war ich innerhalb von 2 Tagen mit dem mechanischen Aufbau fertig. Das Programmieren war da schon Anspruchsvoller. Habe eigentlich „C“ gelernt aber das mit der Abfrage von Ports, die PWM-Sachen und das setzen von Registern musste ich mir erst einmal beibringen. Dazu finde ich das wiki von http://www.mikrocontroller.net/wiki/Hauptseite ganz hilfreich. Hier https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=219 kannst du es auch gleich als Pdf runterladen, wobei die aktuellste Version gibt es immer auf deren Homepage.
Es gab dann immer noch ein paar technische Probleme, diese lagen dann aber eher an WinXP als an meinem Projekt.
Da Rat ich dir nur unter Google zu suchen…

Nun, nach einer Woche war es soweit und mein erster kleiner Roboter fährt durch die Wohnung und versucht an Hindernissen vorbei zu kommen. Die nächste Erweiterung ist auch schon in Sicht, und zwar soll der Roboter mit Infrarotsensoren ausgestattet werden.

Achso, im Prinzip ist das Programmieren von Mikrokontroller nicht anders als das „normale“ Programmieren. Du verarbeitest auch Variablen, führst Funktionen aus und und und… Was, meiner Meinung nach, dazukommt ist das Abfragen der Ports und das setzen der Register damit du die externe Beschaltung steuern kannst…

Gruss Siggi

Arexx-Henk
21.03.2005, 20:20
Ich ist mir noch nicht ganz klar wo dein Problem liegt.

Die meiste microcontroller haben 1 oder mehere io-ports. Ein io-port z.B. Port B besteht meistens (immer) aus 8 unterschiedliche io-pinnen. Jeden von diesen 8 pinnen kann mann beliebig wie eingang oder ausgang schalten. Ports werden wie ein normalen 8-bits byte angesteurt. (z.B. mit die 'C' zuweisung DDRB = 0xAA; schaltet alle 4 ungerade io-pinnen von Port B als ausgang, die ubrigen bleiben eingang) Und man kann beliebige ausgange als hoch oder niedrich schalten. (z.B mit die 'C' zuweisung PORTA = 0x38;)

Mann braucht zuerst mahl eine idee was mann ansteurn will und wie mann die sachen z.B. led/lampchen, motoren, beeper, sensoren, usw uber die microcontroller anschliessungen verteilen will. Fur einfache sachen reichen fast alle microcontroller, egal welche. Und dann fangt mann an schritt fur schritt programme zu schreiben fur jeden teil.
Wenn's complexer wird, wird mann sich selbst einen bestimmten organisierten programmier art anwenden, sonst wird's unubersichtlich und mach mann viele fehler. Ein bug kann schon ein ganzen Tag brauchen sich finden zu lassen.


Ich habe angefangen mit kleine digitale schaltungen zu bauen, hat mich einen ganzen tag gekostet nur einen einzigen AND-port arbeiten zu lassen mit einem Led am ausgang...(bin da vielleicht selber nicht so ein grosses lampchen) hab dan ein fertiges microcontrollerboard und ein oszilloscoop gekauft und mahl ganz viele programme geschrieben und hardware dazu gebaut.

vielleicht hilft diese ein bisschen,

Henk

muraad
22.03.2005, 11:59
Ich versteh auch nicht was dein Problem ist. Wenn du C kannst aber nur noch nie mit Mikrocontrollern kontakt hattest, sollten dir die Links schon helfen. Was ich auch nicht verstehe, du hast schon die komplette Elektronik und keinen Plan wie du das programmierst!? Irgendwie unlogisch.
Mir kommt es so vor wie wenn du meinst ich lern jetzt mal schnell C(in zwei/drei Monaten) und programmier dann mein Roboter. Mal erlich, was hast du dir 3Monate lang angeschaut das du jetzt sagst "Schlicht gesagt scheck ich es einfach nicht."
Auch wenns jetzt hart kommt, wenn du die Links nicht verstehst, lies sie dir solange durch und google bis du sie verstehst. Verstehst du immer noch nichts solltest du dir wohl ein anderes Hobby zulegen.
Gruß Muraad

EDTI:
Ja sorry bassdart, jetzt im Nachhinein tuts mir leid. War nicht gut drauf und dann hab ich bisschen zu heftig reagiert.

bassdart
22.03.2005, 16:16
@muraad :?
Noch einmal. Ich habe im Januar mit C-Programmierung angefangen und nachdem ich die gröbsten Grunlagen drin hatte und angefangen habe mich mit Microcontrollerprogrammierung zu beschäftigen dachte ich mir es wäre nützlich Elektronik zu haben mit der ich etwas experimentieren könnte. Klingt für mich eigentlich ganz logisch.

Allerdings haben mir die oben beschriebenen Tutorials nicht sonderlich viel geholfen und da kam mir der Gedanke euch zu fragen wie ihr angefangen habt.
Da mir Siggi83 und Arexx-Henk ihre ersten Schritte beschrieben haben scheint mir das ich mich wohl mit den Tutorials begnügen muss.

Andree-HB
22.03.2005, 16:32
Vielleicht solltest Du erstmal erzählen, was Du Dir für "Elektronik" gekauft hast. Dann kann man Dir vielleicht eher konkretere Tipps für Dein Problem geben...

Vielleicht dann so sortieren :
1.) Was will ich überhaupt machen
2.) Was habe ich (Hardware / Kenntnisse)
3.) Mit welcher Programmiersprache will ich arbeiten
4.) Welche Software brauche ich dafür
5.) Wie verbinde ich Hardware-/Software
6.) Wie schaffe ich die ersten Schritte ("Hallo Welt")
7.) Wo bekomme ich weitere Kenntnisse (Tutorials, Codeschnipsel)

Michitux
28.03.2005, 09:53
Hallo!

Ich bin hier und auch im Thema Microcontroller komplett neu...

Ich hab gestern ein C Tutorial mit den wichtigsten Grundlagen durchgelesen und die 2 Aufgaben da drin gelöst... So weit so gut.

Ich möchte jetzt eine Füllstandssteuerung mit einem Microcontroller realisieren, die Erfassung liefert einen Analogwert. Diese möchte ich dann mit einem Sollwert vergleichen und dann die Pumpe entsprechend beschleunigen oder abbremsen - mit einer PWM. Ich hab mir das AVR-GCC Tutorial durchgelesen, hörte sich recht leicht an. Doch wenn ich mir jetzt das Datenblatt vom ATtiny2313 anschaue, kapier ich nur sehr wenig. Was mir vor allem Probleme bereitet, sind die Bezeichnungen der I/O Ports und so... Ansonsten die Regelung scheint mir eigentlich recht einfach. Ich Frage in regelmäßigen Abständen (vielleicht 2 Sekunden) mit einer Dauerschleife den Wasserstand ab, ist er niedriger, wird die Pumpe schneller gemacht (PWM wert senken, aber nur maximal z.B. 3 Schritte), ist er höher, wird die Pumpe entsprechend schneller gemacht - ein paar mal if, fertig. Dann noch 2 Taster, dafür brauch ich dann ne Entprellung, 2 Interrupts, die dann den Sollwert jeweils um 1 Schritt erhöhen bzw. senken. Und wenn's einfach geht, würde ich noch 2 7-Segment anzeigen hinmachen, die den Soll - Wert anzeigen. Und vielleicht, das könnte dann aber auch erst in einer Erweiterung sein, noch eine Taste und ein paar LED's, um dann verschiedene Werte (Ist-Wert) anzuzeigen.

Doch was mir jetzt wirklich Probleme macht, ist, wie ich die I/O's verwenden soll und wie ich das ganze initialisieren muss - diese ganzen Nummern sind mir echt ein Rätsel! Gibts da vielleicht irgendwo eine Erklärung? Oder muss ich noch mehr C lernen? Oder die Tutorials nochmal lesen? Was würdet ihr mir empfehlen? Ich möchte halt eine Platine basteln, die möglichst auch noch Erweiterungen (in der Programmierung) zulässt - z.B. ein paar Tasten zusätzlich und ein paar LED's und so...

Viele Grüße
Michitux

Felix G
28.03.2005, 11:29
Doch was mir jetzt wirklich Probleme macht, ist, wie ich die I/O's verwenden soll und wie ich das ganze initialisieren muss - diese ganzen Nummern sind mir echt ein Rätsel!Meinst du z.B. sowas:


DDRD = 0x81;
PORTD = 0xFF;

ADMUX = 0x07;
ADCSRA = 0xE7;
und wenn ja, was genau verstehst du daran nicht?

In dem Beispiel z.B. wird dem DDRD Register der Wert 0x81 zugewiesen, was der Dezimalzahl 129 bzw. dem Bitmuster 10000001 entspricht.
Das bedeutet, daß die Pins 0 und 7 von PortD als Ausgänge und alle anderen Pins als Eingänge verwendet werden.
Dann kommt das PORTD Register, in das in diesem Fall einfach nur FF geschrieben wird (= 255 = 11111111).
Damit werden die als Ausgänge verwendeten Pins auf High gesetzt, und bei den Eingängen die internen PullUp-Widerstände aktiviert.

Wenn man wissen will was die beiden folgenden Zeilen bedeuten, muss man nur kurz im Datenblatt nachschauen.
Da steht genau welche Bits in diesen Registern welche Bedeutung haben.
(da sind immer ein paar schöne Tabellen in denen das haarklein beschrieben ist)
Mit ADMUX = 0x07 z.B. wird Pin 7 von PortA für die AD-Wandlung ausgewählt.


Es ist im Prinzip ganz einfach...
1. überlegen was man will
2. im Datenblatt nachschauen wie das geht
3. programmieren (= die richtigen Bits in den richtigen Registern setzen)

Arexx-Henk
28.03.2005, 21:20
@Michitux


diese ganzen Nummern sind mir echt ein Rätsel! Gibts da vielleicht irgendwo eine Erklärung?

guck vielleicht mahl hier:

http://home.planet.nl/~winko001

und download dort:

Bits, Byte, Hex (PowerPoint)

gruss

Henk