Première un peu d’histoire général
Pour utiliser la plupart de l’I2C pour port parallèle de l’IC avec le Raspberry pi que vous devez être capable de manipuler les données peu sage. Habituellement, cela se fait dans un micro contrôleur, mais avec l’IP, il y a beaucoup plus de puissance pour faire d’autres choses, une fois que vous maîtrisez la manipulation sage de bits des données, vous pouvez construire des outils très puissants. Une tâche très commune de sage bit doit basculer un peu. Pour instance si nous avons une banque de relais 0010_0100b et que vous souhaitez activer/désactiver le troisième bit qui est actuellement un à un zéro la façon de faire qui est avec un peu exclusif ou opération sage. En Perl, ceci est accompli avec le "^" symbole de carotte, où chaque bit est ored individuellement. Lorsque vous effectuez cette opération, il y a une valeur de clé que nous utilisons a appelé un « masque » pour représenter les bits ou bits que nous voulons exploiter sur.
La formule générale sera comme suit
Current_status_byte ^ mask_byte = New_status_byte
--------------------------------------------------------------------------------------------
Voici un exemple montrant les valeurs binaires où nous voulons activer/désactiver le troisième bit dans la status_byte
0010_0100 ^ 0000_0100 = 0010_0000
et si l'on répète l’opération encore une fois, nous pouvons basculer le bit sur.
0010_0000 ^ 0000_0100 = 0010_0100
------------------------------------------------------------------------------------------------
Une autre chose commune à faire est de dégager un peu dont on peut faire de même à l’aide de la fonction et peu sage. Génériquement Cela ressemblera, mais nous devons activer/désactiver le masque pour cette opération
Current_status_byte & mask_byte_inverted = New_status_byte
Pour l’exemple numérique
0010_0000 & 1111_1011 = 0010_0000
Maintenant cependant si nous le faisons à nouveau l’opération, le bit ne bascule séjours clair
0010_0000 & 1111_1011 = 0010_0000
------------------------------------------------------------------------------------------------
Dans un monde idéal vous serait très probablement veulent un octet du masque et compléter le masque de bits dans la formule, donc vous pouvez activer/désactiver ou effacer avec la même mèche de masque. à l’aide de radier sage du bit. Voici un moyen de changer le clair, donc vous pouvez utiliser le même masque pour les deux
0010_0000 & ~ 0000_0100 = 0010_0000