Paso 5: código
No hay, moverse por eso traz cada pin del expansor de I/O y la exhibición de LED a un dígito numérico real es trabajo tedioso. Esto se ve en la parte superior de la i2c_2dig_7seg.c de archivo en el código adjunto. Os adjunto el código para mi termómetro digital que impulsa el display de siete segmentos de I2C para su referencia.
El dispositivo de entrada-salida es Microchip tecnología MCP23017-E/SP o Digikey parte número MCP23017-E/SP-ND.
El comando I2C básico para la fabricación de todas las salidas de pins
{Dirección, IODIR, 0, 0}, o {0 x 40, 0, 0, 0}
o más específicamente:
messageBuf [0] = 0 x 40;
messageBuf [1] = 0;
messageBuf [2] = 0;
messageBuf [3] = 0;
USI_TWI_Start_Read_Write (messageBuf, 4)
El comando I2C básico para la escritura de los pines de salida es {dirección, reg GPIO, puertos un val, Puerto val B}. Por ejemplo, si querías escribir los valores 0x45 y 0x67 a la A y Puerto B pernos lo sería {0 x 40, 0x12, 0x45, 0x67}
o más específicamente:
messageBuf [0] = 0 x 40;
messageBuf [1] = 0x12;
messageBuf [2] = 0x45;
messageBuf [3] = 0x67;
USI_TWI_Start_Read_Write (messageBuf, 4)
Tenga en cuenta que la dirección I2C de este dispositivo en particular es 0 x 20 pero tienes a desviación a la izquierda un poco porque el bit menos significativo del primer byte es el bit de lectura/escritura. Para detalles, véase Bus I2C para el ATtiny ATmega.