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
  Datenübertragung vom Arduino Mega 2560 zu Hterm Datatom 1 97 13.11.2016 23:08
Letzter Beitrag: hotsystems
  Arduino Mega 2560 läuft nicht Wolfgang50 6 179 13.11.2016 10:50
Letzter Beitrag: Wolfgang50
  Arduino Mega 2560 Manfred1981 4 188 11.11.2016 18:07
Letzter Beitrag: hotsystems
  Attiny45 Bootloader brennen mit Funduino Mega toto1975 63 2.188 23.10.2016 17:08
Letzter Beitrag: hotsystems
Question Mega 2560 defekt? triode 11 359 29.09.2016 07:21
Letzter Beitrag: hotsystems
  nrf24 an Mega 2560 jgrothe 2 161 10.09.2016 13:39
Letzter Beitrag: jgrothe
  TimerOne Speed Mathias 4 253 10.08.2016 18:43
Letzter Beitrag: Mathias
  Arduino mega 2560 mit TFT LCD Touch Shield V1 Clemens55555 17 935 02.08.2016 20:51
Letzter Beitrag: Clemens55555
  (Mega) Timer 3 A, B & C Scheams 0 229 04.06.2016 17:09
Letzter Beitrag: Scheams
  DUE-MEGA über I2C Verbinden HTO 0 221 22.05.2016 10:16
Letzter Beitrag: HTO

Gehe zu:


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