Ich suche nach einer Programmierumgebung, mit der an Arduino in C und eventuell C++ programmieren kann. Gibt es da empfehlungen. Beispielsweise CodeComposer. Hab damit Tiva erfahrung, nur möchte ich mich erst nach ein paar ratschlägen festlegen.
Die Arduino IDE verwendet C++. Da C++ auch fast vollständig zu C abwärtskompatibel ist, kannst du C-Code nur mit minimalen Änderungen (auf die dich der Compiler auch hinweist) übernehmen. Also erstmal kein Grund was anderes als Arduino zu nutzen. Wenn du aber eine bessere IDE möchtest oder nicht die Arduino Library nutzen möchtest, kannst du Atmel Studio oder eclipse mit den AVR-Plugins nehmen. Der Code Composer ist nur für TI Mikrocontroller. Auf den Arduino's sind aber nur Atmel Controller.
Dr. Sommer schrieb: > Auf den Arduino's sind > aber nur Atmel Controller. Falsch, auch andere e.g. ARM, Intel, ESP8266 ... e.g. der Arduino DUE, der auf ARM basiert
Kai S. schrieb: > e.g. der Arduino DUE, der auf ARM basiert Ja, aber ein Atmel ARM... Kai S. schrieb: > Falsch, auch andere e.g. ARM, Intel, ESP8266 ... Die Exoten hab ich mal außer Acht gelassen, den hätte der OP auch erwähnt. Mit Code Composer kann man auch die nicht programmieren.
Dr. Sommer schrieb: > Ja, aber ein Atmel ARM... Stimmt, schlechtes Beispiel. > Kai S. schrieb: >> Falsch, auch andere e.g. ARM, Intel, ESP8266 ... > Die Exoten hab ich mal außer Acht gelassen, den hätte der OP auch > erwähnt. Mit Code Composer kann man auch die nicht programmieren. Mein Punkt war eher das die Arduino IDE nicht auf Atmel Controller begrenzt ist (auch wenn es der Schwerpunkt ist).
Du solltest im Prinzip die Controller mit jeder vernünftigen IDE programmieren. (z.B. Keil) Das Flashen muss man sich evtl. ein bischen Hinfummeln...im schlimmsten Fall sollte das aber auch mit einem ST-Link funktionieren. Gruß
1 | $ sudo apt-get install arduino arduino-core arduino-mk |
...und sich in arduino-mk einlesen
Gerald M. schrieb: > Ich suche nach einer Programmierumgebung, mit der an Arduino in C > und > eventuell C++ programmieren kann. > Gibt es da empfehlungen. > Beispielsweise CodeComposer. Hab damit Tiva erfahrung, nur möchte ich > mich erst nach ein paar ratschlägen festlegen. Eine Möglichkeit wäre noch das AVR-Studio (oder ATMEL Studio) und dort den AvrDude als Programmer einbinden. Geht prima!
Es gibt ein fertiges Eclipse-Bundle namens "Sloeber", mit dem man gefühlt jede Arduino-Plattform becoden kann. Inklusive automatischer Installation der benötigten Toolchain/Libs. Für die ausgewählten Plattformen, aber wenn man bisher AVR gemacht hat und morgen kommt ein ESP vorbei, dann braucht es 5 Clicks und 10min Download und es kann losgehen. http://www.baeyens.it/eclipse/
:
Bearbeitet durch User
Beitrag #6405260 wurde von einem Moderator gelöscht.
Christof E. schrieb im Beitrag #6405260:
> Hier mein Kursskript in Ansi-C
1 | extern „C“ //Die „extern“ Deklaration ist hier notwendig{ |
2 | #include „main.h“
|
3 | #include „uart328.h“
|
4 | }; |
Das ist kein Ansi-C, das ist überhaupt kein C, sondern C++!
1 | #include <avr\io.h> |
2 | #include <avr/sfr_defs.h> |
Warum so inkonsistent? Das kompiliert so nur unter Windows... Das sollte man sich gar nicht erst angewöhnen.
1 | #define _BIN_AND_ &//Binär AND
|
2 | #define _BIN_OR_ | //Binär OR
|
Das sind ungültige Bezeichner, die darf man in C nicht selbst definieren (fangen mit Unterstrich + Großbuchstabe an). Wenn man lieber Wörter als & oder | schreibt, kann man auch einfach "bitand" und "bitor" schreiben und braucht kein Makro. Binär-Literale wie "DDRC = 0b0000 0001;" gibt es in Ansi-C nicht. "Eine übersichtliche Anzahl Regeln für Variablen, Konstanten, Funktionen, sogenannte Präfix-Bezeichner,haben sich bewährt. Diese sind fast selbsterklärend und stammen von Profi-Programmieren und werden so, oder so ähnlich, in Firmen angewendet. " schon lange nicht mehr, weil das zwangsläufig in einem Chaos endet: https://en.wikipedia.org/wiki/Hungarian_notation#Disadvantages Warum betonen so viele Leute besonders, ANSI-C zu machen, also den 30 Jahre alten längst überholten Sprachstandard, nutzen dann aber doch Erweiterungen oder gar C++ ...?
Es sind auch ehrlich gesagt einige Fehler drin, wie z.B.:
1 | for(x= 0; x < 10, x++ ) {...}; |
Das Komma ist hier falsch und das Semikolon am Ende unnötig, wenn man die Klammern setzt.
Rolf M. schrieb: > Es sind auch ehrlich gesagt einige Fehler drin In erster Linie ist’s nicht wert, dafür min. 5 Threads aus dem Keller zu holen, der Älteste bislang über zehn Jahre alt, um den Link zu diesem Bilderbuch im Querformat, mit riesiger Schrift und entsprechend wenig Informationen, da reinzuspammen :|
:
Bearbeitet durch User
Rolf M. schrieb: > Es sind auch ehrlich gesagt einige Fehler drin Die private Handynummer ist interessant... Ich hab so viele Fragen. Ist das Skript in der Arbeitszeit erstellt worden? Weiß der Arbeitsgeber von dem Spendenaufruf? Gibt es Leute die tatsächlich etwas spenden? Ist es repräsentativ für die Physik oder die ganze Uni Regensburg? Hat die Uni ein © (erste Seite) oder steht es unter CC BY-NC-SA 3.0 AT (zweite Seite)?
:
Wiederhergestellt durch Moderator
Mehr Fehler:
1 | round( 127 + 127.5 * (sin( 2*M_PI* (iNN/256.0)) + 1 ) ); |
M_PI gibt's in ANSI-C nicht. Das ist eine GNU-Erweiterung. Ein Parser ist übrigens ein Algorithmus oder Programm zum umwandeln von Wörtern aus formalen Sprachen in einen Syntax-Baum. Du verwendest das irgendwie als Alias zu "Index", insbesondere in Kontexten welche Text erzeugen statt anaylsieren?! Eine Variable "parser" zu nennen ist IMO nur bei Anwendung von OOP sinnvoll, wenn die Variable ein komplettes Objekt mit zugehörigem Parser-Algorithmus enthält. Es klingt so als würde über UART immer ASCII verwendet. Das ist ja keineswegs so. "?? ist das nun „union“ oder wird ein weiteres Byte verbraten ?" Das hat nichts mit union's zu tun, da steht ja auch nichts davon. Und ja, es ist nur 1 Byte. "// abereinvolles“int” imSpeicher. Vorteil: Keiner." Es ist nur 1 Byte. Eine Bohrmaschine am vorderen Ende festhalten hat auch wenige Vorteile, aber deswegen sind Bohrmaschinen nicht völlig nutzlos... "MERKE: UNION ELEMENTE teilen sich den selben Speicherplatz. Hier reinschreiben, woanders auslesen." Genau dieser Missbrauch von union's ist in C implementation defined (d.h. der Compiler kann irgendwas draus machen) und in C++ ganz verboten. "Das seltene UNION. Eine Art verkappter Typecast" unions existieren lediglich zum Speicher sparen. Sie sind nicht zum Typumwandeln gemacht, auch wenn viele das so machen und das anscheinend hier sogar Anfängern beigebracht wird... "Macht man das nicht, legt der Compiler Const-Strings nicht nur im Programmspeicher sondern auch im wertvollen RAM ab.Beim PC ist das egal" Beim PC ist beides im RAM...
1 | #include <LiquidCrystal440.h> |
2 | |
3 | LiquidCrystal lcd(13,12,11,10,5,4,3,2); //RS, RW, E2, E1, D4, D5, D6, D7 |
Das ist C++ mit Arduino-Libraries und nicht in echtes Ansi-C übersetzbar. "in GNU-C von WinAVRwird anstelle von charinteger wordusw. eine einheitliche Form verwendet, die die Bitbreite angibt" C99 hat diese Fixed-Width Integer Typen auch. Aber eigentlich ging es doch um ANSI-C? Und die ungarische Notation ist wie gesagt mittlerweile überholt und wird nicht mehr angewendet. "ANSI-C deshalb, weil es ideale Methoden zur Bitmanipulation bietet und auch ansonsten professionell ausgestattet ist." Ansichtssache. Eine Sprache, die erfordert, alle Variablen am Anfang der Funktion zu deklarieren und damit unübersichtliche Deklarations-Haufen zu produzieren, und somit auch nicht verhindert dass man eine Variable versehentlich liest bevor man etwas sinnvolles geschrieben hat ist nicht so super professionell. Professionellere Sprachen (wie C99, C11, C++) ermöglichen so etwas wie "int x = 42;" mitten in der Funktion; d.h. man kann x nicht lesen bevor man es nicht definiert und initialisiert hat. ANSI-C verwendet man eigentlich nur, wenn man eine maximal portable Bibliothek schreiben möchte, die auch wirklich unter jedem antiken obskuren Compiler funktioniert, der in den letzten 20 Jahren nicht aktualisiert wurde. Sich erst auf ANSI-C einschränken, aber dann doch GNU-spezifische Dinge wie PROGMEM oder binär-Literale verwenden, verschenkt diesen Vorteil komplett und bedeutet nur unnötige Arbeit. Da kann man auch direkt GNU-C11 nutzen und verliert nichts.
Beitrag #6405727 wurde von einem Moderator gelöscht.
Jack V. schrieb: > In erster Linie ist’s nicht wert, dafür min. 5 Threads aus dem Keller zu > holen Es waren noch mehr, und ich habe sie mit dem Kommentar an ihn gelöscht, dass er bitte seinen eigenen Thread eröffnen möge, wenn er sein Script hier diskutiert haben möchte. Damit darf dieser Thread gern wieder in die Kiste.
Reife Leistung schrieb im Beitrag #6405727: > Da steckt jemand Mühe und Zeit in eine Arbeit, die insbesondere > Anfängern bei der Einarbeitung in eine Dreckssprache erleichtern soll > -da knackt eine der Majestäten, die sich "Moderator" nennen diese Arbeit > weg. Wenn sich jemand Mühe gibt, darf man sein Werk nicht kritisieren? Ich persönlich habe deutlich höhere Anforderungen an das Lehrmaterial an einer Universität. Hast du zufällig mit ähnlichen Lehrmaterialien C gelernt und nennst es deswegen Dreckssprache?
:
Wiederhergestellt durch Moderator
mh schrieb: > Hast du zufällig mit ähnlichen Lehrmaterialien C gelernt und nennst es > deswegen Dreckssprache? Nicht umsonst hat er hier Hausverbot, und ansonsten war C für ihn ja sowieso immer die größte Katastrophe der Menschheit.
Beitrag #6453414 wurde von einem Moderator gelöscht.
Beitrag #6460845 wurde von einem Moderator gelöscht.
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.