Forum: Mikrocontroller und Digitale Elektronik Informationsuebertragung ueber eine Linie


von Johannes (Gast)


Lesenswert?

Hallo,

Themenbereich Robotik, Phantom haptic input device von Sensable...
folgende Situation: Habe ein haptisches Eingabegeraet an dem ein Knopf
ist (einfacher Unterbrecher einer Leitung). Es gibt einige APIs mit
Hilfe derer man mit diesem Geraet ganz gut kommunizieren kann. Ich
programmiere also C bzw C++ unter Microsoft Visual Studio .Net. Wenn
ich den Knopf druecke kann ich ein sog. Event ausloesen in meinem
Programm. Kurz gesagt: ich kann per Software einen Knopfdruck
feststellen.

Frage:
ich will ueber die Leitung dieses Unterbrechers nun Informationen
uebertragen, habe aber keine Synchroniesierung oder Zeitbasis auf
Seiten des Geraetes und in meinem Programm auch nicht. Diese Leitung
werde ich an einen Pin eines AVR haengen.

Wie uebertrage ich ein Byte ueber diese Leitung, und wie stelle ich es
in der Software wieder her? Wie geht hier die Synchronisation?

Ich danke euch fuer jeden Tipp. Links zu
Informations-/Dokumentationsquellen sind gern gesehen.

mg,
Johannnes

von Robert W. (rweber)


Lesenswert?

Ich habe zwar keine Ahnung, was ein haptisches Eingabegeraet ist, aber
wenn du zur Datenübertragung nur eine Leitung zur verfügung hast,
solltest du dir mal den 1-Wire bus ansehen:
http://www.maxim-ic.com/1-Wire.cfm
Dafuer gibt es z.B. auch IO-Expander hinter die du dann Schlter und
Taster anklemmen kannst.

Falls es das ist, was Du suchst...

Gruss,
rweber

von Dirk (Gast)


Lesenswert?

Hi,

schau Dir mal die Manchestercodierung an.


Gruß,

Dirk

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Da sollte doch eine ganz normale asynchrone Kommunikation funktionieren,
z.B. mit dem UART des AVR und einem Software-UART in deiner PC-Software.

von Johannes (Gast)


Lesenswert?

Hallo,

vielen Dank fuer die Tips. Ich werd sie mir gleich mal vornehmen.

@andreas: gibt es Software-UARTs als fertige Pakete, oder muss ich die
selber schreiben? Hast du ein evtl. Beispiel? Ueber welchen Port soll
das ganze laufen? Kann ich will ja wenn moeglich keine zusaetzliche
Hardware bauen. Die externe Loesung ueber einen seriellen Port kenn
ich, koente ich machen. Ich moechte es aber wenn moeglich eleganter
hinkriegen/hintricksen.

mg,
Johannes

von Johannes (Gast)


Lesenswert?

@robert

das mit dem 1Wire ist eine interessante Sache, aber da ich ueber diese
Leitung nicht nach belieben verfuegen kann gehts damit nicht. Die
Leitung ist normalerweise fuer etwas anderes vorgesehen, sie ist fest
installier und das einzige was ich daran machen kann ist den Schalter
druecken, und in der Software ein Event ausloesen. Alles was dazwischen
ist(HW, SW im Phantom-Geraet selber, FireWire Port...) kann ich nicht
beeinflussen.
Ich moechte diesen Knopf an einen uP Pin haengen, und Sensor
Informationen ueber diese "schnittstelle" in meine SW bringen. Wenn
mir das so gelingt, brauche ich keine zusaetzliche externe HArdware
(serielle Schnittstelle oder USB etc...) Das waere eben fein.

von Rahul (Gast)


Lesenswert?

Zur SoftUART hat Atmel Application Notes...

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ich meinte das ohne zusätzliche Hardware. Auf AVR-Seite kannst du das
eingebaute UART verwenden, auf PC-Seite musst du die Zeitpunkte der
eingehenden Events auswerten. Die mögliche Baudrate wird aber
vermutlich sehr niedrig sein. Falls deine Hardware nur einen Event bei
Knopfdruck auslöst, nicht je einen bei steigender und fallender Flanke,
dürfte das allerdings nochmals komplizierter werden.

von Gast ein Anderer (Gast)


Lesenswert?

Midi wenn du ne Soundkarte hast.

von Johannes (Gast)


Lesenswert?

Also mit den Events die die Software generiert, kommt man auf eine
Baudrate von sage und schreibe 25 Bit/Sekunde. Macht knapp ueber 4 Byte
pro Sekunde.Wow! ...immerhin besser als gar nix, aber fuer meine
Anwendung natuerlich unter aller Sau

Ich muss mir prinzipiell was anderes Ueberlegen.

mg,
Johannes

von peter dannegger (Gast)


Lesenswert?


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.