
Zitat von
HaWe
der erste Link scheint aber doch nicht "richtiges"
I2C zu sein, denn da steht doch
I2C i2c(p9, p10);
also ist es doch wohl nur eine Software-Emulation, oder?
Nein, es ist ein "Hardware Abstraction Layer", das ist ja der Sinn von mbed.
Das Beispiel bezieht sich auf dieses IC
http://developer.mbed.org/platforms/mbed-LPC1768/
da siehst du in dem Bild: p9 und p10 können IO-Pins sein, ein UART oder ein I2C.
Mit
erstellt man ein Objekt, das den I2C-Bus kapselt, wie das Wire-Objekt in Arduino, was ja auch eine C++ Klasse ist (als vordefinierte globale Variable).
Das ist auch der Trick an dem Code für den Lego Sensor
Code:
{
I2C i2c(p9, p10); // Ab hier sind die Pins ein I2C-Bus
// ... hier wird was mit I2C gemacht
} // jetzt sind die Pins wieder unbenutzt
{
DigitalInOut scl(p10); // Jetzt ist p10 ein IO-Pin
scl = 0; // er wird als Ausgang auf Low gesetzt
scl.input(); // jetzt wird er ein Eingang
scl.mode(PullUp); // und der Pull-Up Widerstand eingeschaltet
// ...
} // Jetzt ist p10 wieder unbenutzt
{
I2C i2c(p9, p10); // Jetzt ist wieder ein I2C-Bus auf den Pins
// ...
}
Da hast du jetzt in der Tat ein schönes Beispiel gefunden, wo man zeigen kann, was mit mbed geht und nicht mit Arduino ...
Lesezeichen