Forum: Mikrocontroller und Digitale Elektronik Serielle(, synchrone) Daten (mit AVR) erfassen


von Info (Gast)


Lesenswert?

Hallo,

ich möchte an dem Gerät aus Beitrag "Protokoll ELV Funk-Temperatur-/ Luftfeuchtesensor ASH500" 
Daten mitschneiden.
Die schnelle Kommunikation mit dem Sensor läuft mit etwa 20 kHz, Pulse 
mit 20 µs. Die Daten, die gefunkt werden, sind mit 300 µs Pulsen 
entsprechend langsamer.

Ein Ansatz wäre an beiden Ausgängen mit zwei Dioden auf meine 96 kHz 
Soundkarte zu gehen, und zu hoffen, dass man noch etwas sieht.
Dann müsste man die Daten irgendwie umwandeln und könnte sie dann evtl. 
mit einer Logikanalysatorsoftware angucken/untersuchen.

Die zweite Möglichkeit ist ein AVR, der die Daten dann über UART an den 
PC schickt.

Synchrone Übertragung (d.h. Takt und Daten):

Meinetwegen kann das eine reine Softwarelösung sein (anstelle 
Flankeninterrupt), d.h. Warten, bis ein Flanke kommt, gucken, wie der 
Zustand der Datenleitung ist, Bit reinschieben.

Um eine Übertragung zu erkennen braucht man vermutlich entweder die 
Anzahl der Bits, oder es gibt einen Timeout, nachdem das Paket als 
beendet angesehen wird.

Gibt es dazu evtl. schon etwas in der Codesammlung? Wie realisiert man 
einen Timeout? Kann man per Timerinterrupt eine blockierende 
"while(pin=low);" Schleife beenden? (ohne zusätzliches Flag?)

Die synchrone Funkübertragung ist vermutlich manchesterkodiert. Da 
zuerst  eine Anzahl von "1" gesendet wird, könnte man die Taktzeit 
stoppen und danach per Timerinterrupt mit dieser Zeit die Daten 
abtasten. Nein, es ist ja flankencodiert. Also Flanke und Zeit seit der 
letzten ergeben das Datenbit.
Wenn man parallel dazu noch die Flanken erfasst müsste die Zeit immer 
etwa 1 oder 2 CLKs sein, damit könnte man die Taktzeit nachstellen.

Gibt es da auch schon etwas in der Codesammlung?

Wie würdet ihr das machen?

von Info (Gast)


Lesenswert?

Mhh. Zu einfach? Versteht mich keiner?
Ich hatte gehofft, dass mir jemand den richtigen Weg aufzeigt und ggf. 
auf bestehenden Code weisen kann.
So ist anscheinend der Infrarot-Code RC-5 manchesterkodiert: eine 
Routine von Peter Danneger (Codesammlung) scheint vielversprechend, 
basiert allerdings auf Polling und geht von einer bestimmten Zahl von 
Bits aus.
Macht eigentlich nichts, der Prozessor hat ja nichts anderes zu tun.
Aber eine gute Lösung würde mich schon interessieren..

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.