PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C Microcontroller Programmierung lernen



Wesze
21.10.2014, 18:39
Hallo Community.

Da ich neu hier bin, erstmal ein herzliches "grias eich".

Also ich heiße Mario bin 26 und komme aus Österreich.
Da ich sonst nicht wusste wohin mit meiner Frage, stell ich sie mal im Offtopic Bereich. ;)

Sodale. :)
Ich bin in einem Messtechnik Unternehmen als C# Entwickler tätig.
Hab Erfahrungen sowohl im Bereich der Web-Entwicklung (PHP, ASP.Net C#), sowie der Software-Entwicklung (Java, C#.Net WPF und Webforms).
Bin also programmiertechnisch kein Anfänger mehr. :D

Jetzt kam mein Chef mit dem Anliegen zu mir, ob es wohl möglich wäre diverse, kleinere Änderungen an unseren Platinen in den Messgeräten usw. machen könnte.
Das Problem ist nur, im Bereich C und Microcontroller Programmierung hab ich absolut keine Erfahrung.
Hab mir jetzt gedacht das ich mir einen Roboter kaufe, welchen ich mit C programmieren kann.
Bin aber löttechnisch auch in keinster weise geübt.

Hat hier vl. irgendjemand ein paar Tips oder Empfehlungen für mich? :)

Lg Mario

Hubert.G
21.10.2014, 19:43
Hallo im Forum.
Wenn du nicht löten willst, kannst, dann empfiehlt sich ein Arduino für dein Vorhaben.
Die Arduino IDE musst du ja nicht benutzen, es geht genau so gut auch das AVR-Studio zur Programmerstellung.
Das Übertragen der Programme geht dann mit dem Programm "Xloader" über USB.

Wesze
21.10.2014, 19:58
Hallo Hubert.

Danke für die Info.
Auf diese Arduino bin ich heute schon ein paar mal gestoßen.
Jedoch war da irgendwie die Rede von einem "C-Dialekt".
Das hat mich dann doch abgeschreckt.
Welche Auswirkungen hat es dann welchen ich nehme?
Falls mir dieser Bereich dann doch mehr spaß machen sollte, und ich das weiter machen will.

Das mit dem löten ist so ne sache.gg
Einbisschen löten kann ich ja. :D
Also so neue Kontakte an nen Akku fürs modellflugzeug löten.gg
Trau mir das aber nicht bei einer Platine zu.

Ich muss aber auch sagen, das je mehr ich davon lese, es mich immer mehr interessiert was man da alles machen kann. :)

Hubert.G
21.10.2014, 20:07
Das mit dem C-Dialekt ist richtig, aber man muss es ja nicht verwenden. Meine Begeisterung dafür hält sich stark in Grenzen.
Wie ich schon geschrieben habe, kannst du auch normales C verwenden, am einfachsten mit dem AVR-Studio.

Wesze
21.10.2014, 20:11
Also ist das nur eine alternative Sprache die man verwenden kann.
Inwiefern hält sich deine Begeisterung dafür in Grenzen?

Also das mehr Interesse meinerseits ist jetzt nicht explizit auf diese Geräte beschränkt.

Hubert.G
21.10.2014, 20:35
Das ist Richtig, du könntest genau so gut BASCOM verwenden oder sonst einen Compiler den es für die AVRs gibt.
Man ist in der Arduino-IDE auf fertige Librarys angewiesen, wenn man etwas eigenes dazu machen will kommt man sehr schnell in Konflikte mit diesen.
Wenn die Librarys den Anforderungen entsprechen hat man natürlich sehr schnell ein fertiges Programm zur Hand. Böse Zungen behaupten es ist etwas für Künstler die sich damit schnell etwas zusammenstricken können ohne es verstehen zu müssen.
Als Hardware finde ich die verschiedenen Arduino recht gut. USB oder geeignetes Netzteil anstecken und läuft.

Wesze
21.10.2014, 20:40
Ok.
Ich denke schon das ich irgendwann auch mal eigene Funktionen dazuproggen möchte.
Und fertige Libraries sind doch das tägliche Brot, zumindest in der normalen Entwicklung.gg

Also das Verstehen wollen steht bei mir schon ganz weit oben.
Will das schon verstehen was ich macht.
Bin jetzt einbisschen auf der Arduino homepage rumgesurft, und für mich als Anfänger wäre es wohl ein schneller Erfolg wenns einfacher ist. :)

Geistesblitz
21.10.2014, 23:13
Ansonsten mal ins RN-Wissen reingucken, vor allem der Artikel AVR-Einstieg leicht gemacht (http://rn-wissen.de/wiki/index.php/AVR-Einstieg_leicht_gemacht) ist empfehlenswert, weil der schonmal die ziemlich vollständig Grundlagen durchgeht. Auf so einem Arduino ist an sich auch nicht so viel anderes, nur eben schon fertig aufgebaut, mit Spannungsregler und einem zusätzlichen Baustein für die USB-Kommunikation. Wenn man aber wirklich alles verstehen will, lohnt es sich auf jeden Fall auch, sich ein eigenes Controllerboard aufzubauen, so hatte ich das gemacht. So ein Arduino ist aber zumindest von der Hardware schonmal recht angenehm zu handhaben, gibts übrigens auch günstiger unter anderem Namen, soll genauso zuverlässig sein.

Andre_S
22.10.2014, 07:22
...
Jetzt kam mein Chef mit dem Anliegen zu mir, ob es wohl möglich wäre diverse, kleinere Änderungen an unseren Platinen in den Messgeräten usw. machen könnte.
Das Problem ist nur, im Bereich C und Microcontroller Programmierung hab ich absolut keine Erfahrung.
...
Lg Mario
Hallo Mario,

also auch von mir erst einmal herzlich Willkommen!
So ganz verstehe ich aber Deinen Ansatz nicht, es sei denn, Du hast doch mehr persönliches Interesse an der Robotik (was ich verstehen kann) als Du in Deinem Eingangspost dargestellt hast.

Versteh mich nicht falsch, aber wenn Du beruflich die Firmware Eurer Messgeräte ändern sollst und eventuell sogar noch an der Hardware (kommt jetzt nicht so 100% im Post rüber und hätte ja noch viel nachhaltigere Auswirkungen, die ich jetzt mal gar nicht beachten möchte) dann musst Du Dich doch als erstes Fragen, welche Mikrocontroller sind verbaut und in welchem Quellcode liegt die aktuelle Firmware vor.
Da Du doch als C# Entwickler mit Grundlagen der Programmierung vertraut bist, müsstest Du nach meiner Ansicht etwas zielgerichteter vorgehen. Je nach System könntest Du Dir z.B. passende Entwicklerboards zulegen, welche mit MC und Sprache konform sind.


Gruß André

Wesze
22.10.2014, 08:19
Hallo André.

Also mein Interesse ist im Moment doch schon am wachsen. ;)
Da ich gestern doch einige Stunden mit lesen und Videos schauen verbracht habe.

Also die Hardware wird von einer Fremdfirma gefertigt, die Änderungen daran werden auch weiterhin von dieser erledigt da sich da selten was ändert.
Die Firmware ist in C geschrieben.
Es geht vornehmlich um kleiner Änderungen in der Software.
Eine Änderung die mein Vorgänger noch gemacht hat war z.B. auch ein Aufbau eines Menüs das auf einem LCD Display ausgegeben wird.

Das ich nicht so gezielt vorgehe hat ganz einfach den Grund, dass ich überhaupt kein Wissen in diesem Bereich habe.
Wenn ich eine Funktion in unserer Anwendungssoftware schreiben muss, weiss ich wie ich ran gehen muss, und was ich alles dazu benötige.

Dann werd ich meinen Chef mal befragen welche Controller bei uns verbaut sind.
Und gegebenenfalls kann ich auch bei unserer Fremfirma mal anfragen.

@Geistesblitz
Danke für den Artikel.
Schon durchgelesen. ;)

Andre_S
22.10.2014, 08:50
Hallo Mario,

ja, das wäre schon sinnvoll…

Es müsste bei Euch ja auch eine entsprechender Programmer/Compiler/Debugger vorhanden sein, wenn Dein Vorgänger bereits Änderungen gemacht hat.
Und da gibt es doch schon Unterschiede auf die man eingehen sollte. Wir haben bei uns zum Beispiel 8Bit PIC und passend ICD3 mit Quellcode auf Basis C und Assembler, sowie 16Bit dsPic und passend MikroProg ICD auf Basis mikroC und allein da gibt es deutliche Unterschiede.

Also wäre es schon hilfreich Euer Equipment zu kennen. Allerdings kannst Du Dir natürlich unabhängig davon auch einen Bot zulegen, schaden tut der Umgang auf keinen Fall… ;)



Gruß André

Wesze
22.10.2014, 09:14
Also was ich jetz so ohne meinen Chef (ist auf Aussendienst) sagen kann ist:
Das im Atmel Studio in C programmiert wurde.
Und hier bei mir im Regal liegt noch ein Atmel JTAGICE mkII (http://store.atmel.com/PartDetail.aspx?q=p:10500154#tc:description) rum.

alles weitere kann ich erst morgen oder so in die richtung erfahren. :)

Andre_S
22.10.2014, 09:34
Hallo,

na das passt doch schon!
Da können Dir hier bestimmt einige gute Ratschläge geben und auch welcher Bot ideal wäre. Der RP6 von Arexx wäre da sicher auch ein guter Kandidat, aber da kennen sich andere besser aus, da ich nur auf der "PIC Schiene" unterwegs bin...


Gruß André

Hubert.G
22.10.2014, 09:40
Dann schau mal ob du nicht ein Testboard oder so was ähnliches auch noch findest.
Das es ein AVR sein soll ist nach deinem Fund so ziemlich klar.

Wesze
22.10.2014, 09:50
Also ich hab hier auch eine ganze Messstation stehen zu Testzwecken.
Inkl. Haupt und Erweiterungsplatine, diese Station ist eigentlich rein für mich da.
Könnte sie also auch zum lernen verwenden.

Ein bot wäre natürlich auch eine feine Sache.

Muss mich an dieser Stelle wirklich mal bedanken. :)
Hier wird selbst einem 100 %igen Anfänger wie mir geholfen. :)

Hubert.G
22.10.2014, 10:16
Die Messstation ist für den Anfang vielleicht etwas übertrieben.
Hier ist ein GCC-Tutorial http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial. Es gibt im Netz auch noch etliche andere.
Ein paar Led blinken lassen und Taster auswerten ist am Anfang wahrscheinlich leichter und erfolgreicher.
Da ist so ein kleines Testboard (z.B. Arduino) und ein Steckbrett mit ein paar Bauteilen sicher besser.
Programmiermässig bist du mit deinen Kenntnissen sicher schnell drinnen.

Peter(TOO)
22.10.2014, 10:27
Hallo Mario,

Also die Hardware wird von einer Fremdfirma gefertigt, die Änderungen daran werden auch weiterhin von dieser erledigt da sich da selten was ändert.
Die Firmware ist in C geschrieben.
Es geht vornehmlich um kleiner Änderungen in der Software.
Eine Änderung die mein Vorgänger noch gemacht hat war z.B. auch ein Aufbau eines Menüs das auf einem LCD Display ausgegeben wird.

Das ich nicht so gezielt vorgehe hat ganz einfach den Grund, dass ich überhaupt kein Wissen in diesem Bereich habe.
Wenn ich eine Funktion in unserer Anwendungssoftware schreiben muss, weiss ich wie ich ran gehen muss, und was ich alles dazu benötige.

Beim µC hast du meistens kein Betriebssystem.

Die Firmware besteht also aus dem Anwendungsteil, den Hardware-Treibern und den Interrupt-Handlern, welche dann Teilweise die Hardware-Treiber enthalten.

Die erste grosse Quizfrage ist dann, ob das ganze einigermassen dokumentiert ist.

Das nächste ist, wie modular sie Software aufgebaut ist. Da gibt es Programmierer die alles irgendwie durcheinander mischen, also Anwendung und Treiber. Wenn man dann z.B. etwas im Menü ändert, ändert man gleichzeitig das Timing der I/Os, was dann gerne zu seltsamen Effekten führt :-(

Ich habe da schon Projekte übernommen, bei welchen die ganze Firmware aus einer einzigen c.Datei bestand.
Ist dann bei 5-6T Zeilen etwas mühsam in der Handhabung.
Auch hat man da keine Übersicht über Modulgrenzen.

Bei mir besteht ein Modul aus der .c-Datei und einer gleichnamigen .h. Die .h beschreibt im Prinzip das Interface, enthält also alle öffentlichen Deklarationen und Konstanten. Lokale Konstanten usw. befinden sich dann in der .c. Grundsätzlich deklariere ich alle lokalen Funktionen noch als static, somit sind sie ausserhalb des Moduls nicht sichtbar, was versehentliche direkte Aufrufe von ausserhalb verhindert und zudem weniger Namenskonflikte beim Linken erzeugt.
Also im Prinzip so, wie man sich das von C++ gewohnt ist, nur das man keine direkte Unterstützung vom Compiler hat.

MfG Peter(TOO)

Wesze
22.10.2014, 10:33
Stimmt wäre für meinen Wissenstand wohl etwas überdimensioniert! :D

Dann werd ich mir wohl so ein Arduino Starter Kit bestellen.
Kosten ja nicht die Welt die Kits.
Da es bei mir ja mit dem löten noch nicht so wirklich funktioniert. (kann sich ja noch ändern)

Ja bin da guter dinge was das proggen angeht.

@Peter
Hab die Software hier und was ich bei kurzem drüber sehn, gesehen hab, haben die alles in solchen Modulpaaren geschrieben wie du es machst.
Ja das mit solchen Chaosprojekten kenn ich auch aus meinem Bereich...

Wesze
23.10.2014, 13:02
Vielen Dank jetzt mal für die hilfe von euch.

Werd mir jetz den arexx rp6 holen. :)
Hat den gleichen Atmel Mega drinnen wie unsere Messstationen. :)

werd euch hier im Forum sicher erhalten bleiben und euch mit meinen Fragen nerven! :D

Lg Mario