[Gelöst]i2c: LED an D_PIN3 und nichts geht mehr

Abend,

hab gerade versucht mein Programm für I²C-Bus zu rüsten und musste Feststellen, dass der komplette Sketch hängt wenn am digitalen PIN 2 oder PIN 3 von meinem Leonardo eine LED mit Vorwiderstand(300ohm) auf Masse angeschlossen ist.

PIN 3 (2) —>R—>LED—>GND

Ein LCD ist auf den separat herausgeführten Buchsen “SDA” & “SDL” angschlossen und wird vom “i2c_scanner” erkannt.
Ist die LED von beginn an angesteckt (egal ob PIN 2 oder 3), passiert garnichts… Sketch hängt.

Steckt man die LED im Laufenden Sketch an:
Ist die LED an PIN 2, stoppt der Sketch an der seriellen Ausgabe “Scanning…”
Ziehe ich innerhalb von 2sec die LED ab, kommt

“Unknow error at address 0x”

gefolgt von

“I2C device found at address 0x27 !
done”

und er Scannt weiter.

Ist die LED an PIN 3, stoppt der Sketch auch an der selben Stelle.
Allerding kommt nach dem abziehen von der LED nur, dass er das Display gefunden hat

“Scanning…
I2C device found at address 0x27 !
done”

bzw hängt sich komplett auf, sollte man sich zu lange zeit mit dem trennen der LED gelassen haben.

Gibts dafür eine Erklärung?

Wer den Sketch nicht kennt:

// --------------------------------------
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    http://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
// 
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//

#include <Wire.h>


void setup()
{
  Wire.begin();

  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ ) 
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4) 
    {
      Serial.print("Unknow error at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(5000);           // wait 5 seconds for next scan
}

PS: Bin alle D-PINs durchgegangen. Ist wirklich nur an PIN 2 und 3… Ebenso nur mit der LED. Eine Datenleitung eines DS18b20, die über einen Pullup auf 5V liegt stört nicht.

was auch vollkommen logisch ist, wenn man einen Blick in den Schaltplan wirft:

PIN2 + 3 sind identisch mit SDA und SCL. Du kannst also entweder den I2C Bus an diesen Controller-Pins betreiben oder sie als Digital-I/0-Pins nutzen. Beides gleichzeitig geht nicht! Dass der I2C Bus einen eigenen Header hat, ändert nichts daran, dass sie sich die gleichen Prozessor-Pins teilen

Oha.. auf meinem "Cheatsheet" steht was von
I²C SDA = Analog4
I²C SDL = Analog5

aber ich muss zugeben, dass ich da jetzt erst in der "überschrift" der Tabelle "Duemilanove/Nano/Pro/Pro Mini entdeckt habe ..kein Leo.. :roll_eyes:

Ist der Pinout zu denen anscheinend unterschiedlich..

Das gilt für die Boards mit Atmega328. Beim Leonardo wohl anders:

"TWI: 2 (SDA) and 3 (SCL). Support TWI communication using the Wire library. "