Forum: Compiler & IDEs Wie den Einstieg in C schaffen ?


von Björn W. (Gast)


Lesenswert?

Hallo,

mein Name ist Björn, 40 Jahre alt und von der Ausbildung her 
Energieelektroniker.

Über ein Projekt meines Sohnes in der Berufschule bin ich, nach dem 
Junior das Interesse verloren hat, an einen Asuro geraten und habe auch 
schon eine Weile mit dem Teil "herumgespielt".

Alles schön und gut.

Bei Pollin habe ich mir dann so ein AVR Evaluätionsboard gekauft und 
auch so einen Arduino SMD Kit.

Schön, aber wenn ich das Ein oder Andere Beispiel aus dem Forum hier für 
den ATmega 328P oder den ATmega 8 testen will, dann streiken die 
Editoren für Arduino und Asuro mit einer großen Menge Fehlermeldungen.

Viele von den Befehlen, die Ihr hier in den Codes verwendet sind gar 
nicht in Asuro oder Arduino beschrieben. Auch viele von den Teilen, die 
man so bei Robotik Hardware kaufen kann, die diese "SPI" Schnittstelle 
haben, laufen einfach nicht.

Ich denke mal, es liegt daran, dass Arduino oder Asuro gar nicht in 
"echtem" C programmiert werden, sondern in einer Sonderform.

Wie steigt man denn nun eigentlich ein, wenn man SPI, ADC, USART usw. in 
C nutzen will ?

Oder ist das Alles nur eine Sache von diesen #include Sachen oben am 
Code ?
Viele Beispiele aus den Tutorial von AVR und AVR GCC klappen, aber nicht 
alle und nicht Alle auf allen Systemen. Mit WinAVR gehen die meisten 
Sachen aus dem AVR GCC Tutorial, aber keine Asuro / Arduino Sachen. Mit 
dem Arduino Editor kann ich die Asuro Sachen zwar schreiben und 
umwandeln, aber ich kriege die Sachen nicht in den Asuro rein. Mit 
WinAVR kann ich dann eine hex Datei machen, die geht aber weder in 
Arduino, noch in Asuro. Auf dem AVR Evaltuationsboard geht die Datei 
dann rein, aber ich kann das Proramm nicht testen, weil ja Sensoren und 
so fehlen.

Meine Junior habe ich schon gefragt, aber der war so schlecht in dem 
Fach, dass es sich nicht lohnt den zu fragen.

Also, wie ausser Kerningham / Richie (R.I.P.) und AVR GCC schaffe ich 
einen Einstieg in C, der für Alles passt ?

Danke schon einmal.

Björn

von Marwin (Gast)


Lesenswert?

Wie oft erwaehnt: Mit K&R am PC anfangen. Wenn Sprache verstanden, mit 
dem Mikrocontroller weiter machen.

von Rene H. (Gast)


Lesenswert?

Björn W. schrieb:
> Ich denke mal, es liegt daran, dass Arduino oder Asuro gar nicht in
> "echtem" C programmiert werden, sondern in einer Sonderform.
>
> Wie steigt man denn nun eigentlich ein, wenn man SPI, ADC, USART usw. in
> C nutzen will ?

Hallo Björn

Ich denke Du bringst da ein paar Dinge durcheinander. C bleibt C. Egal 
wofür. Der Unterschied ist lediglich bei der Hardwarenahen 
Programmierung, dass eben die Hardware ändert und dementsprechend anders 
angesprochen wird.

Ein AVR C Programm funktioniert in den wenigsten Fällen für einen 
anderen Kontroller.

Das bedeutet für Dich, dass Du dediziert C mit Deinem verwendeten 
Kontroller lernen musst.

Grüsse,
René

von Rene H. (Gast)


Lesenswert?

Oder wie Marwin vorgeschlagen. C auf einem PC lernen und dann Hardware 
programmieren.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rene H. schrieb:
> C bleibt C.

Arduino ist aber C++, mit einem Framework, das für den Nutzer eine
Blackbox ist, und mit einer drumrumgewickelten IDE, die völlig in
Java-Code festgezurrt ist.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Moin,

damit das Ardino und Asuro wohl auch Sonderformen von C sind hast 
richtig erkannt. Die Programmierprogramme(IDE) verschleiern dir einiges.

Ich würde dir empfehlen arbeite ein C-Tutorial durch, entweder im Netz 
oder mit einem Buch. Und zwar meine ich C für den PC. Wenn du das hast 
schaust du dir auf dieser Seite das AVR GCC Tutorial an, und arbeitest 
das durch. das kannst du sogar mit dem Arduino Board machen nur halt mit 
einem anderen Programmierporgramm, bsb AVR Studio.

Also erst mal C generell lernen und damit vertraut werden. Dann auf den 
µC umsteigen. Klar denkst du jetzt ich hab doch arduino usw. 
programmiert aber der sprach umfang dort ist recht begrenzt und es gibt 
viele Bibliotheken im Hintergrund. Das sind die Befehle/Funktionen die 
der AVR GCC nicht kennt. Die gibts in C auch nicht. Diese Befehle haben 
die Arduino Jungs selbst in C/C++ geschrieben.

Ich würde sagen jenachdem was du vorhast. Kannst du auch einfach bei 
Arduino bleiben. Die haben ne große Community und das du damit ein 
Projekt nicht realisieren kannst glaube ich nicht.

Wenn du jedoch verstehen willst was so ein µC macht. Dann fang ganz 
unten an mit Assambler. Dafü gibts hier auch schönes Tut.

MfG

Tec

von Björn W. (Gast)


Lesenswert?

Also, dann lerne und schreibe ich die ganze Zeit schon C ??

Meint Ihr mit "Hardwarenah" so Sachen wie DDRB, SPEED, oder PIN ?

Wenn es "nur Das" ist, dann muß ich aber noch eine Menge lernen, weil da 
scheint ja "der Mikrocontroller erst anzufangen" ...

Was ist denn dann näher an der Hardware ?

Asuro ? Arduino ? oder Beides vergessen und mit dem AVR Evaluationsboard 
arbeiten und das Erweiterungsboard dazu aufbauen um LCD / LED und Taster 
zu haben ?

Björn

von Peter D. (peda)


Lesenswert?

Björn W. schrieb:
> dann streiken die
> Editoren für Arduino und Asuro mit einer großen Menge Fehlermeldungen.

Der Trick ist eigentlich nur, diese Fehlermeldungen auch zu lesen.

Und wenn Du sie nicht verstehst, einfach copy&paste hier rein und 
fragen.
Nur die ersten 1..3 Meldungen, der Rest sind meistens Folgefehler.
Und den dazugehörenden Code als Anhang, also das *.h, *.c bzw. *.cpp.
Aber nicht als *.doc, *.bmp, *.png oder ähnlichen Unsinn!


Peter

von Gert (Gast)


Lesenswert?

Wenn es um das Erlernen der Sprache geht, kann ich diesen VIDEO-Kurs 
empfehlen:
http://et-tutorials.de/mikrocontroller/

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.