www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC 12F683 DiSEqC Bursterkennung


Autor: Wolf Retlaw (Firma: Monster AG) (ik-student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich (Anfänger) möchte auf meinem PIC 22kHz modulierte Signale erkennen. 
Es handelt sich um DiSEqC, d.h. moduliert wird mit einer Art On- 
Off-Keying. Dazu müssen Bursts mit einer Gesamtlänge von einem einzelnen 
Burst 1,5ms (22kHz, 0 Bit 22 Zyklen in 1ms und 0,5ms Pause, 1 Bit 11 
Zyklen in 0,5ms und 1ms Pause) detektiert werden. Jetzt die alles 
entscheidende Frage :

Um die Bits 0 und 1 erkennen zu können, reicht es dem Signal die 
jeweiligen Zyklen des 0/1er Bit-Bursts zu erkennen oder muss ich auch 
noch die Pausenintervalle zwischen den Zyklen berücksichtigen? Wenn ich 
die Erkennung der Pausen weglassen könnte würde das viel Aufwand sparen.

Wäre für Erfahrungen von anderen dankbar.

Gruß Wolf

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.sprut.de/electronic/pic/projekte/freque...

Hoffe der sprut kann dir helfen

LG

Autor: Wolf Retlaw (Firma: Monster AG) (ik-student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@daniel
Vielen Dank für deine Antwort! Den Sprut kenne ich schon.

Mir geht es eher in Richtung Protokoll um die Bits erkennen zu können. 
Das Signal an sich, die Bursts mit 22kHz erkenne ich ja schon, nur will 
ich wissen ob ich wirklich zu jedem zugehörigen Bit die jeweilige 
Sendepause erkennen muss. Bei dem 0er Bit ist die Pause 0,5ms lang, beim 
1er Bit 1 ms. Ich dachte es reicht, wenn kurz festgestellt werden kann, 
ob zwischen den jeweiligen Zyklen eine kurze Sendepause gewesen ist. 
Denn wenn man zu jedem Bit ein eigenen Programmteil schreibt um die 
jeweilige Pause erkennen zu können, kostet das natürlich auch 
Ressourcen, und der ist in einem Interrupt begrenzt, ich will nicht in 
einen "worse case" gelangen weil ich zuviele unnötige Unterprogramme im 
Interrupt ablaufen lasse.

Grüße Wolf

Autor: Wolf Retlaw (Firma: Monster AG) (ik-student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier habe ich mal eine grafische Darstellung wie die Bursts aussehen:

http://www.satshop.com/dis61.gif

Hier ein komplettes PDF über DiSEqC :

http://www.spaun.de/files/8df79_de_DiSEqC_fur_Techniker_.pdf

auf Seite 5 ist nochmal die Grafik etwas größer.

Gruß Wolf

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Um die Bits 0 und 1 erkennen zu können, reicht es dem Signal die
> jeweiligen Zyklen des 0/1er Bit-Bursts zu erkennen oder muss ich auch
> noch die Pausenintervalle zwischen den Zyklen berücksichtigen?
Wenn ich das richtig verstehe fragst du ob es reicht die Dauer der 
angeschalteten Modulation (22kHz da) zu ermitteln oder ob noch 
zusätzlich die Zeit mit der ausgeschalteten Modulation ermittelt werden 
soll?

Autor: Wolf Retlaw (Firma: Monster AG) (ik-student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg S.
Ja genau! Wenn ich nur die Zeit nehme, wo das 22kHz Signal da ist, um zu 
erkennen ob es ein 0 oder 1 Bit ist, müsste das eigentlich ausreichen?

Dann wäre die Pause zwischen dem Signal irrelevant, d.h. es reicht wenn 
die Pause zwischen den Signalen sehr klein ist. Somit könnte man doch 
auch den Empfang unempfindlicher machen gegen Übertragungsstörungen 
jeglicher Art. Zumal es ein Haufen Resourcen kostet für jedes Bit eine 
bestimmte Zeit detektieren zu müssen, das wäre ganz schön aufwendig.

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na ja, für so aufwenig halte ich das jetzt nicht wirklich. Einen DiSEqC 
Slave hab ich locker in einen 1kB MSP430 reinbekommen.

> Somit könnte man doch auch den Empfang unempfindlicher machen gegen
> Übertragungsstörungen jeglicher Art.
Kommt darauf an wie man es sieht. Kommt eine Störung innerhalb der 
"Ruhepause" (22kHz aus) würdest du sofort wieder (fälschlicherweise) mit 
einem neuen Bit anfangen. Wenn man aber weiss das man innherhalb der 
Ruhepause ist (Timer abfrage) kann man diese Störung erkennen.

Autor: w124Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die Bit erkennung könnte man gut mit dem ccp modul (capture mode) des 
pic´s machen
(siehe pic datasheet seite 78)

gruß Dennis

Autor: Wolf Retlaw (Firma: Monster AG) (ik-student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg S.
Ahja, interessant, naja ich meinte mit Resourcen eher den "worse case", 
ich will nicht so viele Befehle in der Interruptroutine haben, ich 
detektiere nämlich vorher schon die 22kHz als zusätzliches Programm, 
d.h. ich warte bis an einem Pin der Interrupt ausgelöst wird. Da muss 
ich nun einen Zeitschlitz von ungefähr 50µs in der Interrupt-Routine 
beachten (22kHz=45µs pro Periode).

> Kommt darauf an wie man es sieht. Kommt eine Störung innerhalb der
> "Ruhepause" (22kHz aus) würdest du sofort wieder (fälschlicherweise) mit
> einem neuen Bit anfangen. Wenn man aber weiss das man innherhalb der
> Ruhepause ist (Timer abfrage) kann man diese Störung erkennen.

Das ist mir klar aber :
Bei jedem Pin-Interrupt zähle ich einen Zähler auf der mir die Anzahl 
der Zyklen (Perioden) des Signals wiedergibt (0 Bit = 22 Zyklen, 1Bit = 
11 Zyklen). Da wäre doch deine Vermutung mit ausgeschlossen ? Eine 
Störung, die genau 22 oder 11 Zyklen hinterlässt wäre die 
Wahrscheinlichkeit eher gering ?

@w124Dennis
>die Bit erkennung könnte man gut mit dem ccp modul (capture mode) des
>pic´s machen
damit habe ich mich noch nicht beschäftigt, könntest du bitte etwas 
genauer erläutern was du meinst ?  Danke im Voraus.

PS. Danke für die Antworten habe schon gedacht ich schreibe als Anfänger 
zuviel Kauderwelsch ;)

Gruß

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Bei jedem Pin-Interrupt zähle ich einen Zähler auf der mir die Anzahl
> der Zyklen (Perioden) des Signals wiedergibt
Ach so, ich dachte du gehst "den üblichen Weg" wo das aktive 22kHz 
Signal gleichgerichtet wird.

Autor: Wolf Retlaw (Firma: Monster AG) (ik-student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg S.
> Ach so, ich dachte du gehst "den üblichen Weg" wo das aktive 22kHz
> Signal gleichgerichtet wird.

Den üblichen Weg kenne ich leider nicht, ich habe halt ein Projekt und 
versuche halt mit meinem Wissen was zu realisieren ;-)

Irgendwelche Schaltungen vor dem Microcontroller sollen nicht 
dazukommen, nur einen Filter den ich schon designed habe.

Autor: w124Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Positive Flanke -> Capture modul fängt an zu zählen (timout starten)
Negative Flanke -> Interrupt und capture modul auslesen
Falls keine flanke mehr kommen weisst du über den timeout das ein bit 
zuende ist und kannst dann die empfangenen signale auswerten, oder auch 
einfach nur die gesamtzeit.

Die ext interrupt variante geht natürlich auch. aber natürlich ohne die 
genaue information über die länge der burstimpulse.


möchtest du

Autor: Günther (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Wolf,
bist du schon weitergekommen bei diesem Projekt?
Funktioniert deine Auswertung?

Gruß Günther

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.