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.
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.
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
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
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.
>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.
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.
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
"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
@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.
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
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
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
> 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?
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.
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.
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.
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.
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.
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).
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.
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
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.
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
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
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.
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.
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.
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.
@ 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
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.