Werbung
Ich habe dann einen Servo und zwei Motoren dann auf SWPWM. Wie weit kann ich mit der Frequenz dann hoch damit der Raspi nicht überlastet wird? Zwischendrin muss er auch noch Entfernungen (US) messen. Vor der Messung werde ich dann alle SWPWM's dann auf LOW setzen?wenn du oft mit kleinen pwms fähst, kann man auch die wiringPi-pwm-Frequenz hochsetzen, dann hauen die dutycycles nicht so knallhart durch
Bisher hatte ich am Arduino alles auf HWPWM da war das kein Problem.
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.)
Geändert von HaWe (20.06.2020 um 10:18 Uhr) Grund: typo
Lesezeichen