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
Mega: Hardware i2c bus speed (Wire.) verändern?
11.10.2014, 13:35 (Dieser Beitrag wurde zuletzt bearbeitet: 11.10.2014 14:29 von HaWe.)
Beitrag #9
RE: Mega: Hardware i2c bus speed (Wire.) verändern?
Lego verwendet bitbang-i2c über einen AVR-Coprozessor.
Beim Sensor handelt es sich um den ganz normalen Lego Ultraschall-Sensor, der in den Mindstorms-Kits enthalten ist.
Und ja, es stimmt, der US-Sensor ist alles andere als Standard-i2c-konform.
Unter anderem hat er eingebaute 83k Pullups (edit: ) und man braucht wohl extra Wait States und Restarts.

Die Pin-Verdrahtung ist korrekt, inkl. zusätzlicher Arbeits-VCC 9V, und ich verwende dieselben Kabel mit RJ11-Stecker.





ich bekam jetzt gerade einen Hinweis von Andy Shaw, einem echten Programmier-Profi, der auch das komplette Java-Betriebssystem samt VM für Lego NXT und EV3 entwickelt:
Zitat:I'm not surprised as I mentioned above the Lego i2c code (on both the NXT and EV3) adds extra wait states and an extra restart specifically for the Ultrasonic sensor. I doubt if any hardware i2c master will talk with it.
(...)
You can't add the extra wait states or the restart if using hardware i2c. See the following (or simply google Arduino Lego Ultrasonic) http://blog.tkjelectronics.dk/2011/10/nxt-shield-ver2/





das ganze ist mir aber denn doch im Moment ein wenig zu hoch, denn ich verstehe das Software-bitbang absolut nicht, und darauf läuft es jetzt wohl hinaus.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.06.2016, 20:58 (Dieser Beitrag wurde zuletzt bearbeitet: 26.06.2016 20:58 von Mathias.)
Beitrag #10
RE: Mega: Hardware i2c bus speed (Wire.) verändern?
(10.10.2014 23:04)SkobyMobil schrieb:  Hallo,
in der Lib "twi.c" kannst Du dran drehen.

Suche nach:

// initialize twi prescaler and bit rate
cbi(TWSR, TWPS0);
cbi(TWSR, TWPS1);
TWBR = ((F_CPU / TWI_FREQ) - 16) / 2;

lese das:

/* twi bit rate formula from atmega128 manual pg 204
SCL Frequency = CPU Clock Frequency / (16 + (2 * TWBR))
note: TWBR should be 10 or higher for master mode
It is 72 for a 16mhz Wiring board with 100kHz TWI */

oder in der "twi.h"

#ifndef TWI_FREQ
#define TWI_FREQ 100000L
#endif

Ich würde erst die "twi.h" probieren...
Gruß und Spaß
Andreas

Der Thread ist ein bisschen alt, aber wer trotzdem den Takt ändern will, muss die twi.* nicht verändern.

Man kann es auch direkt im Haupt-Sketch machen.
Das sieht dann etwa so aus:

Code:
void setup(void) {
    long CPU_FREQ = 12000000L;
    Serial.begin(115200);
    Wire.begin();
    TWBR = ((CPU_FREQ / 200000L) - 16) / 2;
    //    TWBR = ((CPU_FREQ / 400000L) - 16) / 2;  // 400KB/s
    //    TWBR = ((CPU_FREQ / 100000L) - 16) / 2; // 100KB/s default
}

Quelle: http://www.darc.de/fileadmin/_migrated/c...Lib_02.pdf
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.07.2016, 20:09
Beitrag #11
RE: Mega: Hardware i2c bus speed (Wire.) verändern?
Es geht noch einfacher, es ist bei Wire eine fertige Funktion dafür eingebaut.
Code:
    Wire.begin();
    Wire.setClock(400000L);
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Speed versus Speicher bei Variablendef shrimps 2 287 29.04.2019 11:38
Letzter Beitrag: shrimps
  virtual wire empfänger-sender peterfried 30 1.259 17.04.2019 07:21
Letzter Beitrag: Tommy56
  Wire.requestFrom Blende8 7 402 27.03.2019 15:54
Letzter Beitrag: Blende8
  HC-06 Arduino Mega Übertragungsprobleme fv1895 4 300 15.03.2019 11:35
Letzter Beitrag: fv1895
  Ram Speicher bei Arduino Mega wird knapp unkreativ 22 1.145 02.02.2019 18:40
Letzter Beitrag: unkreativ
  Drehgeber wie Iduino SE055 - Software- oder Hardware-Problem? Arduinero 12 656 24.01.2019 13:55
Letzter Beitrag: Bitklopfer
  Wire.write und Client Socket LiVe 3 477 11.01.2019 13:51
Letzter Beitrag: Tommy56
  Elegoo Mega 2560 R3 lässt sich nicht programieren Union1925 6 867 03.12.2018 21:21
Letzter Beitrag: Tommy56
  Mega 2560 + USB Host Shield + USB-Stick Cospieler 4 988 19.09.2018 11:17
Letzter Beitrag: Tommy56
  Serielle Daten Windigipet 2018 Software, Arduino Mega 2560 verarbeiten/melden Christian_Moba-Arduino 11 2.004 15.09.2018 09:43
Letzter Beitrag: MicroBahner

Gehe zu:


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