Primero un poco de historia general
Para utilizar muchos de I2C para puerto paralelo IC con la frambuesa pi que tienes que ser capaz de manipular los datos poco sabio. Generalmente esto se hace en un micro controlador, pero con la pi, hay mucha más energía para hacer otras cosas por lo que una vez que domines la poco sabia manipulación de los datos se pueden construir herramientas muy poderosas. Una muy común poco sabio es cambiar un poco. Por ejemplo si tenemos un banco de relés 0010_0100b y quiere cambiar el tercer bit que es actualmente un uno un cero la manera de hacerlo es con una exclusiva u operación poco sabio. En Perl, esto se logra con el "^" símbolo de la zanahoria, donde cada bit es ored individualmente. Al hacer esta operación hay un valor clave que llama una "máscara" para representar el bit o bits que queremos operar en.
La fórmula general será como sigue
Current_status_byte ^ mask_byte = New_status_byte
--------------------------------------------------------------------------------------------
Aquí está un ejemplo que muestra los valores binarios donde queremos activar el tercer bit en el status_byte
0010_0100 ^ 0000_0100 = 0010_0000
y si repetimos la operación otra vez podemos cambiar la broca en.
0010_0000 ^ 0000_0100 = 0010_0100
------------------------------------------------------------------------------------------------
Otra cosa común es limpiar un poco lo que puede hacer igualmente con el bit wise y la función. Genéricamente esto se parecen, pero tenemos que cambiar la máscara de esta operación
Current_status_byte & mask_byte_inverted = New_status_byte
Para el ejemplo numérico
0010_0000 & 1111_1011 = 0010_0000
Ahora sin embargo si hacemos la operación, la broca no cambiar él estancias claro
0010_0000 & 1111_1011 = 0010_0000
------------------------------------------------------------------------------------------------
En un mundo ideal más probable es que usted quiere un byte de máscara y complementar el bit de máscara en la fórmula para que pueda alternar o claro con el mismo bit de máscara. utilizando el poco sabio invertir. Aquí es una manera de cambiar la clara para que pueda utilizar la misma máscara para ambos
0010_0000 & ~ 0000_0100 = 0010_0000