Étape 5: Code
Il n’y a pas contourner cette cartographie chaque broche de l’extenseur I/O et affichage à LED à un chiffre réel est un travail fastidieux. Cela se voit en haut de la i2c_2dig_7seg.c de fichier dans le code ci-joint. J’ai joint le code à mon thermomètre numérique qui entraîne l’affichage à sept segments I2C pour votre référence.
L’appareil I/O est Microchip Technology MCP23017-E/SP ou numéro de pièce Digikey MCP23017-E/SP-ND.
La commande I2C de base pour la fabrication de toutes les sorties d’épingles
{adresse, IODIR, 0, 0}, ou {0 x 40, 0, 0, 0}
ou plus précisément :
messageBuf [0] = 0 x 40 ;
messageBuf [1] = 0 ;
messageBuf [2] = 0 ;
messageBuf [3] = 0 ;
USI_TWI_Start_Read_Write (messageBuf, 4)
La base commande I2C pour écrire les broches de sortie correspond à {adresse, GPIO reg, port un val, port val B}. Pour exemple, si vous vouliez écrire les valeurs 0 x 45 et 0x67 au A et port B épingle serait {0 x 40, 0 x 12, 0 x 45, 0x67}
ou plus précisément :
messageBuf [0] = 0 x 40 ;
messageBuf [1] = 0 x 12 ;
messageBuf [2] = 0 x 45 ;
messageBuf [3] = 0x67 ;
USI_TWI_Start_Read_Write (messageBuf, 4)
Notez que l’adresse I2C pour cet appareil particulier est 0 x 20, mais vous l’avez de décalage vers la gauche un peu parce que le bit le moins significatif du premier octet est le bit de lecture/écriture. Voir le Bus I2C pour ATtiny et ATmega pour plus de détails.