der Pi 3B ist ein Quadcore, d.h. er ist durch 2 softpwm Pins nicht überfordert.
IIRC läuft softwPwm mit timer-IRQs (kann mich aber nicht mehr genau erinnern) und daher störungsfrei parallel zu anderen threads/tasks.
Ich kann mich dunkel erinnern, dass das mal im Raspi.org forum diskutiert wurde mit der Freq., und dass Arduino-ähnliche Werte locker erreicht werden können (ca. 500Hz).
HWpwm auf dem Pi besitzt der kernel (bcm GPIOs 12+13), da brauchst du also root-Rechte, hat aber ansonsten IMO keine besonderen Vorteile.
Ich habe übrigens mit pthread-Programmen bisher bisher 6 pwm-Motoren mit softwPwm plus 6x Rotationsencoder-Reading im 100µs Takt plus UART-Kommunikation mit einem Arduino im 10ms Takt plus IR-Sensoren im 50ms Takt plus HDMI-Display-paint und plus console-print im 30ms Takt.
PS,
Nur 1 Anm.:
weil US-Sensoren MEIST sehr lange blockierende delays brauchen, solltest du diese dann am besten schon auch in eigene pthreads packen, damit der Rest störungsfrei weiterläuft (zB. bei einer ununterbrochenen i2c-, SPI-, pwm- oder UART-Auslesung, softwPwm ist dabei aber auch außen vor).
Wenn du kein MT nutzt, dann nimm also US-Sensoren, die das nicht brauchen oder nimm von vornherein IR-Sensoren (Sharp GP2D120 o.ä.).
pthread läuft übrigens störungsfrei schon auf Singlecores (dafür wurde es entwickelt), aber auf einem Pi Quadcore läuft es wie ein Rudel Schlittenhunde
(wenn du pthread nutzen willst und dazu Fragen hast, mach am besten dazu ein neues topic auf.)
Lesezeichen