XBee ausreizen

Hallo Gemeinschaft!

Ich werde nicht ganz schlau, wie schnell ich Daten mit dem Xbee bewältigen kann.
Ich möchte die Übertragungsrate von 115.200bps möglichst gut ausnutzen, aber meine Daten kommen nur Schubweise. Die Frage ist also, ob ich z.B. mit 156kHz Takt die Daten in den Speicher schreiben kann und dann den Takt aussetze und in der Pause bis zur nächsten Dateneingabe die Informationen im Speicher übersende.
Kann man den Takt für die Hardwaredatensteuerung überhaupt aussetzen oder ist der ohnehin dann notewendig für die Übertragung?
Die Frage ist, ob sich die Angabe der Geschwindigkeit der seriellen Schnittstelle auf die Daten eingabegeschwindigkeit oder nur auf die Übertragungsgeschwindigkeit bezieht. Falls dies der Fall ist, wie schnell kann ich dann Daten in den Speicher schreiben?
:confused:

Ich meine, du kannst nur die Boudrate kleiner machen.
Hardwaremäßig ist nichts „aussetzbar“. Wieviel Meter must du überbrücken, wie steuerst du ihn an, oder fragst du ihn ab?
Will fragen was macht dein XBEE???
Heißt „stückchenweise“ er verschluckt was?

Ich plane bisher ihn im Transaparentmode zu fahren und serielle Faten in einer Richtung (von A nach B) zu schicken. Abstand dabei innerhalb 100m. Dafür wollte ich nur am Anfang von B nach A einen entsprechenden Befehl schicken, sodass A nur noch Daten an einem Digitalpin aufnimmt und so schnell wie möglich versendet. Steuern möchte ich das Hardwareseitig durch einen Takt auf der Seite von A. Response massages oder ähnliches möchte ich nicht verwenden.
Meine Daten bestehen aus 7Byte die ich bereits seriell aufgereiht habe. Bin ich jedoch nicht drauf festgelegt.

Die Baudrate bezieht sich ja immer auf die Funkübertragung bei diesen Modulen. Aber es können ja einige Byte im Speicher abgelegt werden, die dann schnellst möglich weitergeschickt werden.
Ich hoffe, dass ich diese 7 Byte einfach in den Speicher schieben kann, mit einer Geschwindigkeit die über der Baudrate liegt und dann keine Daten mehr an den XBee sende bis dieser fertig ist mit dem Versenden. Wenn ich das richtig verstanden habe, brauche ich hierfür nur den Digital-In auf High legen und den externenTakt aussetzen.

Gruß
Mario

Hallo ihr!

Weiss den niemand Rat ?! :confused: :frowning:
Falls etwas unklar bitte noch nachfragen!

Gruß
Mario

Kann es sein, dass das für die Entfernung einfach zu schnell ist? Klappts denn wenn du die Geschwindigkeit drosselst?

Gruß,

Toni

Ich habe die Hardware noch nicht erhalten die haben bisl Lieferschwierigkeiten. Ich lege gerade noch die Elektronik für die Sensoren aus, welche einen seriellen Datenstrom erzeugen, dessen CLK ich festlegen kann. Die Sensoren haben eine eigene Samplerate, sodass ich nur alle paar Bruchteile einer Sekunden 7Byte bekommen. Diese möchte ich dann so schnell wie möglich weiterleiten, damit ich möglichst wenig Zeit ohne Messung verbringe. Das Xbee ist dabei das Nadelhöhr. Im Augenblick habe ich dne CLK auf 78kHz. DIe Frage ist ob und wie ich den noch auf 150kHz bekomme. Weil 7 Byte sollte ich ohne Probleme im Versendespeicher unbringen können und ich habe keine Gefahr eines Pufferüberlaufs durch ein Datenpacket.
Das kann mir ja nur passieren, wenn Xbee nicht hinterherkommt.

Gruß
Mario

Dir ist schon klar was das mit den bps auf sich hat, oder? :confused:

wenn du 7 Byte hast und 78kHz sind das immernoch ca 1400 Messungen pro Sekunde (Header und Protokoll nicht mitgerechnet)… Wenn du diese Datenflut noch mit einem (Windows) PC verarbeiten willst ist nicht dein XBee dein Nadelöhr… Das sind unter Vollast schlappe 83 Megabyte in der Minute…

oder anders ausgedrückt Wenn du eh eine Sekunde warten musst zwischen den Messungen. Warum ist es dann wichtig ob sie in 0,012 oder in 0,006 Millisekunden übertragen wird?

Toni

Hallo Mario,

von was für einem Takt sprichst Du da eigentlich?

XBee benutzt für die Datenübertragung einen UART (Universal Asynchronous Receive and Transmit). Wie die Abkürzung schon vermuten lässt, wird hierfür ein asynchrones Protokoll verwendet. Asynchron deshalb, weil dafür kein Takt erforderlich ist. Die Übertragung ist „selbsttaktend“. Das Protokoll ist weithin als RS232 bekannt.

Aus diesem Grund gibt es bei XBee auch keinen Takt, der in irgendeiner Weise zugänglich wäre, oder auf den man Einfluss nehmen könnte.

Mögliche Baudraten liegen zwischen 1200 und 115200 bps. Die Datenrate beim Senden ist immer 250000 bps. Die Default Baudrate des UART’s ist 9600 bps. Für eine Übertragung von 7 Datenbytes wird damit eine Zeit von ungefähr 7 ms benötigt.

Die Übertragung erfolgt im Halb-Duplex Verfahren. Das heißt während des Sendens ist kein Empfang möglich und umgekehrt. Die Serielle Schnittstelle ist dagegen immer zugänglich (Voll-Duplex). Ein Puffer von 100 Bytes und eine programmierbare Handshake-Steuerung sorgen dafür, dass keine Daten verlorengehen.

Ich fürchte Du musst Deinen synchronen Datenstrom (mit Takt) erst an das asynchrone Protokoll des XBee anpassen. Es müssen also pro Byte zumindest ein Start- und ein Stopbit hinzugefügt werden. Weiterhin muss die Bitreihenfolge beachtet werden.

Gruß
HJH

Was die Datenrate und deren Verarbeitung angeht, kann ich sagen, dass ich die Auswertung per Computer nur vorrübergehend nutzen werden und das ein uC oder ähnliches schlussendliche die Auswertung der 7Byte Datenpackete übernehmen wird.
Die Samplingrate selbst sollte Anwendungsgemäß möglichst hoch sein.

Aus dem Handbuch Seite 12:
„When serial data enters the RF module through the DIN Pin (pin 3), the data is stored in the serial receive buffer until it can be processed.“

Die Frage ist wie schnell kann ich am DIN-PIN die Zustände ändern kann, sodass er die Änderung noch mitbekommt und es im Empfangspuffer speichert. Die Änderungsgeschwindigkeit ist damit für den Rest der Elektronik ein Takt (Schieberegister etc.).

Meinem Bitstrom füge ich die Start und Stop-Bits hinzu, sodass ich mit dem XBee über den UART kommunzieren kann. Ich hatte das bisher mit dem Transparantmodus verkehrt verstanden.

Wie ich den Flowcontrol realisiere bin ich mir noch nicht sicher.

Dreht sich ein bischen im Kreis hier…
Zitat:
Die Frage ist wie schnell kann ich am DIN-PIN die Zustände ändern kann, sodass er die Änderung noch mitbekommt und es im Empfangspuffer speichert. Die Änderungsgeschwindigkeit ist damit für den Rest der Elektronik ein Takt (Schieberegister etc.).

Das ist schon in einer Baudrate verpackt, bzw das wird so vom XBEE in einer vorher festgelegten Baudrate erwartet.
HJH hat es schon erklärt.
Auszug aus Datenblatt:

Data enters the module UART through the DI pin (pin 3) as an asynchronous serial signal. The signal
should idle high when no data is being transmitted.
Each data byte consists of a start bit (low), 8 data bits (least significant bit first) and a stop bit
(high). The following figure illustrates the serial bit pattern of data passing through the module.

Meiner einer kann sich auch nicht vorstellen, was es für so zeitkritische Aufgaben sind…115k Baudrate sind schon ganz gut.
Oder ich verstehe nicht was du meinst, kann auch sein…:confused:

Will also heißen, dass ich in den letzten paar Jahrzehnten immer die falsche Vorstellung hatte, dass die Baudrate sich nur auf die Übertragungsgeschwindigkeit bezieht und nicht auf die Schnittstellengeschwindigkeit zwischen den Übertragungsbausteinen. :eek:

grüßle
Mario

Hallo Mario,

das Eine schließt das Andere nicht aus.

Du hast es hier mit zwei verschiedenen Übertragungsstrecken zu tun, die hintereinander geschaltet sind.

  1. Die drahtgebundene Strecke nach RS232; Du kannst die Datenrate frei wählen zwischen 1200 und 115200 bps. Beim Protokoll bist Du an das Timing von RS232 gebunden.
  2. Die Funkstrecke mit fester Datenrate (250kbps); Hierauf hast Du überhapt keinen Einfluss. XBee verwendet hier ein proprietäres Verfahren.

Das verbindende Element zwischen den beiden ist der Datenpuffer. Für dessen Handhabung gibt es verschiedene, programmierbare Strategien.

Wenn Du sowieso schon einen µC verwendest, dann solltest Du dessen eingebauten UART verwenden. Dann must Du Dich nicht mehr um Takt und Bitformat kümmern.

Gruß
HJH

Hallo.
Den uC werde ich wohl erst in einem Monat oder später aufbauen können, wenn das überhaupt erwünscht wird.

Ich gehe im Augenblick von einer eigenständigen Sensorplatine mit UART Ausgang aus und werde ersteinmal direkt an den Rechner verbinden.

Ersteinmal werde ich mich jetzt um den testaufbau des Analogteils kümmern müssen. Die Xbee kommt ohnehin erst die Tage…

Gruß
Mario