Forum: Mikrocontroller und Digitale Elektronik Programmieren lernen die 10.001


von Elias K. (Gast)


Lesenswert?

Hallo,

Ich weiß, dass diese Frage schon 10.000 mal gestellt wurde, trotzdem 
frage ich jetzt mal zum 10.001 mal. Ich würde gerne lernen, µC´s wie 
z.B. PIC´s
oder die STM´s zu programmieren. Ich habe viel Verständnis für 
Elektronik, und auch für Technik, und bin grundsätzlich Technikbastler 
durch und durch. Mein Problem mit dem Programmieren ist aber, dass die 
meisten Dinge, die man dazu findet alle auf Englisch sind, ich aber mit 
Englisch schon immer Probleme hatte. Dazu kommt, dass es Menschen gibt, 
die sich vor ein Buch setzen, das lernen, und danach alles können, was 
sie darin gelesen haben. Ich kann das leider nicht, man kann auch sagen, 
ich bin zu blöd dazu. Wenn mir einer zeigt, wie das geht, kapiere ich 
das schnell, aber leider nur dann, und das tut kein Programmierer, dazu 
haben die alle zu wenig zeit. Ich weiß, was eine IDE ist, auch was ein 
Compiler ist, und was der Unterscheid zwischen einer Hochsprache und 
Maschinencode ist. Die Frage ist nun, ob es irgendwo im Internet 
Anleitungen auf deutsch? Gibt, mit denen man z.B. C oder, ich weiß, wie 
schwer das ist, C++ lernen kann. Oder besser Teile davon, es wäre mir 
schon genug, wenn ich einen kleinen µC dazu kriegen könnte, das zu tun, 
was ich will.

von User (Gast)


Lesenswert?


von S. R. (svenska)


Lesenswert?

Elias K. schrieb:
> Mein Problem mit dem Programmieren ist aber, dass die
> meisten Dinge, die man dazu findet alle auf Englisch sind,
> ich aber mit Englisch schon immer Probleme hatte.

Die Lösung ist nicht, Dokumentation auf Deutsch zu finden, sondern dein 
Englisch soweit zu verbessern, dass du sie verstehst. Das in 
Datenblättern verwendete Englisch ist anders als das, was man in der 
Schule lernt oder im Urlaub braucht.

Ich hatte einen Dozenten an der Uni, der so gut wie kein Englisch konnte 
(dafür fließend Russisch), sich aber trotzdem problemarm durch 
Datenblätter gebissen hat. Das ist also kein gutes Argument.

Davon abgesehen: Es gibt deutsche Bücher und Tutorials zu 
Mikrocontrollern (z.B. hier auf der Seite). Für die Grundlagen ist das 
alles vorhanden, nur ist die Auswahl geringer (z.B. basiert das 
AVR-Tutorial auf einem Atmega8, der nun doch etwas älter ist).

Am sinnvollsten ist es, einfach anzufangen. Am Mikrocontroller sind es 
blinkende LEDs, Lauflichter, Knöpfe und irgendwann Timer und UARTs, 
während es am PC kleine Text-Dinge sind ("Na Kleine, wie heißt du? - 
Bärbel - Hallo Bärbel."). Programmieren lernt man durch Üben; gut 
programmieren lernt man danach durch Angucken von gutem Code. Das kann 
man auch auf dem PC recht gut.

Wenn du ein bestimmtes Problem vor Augen hast, kannst du auch gezielt in 
die notwendige Richtung lernen, sofern es realistisch ist. Gibt 
dummerweise Einige, die gleich mit einem 100x100x100 LED-Würfel oder 
einem Webserver-mit-IoT-auf-STM32 anfangen wollen und dann scheitern. 
Klein anfangen bringt mehr.

von NichtWichtig (Gast)


Lesenswert?

Englisch lernen ist in der Tat ne gute Idee und auch anderswo nützlich.

von Dampfheuler (Gast)


Lesenswert?

Ohne englisch wird alles nichts. Denn irgendwelche Foren beim Hersteller 
sind ueblicherweise auch auf englisch.

von Oldmax (Gast)


Lesenswert?

Hi
Ohne ein wenig Englisch wird es wohl schwierig. Aber tröste dich, auch 
ich habe da eine große Lücke. Trotzdem habe ich verschiedene SPS 
programmiert und mit Pascal, Basic und Assembler gearbeitet. Nun bin ich 
Rentner. Vielleicht kann ich dir doch noch ein wenig helfen, den 
Einstieg zu finden. Was ist deine Motivation? Dein Ziel? Nimm dir ein 
Projekt vor. Das darf ruhig  hoch liegen. Und dann nähere dich dem in 
kleinen Schritten. Bei den Atmels AtMega8 z.B. kann ich mit Assembler 
helfen und ja, es ist sinnvoll, auch wenn die Welt C spricht. 
Programmieren ist nicht die Kunst, eine Sprache zu sprechen, sondern 
Aufgaben so zu beschreiben, das es eine Maschine versteht. Und da 
schadet es nicht, die Maschine zu verstehen. OK, genug geredet, meld 
dich einfach. Vielleicht findet sich Mal ein direkter Weg, dir zu 
helfen.
Gruß oldmax

von Jemand (Gast)


Lesenswert?

Hallo

wenn es "nur" an der englischen Sprach liegt:

So schlecht ist der Google Übersetzer gar nicht mehr - wenn man ein 
klein wenig Ahnung zum jeweils übersetzten Thema hat kommen da durchaus 
lesbare Texte heraus, zumindest in diesen Themenbereichen, du willst ja 
sicherlich nicht Tolkien, Prattchett oder Shakespear übersetzen.

Auch https://www.deepl.com/de/translator liefert oftmal sehr gut lesbare 
Übersetzungen, eventuell muss man den Text hat in kleineren Portionen 
übergeben, wobei man mit 5000 Zeichen je Durchgang aber schon recht weit 
kommt - wie man den übersetzten Text in eine lokale Datei auf seinen 
Computer bekommt wird wohl jeder hier im Forum wissen oder herausfinden 
können ;-) .

Probleme haben natürlich alle Übersetzer wenn schon der Originaltext 
stark Fehlerbehaftet ist bzw. ungewöhnlich formuliert wurde (also oft 
schon englischsprachige Übersetzungen weiter nach Deutsch oder halt 
Forumsbeiträge) aber da hat man ja selbst als Muttersprachler so seine 
Probleme  ;-)

Zum eigentlichen Problem:
Ich habe und hatte ähnliche Voraussetzungen - es gibt leider nur sehr 
wenige Quellen die für "Solche Typen wie wir" wirklich geeignet sind, im 
µC Umfeld wird "immer" davon ausgegangen das man von der Hardware keine 
Ahnung hat aber bezüglich Programmierung wenigsten schon eine gute 
Grundlage hat, leider auch beim Foren internen µC Tutorial dessen 
Hauptkritikpunkt eben nicht ist das es schon älter ist und auf einen 
ATMega 8 basiert - sondern das es  verlangt das man die Sprache C schon 
recht gut beherrscht.

In der Arduinowelt sieht es fast noch schlimmer aus - oft bekommt man 
einfach was vorgesetzt und, oder, die Probleme werden einfach mit einer 
passenden Bibliothek erschlagen.
Während es dort Grundlagenkurse ohne Ende gibt und diese oft sogar recht 
gut sind werden wird man aber bei den "gemeinen" Tricks die dann in 
fertigen, meist größeren, Programmen (Sketches) oder eben in Quelltext 
der Bibliotheken (librarys) zu Haufe auftauchen in Stich gelassen und 
man fragt sich was man überhaupt sinnvolles gelernt hat...

Was (leider aber nicht immer) hilft ist viele Quellen zu nutzen, und 
nicht verstandenes von einer anderen Quelle erklären zu lassen.

Ansonsten: Leider (denn es ist oft frustrierend, langweilig und 
anstrengend - nicht unbedingt was man von einen Hobby erwartet) die 
schon von anderen in den gefühlt hunderten Threads ;-) abgegebenen 
Empfehlungen beherzigen - also vor allem üben, ab schauen, ausprobieren, 
Fehler beheben mit den einfachsten Sachen anfangen und sich erst mal mit 
den Programmieren am PC (auch wenn es genau das ist woran man keine 
Interesse und Verwendung hat)auseinander zu setzen...
Leider scheint es im µC Umfeld genau zwischen einfachen und den ganz 
großen Projekten, wo sinnvoller weise nicht mehr alles erklärt werden 
kann, kaum etwas zu geben bzw. wird man gerne mit den schon erwähnten 
Bibliotheken, nicht nur bei Arduino Umfeld, erschlagen.
Was gerade für Typen (wie auch du ?) die aus der Hardware kommen nicht 
wirklich zufriedenstellend ist weil man ja irgendeine Hardware 
(Datenblätter) auch mal selbst in funktionierenden Code übertragen 
können möchte und nicht auf dutzende fertige "Black Boxes" (und damit 
Abhängigkeit von bestimmter Hardwarekomponenten, selbst wenn diese sehr 
Preiswert und leicht zu beschaffen ist ist das nicht wirklich 
befriedigend) angewiesen sein.

Wenn es allerdings nur um Problemlösungen ankommt (Funktionalität) dann 
sind Bibliotheken natürlich ein Segen, aber ich glaube das auch du mehr 
willst.

mfg

Jemand

von Ralph S. (jjflash)


Lesenswert?

Elias K. schrieb:
> Wenn mir einer zeigt, wie das geht, kapiere ich
> das schnell, aber leider nur dann,

Wenn du aus dem PLZ-Bereich 76xxx kommst kann ich dir gerne einige Dinge 
zeigen.

Prinzipiell mußt du unterscheiden in der Programmierung in C (oder auch 
C++) und der Hardware auf der das laufen soll.

Wenn es um das Programmieren lernen geht, kannst du das auch auf dem PC 
lernen (und dich vorerst nicht um die Hardware kümmern), wenn du dann 
Dinge mit einem Controller machen möchtest, kommst du um die Hardware 
nicht herum (selbst dann nicht, wenn du fertige 
Hardwareabstraktionslayer oder Arduino verwendest).

Um in C zu programmieren ist ein Verständnis von

- Compiler
- Präprozessor
- Bibliotheken
- Linker

notwendig.

Egal welche IDE du verwendest (mal von Arduino abgesehen) ist ein 
Verständnis für die oben genannten Dinge notwendig.

von Der Duke (Gast)


Lesenswert?

>Dazu kommt, dass es Menschen gibt,
>die sich vor ein Buch setzen, das lernen, und danach alles können, was
>sie darin gelesen haben.

Ich denke, dass ist bei den wenigsten out-of-the-box so.
Wenn ich z.B. von Controllern mir eine Peripherie aneignen will, mach 
ich das so, dass ich das Kapitel im Datenblatt lese. Danach hab ich 
nicht alles verstanden und schon gar nicht auswendig parat, aber eine 
grobe Vorstellung. Dann fahre und modifiziere ich ein paar der meist 
mitgelieferten Beispielürojekte die es vom Hersteller zu der Peripherie 
gibt. Gerade das modofizieren und anschließende Verifizieren der 
Funktion ist der aktive Lernprozess, den sich das Hirn merkt (meins 
jedenfalls).
DANN lese ich bei Bedarf die Periph-Doku nochmal (im Zweifel nochmal, 
nochmal nochmal)wenn ich hartes Detailwissen brauche. DANN setzt es sich 
auch besser, als beim ersten Durchlauf, weil sich die Zusammenhänge auf 
Basis der praktischen Erfahrung besser einordnen.

von Joachim S. (oyo)


Lesenswert?

Mal ne andere Frage:
Muss es überhaupt zwingend C/C++ sein?

Das sind zwar naheliegenderweise die verbreitetsten Programmiersprachen 
für Mikrocontroller, aber es sind halt keine guten Sprachen für 
Programmieranfänger.

Sprachen wie Python sind für Programmieranfänger einfach viel leichter, 
und mit Micropython & Co. gibt es durchaus die Möglichkeit, auch 
Mikrocontroller mit Python zu programmieren. In der Wahl des 
Mikrocontrollers bist Du dann zwar eingeschränkt - aber wenn es Dir nur 
darum geht, einen Mikrocontroller dazu zu bringen, das zu tun was Du 
willst, wäre auch das eine Option.
Käme halt auch irgendwo darauf an, was genau Du eigentlich vorhast.

Oder vielleicht sowas wie BASCOM.

Wenn es aber unbedingt C/C++ sein soll, dann würde ich Arduino 
empfehlen. Durch die grosse Menge an Informationen/Tutorials etc. zu 
Arduino und der grossen Community etc. fällt der Einstieg da einfach 
deutlich leichter. Da sollte man problemlos sowohl ein gutes Buch auf 
Deutsch, als auch bei Problemen hilfsbereite deutschsprachige 
Mitmenschen finden.

von Jemand (Gast)


Lesenswert?

Hallo

diese Vorgehen gefällt mir, und ähnlich mache ich es auch - und was die 
Hardware angeht funktioniert es ja auch gut (zumindest schon mal für 
zwei Leute hier).

Aber eben im Softwarebereich scheint das (nur für mich?) nicht so 
richtig möglich zu sein da ja oft die Details und "Tricks" das 
wichtigste sind und diese meist eben nicht "wirklich" erklärt werden 
(der Code ist nun mal kein Datenblatt und somit im weitesten Sinne ein 
Verkaufsargument - sondern man muss froh sein wenn diese überhaupt 
zugänglich gemacht wird).
Wie schon gesagt die Grundlagen werden irgendwie überall mehr oder 
weniger gut erklärt und man kann sich die jeweils verständlichsten 
Erklärungen heraussuchen und kommt damit recht weit - nur dann geht es 
leider nur sehr träge und schwer weiter weil man die Lösungen und Wege 
anderer (Vollprofis) eben nicht so einfach herunter brechen und in 
kleine aber voll Funktionsfähige Häppchen aufteilen kann und es auch 
selten wirklich gute Dokumentationen und erläuternde Beispiele gibt wie 
es halt die Datenblätter und vor allem die oft hervorragenden 
Applikation Notes bei Hardware (Halbleiterbauelemente) liefern.

Etwas OT:

Obwohl sich die App Notes und Datenblätter nun ja vorwiegend an die 
Profis wendet so sind die Erklärungen in diesen meist wirklich 
hervorragend und gehen in die kleinsten Details aber auch Grundlagen ein 
auf die man bei einen Profi eigentlich nicht eingehen müsste (aber es 
dann doch notwendig und vereinfachend und somit sehr sinnvoll ist) - 
warum so nicht auch im Softwarebereich und im Lehrbetrieb (und leider 
auch öfter hier bei "Antworten" im Forum) ?

Jemand

von Jemand (Gast)


Lesenswert?

"Wenn es aber unbedingt C/C++ sein soll, dann würde ich Arduino
empfehlen. Durch die grosse Menge an Informationen/Tutorials etc. zu
Arduino und der grossen Community etc. fällt der Einstieg da einfach
deutlich leichter. Da sollte man problemlos sowohl ein gutes Buch auf
Deutsch, als auch bei Problemen hilfsbereite deutschsprachige
Mitmenschen finden."

Leider hört es aber "immer" dann auf wenn es in Details z.B. 
vollständige und detaillierte (!) -> Erklärung <- und zwar inklusive (!) 
aller Tricks und Fallstricke einer schon existierenden Bibliothek von 
einer  anspruchsvolleren Hardware wie z.B. der WS2812 RGB LEDs, eines 
RTC ICs, Display ... geht.
Ich meine hierbei ausdrücklich eben nicht die Nutzung einer fertigen 
Bibliothek - sondern eben was und wie es in den Funktionalitäten einer 
solchen "real World" Bibliothek passiert und abläuft.


Leider werden wenn überhaupt nur "Pippifax" Bibliotheken bzw. deren 
prinzipieller Aufbau erklärt - was ja nicht falsch wäre wenn danach 
nicht direkt "Schicht im Schacht" wäre - aber genau diese "Schicht" 
findet immer statt

Reines "Arduino" also irgendwie angepasstes C++ wird meist sehr gut 
vermittelt aber eben nicht was im Hintergrund geschieht bzw. wie man 
selbst diesen "Hintergrund" außerhalb von Trivial Fälle (Irgendeine 
Praxisferne Blink Bibliothek erstellen) entwickelt.

Jemand

von Der Duke (Gast)


Lesenswert?

@Jemand
>Off-topic

Aus meinem begrenzten Überblick (AVR, STM32, TIVA-C) fand ich Tutorials, 
Handbücher, Doku von Texas Instruments immer super. Vor einigen Jahren 
bin ich nur mit deren Unterlagen in der Lage gewesen vom ersten 
Blink-Blink aus, deren RTOS auf einem TIVA-C ans laufen zu bringen und 
mit etwas normalmenschlichem Hirnschmalz mit deren GrLib zu verheiraten.

von Martin V. (oldmax)


Lesenswert?

Hi Elias
Das Thema μc ist sehr umfassend. Hardware und Software sind hier eng 
zusammen. Aus diesem Grund habe ich Mal ein Buch geschrieben, welches 
zuerst mit einer Programmentwicklung in Visual Basic für ein nützliches 
Werkzeug zum Controller beginnt. Ergebnis ist ein Programm, welches dir 
zur Laufzeit einen Einblick auf die internen Variablenwerte liefert und 
deine Projekte mit Bauteilen und Schaltplãnen verwaltet. Also, ein 
kleines Datenbankprogramm. Jeder einzelne Schritt ist auf ca. 400 
Word-Seiten erklärt. Der Vorteil, Visual Basic gibt es teilweise 
kostenlos als Download und Einsteiger haben damit eine Möglichkeit ihr 
wirkliches Interesse zu testen. Der zweite Teil befaßt sich dann mit der 
Programmierung eines AtMega8 in Assembler. Wer sich in diesem Abschnitt 
bewegt, muß wissen, das es jetzt nicht nur Zeit, sondern auch Geld 
kostet. Auch hier liegen ca.500 Seiten Anleitung und Erklärungen vor. 
Zur Hardware ist der erforderliche Bereich ohne übermäßigem Ballast 
angesprochen. Nicht jede Frage eines Anfängers ist beantwortet, aber die 
Grundlage für eine qualifizierte Frage in einem der Fachforen ist 
gegeben. Das Buch gibt es (noch) nicht im Handel, aber vielleicht gebe 
ich es selbst irgendwann einmal frei, wenn genug Interesse besteht. 
Bisher  fehlt mir aber diese Info. Vielleicht erhalte ich diese aber 
Mal, ohne die Geduld der Forenbetreiber zu sehr auf die Probe zu 
stellen, wegen Werbung in eigener Sache.
Gruß oldmax

von Jemand (Gast)


Lesenswert?

Hallo

das klingt sehr interessant aber ohne umfassende (nicht nur  das 
Inhaltsverzeichnis oder ein kleiner Ausschnitt aus den ersten Kapitel) 
Leseproben auch zu schwammig.
Schon zu oft wurde ähnliches auch in anderen E-Technik Bereichen 
versprochen und noch nie wirklich umfassend gehalten (Insbesondere bei 
Büchern die in einen bekannten Verlag erscheinen in dem auch das letzte 
regelmäßig erscheinende deutschsprachige und überteuerte Elektronik 
Hobby Magazin erscheint...).

Gerade Assembler scheint mir sehr geeignet zu sein wenn man von der 
Hardwareecke kommt und man verstehen möchte was im innersten abläuft.

Aber eben auch nur wenn absolut nichts (und nichts bedeutet auch gar 
nichts) an Programmiererfahrung vorausgesetzt wird, auch nicht 
irgendwelche theoretische Konzepte, und eventuell notwendigen Mathematik 
jenseits der Schulalgebra der 9 Klasse noch mal passen zum Objekt 
erklärt wird, auch wenn es um Regelungstechnikanwendungen geht darf 
nicht davon ausgegangen werden das irgendwas bekannt ist oder höhere 
Mathematik beherrscht wird (also auch hier dann Erklärungen und 
verständliche Einführung)

Klar sollte 2019 sein das es einen Rückkanal geben muss (und mehr als 
nur eine E-Mail Adresse über die dann doch keine Antwort erfolgt) wo 
Fragen, Anregungen und Austausch mit dir als Autor und anderen Nutzern 
erfolgen kann.

Könnte das dein Werk und du selbst alles leisten?
Wenn ja: Immer her damit, mach uns neugierig und zeige was du zu bieten 
hast (Aber nicht eben nur den Klappentext).

Wenn nein: Lass es sein - zu viel ähnliches gibt es schon was einen 
Hardware Bastler oder Hobbyisten ohne E-Technikstudiumwissen überfordert 
oder als gegenteiliges Extrem nur an der  Oberfläche kratzt (und man 
viel bessere Information, vor allem kostenlos und aktueller aus den Netz 
erhält).
Gerade von der letzten Sorte gibt es schon viel zu viel Literatur und 
das nicht nur im Arduinoumfeld.

Hohe Ansprüche, aber gerade bei Leistungen und Literatur die persönlich 
vom Autor bzw. Dienstleister  mit schönen Worten in irgendeinen Forum 
(sorry damit soll das Forum nicht abgewertet werden  - aber es ist nun 
mal nur ein Forum wo genau das passende Zielpublikum zu erwarten ist) 
beworben werden ist sehr viel Vorsicht und Abstand geboten.
Niemand weis halt wer du bist und was deine wirklichen Ziele sind, so 
dumm sein Produkt als das beste in blumigen Worten zu bewerben sind nur 
die wenigsten, und es gibt leider sehr subtile Wege (versteckte) Werbung 
zu betreiben (Kumpelfaktor, Bastelszene, Maker, semipersöhnlicher 
Kontakt, Du faktor...)

Jemand

von Joachim B. (jar)


Lesenswert?

Jemand schrieb:
> Leider hört es aber "immer" dann auf wenn es in Details z.B.
> vollständige und detaillierte (!) -> Erklärung <- und zwar inklusive (!)
> aller Tricks und Fallstricke einer schon existierenden Bibliothek von
> einer  anspruchsvolleren Hardware wie z.B. der WS2812 RGB LEDs, eines
> RTC ICs, Display ... geht.
> Ich meine hierbei ausdrücklich eben nicht die Nutzung einer fertigen
> Bibliothek - sondern eben was und wie es in den Funktionalitäten einer
> solchen "real World" Bibliothek passiert und abläuft.

du beschreibst gerade was mir mit fastLED.lib beim Wechsel vom m328p zum 
m1284p passiert ist.

Es funktionierte nicht obwohl es eigentlich sollte.
Ich fand raus das ein kompletter RGB Code an die WS2812B gesendet nicht 
24x1,5µs=30µs dauerte sondern 33µs.

Wie das?
der m1284p hat ja ein zusätzliches Adressregister und so waren wohl 
Zugriffe lahmer,
Beitrag "Re: Lightweight WS2811/WS2812 Library"
Beitrag "Minutengenaue 24 Stunden-Wortuhr - wer will mitbauen?"
so musste ich einen schmutzigen Kunstgriff anwenden damit es mit dem 
m1284p eben doch läuft
1
#if F_CPU < 96000000
2
#if defined(__AVR_ATmega1284P__) && (F_CPU==16000000)
3
  #define NS(_NS) ( (_NS * ( (F_CPU-1600000) / 1000000L))) / 1000
4
  #define CLKS_TO_MICROS(_CLKS) ((long)(_CLKS)) / ((F_CPU-1600000) / 1000000L)
5
#else

Ich definierte temporär meine CPU 10% (16MHz - 1,6MHz) langsamer damit 
das Timing wieder passt.

: Bearbeitet durch User
von Elias K. (Gast)


Lesenswert?

> Ich denke, dass ist bei den wenigsten out-of-the-box so.
> Wenn ich z.B. von Controllern mir eine Peripherie aneignen will, mach
> ich das so, dass ich das Kapitel im Datenblatt lese. Danach hab ich
> nicht alles verstanden und schon gar nicht auswendig parat, aber eine
> grobe Vorstellung. Dann fahre und modifiziere ich ein paar der meist
> mitgelieferten Beispielürojekte die es vom Hersteller zu der Peripherie
> gibt. Gerade das modofizieren und anschließende Verifizieren der
> Funktion ist der aktive Lernprozess, den sich das Hirn merkt (meins
> jedenfalls).

Das mit dem Modifizieren wollte ich auch mal versuchen, habe es aber 
bisher nicht geschafft. Wir haben in der Firma kleine Maschinen, sie 
können nicht viel, und haben einen Prozessor von Microchip drin. Ich 
hätte gerne mal versucht, für so ein Teil eine eigene Software zu 
schreiben, und ja, ich habe es sogar mal geschafft, eine einzige LED an 
der Anzeige zum leuchten zu bringen, aber das wars dann auch schon. Das 
blöde ist, dass ich wohl nicht ums selbst Programmieren rum kommen 
werde, da die Projekte immer "Ungewöhnlcher" werden, und es so langsam 
wirklich nichts mehr fertiges zum kaufen gibt. Ich hatte z.B. ein 
Projekt, das war aber zu Ende, bevor es überhaupt angefangen hat, bei 
dem ich versucht habe, in einen Elektroroller aus China einen ASR 
(Abstandsregeltempomat) einzubauen, das Projekt scheiterte an zwei 
Dingen: Erstens, alles mit Lockbits zu, das für das schreiben eines 
neunen Programms für das Teil nötige Wissen über die Kommunikation 
konnte also nicht beschafft werden, zweites Problem: In der Unteren Box 
des Fahrzeugs (Drehfeldcontroller) Befindet sich ein Chip, der OTP ist, 
und garnicht programmiert werden kann. Mein Paln war, dem Fahrzeug vorne 
zwei Sensoren zu verpassen, die von einem Controller abgefragt werden, 
der dann dem Chinesencontroller entsprechend sagt, ob er gasgeben oder 
wenn was vor dem Fahrzeug ist, Bremsen soll. Die Frage ist nur, ob solch 
ein Projekt für einen Absolutanfänger wie mich realistisch ist. Dazu 
kommt dass die Programmierer die ich kenne immer sagen, dass das IRRE 
kompliziert sei. HIMMEL, ich will nicht die Steuersoftware für einen 
Quantencomputer, oder für den Todesstern schreiben, sondern einem blöden
8 oder 32 bit Rechenkeks ein bisschen erklären, was er machen soll, ist 
das wirklich so schwer, wie die sagen, oder übertreiben die da? 
Assembler wäre schon mal was, aber die Frage ist, wo anfangen?

von Elias K. (Gast)


Lesenswert?

Joachim B. schrieb:
> #if F_CPU < 96000000
> #if defined(_AVR_ATmega1284P_) && (F_CPU==16000000)
>   #define NS(_NS) ( (_NS * ( (F_CPU-1600000) / 1000000L))) / 1000
>   #define CLKS_TO_MICROS(_CLKS) ((long)(_CLKS)) / ((F_CPU-1600000) /
> 1000000L)
> #else

Eben das ist mein Problem, das was da oben steht, versteht wohl der 
blödeste Programmierer, nur ich seh nur Zeichensalat.

von Dieter R. (drei)


Lesenswert?

Elias K. schrieb:
> Joachim B. schrieb:
>> #if F_CPU < 96000000
>> #if defined(_AVR_ATmega1284P_) && (F_CPU==16000000)
>>   #define NS(_NS) ( (_NS * ( (F_CPU-1600000) / 1000000L))) / 1000
>>   #define CLKS_TO_MICROS(_CLKS) ((long)(_CLKS)) / ((F_CPU-1600000) /
>> 1000000L)
>> #else
>
> Eben das ist mein Problem, das was da oben steht, versteht wohl der
> blödeste Programmierer, nur ich seh nur Zeichensalat.

Das muss man nicht verstehen, sowas nimmt man als gegeben hin (wenn man 
es nicht selbst programmiert hat). Wichtig ist (für sich selbst und 
andere), dass es dokumentiert ist, und zwar nicht irgendwo, sondern 
direkt im Quellcode. Leider ist das oft nicht so, und das ist das 
eigentliche Problem.

von Elias K. (Gast)


Lesenswert?

Das mit dem Dokumentiert kenne ich,
das sind die grünen Texte hinter den "Befehlen" das habe ich schon mal
an der unkompilierten Software unserer Maschinen gesehen. Sobald ich 
aber an der Software auch nur einen Wert ändere, funktionierts nicht 
mehr, und der Compiler schmeißt einen Fehler raus. Is ja auch irgendwo 
klar, immerhin weiß ich ja nicht genau, was ich da tue.

von Elias K. (Gast)


Lesenswert?

Ralph S. schrieb:
> Wenn du aus dem PLZ-Bereich 76xxx kommst kann ich dir gerne einige Dinge
> zeigen.
>
> Prinzipiell mußt du unterscheiden in der Programmierung in C (oder auch
> C++) und der Hardware auf der das laufen soll.

Mist, jetzt wäre mal einer bereit, einem fachlich geprüften Idioten wie 
mir das zu erklären, und dann wohnt der natürlich viel zu weit weg. Ich 
wohne in 83229, unten am Chiemsee. Die Frage ist, für welche Sprache es 
die meisten Compiler gibt, immerhin ist es sinnlos eine Sprache zu 
lernen, mit der man dann nichts anfangen kann, weil es keine Compiler 
für den entsprechenden Chip gibt. C++ Compiler sind meistens alle 
kostenpflichtig, und richtig teuer, weil sich kein normaler Bastler eine 
solch komplexe Sprache antut. Das weiß ich schon. Assembler wäre mal 
interessant, aber da weiß ich nicht, wo ich anfangen soll.

von Einer K. (Gast)


Lesenswert?

Elias K. schrieb:
> C++ Compiler sind meistens alle
> kostenpflichtig, und richtig teuer, weil sich kein normaler Bastler eine
> solch komplexe Sprache antut.

Unfug.

1. Der Gcc ist kostenlos erhältlich.
2. Die Arduino-Bastler-Welt ist größtenteils C++

Einschränkung:
Es könnte sein, dass der typische Arduino-Bastler nicht ganz normal ist.
Aber, es sind sehr viele, und so wird es dann zur Normalität.

von S. R. (svenska)


Lesenswert?

Elias K. schrieb:
> Die Frage ist, für welche Sprache es
> die meisten Compiler gibt,

Das ist die falsche Frage.
Du brauchst genau einen Compiler für deine Zielplattform.

Kannst du eine Sprache, lernst du eine andere - ähnliche - Sprache 
relativ schnell. Davon abgesehen sind die wichtigsten C/C++-Compiler 
(GCC, LLVM und MSVC) auf dieser Welt kostenfrei verfügbar.

Anfangen tust du am einfachsten, indem du dir mal so ein Tutorial oder 
ein Einführungsbuch zur Nase nimmst, dadrin ein bisschen rumblätterst 
und schaust, was du nicht verstehst. Das ziehst du dir dann extra rein.

Solche Bücher gibt es übrigens in Bibliotheken. Das sind Gebäude mit 
vielen Büchern drin, die man sogar zeitweise mit nach Hause nehmen kann. 
Oft sogar kostenfrei, wenn man die Bücher rechtzeitig zurückgibt.

Es ist scheißegal, ob die Bücher nun 2 oder 20 Jahre alt sind. Um die 
Grundlagen einer Programmiersprache zu lernen, die fast 40 Jahre alt 
ist, reicht das vollkommen. Gilt insbesondere für Assembler, denn das 
ist sowieso konstant (solange man die CPU nicht wechselt, ändert sich da 
auch über Jahrzehnte nichts).

von Einer K. (Gast)


Lesenswert?

S. R. schrieb:
> Es ist scheißegal, ob die Bücher nun 2 oder 20 Jahre alt sind.

Naja...
Gerade in Sachen C++ sind die C++11 und C++17 Standards schon 
Meilensteine.
Sie bieten Features, auf die man nicht ohne zwingende Gründe verzichten 
sollte.

Hier eine brauchbare OOP C++ Einführung:
http://www.cppbuch.de/index.html


Wobei:
Es kümmert sich nicht explizit um µC.
Und ca 50% des Buches beschäftigen sich mit der STL und grafischer 
Darstellung/Benutzeroberflächen.

von Martin V. (oldmax)


Lesenswert?

Hi
Dieter R. schrieb:
> Das muss man nicht verstehen, sowas nimmt man als gegeben hin (wenn man
> es nicht selbst programmiert hat). Wichtig ist (für sich selbst und
> andere), dass es dokumentiert ist, und zwar nicht irgendwo, sondern
> direkt im Quellcode. Leider ist das oft nicht so, und das ist das
> eigentliche Problem.

Da bin ich anderer Meinung. Wenn man einfach "als gegeben" hinnimmt, 
wird man nie verstehen, wie etwas funktioniert. Wie soll man dann jemals 
ein eigenes Programm ans laufen bekommen. Es ist schon richtig, zu 
hinterfragen, bis man versteht. Und ich denke schon, das es wichtig ist, 
eine Compilerdirektive von einem Programmteil zu unterscheiden.

zu einem anderen Punkt:
Jemand schrieb:
> Könnte das dein Werk und du selbst alles leisten?
> Wenn ja: Immer her damit, mach uns neugierig und zeige was du zu bieten
> hast (Aber nicht eben nur den Klappentext).

Nun ja, ich hab hier (noch) nicht das Buch angeboten. Wennn du es 
verlegen willst, dann nimm mit mir Kontakt auf. Sicherlich hilft dir der 
Forenbetreiber bezüglich Kontakt außerhalb des Forum. Auch sollte dir 
klar sein, das ich hier nicht über den Inhalt von über tausend Seiten in 
einem Forenbeitrag schreiben kann (möchte).
Mit dem Beitrag und dem (oberflächlichen) Hinweis auf den Inhalt wollte 
ich einfach nur mal andeuten, das es nicht nur das Erlernen einer 
Programmiersprache ist, wenn man sich mit Mikrocontrollern befasst, 
sondern auch noch Kenntnisse in der Elektronik unumgänglich sind. Auch 
ist vielleicht der Hinweis auf den Einstieg in die Programmierung über 
einen (kostenlosen) Start über Visual Basic zu kurz gekommen. Das halte 
ich schon für wichtig, um herauszufinden, ob überhaupt ein 
Programmiergen vorhanden ist. Nicht jeder, der gern Musik hört, kann 
auch singen oder ein Instrument spielen. Programme nachschreiben kann 
jeder. Mir ist es aber wichtig, eigene Ideen umsetzen zu können und dazu 
gehört dieses Gen.

Elias K. schrieb:
> Wir haben in der Firma kleine Maschinen, sie
> können nicht viel, und haben einen Prozessor von Microchip drin. Ich
> hätte gerne mal versucht, für so ein Teil eine eigene Software zu
> schreiben, und ja, ich habe es sogar mal geschafft, eine einzige LED an
> der Anzeige zum leuchten zu bringen, aber das wars dann auch schon. Das
> blöde ist, dass ich wohl nicht ums selbst Programmieren rum kommen
> werde, da die Projekte immer "Ungewöhnlcher" werden, und es so langsam
> wirklich nichts mehr fertiges zum kaufen gibt.

Da ist es, das Gen. Glaub mir, es besser machen zu wollen, etwas neues 
zu erfinden, das ist der Antrieb, der mich im Laufe meiner Berufsjahre 
vom Elektroinstallateur zum Anlagenprogrammierer gemacht hat. Nicht 
selten war ich schon vor dem Wunsch der Produktion mit der Lösung 
beschäftigt. Hört sich überheblich an, ist es aber nicht, wenn man seine 
Anlage und die Produktion kennt.

Elias K. schrieb:
> Mist, jetzt wäre mal einer bereit, einem fachlich geprüften Idioten wie
> mir das zu erklären, und dann wohnt der natürlich viel zu weit weg. Ich
> wohne in 83229, unten am Chiemsee. Die Frage ist, für welche Sprache es
> die meisten Compiler gibt, immerhin ist es sinnlos eine Sprache zu
> lernen, mit der man dann nichts anfangen kann, weil es keine Compiler
> für den entsprechenden Chip gibt. C++ Compiler sind meistens alle
> kostenpflichtig, und richtig teuer, weil sich kein normaler Bastler eine
> solch komplexe Sprache antut. Das weiß ich schon. Assembler wäre mal
> interessant, aber da weiß ich nicht, wo ich anfangen soll.

Nun, hier kannn ich dir mal einen Tip geben und nebenbei auch "jemand" 
einen Einblick auf meine Arbeiten geben. Im Forum von 
"www.MakerConnect.de" habe ich unter der Rubrik FAQ den Beitrag "keine 
Angst vor Assembler" veröffentlicht. Vielleicht hilft dir der Inhalt ein 
wenig. Wie gesagt, es ist ein "kleiner" Beitrag, der frei zugänglich ist 
und das du am Chiemsee lebst, ist normalerweise kein Problem. Telefon 
ist dank Flatrate keine Kostenfalle und ich bin Rentner. Heißt zwar 
nicht, das ich vor Langeweile Trübsal blase, aber die ein oder andere 
Minute ließe sich schon freischaufeln. Bei Interesse solltest du einen 
Weg finden, direkt Kontakt aufzunehmen.
Gruß oldmax

: Bearbeitet durch User
von wendelsberg (Gast)


Lesenswert?

Elias K. schrieb:
> Die Frage ist nur, ob solch
> ein Projekt für einen Absolutanfänger wie mich realistisch ist.

Nein.

wendelsberg

von Ralph S. (jjflash)


Lesenswert?

Elias K. schrieb:
> Ich
> wohne in 83229, unten am Chiemsee.

Das ist natürlich schade. Wobei ich allerdings sagen muss, dass mal 
jemand von hier extra von Köln nach Karlsruhe gefahren war (2 mal) und 
er es seiner eigenen Aussage zufolge sehr wichtig fand (hier gings 
allerdings um seine Bachelorarbeit).

Für "einfach mal so" ists halt eine Strecke.

Elias K. schrieb:
> für welche Sprache es
> die meisten Compiler gibt, immerhin ist es sinnlos eine Sprache zu
> lernen, mit der man dann nichts anfangen kann, weil es keine Compiler
> für den entsprechenden Chip gibt. C++ Compiler sind meistens alle
> kostenpflichtig, und richtig teuer

Die Standardsprache für Mikrocontroller ist C (und auch C++), auch wenn 
das manche nicht so wirklich wahrhaben wollen die da bspw. ein µPhython 
installieren um darauf ein Interpreterprogramm laufen zu lassen.

C gibts für alle Controller und kostenfrei für:

alle AVR (avr-gcc)
STM32, NXP, SAMD (alle 32-Bit ARM : arm-none-eabi-gcc)
MCS-51 (SDCC)
STM8 (SDCC)
eingeschränkt für PIC16F und PIC18F (SDCC mit eingeschränktem 
Funktionsumfang. Sollte hier jemand eine gute, offene und kostenfreie 
Quelle für Linux kennen wäre ich sehr daran interessiert)
MSP430 (16-Bit mspgcc, wenn auch leicht veraltet)

Für AVR, ARM und MSP430 sind in deren Toolchains auch C++ Compiler 
enthalten, für SDCC leider nicht (wobei ich nicht wirklich ein Freund 
von C++ auf einem 8-Bit System bin)

Elias K. schrieb:
> weil sich kein normaler Bastler eine
> solch komplexe Sprache antut.

doch, tun sie. Die meisten sind sogar begeistert davon, so sehr, dass 
sie nur noch "ihre" Sprache als die einzig wahre akzeptieren. Die 
wirklich einzig wahre Sprache ist die, mit der man mit dem geringsten 
Aufwand zum Ziel kommt (nennt man "Minimalprinzip": minimalster Aufwand 
soll den größtmöglichsten Nutzen bringen).

Elias K. schrieb:
> Assembler wäre mal
> interessant, aber da weiß ich nicht, wo ich anfangen soll.

Assembler ist sehr gut, um die Hardware des Zielsystems zu begreifen. 
Darüber, ob es didaktisch sinnvoll ist, zuerst Assembler und danach eine 
Hochsprache zu lernen streiten sich die "Gelehrten".

Prinzipiell finde ich das sehr gut, sich manche Dinge zuerst in 
Assembler anzusehen, komplette Projekte in Maschinensprache zu machen 
ist heutzutage jedoch Tierquälerei.

Allerdings würde ich nicht mit einem 32-Bit Controller und 
Maschinensprache anfangen wollen, das ist schon etwas hardcore.

von Fritz (Gast)


Lesenswert?

Nur Hinweis zum Ferntutoring, neben möglichem Telefonieren kann man auch 
simultan Web Conferencing Software benutzen. Falls simples Screensharing 
mit Whiteboard sein soll, umsonst ohne Registrierung, keine Email Angabe 
erforderlich, ect. Gibt es zB sowas, ein Beispiel aus vielen 
https://awwapp.com
Man kann zeichnen und Bild hochladen und darauf zeichnen
Zum Einladen ans Whiteboard gibt an den Gegenüber einfach nur den 
personalisierten Link als URL

von Fritz (Gast)


Lesenswert?

Fritz schrieb:
> Nur Hinweis zum Ferntutoring, neben möglichem Telefonieren kann
> man auch
> simultan Web Conferencing Software benutzen. Falls simples Screensharing
> mit Whiteboard sein soll, umsonst ohne Registrierung, keine Email Angabe
> erforderlich, ect. Gibt es zB sowas, ein Beispiel aus vielen
> https://awwapp.com
> Man kann zeichnen und Bild hochladen und darauf zeichnen
> Zum Einladen ans Whiteboard gibt an den Gegenüber einfach nur den
> personalisierten Link als URL

Also könnte der Lehrer zB ein Blockdiagramm eines µC aufs Whiteboard 
laden und dann Pfeile reinzeichnen, während er am Telefon alles erklärt. 
Schüler würde in Echtzeit das Gezeichnete sehen und könnte auch 
mitzeichnen für Fragen

von Joachim B. (jar)


Lesenswert?

Ralph S. schrieb:
> Assembler ist sehr gut, um die Hardware des Zielsystems zu begreifen.
> Darüber, ob es didaktisch sinnvoll ist, zuerst Assembler und danach eine
> Hochsprache zu lernen streiten sich die "Gelehrten".

das ist aber keinen Streit wert, zuerst fängt man ja immer klein an, ich 
mit Basic am PET2001, später als es nicht mehr reichte eben mit 6502 ASM 
weitergemacht, genauso mit Z80 und LH5803 einem Zwitter aus z80 und 
6502. Dann kam glücklicherweise C und schon konnte man Quellcode auf 
verschiedene MC laufen lassen, während meine Prüfgeräteentwicklung 
locker zwischen PC @work und daheim am Atari weiterprogrammiert, während 
der Atari im Speicher wenig begrenzt war, der PC unter DOS aber schon 
Klimmzüge brauchte EMM -> QEMM.

> Prinzipiell finde ich das sehr gut, sich manche Dinge zuerst in
> Assembler anzusehen, komplette Projekte in Maschinensprache zu machen
> ist heutzutage jedoch Tierquälerei.

nun ja einige tun/taten sich das an Andreas Kromke der z.B. TOS 1.4 
(Atari) zu KAOS 1.4 in ASM umschrieb und dabei noch entfehlerte.

> Allerdings würde ich nicht mit einem 32-Bit Controller und
> Maschinensprache anfangen wollen, das ist schon etwas hardcore.

finde ich auch, aber man wächst ja mit den Aufgaben.

von MusicIsTheDoctor (Gast)


Lesenswert?

Joachim B. schrieb:

> finde ich auch, aber man wächst ja mit den Aufgaben.


Deshalb bin ich auch 1,94 Meter groß.


@TO

Das Programmieren besteht eigentlich darin, erst mal einen Algorithmus 
für das zu finden, was passieren soll. Erst, nach dem das geschehen ist, 
setzt man diesen Algorithmus in den Quelltext einer Programmiersprache 
um.

Das Problem hierbei ist: Hat man sich dazu eine Sprache voller 
Fallstricke,
syntaktischer Würfelspiele und kryptischer Ausdrücke ausgesucht, so 
bringt man damit Stunden zu.

Wenn man aber von niemandem gezwungen wird, eine solche Sprache zu 
verwenden, dann kann man vorurteilsfrei eine Weile suchen, bis man die 
für einen selbst geeignete gefunden hat. In diese fuchst man sich dann 
richtig ein, denn es bringt NICHTS, von jedem Kram nur ein Bisschen, 
aber nichts richtig zu beherrschen.

von S. R. (svenska)


Lesenswert?

Arduino Fanboy D. schrieb:
>> Es ist scheißegal, ob die Bücher nun 2 oder 20 Jahre alt sind.
> Gerade in Sachen C++ sind die C++11 und C++17 Standards
> schon Meilensteine.

Das ist korrekt, aber am Thema vorbei.

Wenn man Datentypen, Variablen und Zeiger nicht verstanden hat, bringen 
einem smart_ptr<>, unique_ptr<>, dynamic_cast<> und wie die ganzen 
tollen Features alle heißen, auch nichts.

Die Grundlagen lernt man am besten mit sowas wie C89/C99: Das ist 
überschaubar und dennoch nützlich. Wenn man das (also prozedurale 
Programmierung) halbwegs verstanden hat, kann man sich mit OOP befassen.

Und das fängt in C++ erstmal ganz simpel mit Klassen, Instanzen, 
Vererbung, Methoden an. Und wenn man das halbwegs verstanden hat, dann 
kann man sich mit modernem C++ befassen.

> Sie bieten Features, auf die man nicht
> ohne zwingende Gründe verzichten sollte.

Du setzt voraus, dass es um eine Lösung für ein Problem geht.
Tut es nicht: Es geht erstmal nur um die Grundprinzipien.

Gute Bücher für C89 findet man in jeder besseren Dorfbibliothek.
Für C++17 wird das schon schwieriger, vor allem, wenn der Anspruch "hat 
garkeine Ahnung" lautet.

von Einer K. (Gast)


Lesenswert?

Ich überziehe jetzt mal ein bisschen:
> Wer einmal die prozedurale Programmierung richtig gelernt hat,
> der/die ist für die Objekt orientierte Programmierung verdorben.

Umgekehrt, ist das erheblich einfacher......

Nicht ohne Grund, sind z.B. UML Diagramme mit das erste, was in einer 
Ausbildung auftaucht, welche in die OOP münden kann/soll.

Erst danach kommt die Implementierung.

von Peter W. (pe_wi)


Lesenswert?

@ Elias

Das mit dem Englischen, das geht mir genau so.
Mein Tip: Installiere "QTranslate". Da brauchst Du nur den zu 
übersetzenden Text zu markieren und dann "STRG+Q" drücken - und schon 
ist übersezt. Damit spart man sich eine menge Arbeit! Den Tip gabs 
übrigens mal hier im Forum.

Als Prozessor möchte ich Dir einen Nachfolder des 8051 empfehlen. Was 
mir an dem besonders gefällt, ist das einfache handling der ports. 
Dieser "µC" ist sehr erfolgreich und den gibt es schon seit ca. 1980. 
Der wird uns vermutlich noch lange begleiten.

Beim Programmieren ist es nun sehr wichtig den Prozessor genau zu 
verstehen. "Das Microcontroller Kochbuch MCS51 von Andreas Roth" hat mir 
da sehr geholfen. Da wird alles verständlich erklärt und es bleibt keine 
Frage offen! Es gibt auch einen super Assembler den  "MCS51 Assembler 
V4" und einen Simulator "MCS51 Simulator".
Mit dem Support habe ich auch sehr gute Erfahrung gemacht.

Damit könntest Du dann voll loslegen.
Natürlich kannst Du den 8051 auch mit "C" programmieren. Ich benutze den 
"Sdcc", oder "Keil", wenn mal was nicht laufen will - zum simulieren.

Viele Grüße

Peter

von Ben S. (superben)


Lesenswert?

Elias K. schrieb:
> bei dem ich versucht habe, in einen Elektroroller aus China einen ASR
> (Abstandsregeltempomat) einzubauen, das Projekt scheiterte an zwei
> Dingen: Erstens, alles mit Lockbits zu, das für das schreiben eines
> neunen Programms für das Teil nötige Wissen über die Kommunikation
> konnte also nicht beschafft werden, zweites Problem: In der Unteren Box
> des Fahrzeugs (Drehfeldcontroller) Befindet sich ein Chip, der OTP ist,
> und garnicht programmiert werden kann.

Und du hast Sorgen das du nicht programmieren kannst? Oder noch besser, 
du findest im Netzt keine Anleitung? Noch nie war es so einfach an 
tollen Informationen heranzukommen. Ja sogar zahlreiche Videos dazu. 
Sogar auf deutsch. Findest du wirklich nichts im Netz? Das glaube ich 
einfach nicht.

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.