INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Übertragungsgeschwindigkeit TWI
06.11.2015, 09:50
Beitrag #1
Übertragungsgeschwindigkeit TWI
Hallo,
ich habe per TWI eine Datenverbindung zwischen 2 Arduino Due aufgebaut. Jetzt interessiert mich wie lange er für die Übertragung eines Bytes braucht.
Dazu habe ich mittels des Timer die Werte für den Beginn und das Ende der Übertragung aufgenommen. Danach habe ich zunächst ein Byte übertragen und das ganze bis auf 11 Byte erweitert. Dann habe ich die differenz zwischen den gesendeten Bytes gebildet und habe heraus bekommen, das der Arduino pro Byte ca. 0,7µs benötigt.
Das kann doch theoretisch gar nicht möglich sein oder???


Anbei mal ein Ausschnitt aus dem Quellcode:


Code:
/* Num of Bytes to receive for measure */
Wire.requestFrom(address, 2);
/* Value of the Timer on the begin of data transfer */
Serial.println(REG_TC1_CV0);

  while(Wire.available()<1);
  while(Wire.available())
  {
    
   x = Wire.read();
  
  }
   /* Value of the Timer on the end of data transfer */
   Serial.println(REG_TC1_CV0);
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.11.2015, 11:56
Beitrag #2
RE: Übertragungsgeschwindigkeit TWI
Hi,
nun Serielle Verbindungen dauern einfach ein bischen. Hier kannst du nur mal nachforschen mit welcher Baudrate da gearbeitet wird. Aus deinem Codeschnippsel geht das so nicht hervor, also da mußt du mal in die Doku reinschauen was da verwendet wird....und die Zeit für ein Byte hat die Länge von 10Bit was den Zeitbedraf angeht. Startbit, 8 Daten, 1 Stoppbit....das kommt dann am besten hin.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.11.2015, 12:04 (Dieser Beitrag wurde zuletzt bearbeitet: 06.11.2015 16:59 von HaWe.)
Beitrag #3
RE: Übertragungsgeschwindigkeit TWI
chhecs Stoppzeit kommt mir eher zu schnell als zu langsam vor, außerdem ist TWI ja (seriell) i2c und nicht (seriell) UART TTL RS232, da gibt es also kein 8N1 AFAIK.

Mein Vorschlag:
miss mal 100 Datenübertragungen und dann stoppe die Zeit mit millis() und dividiere sie dann durch 100.

Und vor allem:
mach was mit den Werten, sonst optimiert dein Compiler alles raus an Werten und Prozeduren, wenn nichts weiter damit passiert.

Also z.B. alle Sende-Daten-Bytes als volatile deklarieren, addieren und am Schluss, nach Serial, per Serial.print ausgeben. Das ist ntl Bullshit, was da rauskommt, aber immerhin passiert dann was damit (es sei denn du verwendest es als checksum, das ist auch nicht verkehrt, denn i2c ist sehr unsicher, wie alles was serielle Übertragung angeht).

Nach meinen eigenen Erfahrungen dauert 1 "echte" i2c-Übertragung bei Standard 100kHz für eine Handvoll Bytes grob ca. 5ms

ps,
Ich würde die Messung auch auf der Master-Seite machen, denn der ist es ja, der die Aktion kontrolliert:

Zeit starten
Slave adressieren,
dann vom Slave die Daten lesen
Zeit stoppen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste