PIC 12F683 DiSEqC Bursterkennung

OP (Firma: Monster AG) #871286
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
OP (Firma: Monster AG) #872069
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
Gast #872285
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?
OP (Firma: Monster AG) #872324
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.
Gast #872369
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.
OP (Firma: Monster AG) #872395
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ß
Gast #872413
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.
OP (Firma: Monster AG) #872422
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.
Gast #872455
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren