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.
Englisch lernen ist in der Tat ne gute Idee und auch anderswo nützlich.
Ohne englisch wird alles nichts. Denn irgendwelche Foren beim Hersteller sind ueblicherweise auch auf englisch.
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
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
> 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
:
Bearbeitet durch User
Elias K. schrieb: > Die Frage ist nur, ob solch > ein Projekt für einen Absolutanfänger wie mich realistisch ist. Nein. wendelsberg
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.