Forum: Mikrocontroller und Digitale Elektronik Manchester 14x8bit 4mbit, wie empfangen?!


von Industry-Sniffer (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leutz,

ich hab folgendes Problem, es gibt ein Bus auf Manchster-Basis.
Ich muss im Fehlerfall einmalig Datenpaket empfangen siehe Bild,
senden geht perfekt, es werden alle 1.5ms Pakete via SPI und XOR 
generiert, das funktioniert wunderbar!
Ich weiß nicht, wie ich das Empfangen soll, vielleicht über "Input 
Capture"?!
Meine Hardware ist PIC32MX470 120Mhz! Welche Möglichkeiten hätte ich 
noch?

Wäre für jede Hilfe Dankbar.

Gruß

von Falk B. (falk)


Lesenswert?

@ Industry-Sniffer (Gast)

>senden geht perfekt, es werden alle 1.5ms Pakete via SPI und XOR
>generiert, das funktioniert wunderbar!
>Ich weiß nicht, wie ich das Empfangen soll, vielleicht über "Input
>Capture"?!

Nein, auch mit SPI, nur halt mit Überabtastung. Sprich, die Taktrate des 
SPI sollte 4-8 mal höher sein als die Bitrate des Signals. Ausserdem 
muss die Abtastung lückenlos laufen, der PIC hat hoffentlich einen FIFO 
für's SPI. Die Daten schreibt man in den Speicher und kann dann Offline 
dekodieren.

von Industry-Sniffer (Gast)


Lesenswert?

hab ich da was falsch verstanden:
RxD 4Mbit wird mit SDI Pin von PIC32 verbunden und mit 4-8facher 
Geschwindigkeit abgetastet/ausgelesen?!

Falk B. schrieb:
> SPI sollte 4-8 mal höher sein als die Bitrate des Signals. Ausserdem
> muss die Abtastung lückenlos laufen, der PIC hat hoffentlich einen FIFO

Klar hat er FIFO = 128bit, aber das wird mit FIFO nicht funktionieren, 
weil FIFO nicht reicht:
14 x 8bit x 4fache Abtastung = 448bit FIFO werden benötigt!

von Falk B. (falk)


Lesenswert?

@ Industry-Sniffer (Gast)

>hab ich da was falsch verstanden:

Nö.

>RxD 4Mbit wird mit SDI Pin von PIC32 verbunden und mit 4-8facher
>Geschwindigkeit abgetastet/ausgelesen?!

Jain! Bei SPI muss der Master immer senden, nur dann wird auch parallel 
dazu empfangen. Du musst also mit 16 oder 32 MHz Dummywerte senden.

>Klar hat er FIFO = 128bit, aber das wird mit FIFO nicht funktionieren,
>weil FIFO nicht reicht:
>14 x 8bit x 4fache Abtastung = 448bit FIFO werden benötigt!

Niemand hindert dich, den FIFO zwischenzweitlich auch mal auszulesen und 
in den RAM zu kopieren. Macht jede gescheite UART-Empfangsroutine so. 
Und da di sowieso bei SPI Daten senden musst, um auch zu empfangen, kann 
man beides sinnvoll kombinieren.

von ... (Gast)


Lesenswert?

Manchester laesst sich einfach in Hardware dekodieren.

Einfach ein Monoflop das vom Datenstrom getriggert wird,
unf bei 75 % der Bitzeit die dann anstehenden
Daten einliest.

von Industry-Sniffer (Gast)


Lesenswert?

Ok Danke.

Falk B. schrieb:
> Jain! Bei SPI muss der Master immer senden, nur dann wird auch parallel
> dazu empfangen. Du musst also mit 16 oder 32 MHz Dummywerte senden.

ja das ist klar.

Falk B. schrieb:
> Niemand hindert dich, den FIFO zwischenzweitlich auch mal auszulesen und
> in den RAM zu kopieren. Macht jede gescheite UART-Empfangsroutine so.
> Und da di sowieso bei SPI Daten senden musst, um auch zu empfangen, kann
> man beides sinnvoll kombinieren.

das muß ich mal mit SPI ausprobieren, oder vielleicht mit DMA mal 
testen?

von Falk B. (falk)


Lesenswert?

@ Industry-Sniffer (Gast)

>das muß ich mal mit SPI ausprobieren, oder vielleicht mit DMA mal
>testen?

Mit DMA geht es noch einfacher, sogar ohne FIFO.

von Peter D. (peda)


Lesenswert?

Manchester braucht immer erstmal eine Vereinbarung, wie ein Paket 
anfängt.
Z.B. eine Pause und dann immer eine bestimmte Flanke.
Oder ein Strom von 1010-Bits gefolgt von 11 als Start.
Ein Strom von nur 0 oder nur 1 geht nicht, da sich der Empfänger nicht 
darauf synchronisieren kann.

von Industry-Sniffer (Gast)


Lesenswert?

Peter D. schrieb:
> Ein Strom von nur 0 oder nur 1 geht nicht, da sich der Empfänger nicht
> darauf synchronisieren kann.

nicht nur, wenn das Galvanisch getrennt ist (zB. HF-Trafo), dann wurde 
das auch nicht funktionieren.

Aber egal, ich will erstmal mit FIFO oder per DMA testen.

von Industry-Sniffer (Gast)


Lesenswert?

... schrieb:
> Einfach ein Monoflop das vom Datenstrom getriggert wird,
> unf bei 75 % der Bitzeit die dann anstehenden

wie soll ich die 75% generieren??

von Matthias L. (Gast)


Lesenswert?

Industry-Sniffer schrieb:
> ... schrieb:
>> Einfach ein Monoflop das vom Datenstrom getriggert wird,
>> unf bei 75 % der Bitzeit die dann anstehenden
>
> wie soll ich die 75% generieren??

Ein UART macht das auch bei 75%. Aber nicht mit einem (zeitgesteuerten) 
Monoflop, sondern mit einer vierfachen Taktfrequenz, wo dann zu jedem 
drittten Taktimpuls das Signal abgesampled wird. Das funktioniert bei 
jeder Frequenz.

von Peter D. (peda)


Lesenswert?

Industry-Sniffer schrieb:
> nicht nur, wenn das Galvanisch getrennt ist (zB. HF-Trafo), dann wurde
> das auch nicht funktionieren.

Nö, das geht schon, bloß weißt Du bei einer Folge gleicher Bits nicht, 
was die Bitflanke und was die Hilfsflanke ist.
Nur bei wechselnden Bits 0-1-0-1 fehlt die Hilfsflanke.

von Industry-Sniffer (Gast)


Lesenswert?

Ich hab das gelöst, einfach mit SPI und selber sample Frequenz (4MHz), 
einfach 3/4Bit verschoben einlesen und siehe da es funktioniert...

Gruß Sniffer

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.