Forum: Mikrocontroller und Digitale Elektronik uC from Scratch


von Lucas G. (elding)


Lesenswert?

Hallo alle zusammen,

im Rahmen meiner Bachelorarbeit benötige ich einen Mikrocontroller. Da 
es nicht zulässig ist einen "fertigen" uC zu nehmen muss ich diesen 
selber aufbauen.

Ich würde gerne einen uC aus der Familie der ARM Cortex nehmen, da diese 
ziemlich leistungsstark und vorallem schnell sind. Ich muss vorallem 
analoge Eingänge schnell auswerten können. (schneller als 10us) Und ich 
brauche relativ viele Pins (die genaue Anzahl weiß ich noch nicht aber 
bestimmt um die 50)
Ich habe gesehen es gibt den Arduino Due mit dem M3 und den Teensy 3.5 
mit M4. Meine "Idee" war es, einen von beiden weitestgehend 
nachzuempfinden und in meine PCB zu integrieren. Ich habe schon einige 
Threads gesehen von Leuten, die etwas Ähnliches vorhatten wie ich und 
der beste Rat war immer "lass es, nimm einfach eine fertige Lösung". Das 
ist mir aber nicht gestattet. Ich soll den uC selber bauen. Deswegen 
möchte ich die Quelle möglicher Fehler begrenzen und mich an bereits 
vorhandenen Designs wie dem Due oder Teensy orientieren.


Allerdings verstehe ich einige Sachen nicht. Und zwar bin ich mir 
unsicher was die Programmierung angeht. Die fertigen uC werden ja soweit 
ich weiß immer mit Bootloader ausgeliefert, sodass sich die 
Programmierung leichter gestaltet. Mithilfe eines USB zu RS232 lässt 
sich der uC dann programmieren (zumindest bei den Arduinos mit ATMEGA, 
beim Teensy 3.5 gibt es keinen USB to Serial Wandler, weil der Chip wie 
ich annehme diesen integriert hat?)

Wenn ich diese Prozessoren jedoch einzeln und fabrikneu bestelle, sind 
Bootloader schon drauf oder muss ich diese erst manuell auf den Chip 
schreiben? Mit welcher Hardware/Software ginge das?

Ich habe gelesen bei den SMT32- Prozessoren ist schon ein Bootloader 
drauf?
Dann könnte ich ja auch einen SMT32F303 wie diesen nehmen:
https://www.st.com/resource/en/datasheet/stm32f303vd.pdf


Beim Teensy 3.5 sieht man im Schematic (ganz unten auf der Seite)
https://www.pjrc.com/store/teensy35.html#tech

dass noch ein MKL02Z32VFG4 (MCU Cortex M0+32K flash) (1.) zusätzlich zum 
MK64FX512 (Cortex M4 und "Gehirn" des Teensys) (2.) verbaut ist. Weiß 
jemand wieso?

1.: 
https://www.mouser.de/ProductDetail/NXP-Semiconductors/MKL02Z32VFG4?qs=RECgZY%252BK1xLpPFD7GzHxWg%3D%3D

2.: 
https://www.mouser.de/ProductDetail/NXP-Semiconductors/MK64FX512VMD12/?qs=%2Fha2pyFadujpCJtEvKCpoqZE2e2wUWQscoWwmZV5MZaoray6%252BgPsTA%3D%3D

Und generell, kennt sich jemand mit dem Bau solcher uC aus und kann mir 
vielleicht einen Tipp geben, wie ich das am besten angehe/mit welchem uC 
ich es am wenigsten schwer habe?

Ich danke für eure Zeit,

Lucas

von Weasel P. (philipp_s576)


Lesenswert?

1. Du baust keinen uC sondern ein development board. Ein Arduino ist 
kein uC.
2. Brauchst du für die meisten Controller einen Programmer. Ich habe 
einen Atmel ICE.

Den Rest solltest du mit ein bisschen Suche selbst heraus finden können 
;)

von Robin (Gast)


Lesenswert?

Du verwechselst glaube ich Microcontroller (Stm32 oder Atmel AVR) mit 
einen Dev Kit (teensy oder Arduino)

von Achim M. (minifloat)


Lesenswert?

Der μC ist der ARM Cortex oder Atmega oder oder.

Du willst ein embedded System bauen.

Was ist denn das Thema der Arbeit?

Lucas G. schrieb:
> Ich muss vorallem analoge Eingänge schnell auswerten können.

Ist Datendurchsatz oder schnelle Reaktionszeit die Prämisse?

mfg mf

: Bearbeitet durch User
von OldMan (Gast)


Lesenswert?

Lucas G. schrieb:
> Da es nicht zulässig ist einen "fertigen" uC zu nehmen muss ich diesen
> selber aufbauen.

Diese Aussage ist völlig daneben, wenn man sich Deinen nachfolgenden 
Text durchliest.
Du meinst damit, dass Du keine fertiges Board nehmen darfst? Oder?

Und dann kommst Du auch noch mit Arduino um die Ecke? Oh, oh.

Hast Du dir schon ein schriftliches Anforderungsprofil erstellt?
Erst dann kannst Du eine uC auswählen.

von Weasel P. (philipp_s576)


Lesenswert?

Weil ich nett bin:
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Eine nicht böse gemeinte Frage:
Für was für einen Studiengang schreibst du diese Arbeit?
Du scheinst mir ja nciht wirklich ein E-Techniker zu sein.

von Frank K. (fchk)


Lesenswert?

Du wirst einen externen Programmer brauchen, der über JTAG/SWD, ICSP 
(Microchip) oder was auch immer geht. Darüber lädst Du Deinen Code, 
setzt Breakpoints, schaust Dir Variablen und Speicher an und startest 
oder stoppst die Ausführung.

Arduino macht das anders. Mussten sie auch, weil die AVRs das anfangs 
auch nicht anders konnten. Das ist aber doof: Fire&Forget. Code in den 
Prozessor laden, schauen ob geht (ohne die Möglichkeit, den Prozessor 
über die Schulter zu schauen), andern, nächster Versuch.

Eingebaute Bootloader sind eher für das Updaten im Feld.

fchk

von Micha W. (blackxiiv)


Lesenswert?

Moin Lucas,

Lucas G. schrieb:
> Ich muss vorallem
> analoge Eingänge schnell auswerten können. (schneller als 10us) Und ich
> brauche relativ viele Pins (die genaue Anzahl weiß ich noch nicht aber
> bestimmt um die 50)

Wie viele analoge Eingänge? Die 50 Pins digital/analog - Input/Output?

Lucas G. schrieb:
> Allerdings verstehe ich einige Sachen nicht. Und zwar bin ich mir
> unsicher was die Programmierung angeht. Die fertigen uC werden ja soweit
> ich weiß immer mit Bootloader ausgeliefert, sodass sich die
> Programmierung leichter gestaltet. Mithilfe eines USB zu RS232 lässt
> sich der uC dann programmieren (zumindest bei den Arduinos mit ATMEGA,
> beim Teensy 3.5 gibt es keinen USB to Serial Wandler, weil der Chip wie
> ich annehme diesen integriert hat?)

STM hat (meistens) einen "Bootloader" eingebrannt mit dem man an den 
Chip/Flash kommt. AVR/PIC kann man mit Bootloadern befeuern und die 
machen, dass dann über USB-UART-Bridge. Ist aber auch nicht die einzige 
Möglichkeit. Man kann zB nem AVR8 mit richtig gewähltem Quarz einen 
Bootloader verpassen, damit er sich über USB am Rechner meldet und sich 
brennen lässt (DFU?).

ABER fast alle Anliegen gehen schon viel zu weit.

OldMan schrieb:
> Hast Du dir schon ein schriftliches Anforderungsprofil erstellt?
> Erst dann kannst Du eine uC auswählen.

So nämlich.
Ist nicht bös gemeint aber damit kann hier keiner was anfangen - Also:
Konkrete Beschreibung der Aufgabe. Zur Not male einfach ein 
Blockschaltbild mit möglichst vielen Details. Dann kann man eventuell 
das erste mal erahnen welche Fallstricke da noch warten.

gruß (:

von Cyblord -. (cyblord)


Lesenswert?

Lucas G. schrieb:
> im Rahmen meiner Bachelorarbeit benötige ich einen Mikrocontroller. Da
> es nicht zulässig ist einen "fertigen" uC zu nehmen muss ich diesen
> selber aufbauen.

Hoffentlich büffelst du vorher erst noch die korrekte Terminologie. 
Nicht dass noch der aller Letze Rest von Wissenschaftlichkeit abhanden 
kommt. Ist ja bei einer Bachelorette sowieso nicht üppig damit.
Aber wenn man nicht mal weiß von was man eigentlich redet. Oh je!

von PittyJ (Gast)


Lesenswert?

Ich habe einen NXP 11U68. Den kann man auch ganz einfach über USB 
programmieren. Einen Pin setzen, und dann meldet sich der Prozessor als 
USB Mass Storage Device, und die Firmware wird einfach drauf kopiert.

Bei STM 32H Prozessoren gibt es auch ein USB Programmier-Modus. Der 
Prozesser geht per Pin in einen DFU Modus, und kann mit einem Programm 
dfu_util (Open Source) programmiert werden.

Bei beiden Prozessoren habe ich keine andere Hardware wie Jtag etc 
benötigt.

von M. K. (schuk0)


Lesenswert?

Ich würd mal Ben Eater fragen ;-)
Mit Mikro hat das dann allerdings nichts mehr zu tun.

von ... (Gast)


Lesenswert?

> Dev Kit (teensy oder Arduino)

Ein "Dev Kit" ohne ordentlichen Debugger?
Ich glaub du verwechselt da selber was.

Serielle Bootlader werden ohne voellig ueberbewertet.

Einziger sinnvoller Einsatz sind Controller ohne internes
Flash die solcher Darreichung beduerfen.

von Lucas G. (elding)


Lesenswert?

Weasel P. schrieb:
> Für was für einen Studiengang schreibst du diese Arbeit?
> Du scheinst mir ja nciht wirklich ein E-Techniker zu sein.

Haha, stimmt. Bin eher Maschinenbauer. Luft- und Raumfahrttechnik um 
genau zu sein. Ich hatte in meinem Studium nur ein klitzekleines Modul 
über die Basics der E-Technik. Warum habe ich mir dann so ein Thema 
ausgesucht?
Weil ich mich doch heimlich zur E-Technik hingezogen fühle. Ich 
beschäftige mich schon seit Jahren immer mal wieder hobbymäßig damit. 
Aber bisher hab ich immer Arduinos genommen. Und die "Aufgaben" waren 
relativ simpel. (Stepper/ DC Motor ansteuern, LED ansteuern etc.)

Robin schrieb:
> Du verwechselst glaube ich Microcontroller (Stm32 oder Atmel AVR) mit
> einen Dev Kit (teensy oder Arduino)

Achim M. schrieb:
> Der μC ist der ARM Cortex oder Atmega oder oder.
>
> Du willst ein embedded System bauen.

Ok, verstanden. Danke für die Korrektur.

OldMan schrieb:
> Lucas G. schrieb:
>> Da es nicht zulässig ist einen "fertigen" uC zu nehmen muss ich diesen
>> selber aufbauen.
>
> Diese Aussage ist völlig daneben, wenn man sich Deinen nachfolgenden
> Text durchliest.
> Du meinst damit, dass Du keine fertiges Board nehmen darfst? Oder?
>
> Und dann kommst Du auch noch mit Arduino um die Ecke? Oh, oh.

Es geht an sich nur darum, einen uC selber einzubetten. Es spricht 
nichts dagegen, alle Komponenten und die Beschaltung eines Dev Kit wie 
Arduino oder Teensy zu kopieren. Nur "Dev Kit kaufen" -> "Dev Kit 
drauflöten oder stecken" darf ich nicht. Ein fertiges Kit wie der Teensy 
3.5 ist vielleicht nicht perfekt auf mein Projekt zugeschnitten und hat 
dann viele Funktionen die ich womöglich nicht brauche aber es gibt mir 
etwas, mit dem ich anfangen kann. Und von dem ich weiß, dass es 
funktioniert. Der uC ist nämlich nur ein kleiner Teil meiner Arbeit und 
diese ist relativ knapp bemessen was Zeit angeht.

Micha W. schrieb:
> OldMan schrieb:
>> Hast Du dir schon ein schriftliches Anforderungsprofil erstellt?
>> Erst dann kannst Du eine uC auswählen.
>
> So nämlich.
> Ist nicht bös gemeint aber damit kann hier keiner was anfangen - Also:
> Konkrete Beschreibung der Aufgabe. Zur Not male einfach ein
> Blockschaltbild mit möglichst vielen Details. Dann kann man eventuell
> das erste mal erahnen welche Fallstricke da noch warten.

Hab ich noch nicht, aber das werde ich jetzt tun.
Ich habe hier nichts als "böse" wahrgenommen. Sondern ich danke euch für 
jede Antwort und berechtigte Kritik an meinem Vorgehen.
Gebt mir ein bisschen Zeit, ich melde mich dann nochmal mit einem 
Blockschaltbild.

von Lucas G. (elding)


Lesenswert?

Cyblord -. schrieb:
> Hoffentlich büffelst du vorher erst noch die korrekte Terminologie.
> Nicht dass noch der aller Letze Rest von Wissenschaftlichkeit abhanden
> kommt. Ist ja bei einer Bachelorette sowieso nicht üppig damit.
> Aber wenn man nicht mal weiß von was man eigentlich redet. Oh je!

Spätestens seit dem TV-Format hat der Begriff eh seine 
wissenschaftlichkeit verloren.
Ansonsten kann ich nur sagen: stimmt! Hab tatsächlich relativ wenig 
Ahnung wie man sieht. Aber ich bin hier um das zu ändern.

von Cyblord -. (cyblord)


Lesenswert?

Lucas G. schrieb:

> Ansonsten kann ich nur sagen: stimmt! Hab tatsächlich relativ wenig
> Ahnung wie man sieht. Aber ich bin hier um das zu ändern.

Eine Bachelorarbeit soll ja eigentlich deinen Lernerfolg dokumentieren. 
Es macht wenig Sinn hier ein Thema zu wählen von dem man wenig Ahnung 
hat. Hättest du das Ändern wollen, hättest du während des Studium genug 
Zeit dazu gehabt.
Natürlich kann und soll eine Bachelorarbeit neue Aspekte enthalten die 
man sich erst erarbeiten muss. Aber dann in einem vertrauten Gebiet.

von Weasel P. (philipp_s576)


Lesenswert?

Maschinenbauer, ok dann lassen wir das einmal gelten.


Such dir erstmal einen ATMega fürs Steckbrett. Hier kannst du nämlich 
einen Arduino als Programmer verwenden.
Lad dir Atmel Studio runter und probier hier erstmal ein bisschen herum 
um ein Gefühl dafür zu bekommen.

Dann solltest du erst du größeren Controllern gehen.


Darf man Fragen was das am Ende werden soll?
Villeicht brauchst du im Endeffekt garnicht so viele Pins.

von Lucas G. (elding)


Lesenswert?

Cyblord -. schrieb:
> Lucas G. schrieb:
>
>> Ansonsten kann ich nur sagen: stimmt! Hab tatsächlich relativ wenig
>> Ahnung wie man sieht. Aber ich bin hier um das zu ändern.
>
> Eine Bachelorarbeit soll ja eigentlich deinen Lernerfolg dokumentieren.
> Es macht wenig Sinn hier ein Thema zu wählen von dem man wenig Ahnung
> hat. Hättest du das Ändern wollen, hättest du während des Studium genug
> Zeit dazu gehabt.
> Natürlich kann und soll eine Bachelorarbeit neue Aspekte enthalten die
> man sich erst erarbeiten muss. Aber dann in einem vertrauten Gebiet.

Mit den Grundlagen, die man im Bachelorstudium lernt hat man eigentlich 
nicht wirklich "Ahnung" von irgendwas. Zumindest von nichts Praktischem. 
Ich habe kein Thema gesehen bei dem keine intensive Recherche notwenig 
gewesen wäre.
Davon abgesehen hast du bestimmt Recht und das nehme ich mir gerne zu 
Herzen für meine Masterarbeit, aber das Thema steht jetzt fest. Ab jetzt 
helfen mir nur noch Tips zum Thema.

Weasel P. schrieb:
> Darf man Fragen was das am Ende werden soll?

Meine Aufgabe ist es, eine Steuerung für galvanische Zellen zu bauen.
Die besteht aus Stromversorgung der einzelnen Zellen, 
Temperatursensoren, Drucksensoren, Heizer und Ventile.

Weasel P. schrieb:
> Villeicht brauchst du im Endeffekt garnicht so viele Pins.

Die Schalter für Heizer und Ventile sowie die ADCs der Sensoren könnte 
man wahrscheinlich Pin-sparend über I²C anschließen, aber die 
Stromversorgung benötigt ein paar Pins.
Da sind z.B. DC/DC Wandler involviert die Alarm Ausgänge haben, Schalter 
um die Zellen ein- und auszuschalten, Strom- und Spannungsmessung an 
jeder Zelle.

Wie gesagt, ich melde mich nochmal mit einem Blockschaltbild.

von M.A. S. (mse2)


Lesenswert?

Lucas G. schrieb:
> im Rahmen meiner Bachelorarbeit...

Lucas G. schrieb:
> Meine Aufgabe ist es,...

Alles nur quergelesen aber: so, wie Du die Aufgabe bis jetzt 
beschreibst, ist das die Entwicklung und der Aufbau einer Hardware sowie 
deren Programmierung.
Mir kommt das für eine Bachelorarbeit ganz schön viel vor. Wieviel Zeit 
hat man für sowas heutzutage?

Zu meiner Zeit (Diplom-Studiengang) hatte man für Studien- und 
Diplomarbeit offiziell drei Monate Zeit. Allerdings war es damals 
(zumindest an der TUB) allgemein üblich, erstmal anzufangen, so gut wie 
fertig zu werden und dann erst offiziell anzumelden, um alles in den 
drei Monaten zusammenzuschreiben (was schon Stress genug war).
Bei dieser Vorgehensweise war es dann natürlich möglich, dickere Bretter 
zu bohren.

: Bearbeitet durch User
von A. S. (Gast)


Lesenswert?

Überlege Dir, ob es auch ein bisschen kleiner geht. Also mit einem 
kleinen (weniger Pins) uC ein oder 2 Zellen.

Wenn Du uC und verteilte Sensoren und SPS/Event und und und auf einmal 
machst, bleibt für die eigentliche Verfahrenstechnik keine Zeit.

Wenn Du dagegen eine schlagkräftige Zelle baust, kann jemand nach dir 
das auf beliebige Größen skalieren.

von MiroWierdo (Gast)


Lesenswert?

Ja ne, iss klar...

Wo ganze Firmen von leben soll jemand in seiner Bachelorarbeit machen :>

von Der müde Joe (Gast)


Lesenswert?

Du schriebst: "Die fertigen uC werden ja soweit ich weiß immer mit 
Bootloader ausgeliefert, sodass sich die Programmierung leichter 
gestaltet. Mithilfe eines USB zu RS232 lässt sich der uC dann 
programmieren (zumindest bei den Arduinos mit ATMEGA, beim Teensy 3.5 
gibt es keinen USB to Serial Wandler, weil der Chip wie ich annehme 
diesen integriert hat?)

Wenn ich diese Prozessoren jedoch einzeln und fabrikneu bestelle, sind
Bootloader schon drauf oder muss ich diese erst manuell auf den Chip
schreiben? Mit welcher Hardware/Software ginge das?"


Bootloader findet man sehr häufig bei den etwas kleineren Bauformen, CSP 
zum Beispiel. Das kommt daher, dass man kaum sogenannte 
"Programmiersockel" für diese Gehäuseformen bekommt.

Es gibt aber auch Hersteller, die die Politik verfolgen, komplett alle 
Controller mit integriertem Bootloader auszuliefern.

So ist dann natürlich ein Aufspielen der Software recht einfach. Zudem 
kann man die meisten Controller auch vorprogrammiert bestellen, ab Werk, 
oder von einem Drittanbieter. Dann kommen die Teile gegurtet, aber 
fertig programmiert.

Generell werden die Controller mit der Software vom Hersteller, der 
Programmier-Umgebung, programmiert. Um nur einfach das Flash mittels 
Bootloader zu beschreiben, gibt es dann auch eine kleine 
Konsolen-Anwendung (vom Hersteller), oder es reicht aus, mit einem 
Konsolen-Befehl ganz einfach ein File über die serielle oder 
USB-Schnittstelle zu übertragen. Das wäre für Updates im Feld die 
simpelste Variante.

von Wolfgang (Gast)


Lesenswert?

Der müde Joe schrieb:
> Mithilfe eines USB zu RS232 lässt sich der uC dann
> programmieren (zumindest bei den Arduinos mit ATMEGA, beim Teensy 3.5
> gibt es keinen USB to Serial Wandler, weil der Chip wie ich annehme
> diesen integriert hat?)

Für Arduino Boards brauchst du keinen USB zu RS232 Wandler. Die meisten 
haben bereits eine USB-Schnittstelle drauf und selbst bei einem Arduino 
pro Mini kämest du damit nicht weiter, weil der nichts mit RS232 
anfangen kann.

von Stefan F. (Gast)


Lesenswert?

Lucas G. schrieb:
> Wenn ich diese Prozessoren jedoch einzeln und fabrikneu bestelle,
> sind Bootloader schon drauf oder muss ich diese erst manuell auf
> den Chip schreiben?

Bezieht sich die Frage jetzt pauschal auf alle Mikrocontroller, oder auf 
einen bestimmten?

Manche haben Bootloader schon ab Werk drauf. Manche nicht.

> Mit welcher Hardware/Software ginge das?

Hängt vom Mikrocontroller ab und steht in dessen Dokumentation. Den 
wenigen Infos nach könnte der von dir gewählte STM32F303 in die richtige 
Richtung gehen. Den gibt es in unterschiedlichen Größen. Deine Fragen zu 
Bootloader, Programmierschnittstelle und Software sind dort beantwortet: 
http://stefanfrings.de/stm32/stm32f3.html

Du solltest die Entwicklung auf jeden Fall mit einem fertigen Board 
beginnen, auf das du dich verlassen kannst. Erst später, wenn das 
Programm fertig ist, macht es Sinn, eine eigene Platine zu entwickeln. 
ST bietet für diesen Zweck äußerst preisgünstige "Nucleo" Boards an. Von 
deren Design darfst du auch gerne abgucken, die sind dafür gemacht 
worden.

Während der Entwicklungsphase willst du sicher auch einen Debugger 
nutzen, deswegen versteife dich da mal nicht zu sehr auf den Bootloader. 
Der wird erst in der Serienfertigung interessant.

PS: Als Student kurz vor dem Bachelor solltest du nicht mehr die 
Begriffe "Mikrocontroller", "Prozessor" und "Platine mit 
Mikrocontroller" durcheinander werfen.

von Wolfgang (Gast)


Lesenswert?

Der müde Joe schrieb:
> Wenn ich diese Prozessoren jedoch einzeln und fabrikneu bestelle, sind
> Bootloader schon drauf oder muss ich diese erst manuell auf den Chip
> schreiben?

Woher soll der Hersteller des µC wissen, welchen Bootloader du drauf 
haben möchtest. Wenn du nicht gerade größere Stückzahlen orderst, wirst 
du selber einen draufspielen müssen. Dafür gibt es z.B. fertige 
Programmiergeräte, die mit geeigneten Daten von oder aus deiner 
Entwicklungsumgebung gesteuert werden.

Mit welcher Hardware/Software ginge das?"
Für AVR Controller ginge das z.B. mit einem Arduino

von Stefan F. (Gast)


Lesenswert?

Lucas G. schrieb:
> Es geht an sich nur darum, einen uC selber einzubetten.
> Nur "Dev Kit kaufen" (und) drauflöten oder stecken" darf ich nicht.

Ok, das ist eine klare Ansage. Finde ich bei deinem Studiengang zwar 
nicht angemessen, aber sei's drum.

> Ein fertiges Kit wie der Teensy 3.5 ...
> gibt mir etwas, mit dem ich anfangen kann.

Das sehe ich anders, denn es widerspricht eindeutig der obigen 
Anforderung!

Aber ich würde dir raten, diesen Punkt nochmal zu diskutieren, denn so 
ein fertiges Entwicklungs-Board wird dir die Arbeit erheblich 
vereinfachen und verkürzen.

von Christian H. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> PS: Als Student kurz vor dem Master solltest du nicht mehr die Begriffe
> "Mikrocontroller", "Prozessor" und "Platine mit Mikrocontroller"
> durcheinander werfen.

Als Maschinenbauer wird das ganze sowieso in einem Abwasch als 
"Steuerung" betitelt.

von NichtWichtig (Gast)


Lesenswert?

Lucas G. schrieb:
>
> Meine Aufgabe ist es, eine Steuerung für galvanische Zellen zu bauen.
> Die besteht aus Stromversorgung der einzelnen Zellen,
> Temperatursensoren, Drucksensoren, Heizer und Ventile.
>
> Weasel P. schrieb:
>> Villeicht brauchst du im Endeffekt garnicht so viele Pins.
>
> Die Schalter für Heizer und Ventile sowie die ADCs der Sensoren könnte
> man wahrscheinlich Pin-sparend über I²C anschließen, aber die
> Stromversorgung benötigt ein paar Pins.
> Da sind z.B. DC/DC Wandler involviert die Alarm Ausgänge haben, Schalter
> um die Zellen ein- und auszuschalten, Strom- und Spannungsmessung an
> jeder Zelle.
>
> Wie gesagt, ich melde mich nochmal mit einem Blockschaltbild.

Bei sowas helfen einem die seriellen Schnittstellen. I2C, SPI

Es macht z.B. Sinn Inputs (egal ob ADC oder Digital) an einem anderen 
i2c Bus zu hängen wie ausgehende Bausteine (DACs, Digitale outouts, PWMs 
, etc)

Einarbeiten in z.b. die i2c Struktur und dort dann soviele externe Chips 
anbinden wie für die Aufgabe notwendig ist.

Mit 400KHz lassen sich schon eine Menge Daten lesen/schreiben.

Mitunter helfen auch i2c-Weichen die noch mehr Spielraum für Chips 
bieten.

Ein simpler Bluepill (40pin DIL) ist ein nackter Prozessor dessen Pins 
Bastelfreunlich auf 2 Steckleisten verfügbar sind. (STM32F103)
Kraftvoller als die AVRs im DIL Gehäuse.

Da Du nicht vom Fach bist wird es damit schon sportlich genug.

von W.S. (Gast)


Lesenswert?

Lucas G. schrieb:
> im Rahmen meiner Bachelorarbeit benötige ich einen Mikrocontroller. Da
> es nicht zulässig ist einen "fertigen" uC zu nehmen muss ich diesen
> selber aufbauen.

Erstens: eigentlich sollte eine wissenschaftliche Arbeit etwas sein, das 
nicht zusammengeramscht wurde, sondern eine eigene wissenschaftliche 
Leistung darstellt. OK, das scheint heutzutage nicht mehr en vogue zu 
sein.

Zweitens wirst du selbstverständlich einen fertigen µC nehmen: das ist 
ein Plastikstück mit diversen Anschlüssen und etwas Silizium drinnen.

Ansonsten: Mache dir zu allererst einen Plan. Und zwar einen 
qualifizierten Plan. Dazu gehört auch, dir diverse Datenblätter und 
Referenzmanuals zu den in Frage kommenden µC anzuschauen. Manche lesen 
sich einfacher und verständlicher, andere nicht - und das ist 
individuell verschieden.

Manche µC haben einen Bootlader drin, andere nicht. So ein Bootlader ist 
dann fest drin, in einen ROM gebrutzelt und von dir nicht löschbar. Und 
er steht normalerweise auch außerhalb des dir  zugänglichen 
Speicherbereiches. Vorschläge meinerseits: LPCxxx von NXP oder STM32 von 
ST. Die Chips von Freescale (MKL02Z32VFG4....etc) haben normalerweise 
keinen Bootlader, es sei denn, daß sich da entsprechende Neuerungen 
eingestellt haben. Auch die µC von Nuvoton haben keinen Bootlader, dafür 
aber einen LDROM, also einen separaten Bereich, wo man sowas selber 
machen könnte - ja: konjunktiv.

So, wen du wirklich viele I/O brauchst, dann schau nach Chips mit 
150..208 Pins. Sowas läßt sich noch gut löten und paßt auch noch auf 
eine kleine LP drauf, wenn man sich Mühe gibt. Dein Board mußt du 
natürlich selber machen, also ist da das Arbeiten mit einem EDA System 
angesagt.

W.S.

von foobar (Gast)


Lesenswert?

Du hast da eine ziemlich umfangreiche Aufgabe und die Sache, um die du 
dir Gedanken machst, ist, wie du das Programm auf den µC bekommst?!? 
MMn ist das die trivialste Sache bei dem Projekt - das ist ein Problem 
das andere schon für dich gelöst haben, wirst schon irgendwann erfahren, 
was du machen musst[1].

So wie ich die Aufgabe sehe, kannst du 90% davon erledigen, ohne dich 
auf einen konkreten µC festzulegen.  Wenn du soweit bist, hast du einen 
guten Überblick, was der können muss und dann kannst du einen aussuchen.

Aus dieser Perpektive heraus finde ich die Anforderung, den "µC" selbst 
bauen zu müssen, ziemlich hanebüchen, insb wenn es eh erlaubt ist, 
bestehende Designs einfach abzukupfern.  Da steckt keine Leistung drin - 
nur ein wenig Mehrarbeit und Gängelei.  Im Rest steckt die gesamte 
Arbeit ...



PS: Bei den Teensies wär ich vorsichtig - den zusätzliche µC, den du 
gefunden hast, ist der Kopierschutz.

von Florian S. (vatterger)


Angehängte Dateien:

Lesenswert?

Wenn er den MCU mit internem Oszillator betreibt sollte es doch 
überhaupt kein Problem sein ein Board zu erstellen:

1. Pro VCC-Pin ein Bypass-MLCC-Kondensator ~0.1uF

2. Ein Bulk MLCC-Kondensator an VCC mit ~4.7uF irgendwo in der Nähe des 
MCU

3. Bei ADC-Nutzung: VDDA Beschaltung (oft 0.1uF + 1uF) aus dem 
Datenblatt abkucken: Je nachdem ob du mit VCC, interner Referenz oder 
externer Referenz misst wird das minimal abweichen womit VDDA verbunden 
wird.

4. RST und BOOT Pins nach Datenblatt beschalten, beim STM32G431 muss man 
diese z.B. nicht mal beschalten, da sind die optional und können per 
Programmer und Firmware gesetzt/aktiviert/gesteuert werden. Beim den 
STM32F103 ist das nicht so.

5. Niemals die SWD Pins vergessen: SWDIO und SWCLK, diese am besten 
zusammen mit GND und VCC zu einem 4x1 Header wie bei der Bluepill 
rausführen, das ist dein "Bootloader+Debugger" Anschluss. Der im ROM 
gespeicherte Bootloader ist für die Produktion/Updates wo fertig 
debuggte Firmware aufgespielt wird.

KiCAD sollte einige STM32 (und ATmega) Symbole bereits in der 
Standard-lib haben. In dem angehängten Bild siehst du wie ich den 
STM32G431 für eine rein digitale Schaltung mit interner VDDA-Referenz 
beschaltet habe.


Die Probleme fangen erst so richtig an wenn du das Teil programmieren 
musst, wie viel Erfahrung ist denn da vorhanden?

STM32CubeIDE + STM32CubeProgrammer + für 2€ einen ST-Link v2 würde ich 
für einen STM32-Anfänger empfehlen, wenn es denn STM32 sein soll. Teensy 
kannst du vergessen wegen dem proprietären Bootloader-Chip, wie schon 
gesagt wurde.

Falls du mit AVR/Arduino schon was gemacht hast und dein Projekt damit 
gut umsetzbar ist, gelten die obigen Tipps genauso, bloß dass du die 
ISP-Pins statt SWD rausführen musst, auch da würde ich den 
Arduino-Bootloader nicht unbedingt benutzen, ISP geht halt immer.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Lucas G. schrieb:
> Und ich brauche relativ viele Pins ... bestimmt um die 50

Wofür so viele?

Lucas G. schrieb:
> aber die Stromversorgung benötigt ein paar Pins.

Ach so. Aber die Stromversorgung kommt nicht vom Mikrocontroller sondern 
vom Netzteil. Und da kann man an nur zwei Pins (Plus und GND) viele 
Verbraucher anschließen.

von Stefan F. (Gast)


Lesenswert?

NichtWichtig schrieb:
> Ein simpler Bluepill (40pin DIL) ist ein nackter Prozessor dessen Pins
> Bastelfreunlich auf 2 Steckleisten verfügbar sind. (STM32F103)
> Kraftvoller als die AVRs im DIL Gehäuse.

Ja, aber ausgerechnet von denen muss ich derzeit leider abraten, da 
offenbar fast nur noch schlechte Fälschungen verkauft werden. Für 
Anfänger bringt das unnötige Probleme.

von Stefan F. (Gast)


Lesenswert?

W.S. schrieb:
> 150..208 Pins. Sowas läßt sich noch gut löten

Sagt der Profi. Ich bin an 100 Pins kläglich gescheitert.

von oerks (Gast)


Lesenswert?

Wenn du (TO) Anfaenger bist, nimm blos keinen 32-bitter,
also irgendwelche STM32 oder LPC.
Und lass dir nicht aufschwatzen, elementare IO auch noch
extern anschliessen zu muessen.
Damit wirst du mit Sicherheit in der Zeit nicht fertig.

Fuer so langweiliges Zeug was du da treiben willst reicht
ein viel uebersichtlicherer 8-bitter alle mal.

Ein Silabs C8051F020 hat
8 12 bit ADC-Eingaenge
8 8 bit ADC-Eingaenge
2 12 bit DAC-Ausgaenge
noch 8 Ports mit je 8 GPIO (das macht 64 GPIOs 5 V-tolerant).
Den anderen Kleinkram wie I2C, UARTs, SPI und Timer
hat er natuerlich auch noch.

Den kann man per JTAG auch vernuenftig debuggen.

Und lass dir nicht von irgendwem einreden der waere zu alt.
Irgendwelche Adruinos fuehren bei Studienarbeiten immer zu
Abwertungen in der Note. Und das mit Recht!

Ein bewaehrter 8051 macht da viel mehr her.

von dummschwaetzer (Gast)


Lesenswert?

>Ich muss vorallem
>analoge Eingänge schnell auswerten können. (schneller als 10us)
µ kaputt?
Das ist wahrscheinlich das KO-Kriterium für die meisten Atmel...

Da brauchst du ordentlich Rechenpower! Und DMA! Und möglichst mehr als 
einen ADC im µC!
Wie groß ist denn die Ausgangsimpedanz deine ADC-Quellen? Die haben 
nämlich sehr großen Einflus auf deine sample + hold Zeit. bei >10k bist 
du da bei einigen ADCs bereits über 10µs.

Stefan ⛄ F. schrieb:
> könnte der von dir gewählte STM32F303 in die richtige
> Richtung gehen.

Der klingt erst mal ganz gut.

Das NUCLEO köntest du eventuell auch mit der Arduino-IDE programmieren.

von dummschwaetzer (Gast)


Lesenswert?

oerks schrieb:
> Ein Silabs C8051F020 hat

mit 25MHz und 100ksps sehr knapp

von Pille (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> NichtWichtig schrieb:
>> Ein simpler Bluepill (40pin DIL) ist ein nackter Prozessor dessen Pins
>> Bastelfreunlich auf 2 Steckleisten verfügbar sind. (STM32F103)
>> Kraftvoller als die AVRs im DIL Gehäuse.
>
> Ja, aber ausgerechnet von denen muss ich derzeit leider abraten, da
> offenbar fast nur noch schlechte Fälschungen verkauft werden. Für
> Anfänger bringt das unnötige Probleme.

Dann empfehle ich GD32F103, die gibts bisher nur als Original...

Solnnderblödsinn?

Pille

von Lucas G. (elding)


Angehängte Dateien:

Lesenswert?

M.A. S. schrieb:
> Alles nur quergelesen aber: so, wie Du die Aufgabe bis jetzt
> beschreibst, ist das die Entwicklung und der Aufbau einer Hardware sowie
> deren Programmierung.

Korrekt.

M.A. S. schrieb:
> Mir kommt das für eine Bachelorarbeit ganz schön viel vor. Wieviel Zeit
> hat man für sowas heutzutage?

Ich habe 4 Monate Zeit. Das Vorgehen was du meintest, also anzufangen 
vor der Anmeldung kenne ich auch. Haben Kommilitonen von mir gemacht, 
aber offiziell ist das nicht erlaubt. Ich halte mich an die 4 Monate.
Ich muss jedoch dazu sagen dass die Programmierung zwar Teil der 
Gesamtaufgabe ist, aber nicht der Bachelorarbeit. Ich mache im Anschluss 
noch ein Praktikum um die Programmierung fertig zu stellen. BA hat also 
den Fokus auf die Entwicklung dieser Steuereinheit.

dummschwaetzer schrieb:
> Wie groß ist denn die Ausgangsimpedanz deine ADC-Quellen?
Hmm, die weiß ich von den meisten Quellen nicht. Die Zellen haben eine 
Impedanz von unter einem Ohm. Die Ausgangsimpedanz der Drucksensoren und 
der Amplifier weiß ich nicht.

Florian S. schrieb:
> Die Probleme fangen erst so richtig an wenn du das Teil programmieren
> musst, wie viel Erfahrung ist denn da vorhanden?

Hab schon viel mit der Arduino IDE und ein bisschen mit Eclipse 
programmiert. Bin aber nie wirklich tief in die Materie eingetaucht. Ich 
habe mal einen Watchdog-Timer der eine ISR aufruft auf einen Arduino 
implementiert. Dafür musste ich Bits in bestimmten Registern setzen. Da 
lacht ihr jetzt bestimmt drüber aber vielleicht ist das ja schon was.

Mit KiCad komme ich klar. Wäre nicht die erste Platine, die ich mache. 
Nur die erste mit einem eingebetteten uC.

Was alle anderen Antworten angeht: tut mir leid, dass ich nicht auf jede 
einzelne eingehen kann, es sind zu viele. Trotzdem Danke für jede 
Antwort.
Ich habe jetzt wie versprochen das Blockschaltbild angehangen und 
versuche, das Ganze noch ein bisschen besser zu erklären:

- Zu den Heizungen/Ventilen gibt es keine besonderen Anforderungen. 
Diese sollen ein/ausschaltbar sein mit Frequenzen unter 1 Hz. Dafür habe 
ich mit dem LTC1623 einen Dual High Side Switch, welcher I²C-fähig 
(100kHz) ist, gefunden. Der schaltet zwar nicht so schnell und hat 
maximal 8 Adressen, was die Anzahl an Schalter auf 16 pro Bus begrenzt, 
aber er sollte für die Aufgabe ausreichend sein. Ich bin aber offen für 
Vorschläge besserer Chips.

- Thermocouples: bekommen Filter und Verstärker und werden mithilfe des 
MCP3428, ein 4-Kanal 16 Bit I²C-fähiger ADC ausgelesen. Die 
Drucksensoren liefern 0..10V und werden mit dem gleichen ADC ausgelesen. 
Dieser unterstützt Busgeschwindigkeiten von bis zu 3,4MHz, aber Temp. 
und Druck müssen nicht all zu schnell ausgelesen werden (max 100Hz), 
weshalb eine Busgeschwindigkeit von 400kHz ausreichend sein sollte.
Auch der ADC hat maximal 8 Adressen, was die Anzahl der Eingänge auf 32 
pro Bus begrenzt.

- Die Zellen sind das Herzstück der Anlage. Und in Dimension und Anzahl 
vorgegeben. Es gibt 8 Zellen, die unabhängig voneinader mit Strom 
versorgt werden sollen. Deswegen hat jede Zelle ihren eigenen 
DC/DC-Wandler mit I²C. Die Spannung soll nämlich einstellbar sein. 
(siehe meinen anderen Thread (geringe Spannung mit PMOS schalten) bei 
Interesse) Diese DC/DC-Wandler (BMR463) ermöglichen es, 21 
unterschiedliche Adressen einzustellen und arbeiten mit 
Geschwindigkeiten von 100 und 400kHz. Die Wandler verwende ich auf dem 
gleichen Bus wie die ADCs bei den Zellen. Dann sind allerdings Outputs 
und Inputs auf dem gleichen Bus (macht das wirklich Probleme oder trennt 
man das nur weils "schöner" ist?)

Zur Überwachung der Zellen muss ich Strom und Spannung ermitteln. Die 
Spannung über dem Shunt (für Strommessung) messe ich mithilfe des ADCs 
(MCP3428), ebenso wie die Alarm-Ausgänge der DC/DC Wandler.
Die Spannung an der Zelle (nehme ich vom Bauteil "Terminal" im 
Blockschaltbild) messe ich nicht mit dem ADC. Der Grund folgt weiter 
unten.

Die Driver bei den Zellen möchte ich direkt vom uC ansteuern. Das macht 
dann also 8 nötige Digital Outputs. Grund ist, dass ich die NMOS schnell 
abschalten muss. Der LTC1632 ist ne lahme Gurke. Ich habe keinen 
"schnellen" Treiber gefunden (t_off < 5us) der mit I²C arbeitet. 
Vielleicht habe ich auch nach den falschen Teilen gesucht. Bin auch hier 
offen für Vorschläge.
Habe jetzt den 1ED44173N01B (weil schnell und nicht invertierend)

Warum muss ich die Mosfet schnell schalten können? Ich messe die 
Impedanz der Zelle mittels Current Interrupt (für Health-monitoring, ca 
ein mal pro Sekunde). Also Spannung vorher messen, Strom kurz 
abschalten, Spannung nochmal messen, Strom wieder an. Aus der Differenz 
der Spannung vor und nach dem Abschalten (und des Stroms) errechne ich 
die Impedanz. Die "Restspannung" fällt natürlich weiter  und je später 
ich messe, umso ungenauer wird die berechnete Impedanz. Deswegen soll 
dieser Prozess zeitlich kurz gehalten werden. (Geht auch darum dass der 
Duty Cycle der Zelle möglichst hoch ist.) Im Labor haben wir eine 
Zeitdauer von 25 us gewählt. D.h. 25 us Strom aus. In dieser Zeit muss 
die Spannung gemessen werden. Am besten mehrmals, um einen Mittelwert zu 
bekommen. Hier ist Timing also das A und O. Vielleicht kann man diese 
Zeitspanne noch verdoppeln oder verdreifachen, das werden weitere Tests 
zeigen, aber es läuft darauf hinaus, dass ich in der Lage sein muss im 
Interval von ca. 10-20 us analoge Werte mit mindestens 12 Bit Auflösung 
lesen zu können. (Die gesamte Spannungsdifferenz liegt im Bereich von 
200 mV)
Der ADC (MCP3428) hat maximum 240 SPS, was ich als Samples Per Second 
verstehe (Interval von 4167 us), was ihn disqualifiziert. Deswegen 
wollte ich das mit den integrierten ADCs des uC lösen.
Diese Aufgabe ist wahrscheinlich der ausschlaggebende Faktor für die 
Wahl des uC und war überhaupt der Grund, warum ich erwäge 32 Bitter zu 
verwenden. Die ADCs der ATMegas brauchen ca 100 us für einen analogRead 
und haben mit 10 Bit eine zu kleine Auflösung.

Ich fasse also nochmal meine Anforderungen zusammen:
- 8 Analoge Inputs mit 12 Bit Auflösung. Messinterval ca. 10 us
- 16 Digitale Outputs für die NMOS Driver (im Blockschaltbild sind nur 8
erwähnt, aber mit 16 habe ich noch Spielraum für Status-LED und einzelne
Schalter, die ggf. noch dazu kommen.)
- 3x I²C Bus (1x 100kHz, 2x 400kHz) mindestens. Die Steuerung sollte
möglichst erweiterbar sein und hat am besten insgesamt 5 Busse (2x 
100kHz
und 3x 400kHz) um ggf. mehr Sensoren und Schalter anzuschließen.
Wünschenswert wäre, wenn 3 Busse hardwareseitig da sind. Die 2 extra 
Busse
können ja softwareseitig sein. (Ich denke da an die Funktionalität die 
die
SoftwareSerial Lib bei Arduino bietet). Vermutlich werden die nicht
gebraucht, aber wenn doch dann ist es gut dass sie da sind.
- Eine Serielle Schnittstelle. Ich denke, das ist klar. Ich will den uC 
mit
meinem Computer programmieren können. Ob Bootloader oder nicht ist mir,
nachdem was ich hier gelesen habe, egal. Hauptsache ich kann mein 
Programm
hochladen.


Das Ding hier ist ein ganz schöner Roman geworden.. aber ich hoffe jetzt 
ist die ganze Sache ein bisschen klarer.
Vielleicht kann mir jemand bei der Auswahl eines geeigneten uC helfen.
Das mit den Nucleo Boards von SMT klingt ja schonmal gut. Bin aber auch 
offen für 8 Bitter, wenn es welche gibt die meinen Anforderungen gerecht 
werden können.

Vielen Dank für Eure Aufmerksamkeit und Gute Nacht

Lucas



PS.:
Hier noch Datenblätter der genannten Komponenten:
Amplifier (INA240 - für Shunt)
https://www.ti.com/lit/ds/symlink/ina240.pdf?ts=1612248020201&ref_url=https%253A%252F%252Fwww.google.com%252F

ADC (MCP3428)
https://ww1.microchip.com/downloads/en/DeviceDoc/22226a.pdf

I²C- NMOS Driver (LTC1623)
https://www.analog.com/media/en/technical-documentation/data-sheets/1623f.pdf

NMOS Driver (1ED44173N01B)
https://www.infineon.com/dgdl/Infineon-1ED44173N01B-DataSheet-v01_00-EN.pdf?fileId=5546d46272aa54c00172bc99c2d45678

DC/DC Wandler (BMR463)
https://flexpowermodules.com/resources/fpm-techspec-bmr463

: Bearbeitet durch User
von Christian S. (roehrenvorheizer)


Lesenswert?

Na hoffentllich schaffst Du das in den kurzen 4 Monaten. Die Aufgabe ist 
ziemlich umfangreich und unvorhergesehene Fallstricke wirst du kaum 
abschätzen können. Das Ganze will auch noch dokumentiert sein neben dem 
ganzen Aufbau und Experimentieren mit Varianten.

Du wirst danach sicher als Koryphäe des fachübergreifenden 
Ingenieurwesens gefeiert werden.

mfg

von PittyJ (Gast)


Lesenswert?

Ich denke, dass 4 Monate dafür nicht reichen.

Ein Platine muss designed werden. Dafür brachuen auch Profis eine Woche. 
Ist ja nicht nur der Controller, sondern auch das ganze IO-Krams und das 
Hühnerfutter, was passen muss.

Dann wird bestellt, und wenns gut läuft, dann ist nach 14 Tage ein 
bestückter Prototyp da. Kann aber auch länger dauern, da viele Bestücker 
ausgebucht sind und die Lieferzeit von Komponenten gerade explodiert.

Es wird versucht, die Platine in Betrieb zu nehmen. Dabei fällt nach 14 
Tagen am Oszilloskop auf, was alles falsch ist, und die Platine Revision 
2 wird bestellt.
Also wieder warten.

Dann ist, wenns gut läuft, nach 2 Monaten eine fertige, 
funktionsbereichte Platine vorhanden. Und dann geht es los mit der 
Programmierung. Programmierungebung aufsetzen. Sich in die Tools 
einarbeiten. Sich in den Chip einarbeiten. (ich habe gerade ein STM 
Referenz-Manual mit über 3000 Seiten vor mir) Und dann letztendlich die 
Funktionalität entwickeln.

Alles das wird mehr als 4 Monate benötigen.

von Der müde Joe (Gast)


Lesenswert?

...also, ich dachte immer, ein Maschinenbauer baut Maschinen...aber was 
weiß ich schon...

Wenn es meine Aufgabe wäre, würde ich einen guten 8-Bitter mit einem 
guten externen AD-Wandler, zum Beispiel von Analog Devices, verbinden. 
Mit Analog-Multiplexern kann man die Anzahl der Eingänge beliebig 
erweitern.

Ebenso kann man die Anzahl der I2C-Busse mit Port-Expandern erweitern.

- Silicon Labs Laser Bee, 72 MHz, 8-Bit 8051, 900 ksps 14-Bit AD-Wandler
- Texas Instruments PCA9548A, 8 Channels I2C Expander
- Analog Devices AD7329, 8-Channels, 1 Msps, 12 Bit, single 
ended/differential inputs

von Cyblord -. (cyblord)


Lesenswert?

Der müde Joe schrieb:
> ...also, ich dachte immer, ein Maschinenbauer baut Maschinen...aber was
> weiß ich schon...

Dachte ich auch. Und als solcher würde ich eine fertige Steuerung 
und/oder einen IPC nehmen und evt. benötigte Zusatzmodule und alle Logik 
damit machen.

Hier wirklich selbst µC Boards zu fricklen ist der pure Wahnsinn. Und es 
entspricht ja auch nicht der Lebenswirklichkeit in diesem Bereich.

von Johannes S. (Gast)


Lesenswert?

Maschinenbauer quälen sich eigentlich nicht mit nackten µC, sondern 
nehmen gleich eine SPS :)

von M.A. S. (mse2)


Lesenswert?

Lucas G. schrieb:
> Das Vorgehen was du meintest, also anzufangen
> vor der Anmeldung kenne ich auch. Haben Kommilitonen von mir gemacht,
> aber offiziell ist das nicht erlaubt.

Das war es früher auch nicht.  ;)

von M.A. S. (mse2)


Lesenswert?

Lucas G. schrieb:
> Ich muss jedoch dazu sagen dass die Programmierung zwar Teil der
> Gesamtaufgabe ist, aber nicht der Bachelorarbeit.
Dann klingt das vom Aufwand her vernüftig.

von Stefan F. (Gast)


Lesenswert?

Pille schrieb:
> Dann empfehle ich GD32F103, die gibts bisher nur als Original...
> Solnnderblödsinn?

Es ging nicht um den Mikrocontroller sondern um das Board. Blue-Pill 
Boards sind mit irgendwas bestückt. Du kannst vor dem kauf nicht wissen, 
ob es ein STM32F103 oder ein GDM32F103 oder sonst etwas ist.

Versuche mal ein Blue-Pill Board zu kaufen, auf dem garantiert dein 
GD32F103 sitzt. Viel Glück!

von Stefan F. (Gast)


Lesenswert?

Lucas G. schrieb:
> Ich habe 4 Monate Zeit

Mein herzliches Beileid. Stelle dich darauf ein, noch ein Jahr dran zu 
hängen.

> 3x I²C Bus (1x 100kHz, 2x 400kHz) mindestens...
> am besten insgesamt 5 Busse (2x 100kHz und 3x 400kHz)

Das dürfte die Auswahl des Mikrocontrollers stark einschränken. Ich 
kenne keinen Mikrocontroller mit so vielen I²C Bussen. Das wird dann 
wohl auf Multiplexer oder Soft-I²C hinaus laufen. Deine geforderte 
Geschwindigkeit bereitet mir allerdings sorgen, weil die dann immer nur 
abwechselnd bedient werden können.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Lucas G. schrieb:
> Ich habe 4 Monate Zeit.

Wuerd ich mich keinesfalls drauf einlassen. Ich geh' mal davon aus, dass 
dein Betreuer oder wer auch sonst der Ansicht ist, dass du kein 
vorgefertigtes uC-Board nehmen sollst, auch eher nicht in der Materie 
drinnensteckt.

Auch mit vorgefertigtem Board: wenn du da nicht schon ordentlich 
Erfahrung mit genau diesem Board privat gemacht hast: Grosses Risiko.

Ich hab's hier schon 1000x geschrieben: Eine Abschlussarbeit ist nix, wo 
man mal was ganz neues, tolles, was einen interessiert, ausprobieren 
soll.
Das kann man vorher/hinterher privat machen. Aber fuer die 
Abschlussarbeit nimmt man sinnvollerweise irgendwas, was man schon kann. 
Dann klappts auch mit der Note und dem Abgabetermin.

Gruss
WK

von Wolfgang (Gast)


Lesenswert?

Lucas G. schrieb:
> im Rahmen meiner Bachelorarbeit benötige ich einen Mikrocontroller.

Mich grauelt es, wenn jemand eine Bachelorarbeit schreiben möchte und 
hat die grundlegensten Fachbegriffe nicht drauf (µC, Mikrocontroller, 
CPU, Dev-Board usw.)

von Maxe (Gast)


Lesenswert?

Cyblord -. schrieb:
> Der müde Joe schrieb:
>> ...also, ich dachte immer, ein Maschinenbauer baut Maschinen...aber was
>> weiß ich schon...
> Dachte ich auch.
Da habt ihr euch halt getischen. Das Maschinenbaustudium ist vielleicht 
das einzige polytechnische Studium, das überhaupt angeboten wird.

Als TE würde ich parallel vorgehen, erst ein Eval-Kit holen, wenns ST 
sein soll am Besten ein Nucleo und das System grob per Steckverdrahtung 
aufbauen und damit würde ich mich direkt an die Programmierung machen. 
Wenn die einzelnen Komponenten funktionieren, dann das eigene Board 
machen. Für die Dev-Boards sind ja die Schaltpläne verfügbar, ist also 
nur ein Nachbau unter Weglassen der nicht benötigten Teile und 
Erweiterung um hoffentlich nur ein paar Kleinigkeiten.

Allerdings wird das, wenn man noch nie gelayoutet hat, schon ein Brocken 
und 4 Monate sind schnell rum.

von Mario X. (grinderfx)


Lesenswert?

Einzig erschreckend finde ich, dass du eine Arbeit über ein Thema 
schreiben sollst, von dem du weniger Ahnung als ein Anfänger hast.
Was soll dabei denn bitte rauskommen und wie ist man überhaupt zu dem 
Thema gekommen bzw. was wurde die letzten Jahre gemacht, dass jetzt 
solche Bildungslücken vorhanden sind?

Und wann soll die Arbeit fertig sein? In 3 Jahren, wenn genug Vorwissen 
angeeignet wurde?

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Stefan ⛄ F. schrieb:
> Lucas G. schrieb:
>> Ich habe 4 Monate Zeit
>
> Mein herzliches Beileid. Stelle dich darauf ein, noch ein Jahr dran zu
> hängen.
>
>> 3x I²C Bus (1x 100kHz, 2x 400kHz) mindestens...
>> am besten insgesamt 5 Busse (2x 100kHz und 3x 400kHz)
>
> Das dürfte die Auswahl des Mikrocontrollers stark einschränken. Ich
> kenne keinen Mikrocontroller mit so vielen I²C Bussen. Das wird dann
> wohl auf Multiplexer oder Soft-I²C hinaus laufen. Deine geforderte
> Geschwindigkeit bereitet mir allerdings sorgen, weil die dann immer nur
> abwechselnd bedient werden können.

Das ist kein Problem. Schau Dir mal Tiva TM4C123 an, da gibt es 
Varianten mit bis zu 10 UARTS, 8 I2C, 4 SPI, einen Haufen ADC-Pins, 
PWMs,...
Pincount reicht von 64 über 100 bis zu 144 Pins im TQFP mit 0.5mm Pitch 
(also Standard).
TI bietet eine sehr gute Treiberbibliothek dafür an, sowie das TI-RTOS. 
Das ist jetzt nicht die typische Bastlerplattform, weil unbekannt, aber 
deswegen nicht schlechter.

https://www.ti.com/product/TM4C123GH6PGE (144 Pins)
https://www.ti.com/product/TM4C123GH6PZ (100 Pins)
https://www.ti.com/product/TM4C123GH6PM (64 Pins)

https://www.ti.com/lit/ds/symlink/tm4c123gh6pge.pdf
https://www.ti.com/lit/ug/spmu298e/spmu298e.pdf

https://www.ti.com/tool/EK-TM4C123GXL (zum Ausprobieren vorher, Debugger 
eingebaut)

Software:
https://www.ti.com/tool/CCSTUDIO-TM4X (CCS IDE)
https://www.ti.com/tool/SW-TM4C (Treiberbibliothek TivaWare)
https://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/tirtos/index.html 
(TI-RTOS Download Page)

Stand Alone Debug Probe:
https://www.ti.com/tool/TMDSEMU110-U

Dazu hat TI auch ein Forum, wo die tatsächlich auch auf Fragen 
antworten.

Mit den Links hast Du erstmal alles, was Du so brauchst an Infos, 
Datenblättern, IDE+Compiler+Debugger, Debuggerhardware und 
Treiberbibliotheken. Komplettlösung also. Bei Fragen hast Du genug 
brauchbare Doku, und ansonsten fragst Du im TI-Forum nach.

fchk

von Thomas (Gast)


Lesenswert?

Erschreckender finde ich, dass jemand aus diesem Bildungsbereich sich 
keine Kenntnisse anlesen und seine benötigten Komponenten für eine 
Aufgabe aus dem Marktangebot selbst aussuchen kann!
Macht er das in seinem Fachbereich "Maschinenbau" genauso? Zieht Ihn 
womöglich frühs noch Mutti an?

Ab einem gewissen Alter sollte man sich selbst benötigte Informationen 
zusammensuchen können und kein Forum dazu brauchen. Andernfalls ist man 
einfach nur zu faul zum Suchen oder von vornherein zu doof für die 
gestellte Aufgabe/Beruf.

von Stefan F. (Gast)


Lesenswert?

Frank K. schrieb:
> Das ist kein Problem. Schau Dir mal Tiva TM4C123 an, da gibt es
> Varianten mit bis zu 10 UARTS, 8 I2C
> Mit den Links hast Du erstmal alles, was Du so brauchst an Infos

Wow!

von W.S. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ich bin an 100 Pins kläglich gescheitert.

Du bist ja auch kein angehender Bachelor mehr. Wir werden schließlich 
alle älter und brauchen irgendwann eine Feinmechanikerbrille oder ein 
Stereomikroskop.



dummschwaetzer schrieb:
> Da brauchst du ordentlich Rechenpower! Und DMA! Und möglichst mehr als
> einen ADC im µC!

ordentlich Rechenleistung: ja - sofern es in Echtzeit geschehen muß. 
Sonst eher nicht. Hängt aber von der Aufgabe ab.

DMA: wozu? Da ist eher ein ADC angesagt, der seine Eingänge selbständig 
abscannt und die Ergebnisse in eigenem Array ablegt. Sowas gibt's bei 
den LPC von NXP. Immer dran denken: DMA kann wirklich NICHTS ANDERES, 
als Daten von A nach B zu transportieren. DMA kann nichts auswerten, 
dazu ist Software nötig.

Mehr als 1 ADC: Ist eher selten, wenn nötig, dann eher mit externen 
ADC's und FPGA zum Auswerten - ist hier aber völlig überzogen. Sowas ist 
jenseits einer Bachelor-Arbeit.

W.S.

von W.S. (Gast)


Lesenswert?

Lucas G. schrieb:
> Das Ding hier ist ein ganz schöner Roman geworden.. aber ich hoffe jetzt
> ist die ganze Sache ein bisschen klarer.

OK, du willst vornehmlich mit I2C arbeiten, also ist das Ganze doch eher 
eine langsame Sache - und nix mit "Ich muss vorallem analoge Eingänge 
schnell auswerten können. (schneller als 10us)". Schließlich braucht ein 
einzelnes Bit am I2C wenigstens 2.5µs bzw. bei Standard I2C 10µs.

Und so, wie das auf dem Papier aussieht, wirst du wohl auch keinen 
wirklich hochpoligen µC benötigen, da geht dann womöglich auch ein 64 
oder 100 Pinner.

Nochwas:
Laß dir nicht einreden, daß man zum Programmieren immerzu nichts anderes 
als ein SWD-Interface brauchen würde. Das ist nämlich Fan-Gelaber. Sieh 
lieber zu, daß du ein Steckinteface vorsiehst, wo du folgende Signale 
drauf hast:
GND, VCC, SWDIO, SWCLK, RESET, BOOT (je nach Typ BOOT0+BOOT1), RxD, TxD 
des ersten UART (der auch vom Bootlader default benutzt wird). Damit 
hast du beide Möglichkeiten dir offengehalten und obendrein auch noch 
eine einfache Kommunikation zum PC vorgesehen. Sowas weiß man zu 
schätzen, wenn man eine Weile mit µC arbeitet.

Nochwas: Mach dir deine Versorgungsspannungen auf der LP selber. Also 
rohe 12V AC oder so ähnlich rein, Regler mit auf LP.

W.S.

von mmm (Gast)


Lesenswert?

Lucas G. schrieb:
> Ich fasse also nochmal meine Anforderungen zusammen
...

1. Schritt: Anforderungen in eine Parametrische Suche für ARM Corex-M 
uCs eintragen (z.B. 
https://www.nxp.com/webapp/parametricSelector.sp?#/&c=c731_c1770_c173&page=1 
oder 
https://www.ti.com/microcontrollers-mcus-processors/microcontrollers/arm-based-microcontrollers/products.html)
Nicht von der Anzahl der ADCs verwirren lassen. Die uCs haben 1 oder 2 
ADCs mit jeweils mehreren Kanälen (steht im Datenblatt).
2. Schritt: uC Vorauswahl treffen und Datenblätter überfliegen, ob die 
Anforderungen auch wirklich erfüllt werden (können) - die max. 
Samplerate und die Anzahl der nutzbaren Kanäle der ADCs steht 
normalerweise nicht in der par. Suche oder manche Funktionen sind nicht 
gleichzeitig nutzbar, da sie die gleichen Pins verwenden würden.
3. Schritt: Schaltplan eines Evaluation-Boards des gefundenen uC 
besorgen und verstehen.
4. Schritt: Wesentliche Bestandteile des Schaltplans in einen eigenen 
Schaltplan übertragen (Debug-Port nicht vergessen).
5. Schritt: Für die Applikation benötigte Beschaltung einzeichnen.
6. Schritt: SW-Entwicklungsumgebung einrichten und sofern vorhanden 
Pinverwendung auf dem Schaltplan in den entsprechenden Editor eintragen 
- vernünftige IDEs sagen einem dann, ob as geht oder nicht.
7. Schritt: Schaltplan reviewen lassen
8. Schritt: PCB "malen", reviewen und herstellen lassen - ggf. incl. 
Bestückung.
9. Schritt: Segger J-Link EDU mini kaufen
10. Schritt: Software Stück-für-Stück (eine Peripherie nach der anderen) 
erstellen und mit dem Debugger flashen/debuggen.
11. Schritt: zurück zu Schritt 5, weil das Board im ersten Anlauf 
garantiert nicht so funktioniert, wie es soll.

von Adam P. (adamap)


Lesenswert?

W.S. schrieb:
> also ist das Ganze doch eher
> eine langsame Sache - und nix mit "Ich muss vorallem analoge Eingänge
> schnell auswerten können. (schneller als 10us)"

Also bei der Anzahl an AD-Wandlern und I2C, glaub ich auch nicht daran, 
dass du ansatzweise an deine 10µs kommst.

Ich würde es dann wohl eher mit einem µC probieren der mehrere SPI hat, 
SPI AD-Wandler nutzen und die Daten dann per DMA abrufen.

von Frank K. (fchk)


Lesenswert?

Lucas G. schrieb:

> - 8 Analoge Inputs mit 12 Bit Auflösung. Messinterval ca. 10 us

Die TI TIVA TM4C123 haben bis zu 24 analoge Eingänge.
- es gibt zwei getrennte ADCs, die parallel laufen können
- jeder ADC hat 4 Sequencer, wobei Sequenzer 0 bis zu 8 Eingänge 
nacheinader automatisch abfragen und im FIFO ablegen kann
- 12 Bit Auflösung
- 1MSamples maximale Samplerate, wobei dann aber die untersten Bits 
leiden, wenn Du das komplett ausreizt
- Hardware Durchschnittsbildung von aufeinanderfolgenden Werten
- DMA-Support

fchk

von Lucas G. (elding)


Lesenswert?

oerks schrieb:
> Wenn du (TO) Anfaenger bist, nimm blos keinen 32-bitter,
> also irgendwelche STM32 oder LPC.
>
> Fuer so langweiliges Zeug was du da treiben willst reicht
> ein viel uebersichtlicherer 8-bitter alle mal.

Kannst du grob erklären, warum ein 8-Bitter besser für Anfänger geeignet 
ist?

-

Ich weiß, dass das viel Arbeit für die kurze Zeit ist und ich weiß auch, 
dass ich eine ganze Menge Recherche vor mir, und auch nachzuholen habe. 
Vielleicht war es auch eine dumme Idee, sich als Maschinenbauer dieser 
Aufgabe anzunehmen. Hätte ich doch lieber meine Interesse in den 
Hintergrund gestellt und mir ein langweiliges, einfaches Thema aus dem 
Maschinenbau gesucht! Da wäre ich richtig dran gewachsen.
Ich verstehe nicht, warum Leute wie Mario X. und Thomas solche Beiträge 
schreiben. Ihr verschwendet Eure Zeit, ihr verschwendet meine Zeit und 
die Zeit von jedem, der sich durch diesen Thread liest. Und habt damit 
Null geholfen. Herzlichen Glückwunsch, ihr dürft stolz auf euch sein!

An Alle, die konstruktive Antworten gegeben haben, wie Frank K, mmm, 
W.S. (und weitere): Danke!
Es gab schon viele gute Vorschläge hier, wie die STM32 Nucleo Boards, 
TIVA TM4C123, C8051 als 8-Bitter und LPCxxx.
Und auch viele gute Tips, die ich versuche zu beherzigen.
Ich werde mir die Boards in Ruhe ansehen und ausloten, welcher davon am 
besten geeignet ist.

von Dergute W. (derguteweka)


Lesenswert?

Lucas G. schrieb:
> Kannst du grob erklären, warum ein 8-Bitter besser für Anfänger geeignet
> ist?
Einfach mal die Seitenzahlen der jeweiligen Datenblaetter vergleichen.

Lucas G. schrieb:
> Vielleicht war es auch eine dumme Idee, sich als Maschinenbauer dieser
> Aufgabe anzunehmen. Hätte ich doch lieber meine Interesse in den
> Hintergrund gestellt und mir ein langweiliges, einfaches Thema aus dem
> Maschinenbau gesucht! Da wäre ich richtig dran gewachsen.

Ja, ist eine dumme Idee. Denn wenn du mit deiner Arbeit nicht fertig 
wirst, oder die Kacke hinten und vorne auch nach einem Jahr nicht 
funktioniert, wirds schwierig, dir auf die Arbeit eine schicke Note zu 
verpassen.
Und bei der anschliessenden Bewerbung wird die Personaler nicht 
interessieren, wieviel du dran gewachsen bist. Die Note der 
Abschlussarbeit schon. Und wenn man der gleich ansieht, dass die Arbeit 
versemmelt wurde...

Wenn du neben dem Studium dich schon "immer" fuer irgendwelche 
µController interessiert haettest und nebenher irgendwelche Klopper auf 
z.b. Arduino oder sonst irgendeinem Board gemacht haettest, dann 
vielleicht. Aber so halt' ich das fuer ziemlich aussichtslos. 4 Monate 
sind schnell rum bei sowas. Und dann ist noch keine Zeile Text 
geschrieben.

Gruss
WK

von A. S. (Gast)


Lesenswert?

Lucas G. schrieb:
> Kannst du grob erklären, warum ein 8-Bitter besser für Anfänger geeignet
> ist?
>
> -
>
> Ich weiß, dass das viel Arbeit für die kurze Zeit ist und ich weiß auch,
> dass ich eine ganze Menge Recherche vor mir, und auch nachzuholen habe.
> Vielleicht war es auch eine dumme Idee, sich als Maschinenbauer dieser
> Aufgabe anzunehmen.

Sorry, wenn ich mich wiederhole: Beschränke die Aufgabe!

Du machst einen Bachelor, allein. Keine Masterarbeit zu Dritt. Mit 10µs 
ist das schon genug für jemanden, der seit 5 Jahren nichts anderes tut, 
Schaltplaneditor und Prozessor kennt und den Prozess nur umsetzen 
braucht.

Wie sieht es denn mit dem Prozess aus? Sollst Du da auch noch 
untersuchungen machen? Oder hast Du genau Vorschriften, bei welchem 
ADC-Wert und sonstigen Parametern Du was wo ausgeben musst? Falls ja, 
warum kannst Du das nicht schon in etwa wiedergeben? Falls nein, dann 
besorge sie Dir in dieser Woche noch. Sonst stellst Du bei der 
Inbetriebnahme Deines Boards fest, dass Dir 3 Größenordnungen im Timing 
fehlen.

von Stefan F. (Gast)


Lesenswert?

Lucas G. schrieb:
> Kannst du grob erklären, warum ein 8-Bitter besser für Anfänger geeignet
> ist?

Ihre Doku ist in der Regel wesentlich kürzer und (bei denen die ich 
kenne) wesentlich besser strukturiert. Wenn du bei einem AVR den ADC 
verwenden willst, liest du das ADC Kapitel - fertig.

Bei STM32 musst die die Inhalte von mindestens 5 Kapiteln kombiniert 
erfassen und zwischen den Zeilen lesen. STM beschreibt nämlich nur, was 
geht. Was nicht geht, musst du dir dazu denken, insbesondere wenn es um 
Wechselwirkungen zwischen unterschiedlichen Funktionseinheiten geht.

Bei ESP Chips ist es noch schlimmer, da wurden die Datenblätter mehr 
oder weniger von den Usern geschrieben und korrigiert. Espressif 
übertreibt gerne mit Leistungsdaten und Funktionsumfang, indem sie die 
die Begriffe "typisch", "bis zu" und "in Software möglich" benutzen.

Alleine schon die Tatsache, dass du dich mit diesen Dingern noch nicht 
so wiet befasst hast, um die Unterschiede zu kennen, sagt mir, dass es 
dafür jetzt auch zu spät ist. Dir wird die zeit davon laufen.

von c-hater (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:

> Ihre Doku ist in der Regel wesentlich kürzer und (bei denen die ich
> kenne) wesentlich besser strukturiert. Wenn du bei einem AVR den ADC
> verwenden willst, liest du das ADC Kapitel - fertig.

Grundsätzlich völlig korrekt, aber auch bei den 8-Bittern steckt der 
Teufel manchmal im Detail. Nämlich in dem, was z.B. im ADC-Kapitel nicht 
erwähnt, aber trotzdem unter bestimmten Umständen wichtig ist.

Auch bei den lieben Kleinen ist man also gut beraten, das gesamte DB zu 
lesen, egal was man damit macht.

Was aber bleibt: der vergleichsweise geringe Umfang des DB macht diese 
einzig richtige Vorgehen bei den 8-Bittern wenigstens noch einigermaßen 
realistisch möglich...

von Stefan F. (Gast)


Lesenswert?

Mal angenommen, du entscheidest dich für einen STM32F446, dann hast du 
mindesten so viele Seiten zu lesen:

* Datasheet 196 Seiten
* Reference Manual 1347 Seiten
* Errata 29 Seiten
* User anual STM32 Nucleo-144 Boards 75 Seiten

Wahrscheinich wirst du ihn mit der Cube-HAL oder LL programmieren (wegen 
dem Zeitdruck), dann kommen weitere Seiten dazu

* Description of STM32F7 HAL and low-layer drivers 2236 Seiten

Dazu kommen sicher noch einige Hundert Seiten diverser Application 
Notes.

Damit kannst du das erste Bauteil deines Aufbaus kennen lernen. Aber das 
ist ja erst der Anfang. Schätze doch mal, wie lange du wohl brauchst um 
rund 4000 Seiten von einem dir bisher völlig unbekanntem Produkt zu 
lesen und zu verstehen. Selbst wenn du die Hälfte überspringen kannst 
(bloß welche?) ist das immer noch harter Stoff für viele Wochen!

von Frank K. (fchk)


Lesenswert?

Stefan ⛄ F. schrieb:
> Lucas G. schrieb:
>> Kannst du grob erklären, warum ein 8-Bitter besser für Anfänger geeignet
>> ist?
>
> Ihre Doku ist in der Regel wesentlich kürzer und (bei denen die ich
> kenne) wesentlich besser strukturiert. Wenn du bei einem AVR den ADC
> verwenden willst, liest du das ADC Kapitel - fertig.
>
> Bei STM32 musst die die Inhalte von mindestens 5 Kapiteln kombiniert
> erfassen und zwischen den Zeilen lesen. STM beschreibt nämlich nur, was
> geht. Was nicht geht, musst du dir dazu denken, insbesondere wenn es um
> Wechselwirkungen zwischen unterschiedlichen Funktionseinheiten geht.

Das ist bei TI ziemlich gut. Wobei ich dazu sagen muss: Ich habe mir die 
Funktionsbeschreibung durchgelesen, aber die gesamte 
Registerbeschreibung links liegen gelassen und für alles die TivaWare 
Treiberbibliothek verwendet. Auch im Beruf ist es so, dass das ganze 
Zeugs irgendwann mal fertig werden muss. Ich bin aktuell in einem 
Bereich tätig, wo nur sehr geringe Stückzahlen produziert werden und 
Entwicklungskosten und Time-to-Market wichtiger sind. Zeit isst Geld, 
optimieren tut man nur, wo man unbedingt muss.

Ob 8-Bitter wirklich für Anfänger besser sind? Ich denke, das kann man 
nicht so allgemein sagen. Nehmen wir mal PIC. Die 8-Bitter 
(PIC10/12/16/18), die 16-Bitter (PIC24/dsPIC) und die 32-Bitter (PIC32) 
haben völlig verschiedene Prozessorarchitekturen, wie sie 
unterschiedlicher nicht sein können. Die ganze Peripherie ist aber über 
alle Familien hinweg sehr ähnlich. Kennt man eine Familie, kennt man 
alle.

Hier muss ich sagen: Das anfängerfreundlichste sind die 16-Bitter, dicht 
gefolgt von den 32-Bittern, speziell wenn Du in C programmierst. 8-Bit 
AVRs, 8-Bit-PICs und 8051-Derivate haben nämlich die Eigenschaft, 
verschiedene Adressräume für RAM und ROM/Flash zu haben. Ein Pointer ins 
Flash ist inkompatibel zu einem Pointer ins RAM, weil der Compiler 
jeweils komplett unterschiedlichen Code erzeugen muss. Deswegen findet 
man dort auch doppelte Funktionen wie strcpy() für RAM->RAM und 
strcpy_P() für Flash->RAM. Bei den 16-Bittern versteckt der XC16 
Compiler das sehr gut (da wird ein Teil des Flashes in den 
RAM-Adressraum eingeblendet (PSV)), und bei 32-Bit hast Du das gar nicht 
- da gibts nur einen einzigen Adressraum, wo alles drin ist.

Andere 8-Bit Architekturen wie Z80, 6809, 6502 hatten auch nur einen 
einzigen Adressraum und waren in der Hinsicht einfacher zu handhaben, 
haben aber heute nur noch historische Bedeutung.

Wenn man C verwendet (was man machen wird, wenn man in endlicher Zeit 
fertig werden will), dann wird man feststellen, dass der Sprachstandard 
für eine Maschine mit mindestens 16 Bit Wortbreite geschrieben wurde. 
8-Bit Compiler haben es schwerer, guten Code zu erzeugen und sich 
trotzdem an den Standard zu halten. ARM und MIPS sind schon gute 
Zielarchitekturen für C-Compiler.

Meine Lieblingsarchitektur war übrigens 68k. Aber das ist Geschichte, 
das kommt nicht mehr wieder.

fchk

PS: Warum PIC24 anfängerfreundlicher als PIC32 ist? Das hängt damit 
zusammen, dass der PIC24 Prozessorkern eine Eigenentwicklung ist, 
während bei PIC32 MIPS-Cores zugekauft wurden. Bei PIC24 sind die 
Peripherieregister Teil des Kerns, d.h. der Prozessorkern kann dort 
atomare Bit-Operationen ausführen. Bei PIC32 sind die Peripherieregister 
nicht mehr Teil des Kerns, sondern laufen asynchron. Wenn der Prozessor 
ein Bit setzen will, muss er das Register lesen, Bit setzen und Register 
wieder schreiben. Das sind drei getrennte Operationen, und nach jeder 
Operation kann Dir ein Interrupt oder eine Exception oder ein DMA-Zyklus 
dazwischen kommen, und das versaut Dir dann den ganzen Tag. Wenn man 
hier atomare Operationen ermöglichen will, muss man diese Fähigkeit in 
die Peripherie einbauen. Dann gibt es da spezielle Register, wo man 
einzelne Bits atomar setzen, löschen oder invertieren kann. Das 
erfordert dann auch wieder entsprechenden Programmcode, und das muss man 
wissen.
Die eben genannte Problematik hat man bei allen Prozessorkernen, die man 
extern dazukauft, also nicht nur bei MIPS, sondern auch bei ARM, PPC und 
RISCV.

: Bearbeitet durch User
von oerks (Gast)


Lesenswert?

> Kannst du grob erklären, warum ein 8-Bitter besser für Anfänger geeignet
> ist?

Weil ein vollstaendiges Datenblatt gerade mal 272 Seiten hat.
Das haettest du auch selber herausfinden koennen!

Ausserdem redest du dauernd von vielen IOs, um dann wieder
moeglichst viele I2C dran zu haengen.
Was denn nun? Geistiges Relikt von der uino-Bastelei?

Erweitern mit I2C ist im Maschinenbauumfeld ohnehin nicht
besonders empfehlenswert, wenn die raeumliche Ausdehnung
zunimmt. I2C ist auch nicht mal besonders schnell.

Der C8051F020 hat schon 64 GPIOs. Neben den AD-Ein- und
DA-Ausgaengen.

von Lucas G. (elding)


Lesenswert?

A. S. schrieb:
> Wie sieht es denn mit dem Prozess aus? Sollst Du da auch noch
> untersuchungen machen? Oder hast Du genau Vorschriften, bei welchem
> ADC-Wert und sonstigen Parametern Du was wo ausgeben musst? Falls ja,
> warum kannst Du das nicht schon in etwa wiedergeben? Falls nein, dann
> besorge sie Dir in dieser Woche noch. Sonst stellst Du bei der
> Inbetriebnahme Deines Boards fest, dass Dir 3 Größenordnungen im Timing
> fehlen.

Es geht eher darum, eine Historie der Werte zu haben. Wenn Werte auf 
einmal abweichend von den alten Werten sind dann deutet dass darauf hin 
dass die Membran der Zelle Schäden genommen hat. Mit der Information 
kann man dann weiter verfahren. Also Zelle abschalten oder mit 
geringerer Leistung fahren.
Ich habe da aber noch keine konkreten Daten ab wann ein Zustand so oder 
so ist.

Der Rest ist zur Überwachung/Steuerung des Systems. Temperatur und Druck 
überwachen und dementsprechend Heizungen und Ventile schalten.

oerks schrieb:
> Erweitern mit I2C ist im Maschinenbauumfeld ohnehin nicht
> besonders empfehlenswert, wenn die raeumliche Ausdehnung
> zunimmt.

Weil I²C nicht mit langen Leitungen zurecht kommt? Das ist kein Problem, 
meine Schaltung ist auf kleinen Raum begrenzt.
Das, was mit I²C verbunden ist, muss nicht schnell arbeiten können.

Das einzige, was schnell passieren muss ist das Auswerten der Spannung 
an der Zelle. Da kommt I²C also nicht in Frage. Deswegen ein 
Mikrocontroller der einen ADC mit mind. 12 Bit und >100kSPS hat.

: Bearbeitet durch User
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.