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?
@ 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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
