www.mikrocontroller.net

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


Autor: Info (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Info (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.