Raspberry Pi - Programmierung

  • Seite 2 von 3
26.07.2023 20:02 (zuletzt bearbeitet: 26.07.2023 20:22)
avatar  Montre
#16
avatar

 Antworten

 Beitrag melden
26.07.2023 21:14
#17
avatar

Spannend. In keinem Beispiel wird mit Variablen gearbeitet die durch verschiedene Prozesse gelesen oder geschrieben werden sollen. Da stelle ich mir dir Frage, ob dies sicher ist. Ich erinnere mich noch an Java, dass so etwas ganz gemein sein kann und man sicherstellen muss, dass die Zugriffe zwischen den Prozessen Synchronisiert sind.

Müsste mal damit experimentieren.


 Antworten

 Beitrag melden
26.07.2023 22:27
avatar  Montre
#18
avatar

Die Beispiele verwenden den FIFO. Du kannst z.B. threadsichere Queues oder Mutexe, Semaphore o.ä. verwenden.
Dieser Artikel geht hier näher drauf ein.


 Antworten

 Beitrag melden
26.07.2023 23:28
avatar  Montre
#19
avatar

Spannend sind auch die IRQ-, DMA- und SPI-Samples.
Meine Vorstellung ist, dass das Core0 die lokalen 20 GIOs abfragt und Core1 sich um die IO-Expander an den SPI-Pins kümmert.
Inwieweit dann DMA genutzt werden kann, überblicke ich noch nicht. Das hätte den Vorteil, das die Cores geschont werden.

Wie geht's dann weiter? Ein RaspPi müsste per SPI die Daten vom Pico weiterverarbeiten. Oder ein Pico bekommt eine Netzwerkerweiterung und schiebt dem PC die Daten über Ethernet zu. Dort kann ich dann mit meinem Midi-Router die Tasten zu Midi mappen und an Hauptwerk senden.


 Antworten

 Beitrag melden
29.07.2023 13:30
#20
avatar

Hat sich von euch eigentlich schon einmal jemand mit Zustandsmaschinen beim Pi Pico beschäftigt? https://www.heise.de/blog/I-O-on-Steroid...co-6018818.html

Ich weiß nicht, ob es möglich ist, da aber diese Zustandsmaschinen wie ich es verstehe eigenständige Teile sind, müsste man damit extrem schnell eigentlich eine Matrix abfragen können. Aber für mich ist es mal für so nebenbei etwas zu hoch dieses Thema. Diese Möglichkeit scheint aber ein Vorteil vom Pico zu sein.


 Antworten

 Beitrag melden
30.07.2023 00:15
avatar  Montre
#21
avatar

Den härtesten Tobak, den ich bisher zum Thema gefunden habe, ist das Video von diesem Freak hier ;-)
Das Thema ist nicht trivial, schwer zu debuggen und in English gibt mir das Thema dann den Rest :-)


 Antworten

 Beitrag melden
30.07.2023 00:41
#22
avatar

Es gibt bei Pico mit Python auch noch die Möglichkeit zeitkritische Dinge ist garantierter Zeit auszuführen. Ich weiß nur nicht wie es sich nennt.


 Antworten

 Beitrag melden
12.08.2023 12:38 (zuletzt bearbeitet: 12.08.2023 12:49)
avatar  Montre
#23
avatar

Hallo zusammen,
ich unterbreche mal kurz die Urlaubs-"Stille" ;-)

Unsere letzter Urlaubs-Abstecher war nicht weit von der Adresse "Elektronikring 1, Sande" entfernt :-)
Dort habe ich ein paar IC's und Hallsensoren zum Ausprobieren bzw. Elektronik-Erfahrung sammeln gekauft.

Also geht's demnächst mit einer kleinen Testschaltung bei mir weiter. Picos habe ich noch keine gekauft. Den ersten Versuchsaufbau werde ich mit einem vorhandenen RaspPi ausführen.

Folgende Punkte möchte ich testen:

  • Hallsensor für die zukünftige Erkennung eines Tastendrucks in eine Schaltung einbinden
  • Performance-Test bei der Abfrage von I/O-Expandern
  • Funktionsweise bzw. praktische Anwendung von Shift-Registern
  • Bei allen Punkten die Anwendung der API-Funktionalität in C++ und später ggf. auch in Assembler


Hier ist eine Beispielschaltung für Hallsensoren (Arduino) zu finden.

VG
Wolfgang


 Antworten

 Beitrag melden
12.08.2023 18:14
#24
So

Viel Erfolg!

Zu den Shift-Registern kann ich bald einen Erfahrungsbericht geben. Baue mir aus mehreren verketteten 595ern und 165ern gerade Pistonsleisten unter die oberen beiden Manuale, mit beleuchteten Pistons wenn aktiv.


 Antworten

 Beitrag melden
12.08.2023 18:16
avatar  Montre
#25
avatar

Dann auch dir viel Erfolg :-)


 Antworten

 Beitrag melden
12.08.2023 20:09 (zuletzt bearbeitet: 12.08.2023 20:11)
avatar  Montre
#26
avatar

Zum 74HC565 habe ich folgende Infos ermittelt:
Bezeichnung AusgangsPins: Q0..Q7 oder QA..QH
OE - Output Enable
DS - Data Signal
SHCP - Shift Clock Pin
STCP - Shift Store Pin
MR - Master Reset

Kaskadieren:
Q7S mit DS des nächsten IC verbinden und beide SHCP verbinden.

Verarbeitung:
Für alle Bits: SHCP auf LOW stellen, Bit schreiben (DS), SHCP auf HIGH stellen
Anschließend: STCP auf HIGH - alle Bits werden auf den Ausgang geschrieben


 Antworten

 Beitrag melden
12.08.2023 22:41
#27
So

Für den 74HC595 wäre das hier eine kaskadierte Verkabelung, die ich getestet habe und die funktioniert. STCP und SHCP müssen alle miteinander verbunden sein. Beim Data-Pin logischerweise DS und Q7'.

Bei mir gehen die Ausgänge des 595er auf die Basis eines Transistors, der dann die LEDs mit separater Stromversorgung schaltet.

Bild entfernt (keine Rechte)


 Antworten

 Beitrag melden
12.08.2023 23:02
avatar  Montre
#28
avatar

Cool. Das mit dem Transistor verstehe ich noch nicht. Wäre ein MCP23x17 nicht einfacher zu handeln? Das wäre mein bevorzugter Versuch.

Mann wird durch diverse YT-Videos schnell dazu verleitet, etwas nachzubauen - "ist ja easy". Wenn ich mir aber die Hinweise im Elektronik-Kompendium ansehe, dann merke ich schnell, dass ich mit einem gefährlichen Halbwissen unterwegs bin.

Nur auszugsweise ein paar Hinweise aus den unten angegebenen Links:
"Eines vorneweg, der Gesamtstrom aller GPIOs sollte 50 mA nicht übersteigen."
"Der Bereich, in dem die Ausgangsendstufen eines GPIO sicher arbeiten reicht von 2 bis 16 mA"
"Die Stromentnahmen an einem GPIO-Ausgang muss in jedem Fall begrenzt werden."
...

Raspberry Pi: Belegung GPIO

Raspberry Pi: GPIO beschalten

Raspberry Pi: GPIO mit Pullup- oder Pulldown-Widerstand beschalten?

Raspberry Pi: GPIO-Eingang mit 5 oder 12 Volt beschalten


 Antworten

 Beitrag melden
12.08.2023 23:26
#29
So

Das mit dem Transistor steht in direktem Zusammenhang mit den von dir zitierten Hinweisen. Ein Mikrocontroller ist für kleine Steuerströme da und nicht um Leistung darüber laufen zu lassen. Eine LED braucht ca 20 mA. Mit meiner 4er Kaskade könnte ich 32 LEDs leuchten lassen, bräuchte dann 640 mA. Bei Arduino mit USB Versorgung kommen grad mal 500 mA über USB.

Daher versorgt man die LEDs nicht direkt mit dem Mikrocontroller oder mit dem Schieberegister, sondern man drückt damit lediglich auf den Lichtschalter und die LED erhält ihren Strom von einer separaten Spannungsquelle. In meinem Fall ein separates Netzteil.

Und dieser ominöse Lichtschalter, auf den ein Arduino oder ein RasPi drücken kann, heißt Transistor. Das ist ein Halbleiter, der bei Anlegen einer kleinen Spannung mit minimalstem Strom leitend wird. Ich kann morgen noch ein Bild von der Schaltung posten.

Im Arduino Thread hatte ich dazu auch Hinweise bzw. „Schulungsmaterial“ gepostet.


 Antworten

 Beitrag melden
13.08.2023 15:27
avatar  Montre
#30
avatar

Danke für die Info. Das ist trotzdem kompliziert, wenn man das wirklich verstehen will:
http://www.gsc-elektronic.net/transistor...rechnungen.html
https://www.aeq-web.com/transistor-basic...irkungen-teil-2


 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!