Forum: Mikrocontroller und Digitale Elektronik Anfängerfragen, Wie fange ich am besten an?


von Matthias J. (thecrazyone)


Lesenswert?

Hallo!

Zunächst möchte ich mich hier kurz vorstellen:
Ich bin 22 Jahre alt, Wirtschaftsinformatik-Student im ersten Semester 
und Hobbybastler. Bis jetzt habe ich mich an einfachere Schaltungen mit 
nur wenigen ICs gehalten (Beispielsweise eine Art LED-Lauflicht, das 
über Sound-to-Light weitergeschalten wird) und möchte jetzt in die Welt 
der µController einsteigen. An Programmierkenntnissen kann ich leider 
nur Java anbieten (1. Semester, nicht besonders weit fortgeschritten), 
was mir ja bei µControllern nicht so viel bringt.

Ich habe vor zunächst einige Tutorials anzuschauen und nachzuvollziehen 
und dann möglichst ohne fremde Hilfe was zusammenzubasteln und zu 
Programmieren.

Mein erstes größeres Projekt soll ca. so aussehen:
- 2 PWM Ausgänge, um LEDs zu dimmen
- Tasten zum Einstellen des Dimmeffekts
- On/Off für LED1 und LED2 // eher unwichtig, stattdessen Dimmen auf 0%
- LCD Display zur Anzeige der Daten
- Später: USB Anschluss, Windowsoberfläche zum Regeln der LEDs

Programmierung sollte idealerweise über USB erfolgen können, für einen 
Paralellport müsste ich einen alten PC aufstellen, was kein Problem, 
aber Zusatzaufwand wäre oder einen USB-Parallel Adapter holen...

Soo... jetzt zu meinen Fragen:

- Welche Programmiersprache könnt ihr mir empfehlen? Sie sollte entweder 
ähnlich aufgebaut sein wie Java von den Befehlen her oder recht leicht 
zu erlernen/verstehen sein (wir lernen an der Uni grundsätzlich nur Java 
und das Studium ist schon genug Arbeit, da muss eine zweite komplizierte 
Programmiersprache nicht sein)
- Welches Starterset sollte ich mir zulegen oder zusammenbauen? Wie 
gesagt bevorzugt wäre etwas mit USB Anschluss, Preis ist unwichtig, darf 
gerne etwas "besseres" sein, um später mehr damit anzustellen. Als 
Alternative könnte es auch ein billiges Teil sein, das später ersetzt 
wird.
Pollin wär direkt bei mir um die Ecke, da könnte ich mir einige Teile 
billigst holen und auch selber was zusammen basteln.
Ansonsten wär noch ein Conrad in der Nähe oder ich bestell eben was im 
Internet.
- Was brauche ich alles beim selbstzusammenbauen? Irgendwelche 
Bauteilempfehlungen?
- Habt ihr noch sonstige Tips, ausser lesen, ausprobieren und basteln?

Danke schon mal im Vorraus!
MfG
Matthias

von Shuzz (Gast)


Lesenswert?


von David M. (md2k7)


Lesenswert?

Hallo und willkommen!

Es gibt eine minimalistische Java-VM für AVR, siehe:

http://www.harbaum.org/till/nanovm/index.shtml
http://www.mikrocontroller.net/articles/NanoVM

Ob du damit glücklich wirst, weiß ich nicht. PWM und LCD dürften auf den 
ersten Blick drin sein. Für USB bräuchtest du ein IC wie z.B. FT232, 
welches eine serielle Schnittstelle per USB implementiert (der 
Mikrocontroller ist dann einfach per UART an das IC angebunden).

Für mich persönlich wäre Java auf einem Mikrocontroller eine sehr starke 
Beschränkung (Ausnutzung der Hardware kaum möglich, weder in Speicher 
noch in Performance).

Ansonsten musst du C (durchaus Arbeit zum Lernen, dafür "bequeme 
Hochsprache") oder Assembler (native Prozessorbefehle - kaum Lernarbeit, 
dafür macht man alles zu Fuß) lernen.

Gruß
David

von gast1 (Gast)


Lesenswert?

Hallo,

zum Einstieg lege ich dir ebenfalls die 8 bit AVRs ans Herz. Ein paar 
Grundlagen in Assembler sind sehr sinnvoll, aber du kannst dann auf GCC 
umsteigen und hast mit JAVA einen brauchbaren Einstieg.

Was die Hardware angeht: Da du Student bist gibt es unter 
http://www.eproo-student.de preiswert z.B. das STK500 und den AVR 
Dragon. Das STK ist ein sehr vielseitiges, robustes, gut ausgestattetes 
und durchdachtes Board.
Das AVR Dragon ist eine Programmier- und Debuggingschnittstelle für 8- 
und 32 bit MCUs von Atmel, also auch evt für später sinnvoll.

Dazu dann noch ein kleines regelbares Netzteil mit einstellbarer 
Strombegrenzung, ein Breadboard und eine Hand voll Widerstände, LED, 
Transistoren, Drähte etc um die Pins des MCs vom STK500 per 10 polige 
Flachbandleitungen mit der Außenwelt zu verbinden.

USB ist in Software mit den einfachen AVRs möglich, es gibt aber auch 
Modelle mit eingebautet HW USB Schnittstelle... aber erstmal die 
Grundlagen verstehen ;).

Grüße

von Mirko H. (m1rk0)


Lesenswert?

Hallo,

Matthias J. schrieb:
> An Programmierkenntnissen kann ich leider
> nur Java anbieten (1. Semester, nicht besonders weit fortgeschritten),
> was mir ja bei µControllern nicht so viel bringt.
>
> Ich habe vor zunächst einige Tutorials anzuschauen und nachzuvollziehen
> und dann möglichst ohne fremde Hilfe was zusammenzubasteln und zu
> Programmieren.

Da bietet sich als Sprache C an und als Tutorial gleich das hier auf 
µC.net :). Egal was Du machst, Du wirst Dich bei einem Mikrocontroller 
näher an der Hardware aufhalten als Du das von Java gewohnt bist (außer 
vielleicht bei BASCOM oder Arduino, weiß nicht so genau), aber das ist 
Dir vermutlich schon klar. Auch in C greifst Du da direkt auf die 
Prozessorregister zu.

Bei C muss man sich um einige Dinge selber kümmmern, die einem Java 
abnimmt. Die größeren Hürden sind wohl die Pointerarithmetik, die 
Unterscheidung von Wert- und Referenzübergabe bei Funktionen und die 
Speicherverwaltung. Aber es schadet tatsächlich nicht, das auch mal 
gemacht zu haben.

Zur Hardware können andere sicherlich mehr sagen. Ich selbst habe vor 
kurzem (auf vielleicht etwas ausgefallene Art) angefangen mit dem 
Pingpong-Bausatz von Franzis (lief mir bei Conrad zufällig über den Weg) 
und einem USBasp-Programmer von Ebay. Inzwischen habe ich mir einen AVR 
Dragon gekauft, weil mir das Debuggen mit JTAG direkt in der Schaltung 
lehrreich erscheint. Schaltungen baue ich momanten auf einem Steckbrett 
auf, ein Experimentierboard wir das STK500 habe ich nicht, will aber 
nicht ausschließen, dass sowas sinnvoll sein kann.

Mirko

von Florian (Gast)


Lesenswert?


von olli (Gast)


Lesenswert?

hallo, hab grade keine zeit, deinen beitrag genau durchzulesen, gebe 
deshalb meinen senf "blind" dazu.

für einen schnellen und günstigen einstieg empfehle ich

-AVR-Mikrocontroller
-den Zweidraht-Parallelport-Programmierer a la Rohwoldt bzw. SP12
-zum Programmieren und Beschreiben BASCOM AVR, kann man kostenlos 
downloaden

BASCOM ist ein µ-controller-orientiertes Basic, ich benutze es schon 
ziemlich lange mit erfolg.
wenn du richtig in die tiefe gehen willst, ist GCC sicher besser, für 
hausgebrauchsprojekte wie LEDs dimmen, schrittmotoren steuern o.ä. reich 
BASCOM völlig aus, trotz aller unkenrufe!

von Paul Baumann (Gast)


Lesenswert?

>a la Rohwoldt
Rowalt heißt der Mann und sein Buch "AVR-Mikrocontroller-Lehrbuch"
ist eine ganz feine Sache zum Einstieg.

(Nein, ich bekomme keine Prozente und ich kenne ihn auch nicht 
persönlich)

MfG Paul

von guest (Gast)


Lesenswert?

Er schrieb doch dass es ruhig ein paar Euros kosten darf. Daher rate ich 
dringend zu Equipment direkt von Atmel.

Da passt alles perfekt zusammen (vor allem mit dem AVR Studio) und ist 
was Kompatibilität, regelmäßige Updates und Bugfixes angeht unschlagbar 
verglichen mit Selbstbaulösungen und Sofware von Privatpersonen.

Wenn du also gutes Werkzeug zu schätzen weißt... denk mal drüber nach. 
Meine Meinung dazu.

von Klaus R. (klaus2)


Lesenswert?

...und endlich mal ein nicht völlig überzogenes einstiegsprojekt! so 
wird das was! der rest steht hier schon, ich rate auch zur PnP lösung 
von atmel (stk500).

Viel Erfolg! Klaus.

von Matthias J. (thecrazyone)


Lesenswert?

Danke für eure Antworten, hab mir das ganze mal angesehen.
Die NanoVM hört sich nicht schlecht an für so kleine Projekte, aber weil 
die Entwicklung wohl eingestellt wurde, werde ich mich doch lieber durch 
C und die Tutorials durchkämpfen. Soweit ich gesehen habe sind ja die 
Befehle und Synthax ähnlich einem Java Programm, den Rest werde ich dann 
schon hinbekommen!
Ich denke ich werde mir erstmal das STK500 holen, für 40€ kann man denke 
ich nicht viel falsch machen und was ich so gelesen habe ist es auch gut 
ausgestattet.
Dazu kommt dann noch ein USB-COM Adapterkabel, vorsichtshalber ein paar 
ATMega8, Leds, Widerstände, Netzteil, Schalter/Taster usw. sollten genug 
da sein für die ersten Basteltage ;)
Danke nochmal, man sieht sich dann spätestens wenn ich mit meinen LEDs 
fertig bin ;)
MfG
Matthias

von Michael M. (Gast)


Lesenswert?

außerdem: Absolute Beginner

von oldmax (Gast)


Lesenswert?

Hi
Ok, ich hab meine Vorredner nicht alle genau durchgelesen, daher kann's 
sein, ich wiederhole etwas.
Ich kann nur sagen, wie ich angefangen habe. Grund war eine Aufgabe, die 
mit einem PC nicht zu lösen war, da ich Signale schnell erfassen und 
berbeiten wollte. Irgendwann las ich dann von einem Board für 
Atmel-Controller und das war der Anfang. Also hab ich dieses Teil 
bestellt und ein wenig "Zubehör"
Das Board ist von Pollin. Dazu ein Steckbrett, ein paar Bauteile (AVR's, 
ULN's, Spannungsregler, Widerstände, Kondensatoren, Transistoren und 
Dioden, Netzteil) Da ich Elektrotechniker bin, hab ich natürlich auch 
ein paar Grundlagen im Gepäck und darauf kann man auch nicht verzichten. 
Also, ein Stromkreis sollte kein Fremdwort sein.
Beruflich programmier ich Großanlagen, daher bevorzuge ich ASM auf 
Controllerebene, Pascal (Delphi) ist die Ebene für PC's. Ab und zu 
braucht's halt auch ein Programm, um die mit dem Controller erfassten 
Daten zu verarbeiten. Mit diesem Wissen, der Hardware und den hier 
veröffentlichten Tutorials habe ich relativ einfach den Einstieg 
gefunden. Die Programmiersprache ist m.E. nicht relevant, es kommt 
darauf an, was du willst. Sicher wirst du auch irgendwann Assembler 
einsetzen müssen, weil die bevorzugte Sprache etwas nicht vorgesehen 
hat. Ich werde demnächst auch auf Basic verfallen, weil de benötigte 
Mathematik für das nächste Projekt halt einfacher in Basic zu 
programmieren ist. Ob nun C, Basic oder ASM einfach ist, kann ich nicht 
sagen. Wer in Bits denkt und logische Zusammenhänge versteht, Vorgänge 
analysieren und in kleine Schritte zerlegen kann, hat nicht so große 
Probleme.
Man muß wirklich einfachst in Blackboxdenken verfallen.
Was hab ich ( Signaleingang)
Was will ich ( Ergebnis, Signalausgang) und eigentlich steht's zwischen 
diesen beiden Fragen,
Wie komm ich zum Ergebnis.
Letzteres ist die Blackbox, das unbekannte. Es muß nicht ein Programm 
sein, aber wenn es eines ist, dann wird innerhalb der Bb weiter zerlegt, 
bis man glaubt, weiter geht's nicht. In ASM ist's noch extremer wie in 
einer Hochsprache, dafür bist du aber auch schneller und kompakter. Aber 
ich sagte ja schon, es kommt auf die Aufgabe an.
Gru oldmax

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
Noch kein Account? Hier anmelden.