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
Wink Arduino TFT Display MEGA 2560 Samsuino 47 1.264 Gestern 12:45
Letzter Beitrag: Harry Hirsch
  Treiberprobleme Arduino Mega 2560 DonAthello 19 886 14.07.2017 10:14
Letzter Beitrag: SkobyMobil
Sad Sketch funktioniert auf dem Mega 2560 nicht Frank1234 16 792 26.03.2017 14:15
Letzter Beitrag: oOSpikeOo
  Mega 2560 und deren RX/TX alpenpower 17 3.945 06.03.2017 13:25
Letzter Beitrag: Franz54
  Einstieg Arduino Mega Markus0815 14 1.024 08.01.2017 13:40
Letzter Beitrag: Tommy56
  Arduino Mega startet immer wieder neu Badger1875 9 1.291 26.12.2016 17:56
Letzter Beitrag: Badger1875
  2 Mega 2560 R3 unterschiedliche Firmware? Gonmaus 2 438 11.12.2016 13:40
Letzter Beitrag: P.Martin
  [gelöst] wire.h blockiert analogRead Rupert 6 668 08.12.2016 18:03
Letzter Beitrag: hotsystems
  Datenübertragung vom Arduino Mega 2560 zu Hterm Datatom 1 359 13.11.2016 23:08
Letzter Beitrag: hotsystems
  Arduino Mega 2560 läuft nicht Wolfgang50 6 533 13.11.2016 10:50
Letzter Beitrag: Wolfgang50

Gehe zu:


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