Das ist natürlich Unsinn. Das klassische Multitasking System UNIX wurde auf und für eine PDP8 bzw PDP11 geschrieben. Und das waren Single-Core CPUs. Linux wurde zuerst auf einem 386 gebaut, ebenfalls Single Core. Und das erste preemptive Windows, Windows NT, lief auch auf einem Single Core.
Sicher nicht. Du hast ja schon mal mit AccelStepper() rumgespielt. Die kann das. Ebenso wie alle 3D-Drucker oder Lasergravierer mit grbl. Aus der Doku zu AccelStepper:
Die Arduino SW ist ja Open Source. Man kann also sowohl in die PWM Library als auch in AccelStepper reinschauen und sehen, wie das da gemacht wird.You can have multiple simultaneous steppers, all moving at different speeds and accelerations, provided you call their run() functions at frequent enough intervals.
Dazu benutzt man Interrupte. Dafür sind sie da. Oder man macht es kooperativ, wie AccelStepper es mit seiner run()-Funktion tut.
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Hm- wo setzt du das Flag wieder auf 0?
Wahrscheinlich liegt dort der Hase im Peffer....
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
warum das Rad neu erfinden, wenn es erprobte, stabile und bewährte Libs gibt, die die Problematik handeln können? Ich programmiere ja auch in UNIX/LINUX das Multithreading nicht selber, sondern nutze die bewährten POSIX und std Libs, gleiches gilt für die entsprechenden Libs fürs ESP RTOS und den ebenfalls bewährten Due Scheduler.
Sorry, bezog sich nicht auf dich sondern inka, weiter vorne im Thread.
Warum sollte zum Ansteuern von Schrittmotoren eine Funktion für DC-Motoren mit PWM besser geeignet sein, als eine (AccelStepp), die extra für Schrittmotore geschrieben wurde?
Wenn sie alle Probleme lösen, ist es ja gut. Ich sehs noch nicht
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Ich kenne AccelStepp nicht. Damals kam die Frage auf, was in der Lib passiert, weil es Probleme bei der Ansteuerung der Stepper gab. Inka hatte doch glaub ich diese Lib eingesetzt?
Wenn die die Probleme auch löst, ist es doch schön und gut. Dennoch, wenn ich mir den Code von Inka angesehen habe, denke ich auch, dass PWM eine unkomplizierte Lösung ist. Warum, hatte Rabenauge bereits beschrieben, dem gab eigentlich nichts hinzuzufügen, Versuch ist es wert, vielleicht löst es bereits das Problem.
MfG
Ich kannte die Library auch nicht und habe daraufhin mal die Dokumentation und den Source gelesen. Da kann man sehr gut erkennen, wie das da gelöst ist.
Da braucht man nicht viel zu probieren. Es reicht einfach zu überlegen, wie man mit analogWrite() die Pulsfrequenz, auf die es ja beim Stepper ankommt, und nicht die Pulsebreite oder den Dutycycle einstellt. Ich hab auch davon den Source gelesen. Das basiert auf der PWM Hardware des Prozessors. Damit ist einerseits klar, daß die PWM-Hardware weiterläuft, und andererseits daß sie zur Ausgabe von unterschiedlichen Frequenzen ungeeignet ist.Wenn die die Probleme auch löst, ist es doch schön und gut. Dennoch, wenn ich mir den Code von Inka angesehen habe, denke ich auch, dass PWM eine unkomplizierte Lösung ist. Warum, hatte Rabenauge bereits beschrieben, dem gab eigentlich nichts hinzuzufügen, Versuch ist es wert, vielleicht löst es bereits das Problem.
In beiden Fällen ist aber der wesentliche Teil der Software ein-zwei Dutzend Zeilen lang. Das mit einem Rad zu vergleichen, das man nicht neu erfinden will, ist schon etwas schräg.
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Lesezeichen