Forum: Mikrocontroller und Digitale Elektronik PIC 12F683 DiSEqC Bursterkennung


von Wolf R. (Firma: Monster AG) (ik-student)


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

von daniel (Gast)


Lesenswert?


von Wolf R. (Firma: Monster AG) (ik-student)


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

von Wolf R. (Firma: Monster AG) (ik-student)


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

von Jörg S. (Gast)


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?

von Wolf R. (Firma: Monster AG) (ik-student)


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.

von Jörg S. (Gast)


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.

von w124Dennis (Gast)


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

von Wolf R. (Firma: Monster AG) (ik-student)


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ß

von Jörg S. (Gast)


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.

von Wolf R. (Firma: Monster AG) (ik-student)


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.

von w124Dennis (Gast)


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

von Günther (Gast)


Lesenswert?

Hallo Wolf,
bist du schon weitergekommen bei diesem Projekt?
Funktioniert deine Auswertung?

Gruß Günther

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.