In und Output von einem Pin 'aufteilen'

Gast #4905827
Lesenswert?

Guten Abend,
ich möchte einen Parallax Ping))) Sensor mit einem Raspberry Pi 
ansteuern. Dieser Sensor hat nur eine Signalleitung. Zunächst benötigt 
dieser Sensor einen Impuls und gibt danach auf der selben Leitung einen 
Implus zurück (wobei diese zweite Impluslänge für die gemessene 
Entfernung des Sensors steht).
Mein Problem dabei ist, dass mein Raspberry es nicht rechtzeitig schafft 
den Modus des Pins von Output (für das Startsignal) auf (Interrupt)Input 
umzustellen. Nun wäre meine Idee gewesen, dass ich den Startimpuls auf 
einem Pin sende und mit einem anderen Pin den Implus des Sensors 
empfange. Nun benötige ich ein(e) Bauteil/Schaltung die das Startsignal 
an den Ultraschallsensor gibt, aber nicht an meinen Empfangspin. Leider 
fällt mir kein (kleines) Bauteil oder keine einfache Schaltung ein die 
dies löst.
Hat jemand eine Idee für mich?

Beste Grüße,
Christoph
Angehängte Dateien:
Gast #4905837
Lesenswert?

Christoph schrieb:
> Nun benötige ich ein(e) Bauteil/Schaltung die das Startsignal
> an den Ultraschallsensor gibt, aber nicht an meinen Empfangspin.

Das "Bauteil" müsste doch Software heißen!
Du weißt doch in der SW, ob du gerade am Senden bist - und dann den 
Empfangspin ignorieren - oder eben beim Empfangen, um ihn dann 
auszuwerten.
Wenn ein Interrupt notwendig sein sollte, dann ist dieses Ignorieren 
sicher auch im IRQ-Handler möglich.
Bei einem 'normalen' µC würde ich das ohne IRQ machen.
Moderator (Firma: Titel) Persönliche Seite #4905850
Lesenswert?

Christoph schrieb:
> Dieser Sensor hat nur eine Signalleitung. Zunächst benötigt dieser
> Sensor einen Impuls und gibt danach auf der selben Leitung einen Implus
> zurück (wobei diese zweite Impluslänge für die gemessene Entfernung des
> Sensors steht). Mein Problem dabei ist, dass mein Raspberry es nicht
> rechtzeitig schafft den Modus des Pins von Output (für das Startsignal)
> auf (Interrupt)Input umzustellen.
Wofür der Interrupt? Wenn der µC eh' zu langsam ist, dann kannst du auch 
gleich pollen.

Allerdings wundert mich, wie man einen GHz Boliden so umständlich 
niederknechten kann, dass der für was "zu langsam" ist. Und zudem für 
eine Schallaufzeit! Die kann man ja fast auszählen. Beim Donner klappt 
das tadellos...
Gast #4905857
Lesenswert?

Schonmal danke für eure Hilfe. Als Datenblatt habe ich nur dieses 
Dokument gefunden: 
http://www.crustcrawler.com/products/Nomad/docs/PING%20Documentation-v1.6.pdf

Die Umstellung auf einen Interrupt dauert deswegen solange, da das 
Prioritätsscheduling mir da gelegentlich einen Strich durch die Rechnung 
macht.
Ohne IRQ zu pollen möchte ich nur sehr ungern, auch wenn es nur ein 
kurzer Zeitraum ist, da mehrere Messungen in kürzeren Zeiträumen gemacht 
werden.

Vielleicht könnte ich mit einem Flag Signalisieren dass die ISR bei 
meinem Senden effektiv nichts machen soll, allerdings dachte ich dass es 
eine schönere Lösung gibt. (da die Funktion dennnoch aufgerufen werden 
würde)
#4905868
Lesenswert?

Hi

Wenn der µC wirklich zu langsam ist und der Sensor NUR ein HIGH oder LOW 
zum STarten braucht, kannst Du den Pin als Ausgang schalten, und dann 
auf Eingang umschalten.
Durch einen ggf. notwenigen PullUp/-Dn Widerstand wird der Start-Pegel 
eingenommen.
Das Signal des Sensor 'übertüncht' das Pull-Signal und kann eingelesen 
werden.

So z.B. einen HC-SR04 an einer PicAxe betrieben (dort aber HIGH zu 
PULSIN)

MfG
Gast #4905882
Lesenswert?

Christoph schrieb:
> Die Umstellung auf einen Interrupt dauert deswegen solange, da das
> Prioritätsscheduling mir da gelegentlich einen Strich durch die Rechnung
> macht.

Vielleicht solltest du überlegen, beispielsweise einfach einen Arduino 
Clone für 2€ mit der Ultraschallmessung zu beauftragen und die 
Ergebnisse deinem Linux-Rechner über einen dort laufenden MQTT-Broker 
per Schnittstelle deiner Wahl zukommen zu lassen. So ein kleiner, 
autonomer µC ist für soetwas deutlich handlicher, als jetzt anzufangen, 
irgendwelche Hardware zu stricken, nur weil dir die Echtzeitfähigkeit 
auf dem RPi fehlt.
#4905944
Lesenswert?

Wieso nicht einen Ein- und einen Ausgang miteinander verbinden?
Solange Du nicht zwei Pins als Ausgang einrichtest (und diese 
miteinander verbindest), sollte es keine Probleme geben.

Da normalerweise auf diesen Rechnern Linux läuft, ein System, bei dem 
man prinzipiell nicht immer alles, und vor allem zu jeder Zeit machen 
darf, bleibt das befummeln der Pins immer ein (vor allem zeitliches) 
Problem.
Auf dieser Ebene ist ein kleiner Atmel oder Pic, als echter 
Echtzeitlümmel, die bessere und genauere Lösung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren