Hallo
Ich hab im Internet eine Software I²C Implementierung gefunden (-> MAIN: i.c HEADER:i2c_software_master.h)
Mein I²C Bus ist auf 3.3V ausgelegt und die Implementierung ist für den 5V Master. Hierfür hab ich externe Pull-Up Widerstände - somit muss ich die internen vom Master ja deaktivieren (auskommentieren):
Ist das richtig so? Oder muss ich da im eigentlichen Programmcode noch ändern?Code:/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ void sda_low() { I2C_PORT &= ~(1<<SDA); // internen Pull-Up aus I2C_DDR |= (1<<I2C_DDR_REG_BIT); // Pin von SDA als Ausgang } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ void sda_high() { I2C_DDR &= ~(1<<I2C_DDR_REG_BIT); // Pin von SDA als Eingang //I2C_PORT |= (1<<SDA); // internen Pull-Up an } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ //////////////////////////////////////////////////////////////////////////////////////////// #define I2C_SCL_LOW I2C_PORT &= ~(1 << SCL) // Clock Low Output #define I2C_SCL_HIGH I2C_PORT |= (1 << SCL) // Clock High Output
Lesezeichen