Jump to content

Entweder Touch oder HAT Zero Brick funktionieren


Robbl
 Share

Recommended Posts

Hallo zusammen,

leider muss ich mich aktuell entscheiden, ob ich den Touch meines Waveshare 5inch HDMI, oder die per Outdoor Weatherbricklet am HAT Zero Brick angebundene Wetterstation nutzen kann.

Das LCD wird in der Config.txt auf dem Raspi 3B+ eingebunden (siehe config.png). Sobald ich die markierte Zeile nicht mehr auskommentiert habe (sie hat wohl mit dem Touchtreiber LCD5-show zu tun), ist die Verbindung vom Brickviewer zum Brickdaemon, nach Neustart des Raspi, nicht mehr möglich (siehe daemon_fehler.png). Kommentiere ich die Zeile wieder aus, läuft es problemlos, allerdings dann ohne Touch.

Was kann ich hier tun, um beides parallel betreiben zu können?

Vielen Dank für eure Unterstützung.

 

Grüße

Robbl

config.PNG

daemon_fehler.PNG

daemon_ok.PNG

Link to comment
Share on other sites

Die dtoverlay Zeile konfiguriert den Kernel Treiber für den ADS7846 Touch Screen Controller. Der penirq=25 konfiguriert wohl Pin 25 GPIO25 (Pin 22) als einen Interrupt Pin für das Display. Der HAT Zero Brick verwendet aber auch Pin 25 GPIO25 (Pin 22) als eine der Chip Select Pins. Das funktioniert so nicht. Ein Pin kann nicht gleichzeitig für zwei Funktionen verwendet werden.

Wenn du die dtoverlay Zeile aktiv hast, dann kann brickd den Pin nicht mehr für seine Zwecke verwenden. Schau mal in die Log Datei /var/log/brickd.log. Dort sollten Fehlermeldungen über fehlgeschlagene Versuche stehen den HAT Zero Brick zu konfigurieren.

Das ist so ohne weiteres nicht zu lösen, falls es überhaupt zu lösen ist, denn der ADS7846 Touch Screen Controller benötigt, wie der HAT Zero Brick auch, die SPI Schnittstelle des Raspberry Pis. Das Raspberry Pi hat zwei SPI Schnittstellen: spi0 und spi1. Bedingt durch Funktionseinschränkungen der spi1 Schnittstelle, funktioniert der HAT Zero Brick ausschließlich an spi0. Aus dieser Wikiseite über das Display leite ich ab dass dieses auch spi0 verwenden will:

https://www.waveshare.com/wiki/5inch_HDMI_LCD

Du müsstet also schauen wo Touch Controller und HAT Zero Brick bei den Pins und der SPI Schnittstelle kollidieren und versuchen diese Kollisionen zu lösen. Dazu wirst du dann wohl auch die Pins anders verbinden müssen durch einen selbstgebauten Adapter.

Link to comment
Share on other sites

Hallo photron,

vielen Dank für Deine Rückmeldung.

Im brickd.log finde ich folgendes:

image.thumb.png.39f743d7e34dd67473dfabae7f56d36b.png

 

Was mich wundert, lt. Beschaltung auf der waveshare-Seite ist Pin25 Masse und den hab ich definitiv auch nicht in Verwendung. Ich nutze nur die 5 markierten Pins per Kabel:

image.png.9ba0cf98b980ef29da66b46824ea72b8.png

Auf welchen Pin müsste ich denn umstecken um die spi1 für das Display nutzen zu können?

 

 

 

Link to comment
Share on other sites

Du musst bei den Pin Nummern aufpassen. Es gibt zwei Nummernsysteme. Einmal die GPIO Nummer und die Pin Nummer. In der dtoverlay Zeile ist der IRQ Pin als 25 angegeben, dass meint GPIO25 was Pin 22 (TP_IRQ) in deiner Tabelle entspricht. Als ich von Pin 25 sprach meinte ich GPIO25, sorry.

https://github.com/Tinkerforge/hat-zero-brick/blob/master/hardware/hat-zero-schematic.pdf

Du kannst hier im Schaltplan des HAT Zero Bricks sehen, welche Pins vom HAT Zero Brick verwendet werden (der gelbe Kasten rechts auf der ersten Seite stellt den Pin Header dar). Da kannst du sehen das SPI0 belegt ist. Dort hast du aber auch gerade den Touch Controller angeschlossen. Der IRQ Pin GPIO25 ist auch schon belegt.

Du kannst jetzt versuchen, den Touch Controller an SPI1 anzuschließen, einen anderen freien Pin für den IRQ des Touch Controller zu nehmen und dann die dtoverlay Zeile anzupassen.

Das wird aber alles nicht viel helfen. Das Problem liegt hier im Kernel:

https://github.com/raspberrypi/linux/blob/34ae8ccc3d4c72b95aae68f2bd150246e44d6a5d/arch/arm/boot/dts/overlays/ads7846-overlay.dts

Das ADS7846 Overlay erwartet fest mit dem spi0 Kernel Device zu arbeiten und deaktiviert auch gleich deaktiviert auch die Userland Devices spidev0 und spidev1. Daher kommt dann auch der "Could not open /dev/spidev0.0: ENOENT" Fehler im brickd.log, den brickd verwendet spidev0 um mit der SPI0 Schnittstelle zu kommunizieren.

Es braucht also auch noch mindestens eine Overlay Anpassung im Kernel. Ich bin mir aber nicht mal sicher, ob spi1 und spidev0 so zusammenspielen können, so wie das für diesen Fall nötig wäre.

Link to comment
Share on other sites

Na dann dank ich Dir auf jeden Fall erstmal für die vielen Infos. Zumindest hab ich was dazu gelernt. Schade, dass es so nicht funktioniert, aber es gibt ja noch VNC und am Ende wird eh über ein c# Programm abgefragt.

Viele Grüße

Robbl 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...