Benötige mal C++ Syntax-Hilfe.

OP (Firma: Q3) #7428469

Ich möchte die Adafruit_FRAM_I2C nicht mit dem eingebauten Hardware-I2C-Interface am Arduino (A4/A5) verwenden, sondern mit einer SoftwareI2C "SoftWire".

Die Softwire-Lib funktioniert, weil ein I2C-Scanner damit die unterschiedlichsten Sensoren an den richtigen Adressen erkennt, das soweit als Anfangstest.

Nun möchte ich ein FRAM schreiben und lesen und dazu oben genannte Lib verwenden. Din der Lib selbst ist die begin-Methode so definiert:

1
/*!
2
 *    @brief  Sets up the hardware and initializes I2C
3
 *    @param  addr
4
 *            The I2C address to be used.
5
 *    @param  theWire
6
 *            The Wire object to be used for I2C connections.
7
 *    @return True if initialization was successful, otherwise false.
8
 */
9
bool Adafruit_FRAM_I2C::begin(uint8_t addr, TwoWire *theWire)
10
{
11
  Adafruit_EEPROM_I2C::begin(addr, theWire);
12
  i2c_dev2 = new Adafruit_I2CDevice(MB85RC_SECONDARY_ADDRESS, theWire);
13
  if (!i2c_dev2->begin()) {
14
    return false;
15
  } ...

Nun habe ich die verschiedensten Varianten von diesem hier probiert:

1
SoftWire sw(fram_sda, fram_scl); //die Pins für Softwire
2
Adafruit_FRAM_I2C fram     = Adafruit_FRAM_I2C();
3

4
void setup(void)
5
{
6
  if (fram.begin(0x50, sw)) //<----- diese Zeile
7
  if (fram.begin(0x50, *sw)) //<----- diese Zeile
8
  {  
9
    Serial.println("Found I2C FRAM");
10
  } else
11
  { ...

Error: error: no matching function for call to 'Adafruit_FRAM_I2C::begin(int, SoftWire&)'

Wie muss es richtig aussehen? Danke.

Moderator #7428474

Die Funktion ewartet einen Pointer, deswegen muss ein & vor sw:

1
  if (fram.begin(0x50, &sw))

Voraussetzung ist, dass SoftWire eine von TwoWire abgeleitete Klasse ist, sonst droht die nächste Fehlermeldung.

Beitrag #7428476 wurde von einem Moderator gelöscht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 3 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.