Forum: Mikrocontroller und Digitale Elektronik In und Output von einem Pin 'aufteilen'


von Christoph (Gast)


Angehängte Dateien:

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

von Christian M. (Gast)


Lesenswert?

Hast Du ein Darenblatt zu dem Sensor?
Hat der Sensor OC Ausgang?
Kannst Du am Raspi OC Ausgang machen?
Bist Du sicher dass der Raspi Realtime kann?

Gruss Chregu

von Wolfgang (Gast)


Lesenswert?

Christoph schrieb:
> 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.

Das ist nicht ein Problem des Raspberry, sondern ein Problem deiner 
Programmierung.

von HildeK (Gast)


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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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...

: Bearbeitet durch Moderator
von Christoph (Gast)


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)

von Patrick J. (ho-bit-hun-ter)


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

von Wolfgang (Gast)


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.

von Sebastian S. (amateur)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.