Forum: Offtopic aktuelle µCs und Nutzen im späteren Beruf


von N. G. (newgeneration) Benutzerseite


Lesenswert?

Hallo Forum,

vorab: Wusste nicht genau wohin mit dem Thread, falls er hier falsch ist 
bitte verschieben.

Also, kurze Einleitung:
Ich bin noch in der Schule und mache dieses Jahr mein Abi. Ich mache 
schon lange Hobbymäßig was mit µCs, genauer gesagt mit AVRs.
Bei den AVRs habe ich schon sehr viele verschiedene Modelle benutzt, vom 
tiny26, 48, 85, über den mega16, 328 bis hin zum 2560 (nicht Arduino oÄ 
sondern "bare metal"), ich würde also sagen, dass ich mich damit gut 
auskenne.
AVR-asm kann ich auf jeden Fall lesen und auch ein bisschen schreiben 
(kleineres Zeug halt), aber eigentlich bin ich bei C zuhause. Imho 
behersche ich das auch ganz gut.
Beruflich möchte ich auch etwas mit µCs zu tun haben, da mir das viel 
Spaß macht.
Deswegen meine Fragen:
1) kann man mit AVR wirklich was anfangen? Man hört immer wieder das die 
AVRs nur im Hobby-Bereich zu finden sind, aber das kann ich mir nicht 
vorstellen (würde sich für Atmel auch kaum rechnen).
2) Bei meinem Praktikum haben wir auf PICs programmiert, wie sieht denn 
da die Verbeitung verglichen mit den AVRs aus (bezogen auf Beruf, nicht 
aufs Hobby)?
3) ARM ist ja grad voll in Mode und verdrängt langsam verschiedene 
Chip-Familien (ich denke zwar nicht dass die 8bitter verschwinden, aber 
es werden wohl weniger werden). Bestimmt wäre es sinnvoll sich mal mit 
ARM zu beschäftigen. Nur mit was? Es gibt ja verschiedene Hersteller die 
die IP-cores einbauen und verkaufen, an wen soll man sich da halten?
Konkret: Ist es besser bei einem Atmel-µC zu bleiben oder ist der 
Umstieg auf eine STM32 nicht schwerer?

Kurz gesagt: was genau sollte ich mir anschauen?

Danke,
N.G.

: Verschoben durch User
von Eugen T. (der_eugen_thorben)


Lesenswert?

krasser typ, in der schule und schon plan vom hardwarenaher 
Programmierung.

würde mich auch interessieren, wo der Trend so liegt.

da, wo ich arbeite (Werkstudent), wurde damals mit atmegas programmiert 
und nutzen diese heute noch.

der Trend scheint aber doch eher zum teil auf raspberry pi und arduinos 
zu gehen, je nachdem, da hardware schon preisgünstig fertig ist.

sonst würde ich sagen hängts von der Firma ab, was der Ingenieur dort 
damals gewählt hat.

: Bearbeitet durch User
von lächler (Gast)


Lesenswert?

N. G. schrieb:
> Kurz gesagt: was genau sollte ich mir anschauen?

Genau das, was dir Spaß bereitet.
Controller werden immer kurzlebiger, neue Familien erscheinen immer 
schneller. Warum sich also festlegen? An der Methodik, damit umzugehen 
und sich einzuarbeiten, ändert sich wenig.

von M. K. (sylaina)


Lesenswert?

Microchip ist IMO etwa doppelt so verbreitet wie Atmels µCs, aber auch 
Atmels µCs findet man in der Industrie reichlich. Und ob es jetzt ein 
ARM oder doch ein 8-bit µC wird hängt schlicht von der Anwendung ab.
Schau dir am besten mal so verschiedene Prozessoren an und entscheide, 
welcher dir am besten gefällt. Wenn du später im Job einen anderen 
Prozessor hast ist das auch nicht schlimm da im Grunde die 
Herangehensweise bei allen Prozessoren gleich ist oder zumindest 
ähnlich.

von Stefan (Gast)


Lesenswert?

Im Grunde ist es völlig egal mit welchen µC du dein Handwerk lernst. An 
der Programmiersprache und der Methodik ändert sich nicht viel.
PIC's denke ich sind etwas mehr verbreitet. Und auch der MSP430 von TI 
ist durchaus häufig zu finden. Das beste Datenblatt hat allerdings 
meiner Meinung nach der Atmel.

ARM-µC lohnen sich wirklich nur wenn man viel Rechenleistung braucht. im 
Grunde ändert sich an der Programmiertechnik selbst nicht viel. 
Registerzugriffe sind etwas anders und die ISR läuft anders ab.
Ich habe dazu mal den Arduino DUE ausprobiert. Der hat eine 
ARM-Architektur und man hat gleich ein fertiges Testboard ohne großer 
rumbasteln. (habe den DUE natürlich auch baremetal programmiert und 
nicht mit der Arduino IDE)

von Frank (Gast)


Lesenswert?

Was für eine "Marke" Du benutzt ist relativ egal.
Kennt man ein paar, macht einem ein Wechsel auch nicht viel 
aus(zumindest wenn man eine Hochsprache wie C/C++ benutzt). Gestern 
Atmel, heute TI, morgen Infineon.

Schau dir verschiedene Hersteller mit ihren unterschiedlichen 
Architekturen und Perepherien an.
Eigene dir an, wie man gut strukturiert und dadurch effektiv 
Programmiert. Wie man zeitkritische Dinge in die Peripherie auslagern 
kann und somit den Core entlastet.

Spezialisiere Dich.
z.B. in Richtung FPGA und Softcores für die ganz  zeitkritischen Dinge.
Oder in Richtung Embedded Linux. Der ganze Wearabels Markt ist ja auch 
schwer am kommen.
Wenn du Richtung hardwarenaher Programmierung gehen willst (ganz unten), 
dann beschäftigte dich mit Elektrotechnik. Nichts ist so schlimm als ein 
Informatiker der keine Ahnung von Physik hat oder mit Speicher und 
Laufzeit um sich wirft.

Schau dir Coding Rules an und versuche sie die so früh wie möglich 
anzueignen.

von Falk B. (falk)


Lesenswert?

@ N. G. (Firma: KdS) (newgeneration)

>1) kann man mit AVR wirklich was anfangen?

Ja. Zum Grundlagen lernen sowieso, aber auch im echten Leben. Nicht 
immer muss es ein P4 Quadcore sein.

> Man hört immer wieder das die
>AVRs nur im Hobby-Bereich zu finden sind, aber das kann ich mir nicht
>vorstellen (würde sich für Atmel auch kaum rechnen).

Eben!

>2) Bei meinem Praktikum haben wir auf PICs programmiert, wie sieht denn
>da die Verbeitung verglichen mit den AVRs aus (bezogen auf Beruf, nicht
>aufs Hobby)?

Ähnlich, ist ein großer Hersteller!

>>es werden wohl weniger werden). Bestimmt wäre es sinnvoll sich mal mit
>ARM zu beschäftigen. Nur mit was?

Was dir gefällt und was weit verbreitet ist, denn dazu gibt es viele 
Infromationen und Projekte. Exoten sind nur was für Exzentriker ;-)

>Konkret: Ist es besser bei einem Atmel-µC zu bleiben oder ist der
>Umstieg auf eine STM32 nicht schwerer?

Ist Jacke wie Hose.

>Kurz gesagt: was genau sollte ich mir anschauen?

Was dir Spaß macht. In deiner Situation willst die die Grundprinzipien 
lernen, das geht mit fast jedem System. Muss ja nicht der Bo8 sein ;-)

https://www.mikrocontroller.net/articles/8bit-CPU:_bo8

Logischerweise sollte man eher zeitgemäße CPUs anschauen, 
(klassische)8051 oder 68HC11 sind out.

von Falk B. (falk)


Lesenswert?

@ Frank (Gast)

>Spezialisiere Dich.

Als Schüler? Nöö! Das hat noch VIEL Zeit.

>z.B. in Richtung FPGA und Softcores für die ganz  zeitkritischen Dinge.

Quark. Softcores sind nette akademische Spielereien.

>dann beschäftigte dich mit Elektrotechnik. Nichts ist so schlimm als ein
>Informatiker

Nicht ist so schlimm wie ein Elektroniker, der keine Ahnung von 
Grammatik hat ;-)

> der keine Ahnung von Physik hat oder mit Speicher und
>Laufzeit um sich wirft.

Gibt's doch heute im Übermaß. Raspberry Pi zum LED-Blinken!

>Schau dir Coding Rules an und versuche sie die so früh wie möglich
>anzueignen.

Gute Idee.

Strukturierte Programmierung auf Mikrocontrollern

: Bearbeitet durch Moderator
von PittyJ (Gast)


Lesenswert?

Lerne C und C++.
Dann ist der Prozessor darunter fast egal. Nur wenn man mal wirklich SPI 
macht, muss man sich um die Register kümmern. Ansonsten interessiert der 
Prozessor und die Bitbreite kaum.
Mit C habe ich schon ein Dutzend verschiedener Prozessoren programmiert. 
Wichtiger sind nachher die Algorithmen und Datenstrukturen.

von Eugen T. (der_eugen_thorben)


Lesenswert?

also, was schon sinn machen würde, wäre dma (direct memory access) auf 
nen Controller zocken und linux gut kennen, shell und so.

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

N. G. schrieb:

> Kurz gesagt: was genau sollte ich mir anschauen?

Alles. Verschiedene Architekturen sind nützlich, um zu sehen, wie 
gewisse Dinge anderswo gemacht werden. Das erweitert den Horizont ganz 
erheblich. FPGAs und Leiterplattendesign gehört auch dazu, und natürlich 
auch die Analogtechnik, die langsam aus dem Fokus gerät, aber das 
Fundament des ganzen bildet.

Wichtig ist, dass Du lernst zu lernen. Du kannst jetzt nicht absehen, 
was gerade aktuell ist, wenn Du fertig bist. Konkrete Produktkenntnisse 
werden dann ohnehin überholt sein. Ob Du jetzt AVR oder PIC, MIPS oder 
ARM kennst, ist für später egal. Ich habe Anfang der 80'er mit Z80 
angefangen. Bis ich den kapiert hatte, hat es ein halbes Jahr gebraucht. 
Den 6502 konnte ich dann in 6 Wochen, wobei "konnte" dann hieß, im Kopf 
zu assemblieren und Hexbytes einzutippen. Soundkarten gabs damals nicht 
im Laden zu kaufen, man musste sie sich selber bauen.

Viel viel wichtiger ist für Dich die Schule. Insbesondere Mathe. Ein 
Ingenieurs-Studium ist zu mindestens 70% Mathe, bei Naturwissenschaften 
wird es ähnlich aussehen. Solltest Du damit irgendwelche Schwierigkeiten 
haben, wäre das extrem ungünstig. Wobei es jetzt egal ist, ob Du jetzt 
eine 1 oder 3 hast (das kann auch am Lehrer liegen). Wichtig ist, dass 
Du ein Verständnis für die Sachen entwickelst und nicht einfach 
auswendig lernst. Denn erst das Diplom bzw Master ist für Dich die 
Eintrittskarte ins Berufsleben, zusammen mit einem vorzeigbaren Abitur.

fchk

PS: So sahen Rechner aus meiner Anfangszeit aus:
http://www.oldcomputers.net/kim1.html

: Bearbeitet durch User
von N. G. (newgeneration) Benutzerseite


Lesenswert?

Danke schon mal an alle für eure Beiträge!!!

Leider kann ich aufgrund der hohe Anzahl nicht auf jeden einzelnen 
eingehen.
Mehrfach kam die Methodik vor, und ihr hab auf jeden Fall recht. Die 
Herangehensweise ist beim Design sehr wichtig (sowohl von der software 
also auch von der hardware-Seite her). Strukturierte Programmierung und 
wiederverwendbare Software fällt auch in dieses Gebiet.

Ich habe mir schon überlegt ob ich mir FPGAs mal anschauen soll, habe 
aber aufgrund der teureren Entwicklungsboards und der schwereren 
Ansteuerung davon abgesehen.

Leiterplatten kann ich designen (natürlich keine Profimäßigen und erst 
recht kein HF oÄ) und davon (manchmal) sogar Schaltpläne zeichnen ;)

Das mit der Schule stimmt natürlich auch, ich würde jedoch von mir 
sagen, dass ich den Stoff relativ leicht kapiere, nur ich habe das 
Problem dass man grob als "Faulheit" bezeichnen kann.


Insgesamt haben mir eure Antworten schon jetzt sehr geholfen,
ein großes DANKE dafür

von Bernd K. (prof7bit)


Lesenswert?

Es spielt überhaupt keine Rolle welchen.

Wichtig ist daß Du imstande bist zu analysieren wie Dir die Komponenten 
eines (beliebigen) Controllers bei einer bestimmten Problemstellung von 
Nutzen sein können (und daß Du dann auch imstande bist das so 
umzusetzen), daß Du auch mal auf kreative Lösungen kommst um nicht 
möglich geglaubtes auf unterdimensionierter Hardware dennoch möglich zu 
machen, daß Du die üblichen gängigen Entwurfsmuster für bare metal 
embedded Software schonmal gesehen und angewendet hast, daß Du die 
Sprache C aus dem ff beherrschst (wirklich!) in all ihren Facetten und 
mit all den Werkzeugen (Compiler, Linker, Buildscripte, etc umgehen 
kannst), daß Du jederzeit und auch unter Zeitdruck ordentlich 
strukturierten, modularen, lesbaren und wiederverwendbaren Code 
abliefern kannst.

Welche µC Du bisher verwendet hast spielt keine Rolle, die wesentlichen 
Methodiken und Fertigkeiten die Du Dir angeeignet hast sind 
herstellerunabhängig.

Mathematik und Physik sollten Dir nicht fremd sein und gute 
Elektronik-Kenntnisse (auch analog) samt zugehöriger Erfahrung und 
Intuition sollten ebenfalls selbstverständlich sein.

Wenn Dich das alles nicht schreckt und Du all das da oben (und noch viel 
mehr) schon hundert mal gemacht hast (und zwar weil Du es wolltest, 
nicht weil man Dich gezwungen hat), und sei es auch nur mit nem AVR-Tiny 
und sonst nichts, ganz egal, wenn Du das drauf hast dann kannst Du 
bereits 99.9% Deiner Mitbewerber mit links in die Tasche stecken.

von Claus M. (energy)


Lesenswert?

Stefan schrieb:
> M-µC lohnen sich wirklich nur wenn man viel Rechenleistung braucht. im
> Grunde ändert sich an der Programmiertechnik selbst nicht viel.
> Registerzugriffe sind etwas anders und die ISR läuft anders ab.
> Ich habe dazu mal den Arduino DUE ausprobiert.

Unsinn hoch 10. Natürlich ändert sich nicht viel, wenn man der Hardware 
eh nicht nahme kommt, weil man Arduino verwendet.
Es lohnt sich schon, den STM32 mal näher anzugucken. Er ist einfach um 
Welten Komplexer und Leistungsfähiger als deine 8 Bitter. Er hat viel 
mehr Peripherie. Und der Assembler ist viel viel komplexer.
Sicher gibt es in der Industrie auch AVR und PIC, aber halt nur für 
simpelste Sachen. Da lässt sich dann auch kein Geld mit verdienen, da es 
jeder Student kann ;-).

von Carsten S. (dg3ycs)


Lesenswert?

Hi,

Vorab:
Du bist schon mal gar nicht so auf dem verkehrten Weg...

Aber im Detail:
Das es für eine spätere berufliche Laufbahn im Bereich der Hardwarenahen 
Softwareentwicklung wichtig ist nicht nur die reine Programmierung zu 
behrrschen sondern auch Mathe, für wirkliche Hardwarenähe Elektrotechnik 
und als wichtigstes von allem -Lernmethoden an sich- wurde ja schon 
mehrmals (richtigereweise) geschrieben.

Daher will ich nur auf eine Ausgangsfrage eingehen...

AVR und (8bit) PIC werden in der Industrie durchaus Zahlreich 
eingesetzt.
(24 & 32 Bit Pic natürlich auch, aber die sind ja nicht mit AVR 
vergleichbar...)
Es kommt halt mmer darauf an welches Problem man lösen möchte. Die 
allermeisten µc werden immer noch für Anwendungen eingesetzt wo sie von 
der möglichen maximalen Rechenleistung gnadenlos unterfordert sind. Da 
sind Dinge wie geringe Stromaufnahme, Preis, Verfügbarkeit, Lebensdauer 
der Produktlinie und nicht zuletzt der Stromverbrauch(viele laufen 
deshalb nur auf einem Bruchteil der Maximalfrequenz) viel wichtiger als 
die Maximale Rechenleistung.

ARM werden in der Industrie schon sehr lange Zeit ebenfalls eingesetzt. 
In den etwas Leistungsstärkeren Anwendungsgebieten stellen diese als 
Familie betrachtet sicher mittlerweile den Löwenanteil.
Allerdings sind auch hier durchaus andere Podukte ahlreich anzutreffen,
(Mips wie die PIC32 MX/MZ oder auch diverse Renesas Controller...)auf 
die einzelnen Hersteller gesehen hält sich das dann wieder eher die 
Waage.
Nur in Bastelerkreisen ist die große Verbreitung der ARM ein noch recht 
junges Phänomen das durch das Aufkommen der stark subventionierten 
Einstiegstools entfacht wurde.

Wissen über alle drei Familien ist sicher nicht Schädlich nach dem 
heutigen Stand. Was in ein paar JAhren aber sein wird, da kann man nur 
spekulieren.
Für jemanden der aber recht früh schon drei verschiedene Architekturen 
kennengelernt hat, für den sollte es aber auch kein Problem sein sich 
schnell in weitere dann aktuelle Architekturen einzuarbeiten.
Dann hat man gelernt mit Datenblättern, AppNotes, ggf. IDEs von 
verschiedenen HErstellern umzugehen, weiß dann wo so üblicherweise die 
Unterschiede liegen und was bei allen ähnlich ist. Kurz gesagt: Man 
findet sofort die Dinge die man anders behandeln muss und kann den REst 
wie gewohnt bearbeiten.
Erst recht wenn sowieso 99% der heute erstellten embedded Programmzeilen 
in C oder C++ geschrieben werden. (Für Hardwarenahe Anwendungen C, für 
sehr komplexe Anwednugnen auch immer mehr C++)

Neben den 8 Bittern also auch einen 32 Bitter kennenzulernen macht also 
schon Sinn, WENN du bereits wirklich Fit auf einem 8 Bitter bist (in 
deinem Fall AVR).
Sollte jemand dort aber auch noch auf Anfängerniveau herumgondeln sollte 
er allerdings lieber erst einmal eine Familie richtig Lernen bevor er 
mit der nächsten Anfängt!
Wenn es ARM sein soll (Alternativ könnte man auch die 32Bit Microchip 
MIPS nehmen, selbe Klasse, andere Rasse. ISt eine reine Frage des 
Geschmacks, der evtl. bereits vorhandenen Tools und der Verfügbarkeit) 
ist das durchaus OK. Da die ARM Familien innerhalb einer Generation vom 
Kern ja alle praktisch gleich sind und sich nur die Peripherie von 
Hersteller zu Hersteller unterscheidet würde ich mich einfach für den 
Hersteller entscheiden wo die Verfügbarkeit von Bausteinen und Günstigen 
Einsteigertools UND Einsteigergerechten Dokumentation / Hilfe im Netz am 
größten ist.
Da wird man dann wohl schnell bei NXP oder evtl. noch wahrschenlicher 
bei STM landen. Aber im im Grunde ist das völlig egal...
ALs "armer Schüler" der wirklich auch viel aufbauen will könnte ggf. 
noch TI wegen ihrer immer noch großzügigen Samplepolitik interessant 
sein. (Vorrausgesetzt man hat eine Emailadresse der Schule...- 
Freemailer akzeptieren die seit kurzem wegen zu viel Missbrauch nicht 
mehr). Allerdings sind die Anfangskosten hier IMHO etwas höher.

ICh hoffe das hilft dir erst einmal ein wenig weiter...

Gruß
Carsten

P.S.:
Zu den "Programmiersprachen"
> AVR-asm kann ich auf jeden Fall lesen und auch ein bisschen schreiben
> (kleineres Zeug halt), aber eigentlich bin ich bei C zuhause. Imho
> behersche ich das auch ganz gut.
DAS ist für jemanden der heute Einsteigt GENAU die Konstellation die ich 
empfehlen würde. Der absolute Löwenanteil der Embedded SW wird in C 
geschrieben. Ein langsam größer werdender Teil in C++.
Perfektes ASM braucht man nur noch in echten Ausnahmefällen.

ABER: In grenzfällen Zeitkritischer oder Platzsparender Programmierung 
kann das Hintergrundwissen wie der Prozessor den Code nachher 
tatsächlich abarbeiten wird durchaus sehr viel Potential bringen.
Ich meine damit nicht einmal das man diese Teile dann wirklich in ASM 
schreiben muss, sondern das man durch das Hintergrundwissen den C-Code 
schon so gestalten kann das er sich möglichst optimal für die gewünschte 
Optimierung umsetzen lässt. (Erst wenn alle Stricke reissen legt man 
dann selbst in ASM Hand an, ist aber mittlerweile nur noch sehr selten 
nötig)
Wobei dies aber immer noch nur ein "nice to have" ist...

Wo aber ASM Kentnisse dann tatsächlich über erfolg oder Misserfolg 
entscheiden können ist das Debugging komplexer Fehlfunktionen, besonders 
wenn diese Fehlfunktionen nicht auf Fehlerhaften C Code sondern auf 
einem bis dahin unbekannten Compiler oder gar Controllerbug beruhen.

Wenn man dann nicht die Möglichkeit hat sich die bersetzung der 
Problematischen Stelle anzusehen und zu verstehen oder den Code auf ASM 
ebene an dieser Stelle durchzusteppen wird man solche Fehler niemals 
eindeutig identifizieren können!

Daher ist der WEG perfekt Lesen und schreiben zu können, ASM aber 
immernoch zumindest verstehen zu können, genau der richtige!
Wenn man dann ein oder besser zwei (sgrundverschiedene, z.B. PIC und 
AVR) ASM Codes gut lesen kann wird man sich auch hier schnell in einem 
neuen Dialekt gut einarbeitenkönnen.

Jetzt aber zum Zweiten mal und damit endgültig für heute ;-)

Gruß
Carsten

: Bearbeitet durch User
von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

In der Industrie ist meist alles etwas "größer", z.B. anstatt eines 2x16 
Zeichen LCD Displays gleich ein TFT mit 1024 Pixl und Vollfarben usw. da 
die Kunden nunmal so was wollen was alles technisch so klicki Bunt aus 
sieht.
Das ist auch der Hauptgrund warum immer mehr größere/schnellere µC 
eingesetzt werden müssen.

Als Vorbereitung für den Beruf wäre es nicht schlecht wenn Du einen µC 
mit einem Cortex-Mx Kern (z.B. STM32 oder LPX17xx) auch mal 
programmierst.
Dass Du Dich mit der Debug Schnittstelle (SWD) auseinandersetzt und 
damit ein wenig bastelst. Auch die Debugger-Ausgabe über SWD nutzt.

Unabhängig vom µC:
Schlussendlich ist es wichtig dass Du weißt wie die Peripherie Module 
funktionieren und was man für Möglichkeiten hast.
- UART
- SPI
- I2C
- CAN
- USB
- DMA
- Timer
- Portfunktionen
- AD-Wandler
- Spezial-Module wie Memory-Controller, CRC, Battrierefunktionen

Auch ist es wichtig zu wissen wie die Protokolle funktionieren und was 
die jeweiligen Protokolle für elektrische Eigenschaften haben. (UART, 
SPI, I2C, CAN, USB) (Baudraten, Übertragungsbandbreite, 
Übertragungslängen, usw)

Diese Anschlüsse und Kommunikationsmethoden braucht man immer - zwar 
nicht für jedes Projekt.
Neuerdings braucht man in der Automobilindustrie sogar Kenntnisse über 
den neuen 2-Draht Ethernetbus - Aber das lernt man besser wenn man in 
einer richtigen Firme anfängt.

Und ja, es gibt sicher noch 1000 andere Punkte die man als HW-/SW- 
Entwickler beachten darf.

Und noch etwas, für evt. Deine Richtung: SW-Entwickler sind eher 
Mangelware als HW-Designer.

von Timm T. (Gast)


Lesenswert?

Markus M. schrieb:
> In der Industrie ist meist alles etwas "größer", z.B. anstatt eines 2x16
> Zeichen LCD Displays gleich ein TFT mit 1024 Pixl und Vollfarben usw. da
> die Kunden nunmal so was wollen was alles technisch so klicki Bunt aus
> sieht.

Das ist nicht immer eine Entscheidung des Kunden.

Große Firma baut eine Gerätesteuerung, für die Steuerung wird ein PC 
benötigt, der hochgefahren werden muß und diverse Schnittstellenkarten 
anspricht. Wird das Gerät eingeschalten, dauert es mehrere Minuten, bis 
es betriebsbereit ist. Wird es ausgeschalten, muß erst das Programm 
beendet und der Rechner heruntergefahren werden. Wenn man da Wartung 
macht und das Gerät zwecks stromlos Schalten mehrmals hoch- und 
runterfahren muß, wird man wahnsinnig.

Meine Lösung für selbes Problem: Multicontroller-System mit einem Master 
und beliebigen Slaves, ATmegas. Das Gerät ist 3 Sekunden nach 
Einschalten betriebsbereit - weil die Leistungsnetzteile verzögert 
zugeschalten werden - und kann jederzeit ohne Probleme ausgeschalten 
werden.

KISS!

von Falk B. (falk)


Lesenswert?

@Markus Müller (mmvisual)

>Und noch etwas, für evt. Deine Richtung: SW-Entwickler sind eher
>Mangelware als HW-Designer.

Wirklich? Mein Eindruck ist eher anders herum!

von Carsten S. (dg3ycs)


Lesenswert?

Markus M. schrieb:
> In der Industrie ist meist alles etwas "größer", z.B. anstatt eines 2x16
> Zeichen LCD Displays gleich ein TFT mit 1024 Pixl und Vollfarben usw. da
> die Kunden nunmal so was wollen was alles technisch so klicki Bunt aus
> sieht.

Sagen wir mal so:
In einigen Fällen ist es das, wo von das MArketing GLAUBT das der Kunde 
das will und niemand bei der richtungsweisenden Erstbesprechung deutlich 
genug wiederspricht. Danach liegt der Kurs fest und es wird umgesetzt.
(Im Nichttechnischen Bereich liegen die damit ja auch nicht so verkehrt, 
im technischen Bereich aber führt das durchaus öftermal zu Unverständnis 
bei der Zielgruppe)

In anderen Fällen ist das natürlich auch eine Folge davon das man so 
einfach einen (Industrie-) PC von der Stange kaufen kann und nur noch 
die Anwendungssoftware, für die man Leistungsreserven Satt hat, 
schreiben muss, wo man sonst gleich für HArdware und Software inkl. 
evtl. Betriebssystem) voll selbst verantwortlich ist.
 Bei überschaubaren Stückzahlen ist das schon ein riesger Zeit und 
Geldvorteil! Das MArketing hat dann die Aufgabe aus dem aufwendigen und 
LAngsam startenden System ein KlickiBunti Feature in der WErbung zu 
machen.

Wobei es natürlich auch eine ganze Reihe von Fällen gibt wo es schon 
eine Erleichterung für den Anwender darstellt. Fast überall wo viele 
verschiedene Werte erfasst und auch direkt am Gerät zumindest grob 
ausgewertet werden ist das schon eine Erleichterung.

ABER was man nicht glauben darf:
Das dieser Industrie-C mit seinem Windows oder Linux (Beziehungsweise 
leistungsfähige ARM/MIPS) dann immer die einzige Komponente ist wo 
eigene Software drauf läuft. Häufig ist diese Komponennte gerade nur das 
relativ unkritische Frontend für die Visualisierung. Die tatsächliche 
Datenerfassung und erst recht irgendwelche Zeitkritischen Regelungen 
laufen in ganz anderen Teilen der HArdware wo dann wieder 8, 16 oder 32 
Bit Microcontroller mit hochspezieller Software, wenn nicht sogar FPGA 
(in extermfällen) teilweise unter hohen Anforderungen ihren Dienst 
versehen. Gerade in den unscheinbaren Dingen steckt dabei die meiste 
Arbeit und das eigentliche know how der Firma.

(wäre es anders würden die Firmen ja auch nicht so leichtfertig mit den 
tollen Multimedia-Frontends herumwerfen die dann Plötzlich auch in das 
einfachste Produkt hineinmüssen. Wenn dort wirklich oft die meiste 
Arbeit drinstecken würde, dann wäre das schlicht und einfach viel zu 
teuer!)

Wobei ich natürich nicht sagen will das es keine "Anwendungssoftware" 
gibt die nicht auch ernormes Hintergrundwissen und know How erfordert. 
Davon gibt es sogar sehr sehr viel.

Aber gerade im Industriebereich sind es im Klicki-Bunti teil der 
Steuerung meist nicht die fordernsten Aufgaben. Da wird nur visualisiert 
und Benutzereingaben angenommen. (gibt natürlich auch Ausnahmen!)

Der Rest läuft in einer Art Multicontrollersystem ab wo jeder Controller 
seine eigene hochspezielle Aufgabe hat für die er mit seiner ganz 
eigenen Firmware ausgestattet ist. Ganz ohne OS, Grafik un 
Soundeffekten. Manchmal (aber wirklich selten) sogar noch in ASM 
Programmiert...

Gruß
carsten

von Peter D. (peda)


Lesenswert?

Falk B. schrieb:
> @Markus Müller (mmvisual)
>
>>Und noch etwas, für evt. Deine Richtung: SW-Entwickler sind eher
>>Mangelware als HW-Designer.
>
> Wirklich? Mein Eindruck ist eher anders herum!

Dein Eindruck ist richtig!
Programmierer sind deutlich leichter zu finden.

von Pandur S. (jetztnicht)


Lesenswert?

Ob 2x16 LCD, oder 64x128 LCD, oder Embeddded PC bestimmt schlussendlich 
der Markt. Ein Industrie PC bringt gewisse Kosten mit sich. zB 800E. 
Plus die Speisung dazu, plus die Kuehlung, plus die Einbaugroesse. Wenn 
der Markt das hergibt, gut. Wenn dann ein Konkurrent auf Jammern der 
Kunden etwas fuer 500 Euro bringt, weiss man der Embedded PC muss raus.

von Peter D. (peda)


Lesenswert?

Viel wichtiger als die Wahl der CPU finde ich das systematische 
Herangehen an die Aufgabe, d.h. das Aufstellen eines Pflichtenheftes und 
dann des Programmablaufplanes, sowie die Unterteilung der Funktionen in 
sinnvolle kleine Module.

Wer gleich in den Editor schreibt "int main()", der hat schon verloren, 
der ist kein Programmierer, sondern ein Frickler.
Das Programm muß erst vom Konzept her schon fertig sein, ehe man den 
Editor anschmeißt und dann einfach nur noch das Konzept Zeile für Zeile 
in Code umsetzt.
Idealer Weise hat man den Programmablaufplan schon gedanklich 
durchgespielt, ob er die Funktionen richtig umsetzt und keine logischen 
Fehler enthält.
Der Programmablaufplan kennt immer nur die Eingangssignale und nicht die 
Gedanken des Programmierers, um Entscheidungen zu treffen.

Systematisches Herangehen läßt sich durch nichts ersetzen.

von Falk B. (falk)


Lesenswert?

@ Peter Dannegger (peda)

>Viel wichtiger als die Wahl der CPU finde ich das systematische
>Herangehen an die Aufgabe, d.h. das Aufstellen eines Pflichtenheftes und
>dann des Programmablaufplanes, sowie die Unterteilung der Funktionen in
>sinnvolle kleine Module.

Kann man nicht stark genug betonen! Gilt auch für Hardware, logisch.

>Idealer Weise hat man den Programmablaufplan schon gedanklich
>durchgespielt, ob er die Funktionen richtig umsetzt und keine logischen
>Fehler enthält.

Das halte ich für ein wenig zu hoch gegriffen. Solche Fehler findet man 
bei reinen gedanklichen Durchspielen eher nicht, von 
Offensichtlichkeiten mal abgesehen.

>Der Programmablaufplan kennt immer nur die Eingangssignale und nicht die
>Gedanken des Programmierers, um Entscheidungen zu treffen.

Das ist aber ein voller Widerspruch zu dem vorherigen Satz ;-)
Was du hier meinst ist ein Simultor bzw. ein Tool zum 
Softwareengineering, das Strukturen abbilden kann.

>Systematisches Herangehen läßt sich durch nichts ersetzen.

GENAU!!!!!!!!!!

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


Lesenswert?

Peter D. schrieb:
> Wer gleich in den Editor schreibt "int main()", der hat schon verloren,
> der ist kein Programmierer, sondern ein Frickler.

Danke, dann bin ich eben ein Frickler. :-))

Gerade wenn's um kleine Controlleraufgaben geht, fange ich gern mal
damit an, einfach erstmal ein bisschen lauffähige Software zu haben,
die „keepalive“-LED vielleicht.  Von da dann Stück für Stück weitere
Dinge hinzusetzen und in Betrieb nehmen.

Wenn sich am Ende rausstellt, dass nochmal was am Konzept geändert
werden muss, finde ich das nicht schlimm: es gibt jetzt schon
ausreichend viele, in sich in ihrer Funktion bestätigte Komponenten.
Es fällt dann nicht allzu schwer, diese Komponenten beispielsweise
in eine große state machine reinzusetzen, statt der ursprünglichen
sehr simpel gehaltenen Hauptschleife.

Letztlich muss da jeder seinen Weg finden, wie er effektiv ist.  Ich
gehöre halt nicht zu den Leuten, die dafür erstmal wochenlang nur
Papier (oder Festplatten :) vollschreiben mögen, bis sie sich 
theoretisch
sicher sind, dass das Konzept jetzt steht – um dann in der Praxis doch
nur festzustellen, dass man dieses oder jenes nicht bedacht hatte.

Ansonsten volle Zustimmung zum dem schon gesagten: einfach das machen,
was einem Spaß macht.

N. G. schrieb:
> Konkret: Ist es besser bei einem Atmel-µC zu bleiben oder ist der
> Umstieg auf eine STM32 nicht schwerer?

Beides wird ähnlich schwer oder leicht sein.  Falls du ARMs von Atmel
ausprobieren willst, nimm dir möglichst was von den neueren, keine
alten SAM3/4.  Deren Peripherals sind einfach nur überalterte
Dinosaurier, die irgendjemand vergessen hat, rechtzeitig aussterben
zu lassen. ;-)  Die neueren SAMD (Cortex-M0+) und Varianten davon
sind in dieser Hinsicht um einiges angenehmer, und falls du schon mal
was mit Xmegas gemacht hast (deren Peripherie ja auch einiges komplexer
war als bei den älteren AVRs), dann wird dir da manches recht ähnlich
vorkommen.  Ein STM32F10x wiederum ist da auch nicht grundlegend
anders organisiert.

Was schon erwähnt wurde: Atmel hat mit die besten Datenblätter, es
ist so ziemlich alles in einem drin, vom Pinout über die Beschreibung
der Peripherie mit ihren Registern bis zu den elektrischen Parametern.
Nur für die Core Peripherals (also das, was von ARM selbst kommt)
verweisen sie mittlerweile auf ARM (bei SAM3/4 waren die auch noch
im Datenblatt beschrieben).  Bei einem STM32 muss man sich da schon
mal drei oder vier Dokumente angucken, um das alles zusammen zu
haben.

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.