- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Zwei serielle Datenstränge geleichzeitig mit PIC empfangen

  1. #1
    Tobi R.
    Gast

    Zwei serielle Datenstränge geleichzeitig mit PIC empfangen

    Anzeige

    Powerstation Test
    Hallo!

    Ich habe das Problem, dass ich zwei serielle Datenstränge gleichzeitig empfangen, verarbeiten und einen wieder senden muss. Das ganze soll mit einem PIC passieren. Da ich nicht auf einen großen (wäre etwas oversized) mit zwei UARTs zurückgreifen will, muss ich das Empfangen und Senden wohl per Code bearbeiten.

    Hat jemand eine Idee, wie ich das am geschicketesten anstelle? Die Baudrate ist bei allen Übertragungen gleich.

    Vielen Dank schon mal!

    Gruß Tobi

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Irgendein Hardware-Handshake kommt nicht in Frage ? Sprich: kannst du bestimmen, wer von den zweien grad was zu sagen hat ? Oder plappern die zwei einfach los, wenn ihnen danach ist ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.08.2004
    Ort
    Winterthur
    Beiträge
    312
    Wie schnell kommen die Daten rein?
    Ist das ein kontinuierlicher Datenstrom oder hats Pausen zwischen einkommenden Daten?

    Ein paar mehr Infos zu den eingehenden und ausgehenden Daten könnten nicht schaden. Man muss ja vielleicht nicht unbedingt gleich ein bis-auf-den-letzten-Befehl-optimiertes Assembler Multitasking-System schreiben.

    Gruess
    Fritzli

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    20.11.2005
    Ort
    Bruchköbel
    Alter
    41
    Beiträge
    7
    Danke für die schnellen Antworten.

    Es geht hier um das Protocol DMX512, welche per RS485 übertragen wird. Dabei gibt es einen Break von glaub 88µs und dann werden zwischen 1 und 512 Frames kontinuierlich gesendet und danach folgt wieder ein Break und es geht von vorne los. Ein Frame hat 11 Bits (1 Start, 8 Daten, 2 Stop) und 1 Bit ist 4µs lang! Ich habe keinen Einfluss, wann die Daten gesendet werden.

    Gruß Tobi

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Naja, DMX512 mußt du, glaub' ich, sowieso zu Fuß machen.
    Du baust ein DMX-Gerät ?
    Is da nicht nur ein Master ?

    EDIT: DMX mit PIC, da hab ich schon einiges gesammelt. Muß morgen mal nachsehen, vielleicht hilft es
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    20.11.2005
    Ort
    Bruchköbel
    Alter
    41
    Beiträge
    7
    Das mit dem einen Master stimmt! Will aber das Signal von zweien verarbeiten und auch ein neues DMX-Signal wieder ausgeben. wieder ausgeben. Hab dass zwar noch nie mit UART gemacht, aber es müsste gehen, wenn man die 9-Bit Übertragung wählt und Bit 8 immer auf 1 lässt.

  7. #7
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo Tobi R.!
    Wann werden die Daten zurückgesendet? Wenn während des Empfangs dann hast Du drei Tasks zu bedienen. Ich glaube, dass Du ein UART dann vergessen kannst, und alles selber programmieren müsstest.
    MfG

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    20.11.2005
    Ort
    Bruchköbel
    Alter
    41
    Beiträge
    7
    @PICture
    Ja, die Daten sollen während des Empfangs gesendet werden, allerdings nicht zurück sondern weiter zu ebenfalls unabhängigen Geräten!

    Wie würdet ihr da rann gehen? Für jeden der 3 Tasks einen Timer nehmen und alles mit Interrupts machen?

  9. #9
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo Tobi R.!
    Als erstes würde ich gründlich analiesieren ob das überhaupt zeitlich realiesierbar ist. Während der Dauer des "1" von einem bit müssen zwei bits komplet eingelesen und gespeichert werden und während des "0" muss ein bit komplet gesendet werden. Aus der höchsten Baudrate und dafür benötigten Befehlanzahl ergibt sich dann die min. Taktfrequenz des Prozessors. Bei solchen Aufgaben kann man meistens alle UARTs, Timers u.s.w vergessen, weil sie zu viel Zeit für Programmieren in anspruch nehmen. Vielleicht wäre es sinvoll für jeden Task einen eigenen MC zu nehmen (insgesamt 4 MCs)? Dann kann man natürlich die UARTs und Timers normal nutzen.
    MfG

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    20.11.2005
    Ort
    Bruchköbel
    Alter
    41
    Beiträge
    7
    @PICturre
    Warum kann man da die meisten UARTs vergessen? Schließlich arbeiten die doch selbstständig, während ich andere Befehle ausführe, oder? Ich muss nur zwischendurch das empfangende Byte aus dem Buffer lesen und speichern.

    Ich schau mir grad das Datenblatt des 18F6527 an. Der hat 2 UARTs und fast 4k Ram.

    Gruß Tobi

Seite 1 von 2 12 LetzteLetzte

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress