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
  Wire.write und Client Socket LiVe 3 126 11.01.2019 13:51
Letzter Beitrag: Tommy56
  Elegoo Mega 2560 R3 lässt sich nicht programieren Union1925 6 336 03.12.2018 21:21
Letzter Beitrag: Tommy56
  Mega 2560 + USB Host Shield + USB-Stick Cospieler 4 627 19.09.2018 11:17
Letzter Beitrag: Tommy56
  Serielle Daten Windigipet 2018 Software, Arduino Mega 2560 verarbeiten/melden Christian_Moba-Arduino 11 1.459 15.09.2018 09:43
Letzter Beitrag: MicroBahner
  am besten nur für Arduino MEGA compilieren ? uweq 12 1.022 17.08.2018 19:22
Letzter Beitrag: uweq
  TFT 2.8" SPI bleibt weiß MEGA 2560 tillmg 24 5.699 01.06.2018 10:20
Letzter Beitrag: Franzel007
  Arduino Mega mit Shield und 7" Touch Tudorf 10 1.780 25.02.2018 14:30
Letzter Beitrag: Tommy56
  Daten vom Arduino Mega an Nextion Diskusguppy 4 1.422 25.02.2018 13:29
Letzter Beitrag: hotsystems
  COM Port bei Arduino Mega? LoroLoco 8 1.686 19.01.2018 12:49
Letzter Beitrag: hotsystems
  timer Mega 2560 4x tone Output see 6 2.433 11.01.2018 20:11
Letzter Beitrag: Tommy56

Gehe zu:


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