Forum: Mikrocontroller und Digitale Elektronik Ansteuergeschwindigkeit von IO-Ports am Raspberry


von Ansteuergeschwindigkeit von IO-Ports am Raspberry (Gast)


Lesenswert?

Hi,

man kann mit dem Raspberry Pi verschiedene IO-Ports ansteuern. Ich 
wollte z.B. an einem Pin mit den GPIO-Befehlen ein PWM-Signal ausgeben 
mit 50 Prozent.  Das funktioniert soweit ganz gut:

Hier ein einfaches Beispielpgrogamm:
freq = 1 Hz

while (...)
 wait ( 1/(2*freq) )
 GPIO_PIN = ON
 wait ( 1/(2*freq) )
 GPIO_PIN = OFF

Mein Problem ist, dass das nur bis ca. 1kHz funktioniert. 10kHz 
funktionieren schon garnicht mehr. Warum sind die GPIO-Ports so träge?

Kann ich beim RPi irgendwie direkt auf die Register drauf zugreifen wie 
bei uCs, mit denen die GPIO-POrts gesteuert werden?

von Flemmy (Gast)


Lesenswert?

Moin,

vielleicht hilft dir folgender Link weiter.
Ich hatte leider noch nicht die Zeit mich ausführlicher damit zu 
beschäftigen.

http://www.pieter-jan.com/node/15

von Thorsten (Gast)


Lesenswert?

Ja, man kann direkt mit Set und clear direkt auf die i/o zugreifen.

Der scheduler wird dir aber hin und wieder einen strich durch die 
Rechnung machen. Für die ersten paar zyklen kann man so 40 MHz 
erreichen, dann schlägt beim pi ein Schutz zu, der verhindert dass der 
arm auf den gpio zu viel macht und es geht dann mit 20Mhz weiter, bis 
eben der Task nicht mehr dran kommt.

Such nach mmap gpio example.


Es gibt dann da noch den VideoCore, da kann man einen Kernel laden, der 
dann nur das eine macht solange bis er fertig ist. Da habe ich konstant 
40Mhz Pin toggeln hin bekommen, was wohl das Maximum ist, was man in sw 
erwarten kann... oder 32Mhz spi.

von Timmo H. (masterfx)


Lesenswert?


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.