Serielle(, synchrone) Daten (mit AVR) erfassen

Gast #1912513
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?
Gast #1912639
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..

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.