Veraltete Raspberry Bibliotheken?
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Veraltete Raspberry Bibliotheken?
Ich müsste ein serielles SRam via SPI ansprechen, mit dem Raspberry (V3).
Dafür würde ich wohl eine der Bibliotheken brauchen die hier beschrieben sind.
http://wiki.freepascal.org/Lazarus_on_Raspberry_Pi
Wie ich lese läuft Pigpio nur auf einem Broadcom BCM2835? Also Raspberry V1.
Die RPI-Hal bringt auch nur Fehlermeldungen.
Kann es sein das ich was falsch mache oder ist das alles ev. ein wenig veraltet?
Ist dieses eXtended Library besser?
Dafür würde ich wohl eine der Bibliotheken brauchen die hier beschrieben sind.
http://wiki.freepascal.org/Lazarus_on_Raspberry_Pi
Wie ich lese läuft Pigpio nur auf einem Broadcom BCM2835? Also Raspberry V1.
Die RPI-Hal bringt auch nur Fehlermeldungen.
Kann es sein das ich was falsch mache oder ist das alles ev. ein wenig veraltet?
Ist dieses eXtended Library besser?
Good code comes from experience, experience comes from bad code.
-
- Beiträge: 1224
- Registriert: So 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
Re: Veraltete Raspberry Bibliotheken?
Nö. Musst Du nicht. Linux: Everything is a file.
Du kannst den SPI Port ganz normal über die Dateifunktionen ansprechen, so wie die Gpios auch. Dateiname ist irgendwas mit SPI.
Du kannst den SPI Port ganz normal über die Dateifunktionen ansprechen, so wie die Gpios auch. Dateiname ist irgendwas mit SPI.
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Veraltete Raspberry Bibliotheken?
Du meinst bestimmt nicht der 'native Access'?
Der schreibt ja wirklich ein File auf die SD card.
Da sehe ich auch keine Möglichkeit 'SPI' zu machen.
Das ist wohl eher gedacht mal ab und an einen Port zu ändern.
Ich versuche mal das Pascalio, da gehts in den Beispielen wie es scheint vor allem um einen Portexpander.
Nicht exakt was ich brauche, aber wenigstens kann ich da irgendwas compilieren.
Der schreibt ja wirklich ein File auf die SD card.
Da sehe ich auch keine Möglichkeit 'SPI' zu machen.
Das ist wohl eher gedacht mal ab und an einen Port zu ändern.
Ich versuche mal das Pascalio, da gehts in den Beispielen wie es scheint vor allem um einen Portexpander.
Nicht exakt was ich brauche, aber wenigstens kann ich da irgendwas compilieren.
Good code comes from experience, experience comes from bad code.
-
- Beiträge: 1224
- Registriert: So 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
Re: Veraltete Raspberry Bibliotheken?
Nein, Du kannst den Spi ansprechen wie die Gpios, als Device. Es gibt zwei Spi Devices die als spidev.0 und spidev.1 bezeichnet werden, oder so.
Wenn das 2 Tage Zeit hat, ich schreibe eine nrf24 Routine von C auf Pascal um, der nrf nutzt auch den Spi. Da kann ich Dir die Beispiele reinstellen.
Wenn das 2 Tage Zeit hat, ich schreibe eine nrf24 Routine von C auf Pascal um, der nrf nutzt auch den Spi. Da kann ich Dir die Beispiele reinstellen.
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Veraltete Raspberry Bibliotheken?
Danke für die Antwort.
Sicher hat das zwei Tage Zeit. Bin jetzt schon Monate an meinem Projekt (Raspberry -> Ram/Rom -> AVR).
Diese NRF24 dinger sind auch sehr interessant.
Ich versuche trotzdem mal was mit Pascalio. Sollte ja Möglich sein. Mann kann nur lernen.
Sicher hat das zwei Tage Zeit. Bin jetzt schon Monate an meinem Projekt (Raspberry -> Ram/Rom -> AVR).
Diese NRF24 dinger sind auch sehr interessant.
Ich versuche trotzdem mal was mit Pascalio. Sollte ja Möglich sein. Mann kann nur lernen.
Good code comes from experience, experience comes from bad code.
-
- Beiträge: 1224
- Registriert: So 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
Re: Veraltete Raspberry Bibliotheken?
Pascalio sollte schneller sein als Filezugriff, weil das ja direkt über die Register auf die Hardware zugreift. Ist auch bei den Gpios so. Man macht sich halt von externen Libs abhängig. Deswegen versuche ich das zu vermeiden, wenn möglich.
-
- Lazarusforum e. V.
- Beiträge: 3158
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Veraltete Raspberry Bibliotheken?
Timm Thaler hat geschrieben:Pascalio sollte schneller sein als Filezugriff, weil das ja direkt über die Register auf die Hardware zugreift. Ist auch bei den Gpios so. Man macht sich halt von externen Libs abhängig. Deswegen versuche ich das zu vermeiden, wenn möglich.
PascalIO verwendet aktuell auch nur die Dateischnittstelle. Den Zugriff per Memory-Mapped-File direkt auf die Register hatte ich nicht hinbekommen, kann aber gerne ergänzt werden.
Falls es um maximale Geschwindigkeit geht, führt kein Weg an einem eigenen Kernel-Modul vorbei; dann könnte der SRAM auch als externer RAM genutzt werden. Ohne Kernel-Modul ist es nur ein externer, anwendungsabhängiger Speicher.
Der Zugriff auf die SPI-Schnittstelle erfolgt über die Klasse TSPILinuxDevice, ein Beispiel findet sich unter https://github.com/SAmeis/pascalio/blob/master/test/spi_linux/Project1.pas
P.S. wenn euch in PascalIO oder der Dokumentation noch etwas fehlt, meldet euch bitte hier im Forum. Ich versuche das dann kurzfristig zu ergänzen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 1224
- Registriert: So 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
Re: Veraltete Raspberry Bibliotheken?
Für SPI auf dem AVR hab ich hier ein paar Routinen reingestellt: http://wiki.freepascal.org/AVR_Embedded_-_SPI
Erstmal nur für Master-Betrieb, aber um den Speicher auszulesen sollte das gehen.
Erstmal nur für Master-Betrieb, aber um den Speicher auszulesen sollte das gehen.
-
- Beiträge: 6165
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Veraltete Raspberry Bibliotheken?
Timm Thaler hat geschrieben:Für SPI auf dem AVR hab ich hier ein paar Routinen reingestellt: http://wiki.freepascal.org/AVR_Embedded_-_SPI
Erstmal nur für Master-Betrieb, aber um den Speicher auszulesen sollte das gehen.
Du warst anscheinend auch recht fleissig.
Wen ich die I²C Schnittstelle mit Pascal ansprechen kann, werde ich mal ein lib für das I²C LCD-Display schreiben.
Auf dem PC/Raspi läuft diese schon über /dev/i2c
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 1224
- Registriert: So 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
Re: Veraltete Raspberry Bibliotheken?
Und hier die Routinen für den Raspberry: http://wiki.freepascal.org/Raspberry_Pi_-_SPI
Hier ist zu beachten, dass der SPI-Controller die Steuerung der Select-Pins (Gpio7 und Gpio8) selbst übernimmt.
Hier ist zu beachten, dass der SPI-Controller die Steuerung der Select-Pins (Gpio7 und Gpio8) selbst übernimmt.
-
- Beiträge: 1224
- Registriert: So 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
Re: Veraltete Raspberry Bibliotheken?
Mathias hat geschrieben:Wen ich die I²C Schnittstelle mit Pascal ansprechen kann, werde ich mal ein lib für das I²C LCD-Display schreiben
Wenn es Software-I2C sein darf: http://wiki.freepascal.org/AVR_Embedded ... _I2C_/_TWI
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Veraltete Raspberry Bibliotheken?
Timm Thaler hat geschrieben:Und hier die Routinen für den Raspberry: http://wiki.freepascal.org/Raspberry_Pi_-_SPI
Hier ist zu beachten, dass der SPI-Controller die Steuerung der Select-Pins (Gpio7 und Gpio8) selbst übernimmt.
Das sieht ja sehr gut aus. Versuche gerade mein SRam Problem damit zu lösen.
Good code comes from experience, experience comes from bad code.
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Veraltete Raspberry Bibliotheken?
Ich wieder. Habe mein Projekt mal hochgeladen.
Es funktioniert soweit.
Musste nur ein drei Aenderungen in der Unit (test_spi) machen. Habe es markiert.
Irgendwie habe ich aber Probleme mit der Prozedur 'spi.TransferSync'.
Ich kann die Modes des SRAM setzen, wenn ich aber versuche den Status (mode) wieder auszulesen kriege ich das nicht angezeigt. Das SRAM schickt es korrekt wie es scheint.
Einzelnes Byte speichern funktioniert auch, nur beim Auslesen habe ich wieder dasselbe Problem mit der Prozedur 'spi.TransferSync'.
Weiss gerade nicht ob ich was verkehrt mache oder ob es ein Fehler in der Unit ist?
Es funktioniert soweit.
Musste nur ein drei Aenderungen in der Unit (test_spi) machen. Habe es markiert.
Irgendwie habe ich aber Probleme mit der Prozedur 'spi.TransferSync'.
Ich kann die Modes des SRAM setzen, wenn ich aber versuche den Status (mode) wieder auszulesen kriege ich das nicht angezeigt. Das SRAM schickt es korrekt wie es scheint.
Einzelnes Byte speichern funktioniert auch, nur beim Auslesen habe ich wieder dasselbe Problem mit der Prozedur 'spi.TransferSync'.
Weiss gerade nicht ob ich was verkehrt mache oder ob es ein Fehler in der Unit ist?
- Dateianhänge
-
- Test_SPI.tar.gz
- (7.09 MiB) 73-mal heruntergeladen
Good code comes from experience, experience comes from bad code.
-
- Beiträge: 1224
- Registriert: So 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
Re: Veraltete Raspberry Bibliotheken?
Marc hat geschrieben:Einzelnes Byte speichern funktioniert auch, nur beim Auslesen habe ich wieder dasselbe Problem mit der Prozedur 'spi.TransferSync'.
Weiss gerade nicht ob ich was verkehrt mache oder ob es ein Fehler in der Unit ist?
Naja, ich hab da mal drübergeschaut: Du schreibst 3 Byte, liest ein Byte und gibst eine Bytezahl von 4 an. Bißchen inkonsequent, oder?
SPI Transfer funktioniert so, dass eine Anzahl Bytes rausgeschrieben wird und gleichzeitig Bytes eingelesen werden. Dafür werden in der Prozedur Buffer reserviert. Werden 4 Byte reserviert, aber nur 3 übergeben, ist das vierte Byte Null, wird aber trotzdem gesendet. Was Move macht, wenn der Eingangsbuffer 4 Byte groß ist, 4 Byte als Länge angegeben werden aber Dein Byte_In nur 1 Byte groß ist - keine Ahnung. Entweder wird nur das erste Byte übertragen, oder das letzte, oder alle 4 Byte, und weil intern eh mit 32bit-Werten gearbeitet wird landen alle 4 Byte in einem 32-bit-integer.
Also Out_Byte und In_Byte müssen nicht gleich groß sein, aber zumindest sollten alle empfangenen Bytes auch in In_Byte passen.
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Veraltete Raspberry Bibliotheken?
Hallo Timm Thaler. Danke für die Hilfe.
Ja inkonsequent und noch schlimmer Ahnungslos!
Ich mache die Buffer jetzt gleich gross. Muss einfach die ersten Bytes in der Array ignorieren.
So geht es.
Um das RAM zu füllen gäbe es den Sequential Mode. Das müsste insgesamt am schnellsten sein.
So wie ich das Datenblatt verstehe müsste das gehen.
Den kann ich aber nicht verwenden da ich 32768 + 3 Bytes im Out Buffer hätte.
Die Prozedur 'spi.TransmitSync(OutArr, ByteCnt); ' verwendet ja ein Byte als Zähler.
Ich nehme mal an das ist technisch bedingt?
Also werde ich den Page Mode verwenden. Eine einzelne Page hab ich schon mal geschrieben.
Da müsste ich mit der Zeit hinkommen, die ich zur Verfügung habe, das RAM zu füllen (geschätzt ca 0.3 Sec für alle Pages zusammen).
Ist nur etwas unschön die 32768 bytes in 1024 mal 32 bytes umzukopieren.
Ja inkonsequent und noch schlimmer Ahnungslos!
Ich mache die Buffer jetzt gleich gross. Muss einfach die ersten Bytes in der Array ignorieren.
So geht es.
Um das RAM zu füllen gäbe es den Sequential Mode. Das müsste insgesamt am schnellsten sein.
So wie ich das Datenblatt verstehe müsste das gehen.
Den kann ich aber nicht verwenden da ich 32768 + 3 Bytes im Out Buffer hätte.
Die Prozedur 'spi.TransmitSync(OutArr, ByteCnt); ' verwendet ja ein Byte als Zähler.
Ich nehme mal an das ist technisch bedingt?
Also werde ich den Page Mode verwenden. Eine einzelne Page hab ich schon mal geschrieben.
Da müsste ich mit der Zeit hinkommen, die ich zur Verfügung habe, das RAM zu füllen (geschätzt ca 0.3 Sec für alle Pages zusammen).
Ist nur etwas unschön die 32768 bytes in 1024 mal 32 bytes umzukopieren.
Good code comes from experience, experience comes from bad code.