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?
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.