Forum: Mikrocontroller und Digitale Elektronik Programmer für Anfänger


von Michael F. (sixtus80)


Lesenswert?

Hallo, ich bin neu hier und habe eine Frage.

Ich programmiere seit ca. einem Jahr mit Arduino, einfache Sachen.
Jetzt möchte ich weiter einsteigen und direkt ICs programmieren.
Klar geht das auch mit Arduino aber ich würde gerne mit einem eigenen
Programmer auf C programmieren.
Da ich dies für sinnvoll erachte.

Was sagt ihr dazu?
Was würdet ihr mir raten?
Welchen programmer welche Software oder ganz was anderes?
AVR?

von Falk B. (falk)


Lesenswert?

@ Michael Fasser (sixtus80)

>Ich programmiere seit ca. einem Jahr mit Arduino, einfache Sachen.
>Jetzt möchte ich weiter einsteigen und direkt ICs programmieren.

ICs? Soso.

>Klar geht das auch mit Arduino aber ich würde gerne mit einem eigenen
>Programmer auf C programmieren.
>Da ich dies für sinnvoll erachte.

Ich nicht.

>Was sagt ihr dazu?

Lern erstmal auf dem Arduino weiter.

>Welchen programmer welche Software oder ganz was anderes?
>AVR?

Die meisten Arduinos SIND AVRs. Klar kann man auch einen einzelnen AVR 
ohne Arduinoboard programmieren, das unterscheidet sich aus 
Softwaresicht aber nicht vom Arduino. Arduinos werden in C++ 
programmiert, wobei aber nur ein kleiner Teil von C++ genutzt wird. 
Praktisch ist es eher C.

von Michael F. (sixtus80)


Lesenswert?

Ok also findest du dass Arduino gut geeignet ist dazu.
Aber wenn Arduino in C++ ist und ja C sinnvoller wäre also praktisch.

Sollte man nicht zuerst C lernen?

von Tom (Gast)


Lesenswert?

wenn du vom Arduino weg willst, aber weiter mit AVR deine Projekte 
machen möchtest, dann lade dir die kostenlose Atmel Studio 7 runter und 
besorge dir einen ordentlichen ISP Programmer.
Aber bei dem ISP Programmer gibt es schon die erste große 
Entscheidungshürde. Das Forum hier ist voll von Anfragen dazu, was wohl 
der bessere Programmer ist.
Bevor aber auch diese Anfrage überläuft mit jeder Menge an 
verschiedenster Vorschläge für Programmer, gebe ich hierzu mal keine 
Anregung. Du kannst gerne hier im Forum selber deine Meinung bilden, 
welcher von den vielen Programmer der richtige für dich ist.
Gruß Tom.

von DraconiX (Gast)


Lesenswert?

Falk B. schrieb:
> Klar kann man auch einen einzelnen AVR
> ohne Arduinoboard programmieren, das unterscheidet sich aus
> Softwaresicht aber nicht vom Arduino. Arduinos werden in C++
> programmiert, wobei aber nur ein kleiner Teil von C++ genutzt wird.
> Praktisch ist es eher C.

Über Vor- / Nach-teile sollte von Ardunio sollten wir lieber nicht 
wieder diskutieren.

Ich kann dem TO nur zustimmen, um einen µC verstehen zu lernen ist der 
Weg zu C die richtige Alternative. Da lernt er ein wenig mehr 
Hintergrundwissen des eingesetzten µCs, begreift das es nicht nur 
Pin1-20 gibt sondern das dies Portgebunden ist, lernt und versteht warum 
es sich überhaupt um 8 oder 32 Bit handelt. Und er ließt das Datenblatt! 
Versteht die Unterschiede der einzelnen µCs usw... Das lernt man 
überall, nur eben nicht bei Arduino.

Lade dir wie oben schon gesagt Atmel Studio kostenlos, besorge dir einen 
Programmer und nutze deine vorhanden Arduino Boards und bespiele sie per 
ISP aus Atmel Studio heraus.

Ich wünsche dir viel Spaß und du wirst sehen, die Lernkurve ist extrem 
steil und es macht Spaß das eine oder andere neu zu finden.

Ich persönlich nutze für meine AVRs gerne die Programmer von Diamex, 
funktionieren und tun das was sie sollen:

https://www.diamex.de/dxshop/Programmiergeraete

Willst du etwas gescheites, dann schau dich nach einem AVR-ICE um. Der 
kommt direkt von Atmel. Ist aber ein bisschen Preisintensiver.

von Falk B. (falk)


Lesenswert?

@DraconiX (Gast)

>Über Vor- / Nach-teile sollte von Ardunio sollten wir lieber nicht
>wieder diskutieren.

Oooooch, büüüteeee ;-)

>Ich kann dem TO nur zustimmen, um einen µC verstehen zu lernen ist der
>Weg zu C die richtige Alternative.

Arduino NUTZT C und ein wenig C++. Also muss man nicht Arduino 
verlassen, um C zu lernen.

> Da lernt er ein wenig mehr
>Hintergrundwissen des eingesetzten µCs, begreift das es nicht nur
>Pin1-20 gibt sondern das dies Portgebunden ist, lernt und versteht warum
>es sich überhaupt um 8 oder 32 Bit handelt. Und er ließt das Datenblatt!

Niemand vermbeitet es einem Arduino-Nutzer das Datenblatt zu lesen und 
die diversen Funktionen des uC direkt per Register zu benutzen.

>Versteht die Unterschiede der einzelnen µCs usw...

Das ist im Moment gar nicht das Ziel des OPs.

> Das lernt man überall, nur eben nicht bei Arduino.

Quark.

>Lade dir wie oben schon gesagt Atmel Studio kostenlos, besorge dir einen
>Programmer und nutze deine vorhanden Arduino Boards und bespiele sie per
>ISP aus Atmel Studio heraus.

Und was kann er dann besser als beim Arduino? Fast nichts, denn man kann 
den Arduino auch vollkommen ohne die Arduino-Bibliotheken nutzen! Ob das 
immer sinnvoll ist, ist eine ganz andere Frage. Wenn man für schnelles 
Bitwackeln an den Pin den direkten Registerzugriff wählt, ist das 
sinnvoll. Die manuelle Ansteuerung einer SD-Karte oder eines 
TFT-Displays nimmt man mal sicher die Arduino-Libs.

von Michael F. (sixtus80)


Lesenswert?

Aha, also erstmals danke für eure Antworten, nun habe ich mal eine 
ungefähre
Vorstellung wie und was man tun könnte!
Klar gehen die Meinungen auseinander.

Mir geht es ja auch um C selbst.

von DraconiX (Gast)


Lesenswert?

Falk B. schrieb:
> Niemand vermbeitet es einem Arduino-Nutzer das Datenblatt zu lesen und
> die diversen Funktionen des uC direkt per Register zu benutzen.

Welcher Arduino Nutzer studiert denn bitte die Datenblätter? Ihm genügt 
in den meisten Fällen der Blick Blick auf das Pinout und es reicht. Das 
hat ganz gewaltig etwas mit Faulheit zu tun.

Und deshalb:

Falk B. schrieb:
> Das ist im Moment gar nicht das Ziel des OPs.

... überschätzen oder wissen viele Ardunio Nutzer garnicht das Potential 
des eingesetzten µC.

Falk B. schrieb:
> Arduino NUTZT C und ein wenig C++. Also muss man nicht Arduino
> verlassen, um C zu lernen.

Das ist allerdings richtig. Aber es ist eben C++ und kein C.

Falk B. schrieb:
> Und was kann er dann besser als beim Arduino?

Er versteht was er da macht! Ganz einfach, er versteht was er da macht. 
Dazu zählt auch:

Falk B. schrieb:
> Die manuelle Ansteuerung einer SD-Karte oder eines
> TFT-Displays nimmt man mal sicher die Arduino-Libs.

Wenn er sich nie selbst darüber Gedanken macht, wegen des "WIE, WARUM, 
WIESO" das funktioniert. So lernt man das auch nicht, wenn er 
ausschließlich vorgekaute Libs nutzt. Was ist wenn er mal ein anderen 
LCD Controller erwischt und muss mal was ändern? Wenn die Init-Routine 
mal anders ist? Wenn der I2S Bus eines Sensor mal eben eine andere 
Byte-Order braucht? (Gerade bei einem OLED mitgemacht) Was macht er dann 
wenn er nicht versteht wie genau das eigentlich funktioniert?

Und ohne Umwege kann man nichtmal direkt schauen WAS diese Lib 
eigentlich macht. Wo diese Lib steht, welche Querverweise genutzt werden 
etc... Bei AS ist das mit einem einzigsten Klick auf die Funktion 
erledigt... usw...

Lass ihn doch, wenn er sich dahin näher vertiefen will ist das doch was 
gutes. Mehr als einen günstigen ISP Programmer, etwas Zeit und Nerven 
braucht er dazu nicht, alles andere ist ebenfalls umsonst. Ich finde das 
einen guten Schritt für ihn in die richtige Richtung... Und wenn er 
später auf einen größeren Boliden umsteigen will, ist dann der Umstieg 
umso einfacher. (Ja ich weiß, es gibt ein paar wenige mindergute 
Unterstützungen von 32 Bittern. Ich hab mal, aus Interesse, ein STM 
Nucleo in Ardunio genutzt - und war weitestgehend erschrocken davon!)

von Veit D. (devil-elec)


Lesenswert?

Hallo,

vielleicht sollte man sich mal kurzzeitig von der Bezeichnung "Arduino" 
verabschieden. Damit sind die Boards gute Entwicklungsboards mit AVR µC 
drauf. Wenn man in reinem C programmieren möchte, muss man auch nichts 
neues kaufen. Man programmiert einfach in der IDE klassisch C und gut 
ist. Vorteil, man benötigt keinen extra Programmer. Funktioniert 
weiterhin über USB. Die IDE nutzt ja den gcc Compiler.

Und wer unbedingt das Softwaregedöhns Atmel Studio haben muss, der 
installiert noch das visualmicro Plugin und kann immer noch über USB 
flashen. Wenn man klar kommt, kann man immer noch einen Programmer 
kaufen. Ihr seht man muss nichts überstürzen und kommt trotzdem zu 
seinem klassischen C.

Wünsche viel Spass beim programmieren.

von Stefan F. (Gast)


Lesenswert?

Falls du mit Programmer den ISP Programmieradapter meisnt, der zwischen 
PC und µC gehört:

In der Arduino IDE gibt es einen ISP Sketch, damit kannst du "nackte" 
AVR Mikrocontroller programmieren. In diesem Fall ist dein Arduino Modul 
der Programmer.

Ansonsten findest du unter dem Stichwort USBASP sehr billige 
Programmieradapter. Zum Programmieren in der Zielschaltung eignen diese 
Geräte sich allerdings nur, wenn die zeilschaltugn mit 5V versorgt wird.

Kostengünstig und qualitativ wesentlich besser sind die ISP 
Programmieradapter von Diamex. Sie passen sich an die 
Versorgungsspannugn der Zielschaltung an.

Und das aktuelle offizielle "Original" ist der ATmel ICE. Der ist 
robuster und hat merh features, kostet allerding auch dementsprechend. 
Mit dem Atmel ICE kannst du ATmega Controller debuggen. Das können die 
drei anderen genannten Alternativen nicht.

Der Atmel ICE wird mit dem AVR Studio 7 bedient, die anderen Programmer 
mit dem Kommandozeileprogramm avrdude über das du auf Wunsch eine 
grafische Oberfläche stülpen kannst. Zumm Beispiel AVR-Burn-O-Mat.

Hier ein par Tips für den Einstieg: 
http://stefanfrings.de/avr_hello_world/index.html

von fifila (Gast)


Lesenswert?

DraconiX schrieb:
> Welcher Arduino Nutzer studiert denn bitte die Datenblätter?

Jeder Arduino Nutzer, der ohne nicht weiterkommt, aber nicht gleich 
aufgibt.

DraconiX schrieb:
> Das
> hat ganz gewaltig etwas mit Faulheit zu tun.

Wenn der Blick in die Arduino Reference schneller das Problem löst, als 
der Blick ins Datenblatt, ist es Effizienz.

DraconiX schrieb:
> Aber es ist eben C++ und kein C.

Es hält einen keiner davon ab, einen Sketch in 100% C zu schreiben oder 
eine andere Programmierumgebung zu verwenden

Das Arduino-Ökosystem kann einem viel Arbeit abnehmen, aber - und das 
ist der Grund, warum ich die häufige Ablehnung von Arduino nicht 
verstehe - man kanns auch selber machen.

von Michael F. (sixtus80)


Lesenswert?

Ok danke das wusste ich nicht!
Es ist doch sinnvoll zuerst C zu können oder? Da Arduino ja kein reines 
C ist.
Habe Bücher über programmieren mit C und da ist es zwar ähnlich wie C 
aber eben nur ähnlich.

von S. R. (svenska)


Lesenswert?

Du kannst ein Arduino-Board genauso programmieren, wie ein 
selbstgebautes AVR-Board. Wirf einfach die Arduino-Umgebung weg (also 
kein setup() und loop(), stattdessen ein main()) und du hast die 
stinknormale AVR-GCC-Umgebung.

Flashen kannst du mit avrdude, wie auch jeden anderen AVR. Der 
"Programmer" ist ja auf den Arduinos bereits eingebaut (Bootloader), und 
du weißt, dass die Hardware funktioniert.

von Wolfgang (Gast)


Lesenswert?

DraconiX schrieb:
> Ich kann dem TO nur zustimmen, um einen µC verstehen zu lernen ist der
> Weg zu C die richtige Alternative.

Ich nicht.

Um einen µC zu verstehen, hat es noch niemandem geschadet, mal eine 
Weile Assembler zu machen und mit dem Debugger wirklich auf die Register 
und den Stack zu gucken. Bei Nutzung von C findet da schon vieles unter 
der Haube statt und ist unsichtbar. Dann kommen wieder so Fragen wie: 
"Mein Compiler sagt mir, dass noch 30 Byte im RAM frei ist und trotzdem 
stürzt der µC ab"

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.