Hi Leute, ich lese seit ein paar Tagen eine menge über Mikrocontroller und finde das Thema wirklich sehr interessant. Nun habe ich mir vorgenommen, mal selber etwas zu bauen. Habe ein wenig überlegt und bin zum Entschluss gekommen, dass ich einen kleinen Temperatursensor mit Display in meinem PC Gehäuse einbaue. Für das Display schneide ich dann ein Loch in mein Gehäuse und setze dieses dort ein. Nun da ich ein absoluter Anfänger bin, habe ich ein paar fragen. 1. Was soll ich für einen Mikrocontroller verwenden? Bis jetzt habe ich sehr viel über den AVR gelesen. Hilft dieser mir hier weiter? Mir ist wichtig, dass ich in C++ Programmieren, da ich seit 4 Jahren die Sprache programmiere und sehr gut behersche. 2. Wo bekommt man Bauteile wie z.B. ein Display und alles was dazu gehört. Habe schon ein wenig in Google gesucht, doch ich weiß nicht, nach welchem Begriff ich suchen muss. Unter welchen Begriff fällt das alles? 3. Sollte ich meine Platinen selber "ätzen" oder gibt es andere Möglichkeiten. Ich möchte ungerne eine Lochplatte verwenden. Dazu habe ich bereits ein wenig gesucht und dies gefunden: http://www.blafusel.de/misc/platine.html Oder ist es zu viel Aufwand, diese ganzen Sachen zu besorgen um das selber herzustellen? Ich hoffe ich könnt mir bei meinen 3 Fragen etwas weiterhelfen. Mit freundlichem Gruß xXSlayerXx
Wenn Du in C Programmieren willst und ohne Lochraster arbeiten möchtest, ist der µC eigentlich fast egal.
Für Anfänger eignen sich AVRs. Bevor du dich über fehlgeleitete Verbindungen auf deiner Platine ärgerst. solltest du ersteinmal ein Arduino Board nehmen. Da hast du den Einstieg vom Framework mit vielen Beispielen bis zur Möglichkeit des Barmetal Programmierens. Zubehör kannst du dir dann auch aus vielen Addons heraus suchen bzw. entscheiden sobald deine erste LED blinkt.
Alex S. schrieb: > Mir ist wichtig, dass ich in C++ Programmieren, da ich seit 4 Jahren die > Sprache programmiere und sehr gut behersche. Du kannst also auch C => Wenn du mit GCC umgehen kannst, kein Problem. Auch wenn man oft nicht die Objektorientierte Keule rausholen muss: AVR-GCC-Tutorial AVR ist in diesem Forum (noch) sehr gut vertreten, also bekommst du sicher immer gut Hilfestellung. Alex S. schrieb: > Wo bekommt man Bauteile wie z.B. ein Display und alles was dazu > gehört. Elektronikversender Lokale Elektroniklieferanten ... exotische Sachen auch auf Ebay oder auch mal hier in den Markt rein schauen ... Alex S. schrieb: > Ich möchte ungerne eine Lochplatte verwenden. Warum nicht? Löten musst du so oder so, da böte sich auch die gute alte Fädeldraht-Methode an: http://www.google.com/search?q=site%3Amikrocontroller.net+f%E4deldraht Ansonsten Leiterplattendesign lernen (siehe Schaltplaneditoren ) und bei einem günstigen Einzelstückfertiger (siehe Platinenhersteller ) machen lassen. PS: Sukzessive Approximation schrieb: > ersteinmal ein Arduino Board nehmen Das Launchpad von TI ( http://www.ti.com/launchpad ) ist günstiger als der Arduino, aber auch nicht unbedingt gleich einfach zu verstehen. Außerdem ist das kein AVR...
:
Bearbeitet durch User
> Alex S. schrieb: > > AVR ist in diesem Forum (noch) sehr gut vertreten, also bekommst du > sicher immer gut Hilfestellung. Was wird denn in Zukunft gut vertreten sein hier im Forum?
Alex S. schrieb: > 1. Was soll ich für einen Mikrocontroller verwenden? > Bis jetzt habe ich sehr viel über den AVR gelesen. Hilft dieser mir hier > weiter? AVR sind sehr pflegeleicht und verzeihen einige Fehler die man zu Beginn macht. Alex S. schrieb: > Mir ist wichtig, dass ich in C++ Programmieren, da ich seit 4 Jahren die > Sprache programmiere und sehr gut behersche. Wenn Du C++ auf dem PC beherrschst, dann rate ich Dir davon ab, das auch mit dem µC zu programmieren. Aber wenn Du C++ kannst, kannst Du auch C. Der Grund ist einfach, ein µC hat nicht den Speicher eines PC's und auch eine andere Speicher Verwaltung. Ein 'new' geht da schnell schief. Das heisst, Du musst Dich auf eine gewisse "Statik" einstellen wie Du den Speicher benutzt. Alex S. schrieb: > 2. Wo bekommt man Bauteile wie z.B. ein Display und alles was dazu > gehört. > Habe schon ein wenig in Google gesucht, doch ich weiß nicht, nach > welchem Begriff ich suchen muss. Unter welchen Begriff fällt das alles? Die Bauteile bekommst Du alle bei Reichelt. Alex S. schrieb: > 3. Sollte ich meine Platinen selber "ätzen" oder gibt es andere > Möglichkeiten. Ein ATMega8 auf einem Steckbrett reicht erst mal völlig. Da gibt es es nichts zu ätzen oder löten. Grüsse, René
Rene H. schrieb: > Alex S. schrieb: >> 3. Sollte ich meine Platinen selber "ätzen" oder gibt es andere >> Möglichkeiten. > > Ein ATMega8 auf einem Steckbrett reicht erst mal völlig. Da gibt es es > nichts zu ätzen oder löten. Ich möchte ungern ein Steckbrett am Ende benutzen, da das ganze in meinen Pc eingebaut werden soll und das ganze halbwegs professional aussehen soll. Ich denke zum beginn komme ich um kein Steckbrett herrum. Zum Thema C++ habe ich bereits einiges gelesen. z.B. Das mit new und delete, dass man nur einfachvererbung verwenden kann / sollte und das ganze weniger oop wird. Doch damit habe ich kein Problem. Schlichtes C würde es natürlich auch tun. Was meint ihr, kommen da an kosten auf mich zu, bis ich zu einem ersten Ergebnis komme (Temperatur Messer mit Display). Natürlich abgesehen vok Kosten wie z.B. Lötkolben usw, was jeder Hobby Handwerker im Keller hat.
Alex S. schrieb: > Was meint ihr, kommen da an kosten auf mich zu, bis ich zu einem ersten > Ergebnis komme (Temperatur Messer mit Display). > Natürlich abgesehen vok Kosten wie z.B. Lötkolben usw, was jeder Hobby > Handwerker im Keller hat. Lies das hier mal durch: Absolute Beginner Und "How to set up an electronics lab" vom mehr oder auch viel weniger geliebten Dave Jones ansehen: http://www.youtube.com/watch?v=R_PbjbRaO2E PS: Rene U. schrieb: > Was wird denn in Zukunft gut vertreten sein hier im Forum? ARM Cortex M ist doch allgemein stark im Kommen, vor allem, da die Dinger inzwischen zum selben Preis wie 8bitter zu bekommen sind. Komisch, wenn der µC weniger Pins als interne Busbreite hat; kränkstes Beispiel sind einige LPC800 von NXP: 32bitter im 8pin DIP Gehäuse :D http://www.nxp.com/products/microcontrollers/cortex_m0_m0/series/LPC800.html Now, better stop that off-topic and messing up this thread
:
Bearbeitet durch User
Alex S. schrieb: > Doch damit habe ich kein Problem. > Schlichtes C würde es natürlich auch tun. Damit würd ich anfangen. > Was meint ihr, kommen da an kosten auf mich zu, bis ich zu einem ersten > Ergebnis komme (Temperatur Messer mit Display). > Natürlich abgesehen vok Kosten wie z.B. Lötkolben usw, was jeder Hobby > Handwerker im Keller hat. Ach Kosten. Die sind gering. Die Kosten werden dein kleinstes Problem. Controller: 2 Euro. 1-Wire Temp Sensor DS18B20: 2 Euro Display: max. 10 Euro. Lochrasterplatine + kleinkram: max. 5 Euro Gehäuse: 5 Euro ISP-Programmer: 15 Euro. Falls du ne richtige PCB haben willst, die wird je nach dem wo du kaufst, zwischen 15$ und 60 Euro kosten. Bis dahin musst du dich nur noch in die Elektronik einarbeiten, in den Microcontroller den du nehmen willst, in die Feinheiten von AVR-GCC (wenn du C++ wirklich bereits kannst) und in ein PCB-Tool deiner Wahl (wenn du eine echte Platine haben möchtest). Und dein Projekt ist irgendwie sehr Booooring. Thermometer fürn PC, gibts alles für kein Geld. Und als "Projekt" alles andere als Spannend. gruß cyblord
:
Bearbeitet durch User
Alex S. schrieb: > Rene H. schrieb: >> Alex S. schrieb: >>> 3. Sollte ich meine Platinen selber "ätzen" oder gibt es andere >>> Möglichkeiten. >> >> Ein ATMega8 auf einem Steckbrett reicht erst mal völlig. Da gibt es es >> nichts zu ätzen oder löten. Lass dir bloss nicht diese alte Gurke aufschwatzen. > Ich möchte ungern ein Steckbrett am Ende benutzen, da das ganze in > meinen Pc eingebaut werden soll und das ganze halbwegs professional > aussehen soll. Klar. Niemand baut ein Steckbrett irgendwo ein. > Ich denke zum beginn komme ich um kein Steckbrett herrum. Das muss nicht unbedingt sein. Für 9 € gibt es beim Chinamann einen Arduino Uno. Da schmeisst du den Arduino-Rotz runter und hast ein wunderbares Board, das du auch später in deinen PC einbauen kannst. > Zum Thema C++ habe ich bereits einiges gelesen. z.B. Das mit new und > delete, dass man nur einfachvererbung verwenden kann / sollte und das > ganze weniger oop wird. > > Doch damit habe ich kein Problem. > Schlichtes C würde es natürlich auch tun. Typisch macht man das ohne OOP in C. > Was meint ihr, kommen da an kosten auf mich zu, bis ich zu einem ersten > Ergebnis komme (Temperatur Messer mit Display). > Natürlich abgesehen vok Kosten wie z.B. Lötkolben usw, was jeder Hobby > Handwerker im Keller hat. Kommt drauf an, was das für ein Hobbyhandwerker ist. Gibt ja auch Leute, die Dachrinnen löten. Für Elektronik brauchst du schon was ordentlches. Fängt glaube ich bei 70 € an. Bei Highend steht dann Weller drauf und kostet ca. ab 300. Manchmal wird hier so einer aber auch im Markt gebraucht angeboten. Kann man bedenkenlos kaufen. Da musst du aber schnell sein. Um deine Controller zu programmieren, brauchst du einen Programmieradapter. Der einzig wahre, AVRISPMKII, kostet ca. 35 €. Geht auch wesentlich billiger. Die meisten, die so einen Billigprogrammer haben, behaupten, daß die sogar funktionieren. Natürlich funktionieren die. Meistens. Wenn du allerdings nie Ärger haben willst, nimmst du den AVRISP. Ein AVR-Dragon, 45 €, ist auch nicht schlecht. Der besteht aber nur aus einer nackten Platine und stellt erstmal eine bastlerische Herausforderung dar. Wenn du so ein Arduino-Board nimmst, brauchst du ertmal nur einen Programmer. Genau genommen brauchst du nicht einmal den, sondern kannst den Arduino-Bootloader zum Programmieren verwenden. Das ist das, was ich mit Arduino-Rotz meine. Es soll auch möglich sein, aus dem AVR-Sudio heraus normale Programme über den Bootloader darauf zu brennen. Wenn du Weihnachten soweit bist, daß die LED auf dem Board timergesteuert blinkt und du weisst auch, warum sie das tut, dann kannst du dir so langsam ein Steckbrett zulegen. Ne Taste kriegst du an das Ding auch so rangeklemmt. Und dann geht es ganz langsam ans Projekt. Du kannst das auch abkürzen, indem du komplett auf Arduino setzt. Da gibt es für deine Anwendung sicher alles fertig als Download. Wenn das allerdings nicht dein Anspruch ist, machst du die Ochsentour. "Hello World" heisst auf dem Controller "LED blinkt". mfg.
Rene H. schrieb: > AVR sind sehr pflegeleicht und verzeihen einige Fehler die man zu Beginn > macht. Und vor allem die Fuses sind völlig problemlos für Anfänger. lol Es gibt von verschiedenen Herstellern billige EVAL Boards. Die nötigen Signale sind auf Pfostenstecker geführt und können so einfach später auf eigene Trägkarte aufgesteckt werden. Das sieht auch professionell aus. ;-) Wenn dir ARM zur groß für den Einstieg vorkommt, schau dir den MSP430 und das Launchpad an. Die Doku von TI ist so gut, dass hier wenig Probleme im Forum aufkommen.
die Alternative schrieb: > Und vor allem die Fuses sind völlig problemlos für Anfänger. lol Wenn ein Anfänger mit den Fuses nicht klar kommt, hilft ihm Arduino auch nicht weiter. Vielleicht sollte man den "Anfänger" nicht derart unterschätzen. Thomas Eckmann schrieb: > "Hello > World" heisst auf dem Controller "LED blinkt". Lass mich raten, Du programmierst sonst Java? Grüsse, René
die Alternative schrieb: > Rene H. schrieb: >> AVR sind sehr pflegeleicht und verzeihen einige Fehler die man zu Beginn >> macht. > > Und vor allem die Fuses sind völlig problemlos für Anfänger. lol Wenn man nicht völlig verblödet ist, passiert das Malheur genau einmal. Und wenn man sich nicht den Resetpin weggeschossen hat, kriegt man den Conroller auch wieder zum Laufen. > Wenn dir ARM zur groß für den Einstieg vorkommt, schau dir den MSP430 > und das Launchpad an. Die MSP-Jünger sind wieder am missionieren. > Die Doku von TI ist so gut, dass hier wenig Probleme im Forum aufkommen. Daß das hier kaum Probleme gibt, liegt daran, daß den kaum einer benutzt. mfg.
Rene H. schrieb: > Lass mich raten, Du programmierst sonst Java? > Lass mich raten, du nimmst Drogen? mfg.
Rene H. schrieb: > Vielleicht sollte man den "Anfänger" nicht derart unterschätzen. Thomas Eckmann schrieb: > Wenn man nicht völlig verblödet ist, passiert das Malheur genau einmal. Das las sich in den anderen Threads aber ganz anders. Thomas Eckmann schrieb: > Die MSP-Jünger sind wieder am missionieren. Genanu wie die AVR Jünger und die hatten den ersten Aufschlag. Thomas Eckmann schrieb: > daß den kaum einer > benutzt. kaum ein Hobby-Bastler.
Also welchen µC Du nimmst bleibt Dir überlassen, definiere Deine Notwendigkeiten (I/Os, Timer, PWm, DAC, ADC usw. usf.) und nimm den der Dir am besten paßt. C++ Compiler vorausgesetzt geht auch das ohne Probleme, da wird kein Meagaoffset generiert auch wenn das einige behaupten/vermuten. Wenn Du nur "einfache" Dinge realisieren willst, also LED dimmen, Motor ansteuern o.ä. reicht ein 8bit AVR mehr als aus. Nimm Dir einen USBAsp Clone (ab 5,-) einen passenden AVR (Mega88 sollte genug Resourcen haben) und lege los.
Thomas Eckmann schrieb: > Rene H. schrieb: >> Lass mich raten, Du programmierst sonst Java? >> > Lass mich raten, du nimmst Drogen? > > mfg. rofl Grüsse, René
die Alternative schrieb: > Rene H. schrieb: >> Vielleicht sollte man den "Anfänger" nicht derart unterschätzen. > Thomas Eckmann schrieb: >> Wenn man nicht völlig verblödet ist, passiert das Malheur genau einmal. > > Das las sich in den anderen Threads aber ganz anders. Dann zeig doch mal die Threads, wo sich einer das zeite Mal vom Takt abgenabelt hat. > > Thomas Eckmann schrieb: >> Die MSP-Jünger sind wieder am missionieren. > > Genanu wie die AVR Jünger und die hatten den ersten Aufschlag. Das ist hier ein AVR-Forum. Hier schlafen fast alle Atmel-Bettwäsche. > Thomas Eckmann schrieb: >> daß den kaum einer >> benutzt. > > kaum ein Hobby-Bastler. Ahh, der Profi. Warum empfiehlst du den dann einem Hobbybastler, wenn den kaum ein Hobbybastler benutzt? Ist doch irgendwie widersinnig. mfg.
Thomas Eckmann schrieb: > Warum empfiehlst du den dann einem Hobbybastler, wenn > den kaum ein Hobbybastler benutzt? Weil die Hobbyaner das gute Stück sonst nicht kennen (lernen). Mit dem Launchpad hat TI etwas eingeleitet, hinter dem andere jetzt herhächeln. Thomas Eckmann schrieb: > Dann zeig doch mal die Threads, wo sich einer das zeite Mal vom Takt > abgenabelt hat. SuFu nutzen und lesen: Stapel von Hobbyanern mit verfuseten AVRs sind in der jünsten Zeit aufgeschlagen. Und die Reaktion der "Profis": Man muss wissen, was man tut. Profis haben kein Problem damit, ..., bla bla bla. Ich kennen beide Familien und mir viel der Einstieg bei MSP430 leichter. Die Dokumentation von TI ist super.
Jetzt geht das wieder los dass diese ETechniker von C++ abraten weil sie es nicht können/kennen und sich einbilden, es sei "ineffizient" oder würde "mehr Speicher brauchen". Das ist natürlich Unsinn. Außerdem ist der Umstieg C++ -> C schmerzhaft da man viele schöne Dinge vermisst. Wenn man C++ beherrscht gibt es praktisch keinen Grund C zu verwenden, auch auf Mikrocontrollern, es sei denn man hat sich eine so exotische Plattform ausgesucht dass es keinen C++ Compiler dafür gibt. Für u.a. AVR und ARM gibt es den GCC und damit auch den g++ C++ Compiler. Auf einige Dinge wie Exceptions, RTTI, new/delete sollte man verzichen bzw. sich ganz genau überlegen ob man sie wirklich braucht, aber das was übrig bleibt ist immer noch weit von der beschränkten Sprache C entfernt. Daher rate ich dir als erfahrenem C++ Programmierer, weiterhin C++ zu verwenden. Man muss natürlich nicht sofort alle OOP-Features nutzen, aber es gibt da ja bekanntlich auch eine ganze Reihe "kleiner" Dinge die glücklich machen...
die Altgernative schrieb: > hmmmh, eine VMT braucht C nicht, oder? Falls du damit die vtables meinst: Wenn man Polymorphie/Single-Dispatching verwendet braucht C das natürlich auch, und C++ braucht es genau dann wenn man eben das verwendet. Nur dass das in C++ viel einfacher, kürzer, eleganter, fehlersicherer ist.
Dr. Sommer schrieb: > Jetzt geht das wieder los dass diese ETechniker von C++ abraten weil sie > es nicht können/kennen und sich einbilden, es sei "ineffizient" oder > würde "mehr Speicher brauchen". Das hat in diesem Thread keiner gesagt. Man kann aber nicht C++ Coden auf einem µC wenn man nicht im Speicher denkt. Deshalb mein Hinweis mit PC. Eine Linked List funktioniert auf einem µC nun mal begrenzt, wenn man nicht dessen Eigenschaften bedenkt, STL oder boost ist auch nicht. Ich programmiere die µC's auch in C++. Mit C hat man als Anfänger das Wissen der Sprache und macht weniger Fehler. Wie gesagt, auf einem µC. Und das hat nichts mit der Sprache zu tun, sondern mit dem Wissen wie Speicher funktioniert! Grüsse, René
Dr. Sommer schrieb: > Falls du damit die vtables meinst Ich meine das: http://de.wikipedia.org/wiki/Tabelle_virtueller_Methoden Und das kostet Speicher. Mein C kann das nicht.
Rene H. schrieb: > Das hat in diesem Thread keiner gesagt. Dann habe ich das wohl alles falsch verstanden. Rene H. schrieb: > Man kann aber nicht C++ Coden > auf einem µC wenn man nicht im Speicher denkt. Das kann man weder in C noch in C++ sowohl auf µC als auch auf PC. Rene H. schrieb: > Eine Linked List funktioniert auf einem µC nun mal begrenzt, wenn > man nicht dessen Eigenschaften bedenkt Was hat das mit C++ zu tun? Das gilt gleichermaßen für C wie C++. Rene H. schrieb: > STL oder boost ist auch nicht. Ach nicht? Warum soll zB std::array<uint8_t,7> nicht funktionieren? Oder std::numeric_limits<int>::max () ? Teile von boost funktionieren auch ganz wunderbar, wie zB die MPL. Rene H. schrieb: > Mit C hat man als Anfänger das Wissen der Sprache und macht weniger > Fehler. Wie gesagt, auf einem µC. Da er kein Anfänger in C++ ist, hat er das Problem nicht. Alex S. schrieb: > Mir ist wichtig, dass ich in C++ Programmieren, da ich seit 4 Jahren die > Sprache programmiere und sehr gut behersche. ^-- Das klingt so als wüsste er was er tut. Auch in Bezug auf... Rene H. schrieb: > sondern mit dem Wissen wie > Speicher funktioniert! ... denn sonst kommt man auch in C++ nicht weit. die Alternative schrieb: > Ich meine das: http://de.wikipedia.org/wiki/Tabelle_virtueller_Methoden > Und das kostet Speicher. Richtig, exakt genausoviel wie das C-Äquivalent. > Mein C kann das nicht. Dann machst du was falsch. In C ists halt ziemlich explizit und lang, in C++ implizit und kompakt. Der Ressourcenverbrauch ist der selbe. Wenn man das Feature in C++ nicht verwendet, kostet es auch nichts (wie vieles in dieser Sprache).
Dr. Sommer schrieb: > Dann machst du was falsch. Ich will gerne lernen, wie läuft das mit virtuellen Mehtoden unter C? Dr. Sommer schrieb: > Wenn > man das Feature in C++ nicht verwendet, kostet es auch nichts (wie > vieles in dieser Sprache). Genau, wenn man die Sparache nicht verwendet spart man am meisten. ;-P C++ finde ich auch besser als C, aber nicht auf einem Mini-µC.
die Alternative schrieb: > Ich will gerne lernen, wie läuft das mit virtuellen Mehtoden unter C? in C so: http://ideone.com/hwpTfF in C++ so: http://ideone.com/eKlNzu Die C-Variante ist doppelt so lang und mindestens doppelt so hässlich... Beide Varianten dürften exakt gleich viel Speicher benötigen. Das ganze Konstrukt (= Polymorphie) kann man zur Abstraktion und Entkopplung von Funktion & Interface verwenden. In C wird das nicht so oft verwendet (da Tipparbeit), aber wo man es in C nicht braucht braucht man es in C++ auch nicht. Oder man verwendet es doch, weil es da so einfach ist und man einfacheren, wartbaren, wiederverwendbaren Code erhält. die Alternative schrieb: > Genau, wenn man die Sparache nicht verwendet spart man am meisten. ;-P An Nerven jedenfalls nicht, dank der Einschränkungen von C... > C++ finde ich auch besser als C, aber nicht auf einem Mini-µC. Verstehe ich nicht, wie gesagt ist eine große Zahl der C++ Features Laufzeit-gratis und kann auch auf einem winzigen µC verwendet werden.
Dr. Sommer schrieb: > Die C-Variante ist doppelt so lang und mindestens doppelt so hässlich... und hat in C überhaupt keine Bewandnis. Klassen, Objekte, Methoden, Datenkapselung, polymorphe Hierachien und was davon abhängt sind doch der Unterschied zwischen einer prozeduralen und objektorientierten Programmiersprache. Es macht null Sinn, dass mit C nachzuahmen! Und noch einmal: Wenn ich die Resourcen habe, ziehe C++ reinem C vor. Auf einem kleinen µC reichts dafür nicht.
die Alternative schrieb: > Es macht null Sinn, dass mit C nachzuahmen! Ah. Dann kannst du auch nicht behaupten, dass C++ da grundsätzlich mehr Speicher bräuchte. Außerdem wird sowas sehr wohl in C gemacht, mit fraglichem Sinn. Wenn man in C Datenkapselung und abstrakte Interfaces programmiert, braucht das genau so viele Resourcen wie in C++. Wenn man das in C++ nicht macht braucht es genauso wenig Resourcen wie C. Dies ist also auf keinen Fall ein Argument gegen C++. > Und noch einmal: Wenn ich die Resourcen habe, ziehe C++ reinem C vor. > Auf einem kleinen µC reichts dafür nicht. Und noch einmal, das ist Unsinn. Ganz kleines Beispiel: C:
1 | #define SIZE 1024 // "const" kann hier in C nicht verwendet werden
|
2 | int array[SIZE]; |
3 | // ... viel code...
|
4 | void someFunction () { |
5 | // bis hierhin vergessen dass der Name "SIZE" schon vergeben ist
|
6 | int SIZE = 7; // <-- ulkiger compiler error |
7 | }
|
C++:
1 | const size_t SIZE = 1024; |
2 | int array [SIZE]; |
3 | // ... viel code...
|
4 | void someFunction () { |
5 | // bis hierhin vergessen dass der Name "SIZE" schon vergeben ist
|
6 | int SIZE = 7; // <-- macht nix, funktioniert trotzdem, das äußere "SIZE" wird verdeckt |
7 | }
|
Die C++ Version braucht kein byte mehr Speicher und keine Instruktion mehr Rechenleistung als die C Version, hat aber den Vorteil dass die globale Konstante gescoped ist was den gezeigten Fehler vermeidet. Allein für solche Sachen (davon gibts noch mehr) lohnt es sich C++ zu verwenden, auch auf winzigen µC's, da es kein bisschen mehr Ressourcen als C braucht!
Du solltest mehr schlafen, dann verstehst du auch andere Beiträge. ;-) Natürlich kann ich C Code über einen C++ Compiler schicken. Es bleibt aber trotzdem C Code. Und C++ halbherzig anzuwenden, ist wie mit der Titanic in der Badewanne zu fahren. Ergo, um C++ zu nutzen braucht man Ressourcen. Zu den obigen Themen fällt mit noch das Error Handling ein. Du compilierst den Speicher einfach mit ein? :-P
die Alternative schrieb: > Du solltest mehr schlafen, dann verstehst du auch andere Beiträge. ;-) Vielleicht solltest DU dir mal ansehen was C++ außer Klassen & "new" noch so hat. die Alternative schrieb: > Ergo, um C++ zu nutzen braucht man Ressourcen. Ein großer Teil der Features von C++ geschehen komplett zur Compilezeit und brauchen daher wenn schon Resourcen auf dem PC auf dem das Programm kompiliert wird. Mit templates, constexprs's, uniform initialization, lambda's kann man viele schöne und auf µC definitiv nützliche Dinge tun die in C viel länger & hässlicher, aber genauso resourcenfressend sind. Im Beitrag "Re: atomic-lib für stm32" noch ein kleines Beispiel. die Alternative schrieb: > Und C++ halbherzig anzuwenden, ist wie mit der > Titanic in der Badewanne zu fahren. Wieso sollte man nicht alles an Features nutzen was man kriegt? Nur weil man auf new verzichtet muss man doch nicht auf echte Konstanten (s.o.), templates, constexpr, ... verzichten? Nach der Logik sollte man auch kein C verwenden, da malloc(),"volles" printf() & scanf(), die ganzen float-Funktionen etc. nicht so gut für kleine µC geeignet sind. die Alternative schrieb: > Zu den obigen Themen > fällt mit noch das Error Handling ein. Ja, Exceptions deaktiviert man typischerweise. Aber das muss einen ja nicht davon abhalten die anderen schönen Dinge zu nutzen...
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.