nRF52 Arduino I2C

Gast #6184231
Lesenswert?

Danke für die Antwort.
Mir ging's jetzt eher um den konkreten Syntax.

Das Beispiel für die Standardpins für TWI sieh ja so aus:
1
#include <Wire.h>
2

3
void setup()
4
{
5
  Wire.begin(); // join i2c bus (address optional for master)
6
}
7

8
...

Ich will sie aber umbiegen können und vermute diese Funktion:

TwoWire::TwoWire(NRF_TWIM_Type * p_twim, NRF_TWIS_Type * p_twis, 
IRQn_Type IRQn, uint8_t pinSDA, uint8_t pinSCL)

Wie sieht ein Codebeispiel aus, um die Pins festzulegen?
Gast #6184245
Lesenswert?

chris schrieb:
> Wie sieht ein Codebeispiel aus, um die Pins festzulegen?

Habe ich doch gerade gesagt!
Oder nicht?
Warum verlinke ich das überhaupt?

Übrigens das was du Funktion nennst ist der Konstruktor!
Und dessen Aufruf (instanziirung von Wire und Wire1) findest du in der 
*.cpp Datei welche du verlinkt hast.

Aber vielleicht siehst du das ja nicht, .....

Also lese ich dir das mal vor:
1
//..schnipp
2

3
#if WIRE_INTERFACES_COUNT > 0
4
TwoWire Wire(NRF_TWIM0, NRF_TWIS0, SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQn, PIN_WIRE_SDA, PIN_WIRE_SCL);
5

6
//..schnipp
7

8
#if WIRE_INTERFACES_COUNT > 1
9
TwoWire Wire1(NRF_TWIM1, NRF_TWIS1, SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQn, PIN_WIRE1_SDA, PIN_WIRE1_SCL);
10

11
//..schnipp
Gast #6184260
Lesenswert?

Danke.
Allerdings sehe ich im von dir geposteten Link nur die Pin-Definitionen, 
nicht aber den Code den du ausgeschnitten hast ....?

Und ich kenne die Bedeutung dieser Definitionen nicht:
NRF_TWIM1, NRF_TWIS1, SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQn
Gast #6184265
Lesenswert?

chris schrieb:
> Allerdings sehe ich im von dir geposteten Link nur die Pin-Definitionen,
> nicht aber den Code den du ausgeschnitten hast ....?

Wo ich den ausgeschnitten habe?

Arduino Fanboy D. schrieb:
> Und dessen Aufruf (instanziirung von Wire und Wire1) findest du in der
> *.cpp Datei welche du verlinkt hast.

Du findest den Code also nicht hinter MEINEM Link, sondern hinter 
DEINEM.


Korrektur:
instanziirung: Instantiierung
Gast #6184283
Lesenswert?

Ich hatte vermutet, dass man bei der MCU die I2C pins in gewissen 
Grenzen frei konfigurieren kann.
Wenn ich es richtig sehe, gibt es aber nur Wire und Wire1 mit 
festgelegter Pinzuordnung. Jetzt wäre die Frage, ob die MCU mehr kann 
oder nur die Arduino Lib auf die zwei Pins beschränkt ist.
#6184480
Lesenswert?

Adafruit hat für den NRF52 leider keine Funktion vorgesehen die Pins zu 
ändern.

1. Definiere dir eine neue Varaint mit deinen I2C Pins
2. Andere die bestehende Variant
3. Wenn du die I2C Pins während der Laufzeit ändern willst/musst, dann 
darfst du Wire bzw Wire1 nicht nutzen sonden musst eine eigene TwoWire 
Class initialisieren mit den entsprechenden Pin und 
Peripheriezuordnungen.
Gast #7113771
Lesenswert?

In der Library, die du verlinkt hast gibt es eine Methode setPins(..).
Das heißt mit einer Zeile

Wire.setPins(sda_pin,scl_pin)

lassen sich die Pins leicht ändern.
Ich vermute, das das nur vor Wire.begin() geht, aber das habe ich jetzt 
noch nicht direkt ausprobiert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren