Ich würde da lieber ein eigenes Board entwickeln.
Ich denk mal mit nem ATXMEGA sollte da was möglich sein.
Guck mal hier
Hallo zusammen,
ich werfe meine Problematik mal in die Forenrunde, vielleicht hat jemand eine
weiterführende Idee, im Moment hänge ich da irgendwie fest.
Ich bin zurzeit mit mit zwei Nema17 und der Ansteuerung zugange.
Aufgrund sauberer Übergänge, bei Geschwindigkeitswechseln und Beschleunigung,
habe ich nun eine Variante mit 2 bis 3 Timern auf einem ATmega328P, programmiert.
Davon brauche ich dann für jeden Motor einen und die müssen dann untereinander
verknüddelt werden. Wegen der Zahlreichen I/O-Verbindungen habe ich überlegt,
ob ich einen anderen Mikrocontroller nehmen könnte. Wenn ich zwei Motoren
steuere und dafür 2 bis 3 Timer verwende, brauche ich eine Menge Timer, die
ansich ein Arduino Mega bieten würde. Allerdings scheinen mir dann die 16MHz
zu wenig zu sein und der Mega ist auch nicht gerade klein, wenn ich den als
vollständiges Board nehmen würde. Dann dachte ich an einen ESP32, da finde ich
aber nichts über die Timerprogrammierung, wie beim Arduino Uno bspw.
Da ja noch ein paar mehr Sachen dazu kämen, wie Ultraschall und evtl. andere
Sachen, wo ich noch gerne einen Timer einsetzen würde/könnte, bräuchte ich
in etwa sowas:
- ca. 10 programmierbare Timer
- 80MHz CPU-Takt oder mehr
- viel RAM (1MB bis 4MB evtl.) und Flash für SPIFFs (4 bis 8MB), wobei man Flash sicher durch SD-Karte ersetzen könnte.
- onBoard WLAN wäre auch nicht schlecht, wobei ich dies auch irgendwie nachrüsten würde
Irgendwie komme ich mit den Anforderungen aber zu keinem Ergebnis bisher, was ich da nehmen könnte.
Freundliche Grüße
Moppi
Ich würde da lieber ein eigenes Board entwickeln.
Ich denk mal mit nem ATXMEGA sollte da was möglich sein.
Guck mal hier
Ja, selber bauen. Dafür suchte ich eine Alternative
Es gibt auch diverse X-Plain Boards.
Wie das hier z.B.
Danke! Ich werde mich ein wenig mit dem Teensy 3.6 beschäftigen. Den hatte ich nicht auf dem Plan.
MfG
der 3.6 ist sogar multihreading-fähig, um mehrere threads pseudo-parallel zu betreiben, ohne dass sie andere behindern auch wenn sie länger brauchen pro Durchlauf
https://github.com/ftrias/TeensyThreads
https://github.com/ftrias/TeensyThre...link/Blink.ino
Weil jetzt Multithreading ins Spiel kommt, habe ich über die gesamte Aufgabenteilung nachgedacht.
Bei Timer-Interrupts besteht schon das Problem, dass ein Ereignis ausgesetzt wird, wenn ein anderes
noch nicht abgearbeitet ist. Bei 2 Timern, auf einem 328P, fällt das nicht auf, bei dem Code,
der drauf ausgeführt wird. Das ist noch übersichtlich.
Wenn ich auf einer CPU mit mehreren Timern parallel arbeite, weiß ich nicht, wie das dann mit
den Kollisionen aussieht. Geht vielleicht auch noch unmerkbar vorüber, wenn die CPU schnell
genug ist. Aber was passiert, wenn noch mehr Code hinzu kommt, der "parallel" ausgeführt wird.
Fällt das bei zeitkritischen Dingen nicht irgendwann auf, indem es an irgendeiner Stelle hängt und
hakt? Da fehlt mir so ein bißchen die Erfahrung und Vorstellung, wie geschmeidig das alles in allem
dann so läuft. Der Teensy 3.6, mit 180MHz, ist schon eine Hausnummer, denke ich, in Sachen
Geschwindigkeit. Beim ESP32 gibt es sogar 240MHz. Immerhin ist der Teensy 10mal schneller getaktet,
als ein ATmega328P. Beim Teensy habe ich noch nichts gefunden, wie die Timer (sind das alles Hardwaretimer?)
programmiert werden. Sind die Register identisch mit denen von einem Arduino? Es gibt eine Bibliothek,
die verschiedene "Timer" zur Verfügung stellt; allerdings - wenn ich das richtig verstanden habe,
regelt die das nicht per Hardwaretimer sondern die Aufgabenverteilung ist eine Softwarelösung (?).
Weiter bin ich noch nicht voran gekommen. Das sind noch einige Fragen bei mir offen.
Der Teensy 4.0 wäre auch noch eine Möglichkeit.
Der ist richtig schmal, 2.5mal so groß, wie ein 328P im DIP-Gehäuse.
MfG
Geändert von Moppi (25.05.2020 um 20:23 Uhr)
Das preemptive MT läuft absolut geschmeidig und seine threads behaken sich auch nicht, wenn etliche davon parallel ausgeführt werden, und außerdem sind immer noch Interrupts zusätzlich möglich. Schon 100MHz wären für das MT ausreichend.
Wenn man eher in Timern als in Threads denkt, gäbe es z.B. diese Library
https://github.com/luni64/TeensyTimerTool/wiki
bietet neben den Hardwaretimern auch 20 in Software realisierte Timer. Steht auf meiner Liste der Dinge, die ich mir mal ansehen will.
Den Teensy 4.0 gibt es inzwischen auch als 4.1 im langen Format (ähnlich 3.6).
Lesezeichen