pascalio - Input-/Output-Bibliothek für Free Pascal

Zur Vorstellung von Komponenten und Units für Lazarus

Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Beitragvon ATILIUS_REGULUS » 10. Jan 2019, 14:00 Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Timm Thaler hat geschrieben:Das scheint Dir so, weil das Programm abstürzt, der GPIO damit nicht mehr disabled und damit noch vom vorherigen Programmlauf enabled ist.


Prinzipiell hast Du damit zwar recht, allerdings existiert das Verzeichnis /sys/class/gpio/gpio25 tatsächlich nur, während des Programmlaufs. Sobald das Programm beendet ist, gibt es das Verzeichnis nicht mehr. Wenn ich danach das Programm neu starte, wird in Beispielprogramm 1 sowohl das Verzeichnis in Create als auch das Setzen von Direction in "TGpioLinuxPin.SetDirection(AValue: TGpioDirection);" in dem ersten Schleifendurchlauf bereits gefunden (Verzeichnis /sys/class/gpio/gpio25) beziehungsweise ist gesetzt (GPIO.Direction = gdIn).
Natürlich ist dies kein strenger Beweis, es könnte bei anderen Pi Modellen oder anderen Konfigurationen anders sein, aber das Hauptproblem bleibt das Setzen des InterruptMode, welches definitiv länger dauert.

Was allerdings noch sein könnte, daß man, wenn man nach Programmende ein anderes Programm startet, welches GPIO-Pin 25 mit einem anderen Wert für GPIO.Direction initialisiert, es tatsächlich in diesem Falle länger dauert; oder wenn Pin 25 generell anderes konfiguriert war. Dies habe ich nicht explizit geprüft.

Insgesamt erscheint es daher tatsächlich sinnvoll, die Abfrage auch in Create und allen Set-Proceduren einzufügen.

An dieser Stelle nochmals danke für die Unterstützung und die Hinweise.
ATILIUS_REGULUS
 
Beiträge: 57
Registriert: 20. Feb 2013, 10:06
OS, Lazarus, FPC: KUBUNTU 14.04 (fpc 3.3.1) / Raspbian (fpc 3.3.1) | 
CPU-Target: x86, x64, ARM
Nach oben

Beitragvon Timm Thaler » 10. Jan 2019, 14:21 Re: pascalio - Input-/Output-Bibliothek für Free Pascal

ATILIUS_REGULUS hat geschrieben:Sobald das Programm beendet ist, gibt es das Verzeichnis nicht mehr.


Wenn es beendet wird? Oder wenn es abstürzt?

Wie soll das sonst gehen? Das Verzeichnis wird entfernt, wenn ich die zu disabelnde GPIO-Nummer in "/sys/class/gpio/unexport" schreibe. Das muss also entweder in Deinem Progamm passieren, oder von der fpgpio bei einer Exception gemacht werden.
Timm Thaler
 
Beiträge: 897
Registriert: 20. Mär 2016, 22: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 ATILIUS_REGULUS » 10. Jan 2019, 14:40 Re: pascalio - Input-/Output-Bibliothek für Free Pascal

Timm Thaler hat geschrieben:Wenn es beendet wird? Oder wenn es abstürzt?

Wenn das Programm ohne Exception beendet wird, zum Beispiel Beispielprogramm 2, gibt es das Verzeichnis /sys/class/gpio/gpio25 nicht mehr.

Wenn das ursprüngliche Programm mit einer Exception beendet wurde, existierte das Verzeichnis /sys/class/gpio/gpio25 auch nach dem Programmende weiter und wurde nicht entfernt.

In beiden Fällen wird bei einem Neustart sowohl das Verzeichnis in Create als auch das Setzen von Direction in "TGpioLinuxPin.SetDirection(AValue: TGpioDirection);" unmittelbar nach dem Erzeugen/Setzen bereits gefunden.
Es könnte allerdings sein, wie ich schon erwähnt habe, daß wenn man den Pin zuvor anders konfiguriert hatte, das Erzeugen des Verzeichnisses oder das Setzen von TGpioLinuxPin.SetDirection länger dauern könnte, was ich allerdings nicht überprüft habe (Dafür müßte man strenggenommen alle möglichen Kombinationen durchgehen, um sicher zu sein...).
ATILIUS_REGULUS
 
Beiträge: 57
Registriert: 20. Feb 2013, 10:06
OS, Lazarus, FPC: KUBUNTU 14.04 (fpc 3.3.1) / Raspbian (fpc 3.3.1) | 
CPU-Target: x86, x64, ARM
Nach oben

• Themenende •
Vorherige

Zurück zu Units/Komponenten



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried