Raspi GPIO Problem

Raspi GPIO Problem

Beitragvon DL3AD » 27. Mai 2019, 18:00 Raspi GPIO Problem

Hallo,

habe auf dem Raspi fpgpio bisher bei GPIO Eingangspins erfolgreich verwendet.

Nun wollte ich GPIOs als Aufgang verwenden und habe da dass Problem das die Pins nicht reagieren.
Erst wenn ich in der Console ein Pin manuel exportiere funktioniert mein Testprogramm(bis zum nächsten Neustart)
Manueller Export wie folgt gemacht:

sudo echo "16" > /sys/class/gpio/export

und hier mein Testprogram

Code: Alles auswählen
//GPIO Out Test
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  fpgpio;
 
type
  { TForm1 }
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormShow(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  mypin: TGpioPin;
 
implementation
{$R *.lfm}
{ TForm1 }
//Initialisierungen
procedure TForm1.FormShow(Sender: TObject);
begin
  mypin:= TgpioLinuxPin.Create(16);
  mypin.Direction:= gdOut;
end;
 
//Beenden
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  mypin.Destroy;
end;
 
//GPIO Ein
procedure TForm1.Button1Click(Sender: TObject);
begin
  mypin.Value := true;
end;
 
//Aus
procedure TForm1.Button2Click(Sender: TObject);
begin
  mypin.Value := false;
end;
 
end.


Pins als Eingang funktionieren ohne manuellen export .
Was mache ich falsch ?

Gruß Frank
DL3AD
 
Beiträge: 399
Registriert: 13. Sep 2013, 12:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon Timm Thaler » 27. Mai 2019, 18:59 Re: Raspi GPIO Problem

Ich seh zwar nicht, was in der fpgpio passiert, aber ich vermute das übliche Problem: Ein Pin braucht nach Aktivierung (enable) bis zu 50msec, bis er zur Verfügung steht. Wird vorher versucht, den Pin von Eingang nach Ausgang zu schalten, bleibt er auf Eingang.

Also entweder 100msec Pause zwischen Enable und auf Ausgang setzen oder nach Enable alle 5msec abfragen, ob Pin enabled ist und dann auf Ausgang setzen, mit Timeout nach 20 erfolglosen Abfragen.
Timm Thaler
 
Beiträge: 966
Registriert: 20. Mär 2016, 23:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon DL3AD » 27. Mai 2019, 19:06 Re: Raspi GPIO Problem

... nein das ist nicht das Problem - ließ noch mal was ich schrieb
DL3AD
 
Beiträge: 399
Registriert: 13. Sep 2013, 12:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon Timm Thaler » 27. Mai 2019, 19:36 Re: Raspi GPIO Problem

DAS ist genau das Problem: Wenn Du den Gpio manuell exportierst, ist danach genug Zeit, damit der Gpio in /sys/class/gpio angelegt wird. Wenn Du dann das Programm startest, kann es auf den bereits exportierten Gpio zugreifen. Wird die Wartezeit nicht eingehalten, versucht das Programm einen noch nicht angelegten Gpio auf Ausgang zu setzen und das geht nicht. Kurz darauf ist der Gpio dann angelegt und verfügbar, da der Befehl zum auf Ausgang setzen aber ins Leere lief ist der Gpio ein Eingang.

Allerdings habe ich oben statt "export" "enable" geschrieben, das hatte ich falsch in Erinnerung.
Timm Thaler
 
Beiträge: 966
Registriert: 20. Mär 2016, 23:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon DL3AD » 27. Mai 2019, 19:50 Re: Raspi GPIO Problem

ahh dann muss zwischen
Code: Alles auswählen
  mypin:= TgpioLinuxPin.Create(16);

und
Code: Alles auswählen
  mypin.Direction:= gdOut;

eine Verzögerung rein ?
DL3AD
 
Beiträge: 399
Registriert: 13. Sep 2013, 12:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon Timm Thaler » 27. Mai 2019, 21:04 Re: Raspi GPIO Problem

Ja. Zumindest hab ich in den fpgpio nichts gefunden, dass vor dem SetDirection nochmal geprüft wird.
Timm Thaler
 
Beiträge: 966
Registriert: 20. Mär 2016, 23:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon DL3AD » 27. Mai 2019, 21:20 Re: Raspi GPIO Problem

... jo - es funktioniert
Vielen Dank für deine Hilfe.

Gruß Frank
DL3AD
 
Beiträge: 399
Registriert: 13. Sep 2013, 12:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

• Themenende •

Zurück zu Linux



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried