Hallo, ich möchte gerne den bei mir nicht benutzten PWM-Audio Ausgang deaktivieren und die GPIOs 40 und 45, die diesen ansteuern, nach entfernen von 2 Widerständen für eigene Dinge benutzen. Nein, andere GPIOs kommen leider nicht in Frage, da alle benutzt sind! Wer weiss, was und wo ich was ändern muss im Linux, damit diese GPIOs frei werden und nicht mehr mit der Audio-PWM verknüpft sind? Im meinem Python Programm möchte ich diese dann als Eingang und Ausgang nutzen... Würde mich über Hilfe von Euch sehr freuen, bin (noch)nicht der Linux Profi... Danke, Wolfram.
Der Kernelcode [1[(ab Zeile 71) lässt vermuten, dass man die GPIO direkt verwenden kann. Ein Setzen der Leserichtung müsste die alternate Function des Soundtreibers aushebeln. Versuch mal als "root" Folgendes für einen Output an GPIO40:
1 | echo "40" > /sys/class/gpio/export |
2 | echo "out" > /sys/class/gpio/gpio40/direction |
3 | |
4 | echo "0" > /sys/class/gpio/gpio40/value |
5 | echo "1" > /sys/class/gpio/gpio40/value |
Wahrscheinlich nutzt dein Pythonprogramm die WiringPi-Lib und die müsste es genauso machen. Wenn das hier also funktioniert, dann solltest Du mit Python locker drauf zugreifen können. Testen kannst du die Funktion mit einem Multimeter an dem Widerstand von GPIO40, den du später entfernen willst. Die getroffenen Aussagen Beziehen sich auf den verlinkten GPIO-Treiber. Ob der Teil deines Kernels ist, kann ich nicht sagen, da die Information fehlt. Sollte aber normalerweise der Fall sein, wenn Du die anderen Pins bereits verwenden kannst. Grüße Oliver [1] https://github.com/raspberrypi/linux/blob/942d904dc6a0ee26c45cacdf732e8949bfa47466/arch/arm/mach-bcm2708/bcm2708_gpio.c
Falls beim pi mit einem Devicetree gearbeitet wird könntest du zur Sicherheit dort den Audio-Teil raus nehmen, dann hast du ausgeschlossen das sich verschiedene Treiber in die quere kommen.
das funktioniert! :-) paralell hab ich zur Kontrolle die Standby-LED des Gerätes schalten lassen. An den beiden Entkoppel-C`s konnte ich Pegelwechsel von 0 auf 1.2V messen, an den beiden Widerständen ebenso 1.2V/2.5V. Die 1.2V reichen aus, um nen Transi anzusteuern, an den C`s kann man besser was anlöten als an den Widerständen. So werd ich es machen. Prima.
1 | # ----------------------------------- GPIO 40+45 tests ------------------------------ |
2 | |
3 | exec_cmd("echo 11 > /sys/class/gpio/export") # GPIO11 = Standby-LED
|
4 | exec_cmd("echo out > /sys/class/gpio/gpio11/direction") # GPIO auf Ausgang setzen)
|
5 | exec_cmd("echo 0 > /sys/class/gpio/gpio11/value") # GPIO auf LO setzen
|
6 | |
7 | exec_cmd("echo 40 > /sys/class/gpio/export") # GPIO40 = pwm0 audio
|
8 | exec_cmd("echo out > /sys/class/gpio/gpio40/direction") # GPIO auf Ausgang setzen
|
9 | exec_cmd("echo 0 > /sys/class/gpio/gpio40/value") # GPIO auf LO setzen
|
10 | |
11 | exec_cmd("echo 45 > /sys/class/gpio/export") # GPIO45 = pwm1 audio
|
12 | exec_cmd("echo out > /sys/class/gpio/gpio45/direction") # GPIO auf Ausgang setzen
|
13 | exec_cmd("echo 0 > /sys/class/gpio/gpio45/value") # GPIO auf LO setzen
|
14 | |
15 | |
16 | time.sleep(2) |
17 | exec_cmd("echo 1 > /sys/class/gpio/gpio11/value") # GPIO auf HI setzen
|
18 | exec_cmd("echo 1 > /sys/class/gpio/gpio40/value") # GPIO auf HI setzen
|
19 | exec_cmd("echo 1 > /sys/class/gpio/gpio45/value") # GPIO auf HI setzen
|
20 | |
21 | time.sleep(2) |
22 | |
23 | exec_cmd("echo 0 > /sys/class/gpio/gpio11/value") # GPIO auf LO setzen
|
24 | exec_cmd("echo 0 > /sys/class/gpio/gpio40/value") # GPIO auf LO setzen
|
25 | exec_cmd("echo 0 > /sys/class/gpio/gpio45/value") # GPIO auf LO setzen
|
26 | |
27 | # ----------------------------------- GPIO 40+45 tests ---- end ---------------------- |
Da der PWM-Audio Ausgang nie angesprochen wird, dürfte es keine Probleme geben mit evt. noch vorhandenen Audio Treibern. Schöner wäre es natürlich, wenn man die trotzdem deaktivieren könnte. Mit dem Devicetree kenn ich mich absolut nicht aus.. Das ganze ist übrigens ein Internetradio auf Basis von Bob Rathbone mit USB-Stick/LAN und HDD Player als "Tuner" für die Stereoanlage. Ziel mit den GPIO40/45 ist es, ein Schaltsignal zu erzeugen um meinen Vorverstärker einzuschalten, denn das Radioprogramm hat auch eine Sleep/Weckfunktion, die ich zum einschalten der Anlage nutzen möchte. Ein GPIO würde zwar reichen, aber für den 2. fällt mir noch was ein... Gruß, Wolfram.
ich schliesse hiermit diesen thread, da alles läuft. Gruß, Wolfram
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.