Forum: Mikrocontroller und Digitale Elektronik einstieg ohne vorkenntnisse?


von Mo E. (moschen)


Lesenswert?

Hallo liebe Probrammierer

Ich stelle mich mal erst vor da ich ja neu hier bin;-).

Meine Freunde nennen mich "mo" oder "momo" komme aus Berlin bin 23 und 
hab grad meine Ausbildung zum Kfz-Service-Mechaniker (Autos 
reparierer;-)) gemacht.


Wie ihr gelesen habt bin ich ein kleiner Mechanicker der aber den drang 
hat µC zu programmieren.
Will zum anfang einen atmega8 programmieren um mit dem Tutorial zu 
arbeiten.

Fragen:
1.Ist es eigentlich möglich µC Programierung zu lernen(selber 
beibringen) ohne zu studieren?

2.Zum programmieren brauch ich ja die Software(avr studio zb.) und einen 
Programmer... nur kan ich den programmer selber Basteln da ich zum 
Anfang nicht viel Geld ausgeben will bzw. kann und alles am Leppi machen 
will (das heißt über usb und =>vista<=)!?

Was erwarten mich für Fehler durch das selber Basteln(ich meine die 
komunikation avr<-->avrstudio)

3.Einige fragen über euch da es mich interessiert

  3.1.wie lange braucht ihr um ein Programm zu schreiben?
  3.2.wie lange macht ihr das schon (Programmieren)?
  3.3.habt ihr studiert bzw. seid ihr dabei?
      (studiert wie man programmiert)
  3.4.wo oder wie habt ihr das gelernt?

mfg mo

von Timmo H. (masterfx)


Lesenswert?

>1.Ist es eigentlich möglich µC Programierung zu lernen(selber
>beibringen) ohne zu studieren?
Klar, lernen kann das jeder. Ich denke 80-90% der Leute hat sich das 
hier selber beigebracht.

>2.Zum programmieren brauch ich ja die Software(avr studio zb.) und einen
>Programmer... nur kan ich den programmer selber Basteln da ich zum
>Anfang nicht viel Geld ausgeben will bzw. kann und alles am Leppi machen
>will (das heißt über usb und =>vista<=)!?

Einen einfachen ISP-Programmer zu basteln ist simpel. Notebooks haben 
meist kein Parallelport mehr, von daher musst du schon RS232 (sofern 
sowas überhaupt noch vorhanden ist) oder direkt USB. Am besten ist es 
denke ich wenn du dir USBProg 
(http://shop.embedded-projects.net/product_info.php?info=p6_usbprog-v3-0--Adapter-vormontiert-.html) 
kaufst. Für 37€ Vorprogrammiert bestimmt nichts gegen zu sagen. 
Ansonsten findest du weitere Schaltpläne hier im Wiki 
(http://www.mikrocontroller.net/articles/AVR_In_System_Programmer).


>3.Einige fragen über euch da es mich interessiert

>  3.1.wie lange braucht ihr um ein Programm zu schreiben?
>  3.2.wie lange macht ihr das schon (Programmieren)?
>  3.3.habt ihr studiert bzw. seid ihr dabei?
>      (studiert wie man programmiert)
>  3.4.wo oder wie habt ihr das gelernt?

zu 3.1: Jenachdem wie umfangreich das ist, und ob die Thematik für einen 
neu ist. Von wenigen Stunden bis Wochen ist mit Sicherheit alles möglich

zu 3.2: 5 Jahre vielleicht µC Programmierung, davor nur C, PHP...

zu 3.3: Hab E-Technik studiert und bin seit diesem Jahr fertig. Da lernt 
man unter anderem auch µCs und allgemein mit C/C++ zu programmieren.

zu 3.4: Programmieren habe ich mir vor zig Jahren selber beigebracht, 
erst mit VB angefangen und schließlich bei C gelandet.

von Andi (Gast)


Lesenswert?

> 3.1.wie lange braucht ihr um ein Programm zu schreiben?

5 Minuten bis einige Monate :)

> 3.2.wie lange macht ihr das schon (Programmieren)?

nur programmieren oder speziell auf Controller bezogen ?

> 3.3.habt ihr studiert bzw. seid ihr dabei?
      (studiert wie man programmiert)

Es gibt wohl alle Varianten, man braucht allerdings kein Studium, um das 
Programmieren in C oder Basic zu lernen. Für Assembler an sich auch 
nicht, schön wäre dafür trotzdem ein bisschen grundsätzliches 
Verständnis der Digitaltechnik / Logik.

Die richtige Beschreibung eines Problems und die Fähigkeit, es in Code 
umzusetzen, ist da manchmal schon schwieriger. Je nach Anspruch kann 
hier ein Studium nicht schaden.

> 3.4.wo oder wie habt ihr das gelernt?

Irgendwann mal in Eigenleistung. Zum Zeitpunkt, als ich entschloss, mal 
etwas mit Controllern zu programmieren, hatte ich allerdings schon 
Erfahrung mit Basic 2.0, Visual Basic, Java Script, PHP, Perl u.s.w.

Sollte C die Sprache der Wahl werden kann ich dem absoluten 
Programmiersprachen-Neuling empfehlen, sich zunächst mit 
C-Programmierung am Rechner zu beschäftigen.

von Chris L. (Gast)


Lesenswert?

Also, ich bin jetzt auch nicht der Crack was µC angeht, mach das selber 
auch erst seit ca. zwei Wochen, aber
1
1.Ist es eigentlich möglich µC Programierung zu lernen(selber
2
beibringen) ohne zu studieren?

Meiner Meinung nach schon, es wird vllt. etwas dauern, aber auf jeden 
Fall möglich. Ich denke es ist wichtig ein allgemeines Verständnis für 
Bits und Bytes zu haben. Ich persönlich komme wesentlich besser damit 
klar Assembler als C zu schreiben.
1
2.Zum programmieren brauch ich ja die Software(avr studio zb.) und einen
2
Programmer... nur kan ich den programmer selber Basteln da ich zum
3
Anfang nicht viel Geld ausgeben will bzw. kann und alles am Leppi machen
4
will (das heißt über usb und =>vista<=)!?

Ich hab mit dafür extra XP drauf gemacht. Als Programmer benutze ich 
dieses USBProg von embedded-projects.net. Nach keinen 
Anlaufschwierigkeiten funzt das jetzt wunderbar mit dem AVRStudio 
zusammen. Unter Vista, keine Ahnung ob das da auch läuft.
1
3.1.wie lange braucht ihr um ein Programm zu schreiben?

Kommt darauf an was man macht, bei mir als ich meine erste Software-PWM 
geschrieben hab, schon einige Stunden.
1
3.2.wie lange macht ihr das schon (Programmieren)?

ca. zwei Wochen, allerdings seit dem auch fast täglich, mir fallen immer 
neue Sachen ein :)
1
3.3.habt ihr studiert bzw. seid ihr dabei?

nein, hab programmieren nicht studiert und bin auch nicht dabei
1
3.4.wo oder wie habt ihr das gelernt?

Zuhause vorm Rechner mit verschiedenen Tuts. Z.B. das hier auf der Seite 
hat mir sehr geholfen. Viel rumprobieren hilft auch, gibt für AVRs ja 
jede Menge im Internet


Ich hoffe ich konnte dir ein wenig helfen :)

Viel Erfolg

von Manuel Stahl (Gast)


Lesenswert?

Da kann ich mich mal einreihen.

Ein Studium braucht man sicher nicht, ich denke die meisten hier werden 
wohl schon in der Schule mit µCs angefangen haben. War bei mir auch so.

Eigeninitiative und ein Grundverständnis von Logik ist das wichtigste, 
denke ich, der Rest kommt mit der Zeit.

von Dirk W. (dwoe)


Lesenswert?

Hallo Mohamed,

ich bin gerade genauso weit wie Du.

Nein, einen Schritt weiter bin ich schon: ich habe mir gestern das 
Starter-Kit aus dem Shop hier bestellt. Schau Dir das doch mal an. Da 
ist auch ein USB-Prgrammmer USBProg dabei, der auch mit modernen 
Notebooks arbeiten sollte.

Ich versuche dann mir das alles selber beizubringen - und hoffe auf 
Hilfe von Forum und Internet.

Viel Erfolg,

Dirk

von Olaf (Gast)


Lesenswert?

> 1.Ist es eigentlich möglich µC Programierung zu lernen(selber
> beibringen) ohne zu studieren?

Ja kein Problem. Das programieren eines Microcontroler ist eigentlich
eher einfach.

Schwierig wird es eher durch die Aufgabenstellung. Wenn man etwas
schwieriges regeln moechte so ist eine Vorlesung zum Thema
Regelungstechik schon hilfreich, und fuer diese Vorlesung sind
tiefergehende Mathekenntnisse notwendig.

Wichtig ist auch das Ziel. Jeder kann einen blinkenden Weihnachtsbaum
programmieren. Eine Schaltung wie einen Einspritzcomputer der 15Jahre
bei -20 bis +100Grad funktionieren soll, ist dagegen schon schwieriger.

> Anfang nicht viel Geld ausgeben will bzw. kann und alles am Leppi machen
> will (das heißt über usb und =>vista<=)!?

Es gibt ein paar Probleme mit USB weil die Schnittstelle Timingprobleme
verursacht. Ich wuerde einem Anfaenger daher empfehlen einfach einen
fertigen Programmer zu kaufen. Es gibt von Atmel da so eine kleine
blaue Kiste die garnicht so teuer war.

Ich wuerde dir auch empfehlen nach einem Buch ausschau zu halten!

Olaf

von Atmega8 A. (atmega8) Benutzerseite


Lesenswert?

>> 3.1.wie lange braucht ihr um ein Programm zu schreiben?

> 5 Minuten bis einige Monate :)

Genau so würde ich das auch sagen.
Wenn du erst mal keine Ahnung hast musst du dir das Tutorial , die Doku 
vom Atmega8 und die Appnote durchlesen. Das verbraucht 95% der Zeit und 
zum Schluss hast du da nur 2 Zeilen Quelltext zu stehen.

> 1.Ist es eigentlich möglich µC Programierung zu lernen
> (selber beibringen) ohne zu studieren?
Im Studium lerne ich das jedenfalls nicht, das muss ich mir auch alles 
selbst beibringen.

> 3.4.wo oder wie habt ihr das gelernt?
Mit dem AVR-Tutorial und der Doku vom Atmega8 :)
Und mit einem selbst gelöteten Testboard. (zum ausprobieren)

Nutz doch einen WinXP-Desktoprechner und erst mal einen 
Parallelport-Programmer, jedenfalls mach ich das oft so.
Ist einfach, schnell und funktioniert immer.

lg

von Peter Diener (Gast)


Lesenswert?

Hallo,

Programmieren selbst zu lernen ist durchaus möglich. Wichtig ist, dass 
du deine Hardware, sprich den ATMEGA8 genau kennst. Du solltest den 
Befehlssatz des Prozessors kennen, den gibts bei Atmel (AVR Instruction 
set). Dann ist das Datenblatt (datasheet) wichtig, dort steht alles, was 
man beachten muss, das ist für jeden Controller anders, aber du kommst 
nicht drum herum, das (eventuell mehrfach) komplett zu lesen.

Dann musst du natürlich eine Programmiersprache beherrschen, also 
entweder du programmierst maschinennah in Assembler oder in einer 
höheren Programmiersprache, z.B. C. Mit Assembler kann man die 
eigentlichen Funktionen des Prozessors sehr gut nachvollziehen, es 
eignet sich also gut zum lernen. Programme werden dadurch, dass die 
Befehle sehr einfach sind, jedoch immer relativ umfangreich, weil man 
füe eine bestimmte Funktion, die man umsetzen will, viele der einfachen 
Befehle braucht.

C hat sehr komplexe und mächtige Befehle, deswegen sind Programme 
deutlich kürzer und schneller zu Programmieren als in Assembler, jedoch 
sieht man nicht mehr direkt, was der Prozessor wirklich damit macht. Das 
macht das Suchen von Fehlern schwieriger. Man hat in C auch gleich mal 
etwas hingeschrieben, womit der Prozessor überfordert ist, das passiert 
einem in Assembler nicht leicht.


Um einen AtMega8 zu Progrmmieren brauchst du AVR-Studio für Assembler 
und für C zusätzlich WINAVR. Um dein übersetztes Programm in den 
Speicher dex Controllers zu laden, gibts mehre Möglichkeiten. Entweder 
du verwendest einen Highvoltage Programmer, wie z.B. das STK500 oder ein 
Galep3, 4 oder 5. Diese Geräte sind relativ teuer, damit lassen sich 
aber auch viele Probleme lösen bzw. treten diese erst garnicht auf (z.B. 
falsches Setzen von Fuses).

Eine weitere gängige Art, zu flashen ist ein ISP-Tool (in system 
programming). Dabei ist der Controler in der Zielschaltung eingebaut, 
während er programmiert wird und wird auch von diese mit Spannung 
versorgt. Den Selbstbau einer ISP-Schaltung empfehle ich Anfängern aber 
nicht. Im shop bekommst du für 40 Euro das AVR-ISP, das kann das alles 
per USB-Schnittstelle. Die Selbstbauvarianten funktionieren normal am 
Parallelport des PC und am Laptop normal wegen zu geringen Pegeln an der 
Schnittstelle garnicht.

Was erwarten dich für Fehler:
Darüber kann man ein Buch schreiben...
Mit dem STK-500 kommt man recht schnell zu etwas funktionsfähigem. Wenn 
man seine Schaltung selbst baut, kann im Prinzip alles passieren, von es 
geht nicht, bis es geht alles kaputt, was miteinander verbunden ist, bis 
hin zum Laptop. Das kommt immer darauf an, was man falsch macht. Es 
schadet nicht, vorher ein bisschen mit konventioneller Elektronik 
gebastelt zu haben.

Zur dritten Frage:

Wie lange brauch ih für ein Programm?
Es kann sein, das man ein einfaches Programm in einer halben Stunde zum 
laufen gebracht hat (LEDs blinken lassen, Taster abfragen usw.).
Das kommt auch immer darauf an, wie viel Arbeit das Herstellen der 
Hardware ist, beim STK-500 ist halt schon alles drauf, was man zum 
Probieren braucht.
Ich habe einer Waschmaschine mit defektem Schaltwerk eine 
Rechnersteurung mit Mikrocontroller gebaut, die Programmierung hat 3 
Monate gedauert. An einer Steuerung für eine Druckluftkompressor habe 
ich 6 Monate programmiert. Das ist natürlich nicht die Größenordnung, in 
der du anfangen möchtest, der Kompressor hat ein Grafikdisplay mit 
Touchpanel und viele andere Feinheiten, die ich haben wollte.

Wie lange programmiere ich schon?
Seit über 10 Jahren. Ich habe damals mit Basic angefangen, dann Pascal 
und Modula2 gelernt, irgendwann dann C und zwischendurch Assember für 
diverse Architekturen.

Ich studiere im Moment Elektrotechnik an der TU München.
Die Vorlesung Grundlagen der Informatik hilft etwas beim grundlegenden 
Verständnis, wie man Programme strukturiert. In der 
Computertechnikvorlesung wird eine virtuelle Maschine behandelt, anhand 
derer man Einblicke bekommt, wie Prozessoren intern arbeiten.

Mikrocontroller zu Programmieren lernt man am besten, in dem man sich 
etwas Hardware besorgt, die man einfach anhand von vorgefertigten 
Beispielen zum laufen bekommt und versucht dann vorsichtig, die 
mitgelieferten Beispiele abzuändern, schaut, ob es funktioniert, wenn 
nicht, woran es liegt usw. Das ist ein ständiger Prozess aus Ändern, 
Testen, Ändern...
Es gibt sehr gute Bücher über AVR Controller, dort sind meist auch 
einfache Schaltungen mit Mikrocontrollern beschrieben.

Als ich angefangen habe zu programmieren, hat es auch noch kein Internet 
gegeben, wo man mal schnell Datenblätte ansehen konnte. Man musste alles 
beim Hersteller in gedruckter Form bestellen. Außerdem sind mittlerweile 
die PCs leistungsfähig genug, dass man auch mal ein Programm eines AVR 
in AVR Studio simulieren kann und im Voraus sieht, was passieren wird.
Somit ist das eigentlich kein nicht mehr schwierig, auch ohne spezielle 
Ausbildung einzusteigen, man darf sich nur nicht demotivieren lassen. Es 
gibt nunmal Probleme, die sich oft wochenlang nicht lösen lassen. Das 
ist normal und passiert auch Profis. In so einem Fall hilft dann nur das 
Lesen der Datenblätten und genau Schritt für Schritt nachzuvollziehen, 
was der Prozessor macht. Wenn man was falsch verstanden hat, kann es 
schon mal passieren, dass man einen Fehler garnicht selbst findet, 
sondern jemand anderen um Rat fragen muss. Aber auch das ist ja hier im 
Forum kein Problem.


Viele Grüße,

Peter

von Mo E. (moschen)


Lesenswert?

cool ich danke euch für die antworten.

@timmo
herzlischen glückwunsch für das beendete studium und wünsche dir viel 
erfolg in dem was du noch machen wills
natürlich gilt das auch für alle anderen;)

das freut mich zu hören das es geht!!!

ich beschäftige mich seit ca. 1 monat mit internetrechersche um µc zu 
lernen
aber wie man weiß wenn man sich etwas unter druck setzt denkt dan am 
ende "das geht nich die haben das doch studiert du dumm kopf wie sollst 
du das schaffen"?

ich hab das mal vor jahren (ca. 7 jahre) in der schule (oberschule) 
gemacht.

ich kann mich aber nur nicht ganz dran erinnern wie ich geschrieben hab 
oder mit was...

if taste 1=1 oder zu
then motor 1=links

irgend sowas in der art.

logik bausteine und das was die machen kenne ich teilweise schon.

naja das wird schon klappen

aber es ist richtig das ich nur:

1.avr studio (kostenlos) brauch
2.den programmer stk500 ca 80€.
und für die verbindung zum usb einen usb adapter zu anfangen brauch 
brauch?

von Atmega8 A. (atmega8) Benutzerseite


Lesenswert?

Du brauchst kein STK500, ein USBasp / USBisp reicht dafür aus.

Wenn ich ein Board mit einem mikrocontroller herstelle dann spendiere 
ich ihm immer gleich eine ISP-Buchse, dann steck ich da mein 
USBasp/USBisp oder STK200 (kleine handliche Geräte) rauf und schreibe 
mein Programm auf den chip.

von Peter Pan (Gast)


Lesenswert?

für den anfang ist ein Steckbrett auch sehr hifreich das kann man immer 
gebrauchen.

Auch in den Roboterforen programmieren einige "kinder" ihre Bots dort 
wurde mal ein richtig geiler 8 beiniger roboter vorgestellt und der 
erbauer sagte: ich werde am wochenende mit meinem Vater noch eine 
halterung für das xxx modul bauen aber ich darf noch nicht allein an die 
Bohrmaschine ;)

sein bot konnte schon laufen auf hindernisse reagieren und sonstigen 
schnick schnack alles selber programmiert.

Ich würde zu einem Steckbrett und dem USBprog raten. dann noch nen 
kleinen Tiny 2313!? oder Mega8 , 10 led`s 2mA 10 widerstände und 3 
tastern schon kann es losgehen ca 50€

Mein erster µC war der 90at2313 dann die Tiny12, bein Tiny12 musste ich 
dort aber feststellen das das in die unterprogramme springen schnell 
vorbei war wegen dem kleinen stackpointer.

Mit dem Mega8 haste erstmal reserven.

Viel erfolg

Gruß

P.Pan

von Klaus (Gast)


Lesenswert?

>springen schnell vorbei war wegen dem kleinen stackpointer.

Da verwechselt wohl einer den Stackpointer mit keinem Ram!
Der Tiny12 hat keinen Ram und einen Hardware Stack von
glaube nur 4 Stufen.

von Peter Diener (Gast)


Lesenswert?

Hallo,

wenn du das STK500 verwendest, brauchst du nichts weiter als die 
kostenlose Software dazu. Beim STK500 sind meines Wissens nach auch ein 
paar Prozessoren zum Testen dabei. Einen USB-seriell-Adapter brauchst du 
dann nur, wenn dein Laptop keinen Com-Port mehr hat.

USBasp ist natürlich auch möglich, man muss aber die erste Schaltung 
komplett selbst aufbauen, da ist es dann schwierig zu erkennen, ob ein 
Fehler in der Hardware oder der Software vorliegt, wenn am Anfang 
einfach nichts geht. Außerdem kann man damit keine verfusten Controller 
retten, soweit ich weiß.

Wenn du Risiko gern magst, kannst du auch eins der Demoboards von Pollin 
ausprobieren, das kostet nur 15 Euro und kann für einige wenige 
Prozessoren das, was ein selbst gebautes Board mit USBprog kann.

Was du bezüglich deiner Programmiersprache schreibst, die du gelernt 
hast, klingt nach Pascal, da ist ein Umstieg auf C nicht schwierig.

Grüße,

Peter

von Martin (Gast)


Lesenswert?

Hallo,

bin Anfänger wie du aber paar Kappitel weiter!

so nach meine erfahrung als ANFÄNGER kann ich dir folgendes sagen:

>> wenn du das STK500 verwendest, brauchst du nichts weiter als die
>> kostenlose Software dazu. Beim STK500 sind meines Wissens nach auch ein
>> paar Prozessoren zum Testen dabei. Einen USB-seriell-Adapter brauchst du
>> dann nur, wenn dein Laptop keinen Com-Port mehr hat

das stimt obwohl ich keine habe! der STK500 ist angeblich super von 
Einstiegt bis zum Profi, Programmer brauchst du keine

ich habe mich ein Eval-Board als Bausatz gekauft (Pollin Board) für 
19Euro (kein Werbung) und selber gebaut, als Programmer habe ich selber 
der USBasp "gebastel" und funktioniert bis heute tadelos.

Einige gute Varianten meine Meinung nach sind:

http://www.soft-land.de/index.php?page=avrdev-board

hier brauchst du NICHTS mehr für den Anfang (50 Euro) USBasp ist schon 
im Board!

hier
bei www.ulrichradig.de
- der ATmega8 Experimentierboard als Bausatz für 23 Euro und
- der USBasp als Bausatz für 13 Euro)

(kein Werbung)

damit bist du auch sehr gut bedient!

so, viel spass
Gruß
Martin

von Mo E. (moschen)


Lesenswert?

@peter diener
das ist es ja mein lappi hat nur ein
stecker um einen monitor anzuschließen
drei mal usb und natürlich lan sonst könnte ich euch nicht schreiben 
hehe

na gut dann lade ich mir avr studio
und dann überleg ich ob ich den avr/usb? isp hole ober selber bastel

stk500 ist mir zu teuer für den anfang

wünscht mir glück das es klappt leute :)

von Marcel (Gast)


Lesenswert?

hi

also für den einstieg ohne viel bastelein ist das ez430 kit von ti sehr 
zu empfehlen! man bekommt für 30 euro alles was man braucht:

- uC
- gute IDE
- Debugger
- man kann die uC's billig sampeln bzw. kaufen
- uC ist im zielsystem prog/debugbar

Zudem hält TI eine ganze menge an SW beispielen bereit.

Gruß marcel

von Gerhard. (Gast)


Lesenswert?

Hallo,

ich moechte noch gerne auf einige der sogenannten "SIMMsticks" 
hinweisen. Habe damit und dem AVR-ISP von Atmel meine ersten Experimente 
mit ATmeg32s gemacht und war recht praktisch. Die Platinen sind sehr 
billig und von ausreichender Qualitaet. Gekauft habe ich mir zwei ATMEGA 
Porzessorplatinen(SIMM100), eine kleine Mutterplatine (DT003) mit 5V 
Regler und RS232 Interface und ein paar SIMM 30 pin 
Steckerstreifen(DT208) um leicht an den 30-pin Bus ranzukommen. Zusammen 
mit dem AVR-ISP hat alles sofort hardware maessig funktioniert.

Die Platinen bestellte ich mir bei dontronics (Keine Werbung) in 
Australien. Ich nehme an dass die bei Euch in Europa irgendwo im Handel 
sein duerften.

Noch schoenes Wochenende,
Gerhard


http://www.dontronics.com/dt.html
http://www.dontronics.com/simm100.html

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.