Mathias hat geschrieben:Ich habe die fraglichen Zeilen herauskopiert und in eine simple Konsolanwendung umgewandelt.
Es scheint tatsächlich ein Problem zu sein, welches mit der GUI zusammenhängt:
Wenn ich die Anwendung nach einem reboot zum ersten mal aus der GUI starte passiert nichts (d.h. alle GPIO bleiben inputs).
Erst beim zweiten Aufruf werden die Pins korrekt initialisiert.
Kannst du mal dein GUI-Code hier posten, vielleicht hast du ein simpler Fehler eingebaut.
Das kannst Du dir gern antun.
Aber ich glaube nicht dass da ein Fehler drin ist.
Code: Alles auswählen
program gpiotst;
{$mode objfpc}{$H+}
uses
fpgpio;
var REL_A_HON,REL_A_USB,HON_A_BUSY,HON_A_CALL: TGpioPin;
REL_B_HON,REL_B_USB,HON_B_BUSY,HON_B_CALL: TGpioPin;
LED_A_GN ,LED_A_RT ,LED_B_GN ,LED_B_RT : TGpioPin;
HON_A_SON_1,HON_A_SON_2,HON_A_SON_TST : TGpioPin;
HON_B_SON_1,HON_B_SON_2,HON_B_SON_TST : TGpioPin;
REL_A_SON,REL_B_SON,HOOK_A_IN,HOOK_B_IN : TGpioPin;
LED_RJ45 : TGpioPin;
const lo=false; hi=true;
begin
REL_A_HON:=TGpioLinuxPin.create(20);
REL_A_HON.Direction:=gdOut;
REL_A_HON.Value:=lo;
REL_A_USB:=TGpioLinuxPin.create(19);
REL_A_USB.Direction:=gdOut;
REL_A_USB.Value:=lo;
HON_A_BUSY:=TGpioLinuxPin.create(6);
HON_A_BUSY.Direction:=gdOut;
HON_A_BUSY.Value:=hi;
HON_A_CALL:=TGpioLinuxPin.create(12);
HON_A_CALL.Direction:=gdOut;
HON_A_CALL.Value:=hi;
REL_B_HON:=TGpioLinuxPin.create(26);
REL_B_HON.Direction:=gdOut;
REL_B_HON.Value:=lo;
REL_B_USB:=TGpioLinuxPin.create(21);
REL_B_USB.Direction:=gdOut;
REL_B_USB.Value:=lo;
HON_B_BUSY:=TGpioLinuxPin.create(16);
HON_B_BUSY.Direction:=gdOut;
HON_B_BUSY.Value:=hi;
HON_B_CALL:=TGpioLinuxPin.create(13);
HON_B_CALL.Direction:=gdOut;
HON_B_CALL.Value:=hi;
LED_A_GN:=TGpioLinuxPin.create(7);
LED_A_GN.Direction:=gdOut;
LED_A_GN.Value:=lo;
LED_A_RT:=TGpioLinuxPin.create(5);
LED_A_RT.Direction:=gdOut;
LED_A_RT.Value:=lo;
LED_B_RT:=TGpioLinuxPin.create(8);
LED_B_RT.Direction:=gdOut;
LED_B_RT.Value:=lo;
LED_B_GN:=TGpioLinuxPin.create(11);
LED_B_GN.Direction:=gdOut;
LED_B_GN.Value:=lo;
HON_A_SON_1:=TGpioLinuxPin.create(24);
HON_A_SON_1.Direction:=gdOut;
HON_A_SON_1.Value:=hi;
HON_A_SON_2:=TGpioLinuxPin.create(3);
HON_A_SON_2.Direction:=gdOut;
HON_A_SON_2.Value:=hi;
HON_A_SON_TST:=TGpioLinuxPin.create(2);
HON_A_SON_TST.Direction:=gdOut;
HON_A_SON_TST.Value:=hi;
HON_B_SON_1:=TGpioLinuxPin.create(10);
HON_B_SON_1.Direction:=gdOut;
HON_B_SON_1.Value:=lo;
HON_B_SON_2:=TGpioLinuxPin.create(18);
HON_B_SON_2.Direction:=gdOut;
HON_B_SON_2.Value:=hi;
HON_B_SON_TST:=TGpioLinuxPin.create(17);
HON_B_SON_TST.Direction:=gdOut;
HON_B_SON_TST.Value:=hi;
REL_A_SON:=TGpioLinuxPin.create(25);
REL_A_SON.Direction:=gdOut;
REL_A_SON.Value:=lo;
REL_B_SON:=TGpioLinuxPin.create(9);
REL_B_SON.Direction:=gdOut;
REL_B_SON.Value:=hi;
HOOK_A_IN:=TGpioLinuxPin.create(23);
HOOK_A_IN.Direction:=gdIn;
HOOK_B_IN:=TGpioLinuxPin.create(22);
HOOK_B_IN.Direction:=gdIn;
LED_RJ45:=TGpioLinuxPin.create(27);
LED_RJ45.Direction:=gdOut;
LED_RJ45.Value:=hi;
end.