Hallo, ich hatte vor einiger Zeit einen Glaubenskrieg mit einem Kollegen, der - wie manche Sturköpfe ja so sind - ziemlich heftig ausfiel. Es ging darum einen Atmel mit Software für Gerätesteuerung zu bestücken. Softwareentwicklung ist teuer, sie macht einen Grossteil eines Projektes aus, zudem manche meiner Meinung nach etwas zu lange über den immer gleichen Aufgaben brüten. Die Steuerung war easy, nichts was die Welt bewegt, eine Schleife, die nacheinander Sensoren einliest, eine Uart bedient und ein paar Relais klappern lässt. Mein Vorschlag war nun: Wieso der Zirkus in die internen Register des Atmega8 zu kriechen? Es kostet Umengen an Zeit, wenn man nicht jeden Tag sowas macht sich durch die Datenblätter zu wühlen, damit man jedes Register auch mit Namen kennt. Ich habe viele Jahre PICs auf diese Weise programmiert. Wobei der CCS Compiler ja schon viel eingebettet Funktionen hat. Ich schlug vor die Arduino IDE zu nehmen, entsprechende Libraries einzubinden und Ruckzuck ist die Steuerung fertig, ohne dass ich auch nur einen Gedanken daran verschwenden muss, was in dem Atmega drin ist. Dürfte ja bekannt sein, dass man nur die ISP eines Chips herausführen muss, um ihn mit einem Programmer von der IDE aus zu programmieren. Das Arduino Programm ist alleinlauffähig, nur der Timer 0 kann nicht verwendet werden, da der Funktionen wie millis steuert. Außerdem werden ständig ISR von T0 ausgelöst, die man aber abschalten kann. Ich wurde von den "alten Hasen" gründlich niedergemacht.... "Hobby-Zeugs..... Bastelkram..... sch. Open Source Software von Hobbybastlern....., weiss keiner ob der fehlerfrei ist" Ich wurde da auch deutlich lauter in dem Meeting, dass ich diese sture Haltung "das wurde immer so gemacht..." nicht toleriere. Die Welt dreht sich weiter und viele, besonders ältere programmieren immer noch in Assembler, weil sie sich weigern C zu lernen. Ich nahm also ein Arduino Board und hatte binnen eines einzigen Tages die Steuerung fertig! 1 Tag ! Wie ist das bei euch? Verwendet ihr fertige Lösungen (HALs), die es auch für Arm Cortex gibt oder wird jedes Programm immer noch "hardware nah" programmiert? Manchmal ist das nötig, wenn hoch effizineter Code erzeugt werden muss oder Dinge, die über einfache Kontrollstrukturen hinaus gehen, ok. Gruss, Christian
>> Die Steuerung war easy, nichts was die Welt bewegt, eine Schleife, die >> nacheinander Sensoren einliest, eine Uart bedient und ein paar Relais >> klappern lässt. >> Ich nahm also ein Arduino Board und hatte binnen eines einzigen Tages >> die Steuerung fertig! 1 Tag ! Einen Tag ? das ist was für maximal einen halben. Wie lange haben denn deine alten Hasen gebraucht ? Grundsätzlich bin ich aber auf deiner Seite. >> besonders ältere programmieren immer noch in >> Assembler, weil sie sich weigern C zu lernen. Da hast du noch einuges an Überzeugungsarbeit zu leisten :-). Schau in Richtung ARM, fertige Libraries zu verwenden wird mehr oder weniger zum Standard.
Christian J. schrieb: > Ich schlug vor die Arduino IDE zu nehmen, Er hat Jehova gesagt ... Ich befürchte auch hier wird Dir der gleiche Wind entgegen wehen. Bier und Popcorn hol ...
Wie weit darf man die Libs von freier Software in gewerblichen Steuerungen benutzen? Patentrecht? oder so was? Nur mit Angabe der Quelle?
Oliver R. schrieb: > Christian J. schrieb: >> Ich schlug vor die Arduino IDE zu nehmen, > > Er hat Jehova gesagt ... > > Ich befürchte auch hier wird Dir der gleiche Wind entgegen wehen. > > Bier und Popcorn hol ... "Auf den Poden mit dem Purschen!" Das ist mir absolut egal, ich denke rein pragmatisch und will ein Problem auf dem schnellsten und einfachsten Wege lösen ohne tausendmal das gleiche rad neu erfinden zu müssen. Zudem bin ich gläubiger Open Source Jünger, Linuxer und glaube an die Schwarmintelligenz dass viele fewillig eine Sache genauso gut machen können wie wenige bezahlte in einer einzigen Firma (GCC).
Mal als Beispiel... http://www.ti.com/lit/ug/spmu367/spmu367.pdf Man muß das Rad nicht immer neu erfinden.
Du hast da was verpennt... Man schreibt nicht jedesmal den HAL neu! Die meisten Firmen haben ihre Standardcontroller und dazu dann auch eigene Libs oder die vom Hersteller. Außerdem mags ja sein, dass du da jetzt was in nem Tag zusammengeklickt hast, aber haste auch vorher alle Möglichen Zustände begutachtet und hinterher ausgiebig getestet?
Achim Seeger schrieb: > Wie weit darf man die Libs von freier Software in gewerblichen > Steuerungen benutzen? Patentrecht? oder so was? Nur mit Angabe der > Quelle? Freie Software ist freie Software. Alles was in der GPL drinsteht. Die Steuerung einer zielsuchenden Rakete eines Jagdflieger läuft, wie ich dir vertraulich sagen kann unter Linux ab.
Martin Wende schrieb: > > Außerdem mags ja sein, dass du da jetzt was in nem Tag zusammengeklickt > hast, aber haste auch vorher alle Möglichen Zustände begutachtet und > hinterher ausgiebig getestet? Das ist eine Sache der Validation. Klar, natürlich, jedes Produkt wird validiert. Aber das war hier jetzt nicht das Thema. Es ging nur darum, dass mich wütend werde, wenn sog. Ingenieure sich auf den hohen Thron setzen und alles "kompliziert" erscheinen lassen, damit sie ihr Dasein rechtfertigen können. Denn ich weiss, dass es einigen ganz schön stinkt, dass es immer einfacher wird mit sowas umzugehen und dass man keinen Ingenieur mehr braucht um so was zu entwickeln.
Meiner Erfahrung nach versagen die _Fremd_-Library-Ansätze bei komplexer werdenden Aufgaben zunehmend. Zuerst versucht man sich mit den immer irgendwie vorhandenen Unzulänglichkeiten zu arrangieren und irgendwann macht man es doch neu und spezifisch für das Problem. Ich rede hier aber von Projekten > 10 Mannjahre. Wie so oft: The right tool for the job. Wenn man die Lösung in einem Tag programmieren kann, klick ich das in 30 Minuten in Simulink für das Arduino-Target zusammen (:-P). Bei derart simplen Aufgaben spricht dann sicher auch nichts dagegen.
Karl schrieb: > Wie so oft: The right tool for the job. > > Wenn man die Lösung in einem Tag programmieren kann, klick ich das in 30 > Minuten in Simulink für das Arduino-Target zusammen (:-P). Bei derart > simplen Aufgaben spricht dann sicher auch nichts dagegen. Hallo Karl, das ist bei goßen projekten an komplexen Maschinen natürlich so wie du schriebst. Da muss man tief rein und diese fertigen Lösungen stellen ja nur ein Subset zur Verfügung. Ich verwende auch keine Lib, die ich nicht mal kurz durchgeschaut habe. Der Code ist alles andere als optimal und ROM Check, Ram check usw. wirst du damit nicht durchühren können. Aber ich sprach von einem einfachen Gerät, Konsumer Ware und meinem Ärger, dass da auf dem Budget 10.000 Euro für Software stehen, wo ich nicht mal 1000 für ansetzen würde. Es geht auch um Politik der künstlichen Verkomplizierung von einfachen Dingen, um die eigene Tätigkeit zu rechtfertigen.
Ich würde auch soviel fertiges Zeug (Libs, Example Codes...) nehmen, wie es geht. Spart normalerweise ungemein an Zeit, wobei man die Zeit trotzdem aufwenden muss, wenn man die Implementierung und den Ablauf dann doch mal verstehen muss (z.B. wenn ein Fehler mit dem fertigen Zeug auftritt oder der Code erweitert/portiert werden muss) Mit einfach zusammen kopieren klappt es meist eher nicht, zumindest wenn es dann mal schwieriger wird, also Aufgaben, die nicht schon 1000 mal im Netz zu finden sind. Es hängt aber oft auch von Randbedingungen ab. (z.B. wenn der gleiche Code in verschiedenen Geräten/uC verwendet werden soll, dann vielleicht aber Layer über HAL. Oder stromsparender Betrieb, schnelle Reaktionszeit, bestimmtes OS.) Jedoch gibt es auch Negativbeispiele: Ich habe vor kurzem die Microchip Peripheral Lib benutzt, (war aber eine uralt legacy Version - neuere Version war leider nicht möglich) musste dann aber wegen interner Fehler (oder waren es Bedienfehler meinerseits?) die Nutzung aufgeben. Variante waren dann Registerzugriff im selbst geschriebenen Code oder Kopie von deren Code mit eingearbeiteten Bugfixes). Da fragt sich dann, was besser/zeitsparender gewesen wäre, gleich Registerzugriff statt Lib und Fehlersuche? Aber nachher ist man immer schlauer... Wenn es bei dir 1 Tag gedauert hat und es dann funktioniert, dann ist ja nicht viel verloren. Wenn es doch noch zu Problemen kommt oder Laufzeit/Features nicht ausreichen, dann kann man es immer noch "Hardware-nah" realisieren. Könnte man ja als Prototyp ansehen, damit man schnell und frühzeitig die Hardware testen kann. Wobei es da wirklich auch darauf ankommt, ob das Ding dann nur für den internen Einsatz gedacht ist oder Qualität dahinter stecken soll, wofür die Firma auch gerade steht. Und vielleicht auch, ob alles vorhanden ist (z.B. Source Code) um etwas zu fixen (oder auch nur zum debuggen), wenn ein Problem auftritt oder man Teile als Binary einbindet, für die man im Falle des Falles externe Hilfe braucht (eine Abhängigkeit hat) und selbst gar nichts machen kann, als es dann ohne dieses Binary erneut zum Laufen zu bringen.
> Ich wurde von den "alten Hasen" gründlich niedergemacht....
Haha... Das kenne ich zu genüge...
Zur Zeit habe ich auch mit so einem zu tun. Unglaublich stur und
uneinsichtig.
Sein Credo: "Copy und Paste".
Es ist einfach nur schlimm. Überall wird ständig wiederholt. Egal ob
einzelne Zeilen, Blöcke oder ganze Funktionen: Kopieren, und dann ein,
zwei kleine Änderungen. Oft an irgendwelchen magischen Konstanten.
Die unterschiedlichen Funktionen werden dann z.B. "func1", "func2",
"func3" genannt. Das höchste was ich gesehen habe war "func17".
Es ist eine einzige Katastrophe, was er produziert. Aber er ist ja der
"alte Hasen" der das schon ewig macht und sich auskennt. Seine
Vorgesetzten hören auf ihn, obwohl sie keinen blassen Schimmer von
Software haben. Die Hälfte der Zeit verbringt er damit, seine Position
im Unternehmen zu verteidigen und Kritiker kalt zu stellen.
Ein Wunder, dass es diesen Schuppen noch gibt...
erstmal ist an Arduino nichts falsch (und wenn man ihn so benutzt, dann zieht auch das Argument mit "nichts lernen" nicht). ABER: In dem Moment wo vom reinen Assembler weg bist (selbst C ist da nicht 100%, aber deutlich sicherer) kannst du nichtmehr zu vollständig vorraussagen wie sich dein Ding verhält (ausser du lies das .lss file in dem wiedrrum Assembler steht). Je nach Anwendung kann das sehr böse enden. Es geht bei manchen Bereichen so weit, dass man keine Interrupts verwenden darf weil die (in gewissem Maß) auch eine Unwägbarkeit darstellen. Wenn deine Steuerung jetzt natürlich nur die Lüfter der dem Cheffe kühle Luft zufächelt steuert, dann ist ein Fehler drinnen harmlos und damit vertretbar. Aber stell dir mal vor in deinem Auto würde das ABS mit Arduino geproggt sein und jemand hat einen overflow nicht beachtet (es gibt garantiert mindestens eine zweistelleige Anzahl an Szenarien wo das passiert) und mitten auf der AB haut das volle Lote die Bremse rein weil die Drehzahl überläuft und damit ein Bit für die Ausgabe kippt. Wie bei allen Dingen ist es eine Frage der Werkzeugwahl. Und leider neigen viele Arduino-Nutzer dazu wenn sie einmal gelernt haben mit dem Hammer (=Arduino) umzugehen alles als Nagel zu sehen. PS: Ich finde es btw. falsch die Problematik von Arduino auf Open-Source zu schieben. Bei einem Open-Source System kann man im Zweifelsfall nachlesen (im Source) und sogar nachbessern (wenn man Zeit und Können hat).
GPL ist ohne Garantie oder Haftung. Wenn ich damit etwas herstelle muss ich das dem Kunden auch sagen oder eben selbst die Verantwortung übernehmen. Dabei ist es sicher ein Unterschied ob ich einen Kaffeautomat verkaufe oder eine Robotersteuerung. Im ersten Fall haben vielleicht ein paar Leute Durst, im zweiten kann eine Produktionsline für eine Schicht ausfallen. Muss jeder -Chef- selbst entscheiden. Und der kann dabei auch Hilfe gebrauchen, am liebsten von denen mit deren Hillfe er schon oft Krisen vermieden bzw. gelöst hat. Alte Hasen eben. ######################### Für den Billigkrempel gibt es genug Sparzahler als Beta-Tester.
Lustiger Augustin schrieb: >> Ich wurde von den "alten Hasen" gründlich niedergemacht.... > > Haha... Das kenne ich zu genüge... Bei mir steht der Absprung schon fest, die nächstbeste Gelegenheit wird genutzt :-) > Sein Credo: "Copy und Paste". > > Es ist einfach nur schlimm. Überall wird ständig wiederholt. Egal ob > einzelne Zeilen, Blöcke oder ganze Funktionen: Kopieren, und dann ein, > zwei kleine Änderungen. Oft an irgendwelchen magischen Konstanten. > > Die unterschiedlichen Funktionen werden dann z.B. "func1", "func2", > "func3" genannt. Das höchste was ich gesehen habe war "func17". Das kenne ich von den Quereinsteigern, Leuten die bei Röhren angefangen haben, über Transistor- und Diodengräber in den 80igern ihre Blütezeit hatten, das TTL Kochbuch und die Taschentabentabellen von Transistoren und TTL IC's daeben lagen und dann gezwungen wurden sich mit sowas wie einem Mikrocontroller zu befassen. Ich habe da Programme gesehen wie: do { // Schleifenanfang a=a+c; // addiere c auf a while (c<5) // solange c kleiner ist als 5 for (a..... // Für a = 0 bis a = 6 d.h. jede Zeile wurde kommentiert und das seitenlang. Variablen hiessen ij,k,b,l,m,o,p ..... ohne jede Aussagekraft. Keine Einrückungen, keine Zeilenabstände, stur durch ein einziger Klumpatsch! Und überhaupt keine Einsicht, dass es sowas gibt wie lebenslanges Lernen. Dass die Dinge sich weiterentwickeln und dass man schnell zum alten Eisen gehört. Ich habe früher seitenweise Assembler für PC programmiert, vor allem Treiber und ISR Routinen unter DOS, Z80, 6502 usw. aber heute ist das für mich nur noch das Gebrabbel eines Kleinkindes, was mit 35 Worten (PIC) schon an einer Fliesskommarechnung scheitert oder 3 Tage braucht, bis die FP Routinen endlich fehlerfrei sind. Assembler ist vorbei, im Startup Code ja, einige ISR als embedded code aber ansonsten Steinzeit aus der Zeit wo man noch mit Eprom Emulatoren gearbeitet hat und die Eproms alle 10 Brände wegwerfen konnte. > Es ist eine einzige Katastrophe, was er produziert. Aber er ist ja der > "alte Hasen" der das schon ewig macht und sich auskennt. Seine > Vorgesetzten hören auf ihn, obwohl sie keinen blassen Schimmer von > Software haben. Die Hälfte der Zeit verbringt er damit, seine Position > im Unternehmen zu verteidigen und Kritiker kalt zu stellen. > > Ein Wunder, dass es diesen Schuppen noch gibt...
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.