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ß
@ 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.
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!
@ 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.
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.
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?
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.
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.
... schrieb:> Einfach ein Monoflop das vom Datenstrom getriggert wird,> unf bei 75 % der Bitzeit die dann anstehenden
wie soll ich die 75% generieren??
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.
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.