Bits de matemáticas booleanas y golpeando sin las matemáticas (9 / 9 paso)

Paso 9: Poco ejemplo de autoagresión

Programación de microcontroladores o tratando de aplicar ingeniería inversa hace que un programa del microcontrolador consiste en procesar una gran cantidad de información binaria.  Por ejemplo, una forma en la cual microcontroladores comunican con otros dispositivos es usar una interfaz de dos hilos simples llamado I2C, pronunciado cuadrado C.

Usando I2C consiste en el envío de datos binarios a una dirección de un dispositivo que está a la escucha de peticiones desde el microcontrolador, (dispositivo maestro) una vez que una solicitud es recibida por el dispositivo, (esclavo), el dispositivo envía uno o más bytes de datos hacia el microcontrolador.

En aprender a programar comunicaciones dispositivos I2C o intentar invertir a ingeniero datos provenientes de dispositivos I2C que tienes que mirar los datos en ella es forma binaria.

Le proporcionará un ejemplo fácil de cómo hacer esto utilizando los métodos que aprendiste solo.

En el aprendizaje de I2C a menudo es sabio para el estudio de otros programas de programadores han escrito por lo que puede inclinarse cómo los datos se pasan entre microcontroladores y dispositivos.

Así que para nuestro ejemplo que vamos a analizar un fragmento de programa de RobotC código escrito a poco bang un dispositivo I2C.

He tomado un programa en C muestra poco golpeado escrito Xander que mantiene un Blog Robot llamado en RobotC:

http://botbench.com/blog/2011/02/20/bit-banged-I2C-Master-on-RobotC-for-Arduino/#comment-2674

En este artículo del blog poco golpeando un programa I2C para comunicación con una matriz de LED a destellar luces en una secuencia.

Va invertir el bucle for está utilizando para enviar una serie de bits a la matriz de LED.

Si nunca ha programado antes, por favor, variables de Google, para lazo, funciones y lazos.

Aquí está el fragmento de código que se mirar:

mientras que (verdad) {}

para (int i = 0; i < 8; i ++) {}

PCF8574write (~ (1 << i));

wait1Msec(50);

}

}

Normalmente escribo un pequeño programa en Python para imprimir los valores del bucle for.  Pero puesto que estoy asumiendo todo el mundo es nuevo en lógica boleana y de programación se escribir manualmente a cada iteración del bucle for.

Nota especial: Python no admite un tipo de datos byte, por lo que en nuestro granito de arena golpeando ejemplo vamos a utilizar el modulo operador para mostrar un entero como un byte sin signo.  Por favor Google inf necesita ayuda,

Por ejemplo: si llevamos a cabo el en el siguiente ejemplo: >>> ~ (1 << 0), en Python tenemos -2, si después utilizamos >>> bin(-2), obtenemos '-0b10'.  Para corregir el problema y mostrar un tipo completo de 8 bits en el siguiente:

>>> bin (-2% 256)

'0b11111110'

Para ver correctamente lo que está sucediendo con bits que tenemos que ver los 8 bits completos.

El tiempo es bucle forever, ignorar esto por ahora.
La de lazos del lazo donde la variable i es igual de 0 a 7.

PCF8574write() es una función personalizada que no vamos a discutir como parte de este artículo.  Puede consultar el código para ver lo que hace esta función por su cuenta.

Lo que nos interesa es el valor de i y qué número binario se pasa a la función PCF8574write().

Permite traducir cada iteración del bucle for:

Permite tipo a cada iteración del bucle en Python:

La variable comienza como 0 y extremos para arriba en un valor de 7:

>>> ~ (1 << 0)

-2

Permite tirar esta expresión aparte.  Estamos actuando un bit a bit no en el valor siguiente.  Nos dejó cambiar el valor de 1, tiempos.

Es decir que no 1 << 0.  Estamos empujando trozos de derecha a izquierda. En el primer lazo somos izquierda desplazamiento 1, 0 veces o no el mayoría del pedacito significativo.

Así que si nos fijamos en el valor binario de -2 obtenemos:

>>> bin (~ (1 << 0))

'0b10'

Permite continuar, pronto verás el patrón.

>>> ~ (1 << 0)

-2

>>> bin (-2% 256)

'-0b11111110'

>>> ~ (1 << 1)

-3

>>> bin (-3% 256)

'-0b11111101'

>>> ~ (1 << 2).

-5

>>> bin (-5% 256)

'-0b11111011'

>>> ~ (1 << 3)

-9

>>> bin (-9% 256)

'-0b11110111'

>>> ~ (1 << 4)

-17

>>> bin (-17% 256)

'-0b11101111'

>>> ~ (1 << 5)

-33

>>> bin (-33% 256)

'-0b11011111'

>>> ~ (1 << 6)

-65

>>> bin (-65% 256)

'0b10111111'

>>> ~ (1 << 7)

-129

>>> bin (-129% 256)

'-0b1111111'

En este caso se omite el 0 inicial.

Debe leer '-0b01111111'

Ahora si no han hecho tan ya, ir a la página web y ver el video:

http://botbench.com/blog/2011/02/20/bit-banged-I2C-Master-on-RobotC-for-Arduino/#comment-2674

Ahora mire los patrones muy cuidadosamente.

Tenga en cuenta que como el de lazo aumenta que el bit 0 en se mueve hacia la izquierda.

Voy a intentar no confundirlo demasiado mucho ahora mismo, (hay otro y bit a bit y una operación de desviación a la izquierda en la función i2c_write()), la prioridad es entender operaciones booleanas y cómo utilizar Python para ayudarle en la comprensión de estas operaciones booleanas.  Si usted se siente a él, invertir la función de i2c_write() para ver como los patrones están más procesada antes de ser enviados a la matriz de LED.

En el trabajo con microcontroladores cuando algo es alto, con un 1 valor, normalmente un dispositivo se enciende.  Si un poco es bajo, teniendo un 0 valor un dispositivo está apagado.

Aviso que estamos trabajando con 8 bits y nuestra matriz de LED 8 LEDs.  Sí, es correcto.  Cada vez prenden un poco, con un valor de 1, enciende el LED.  Cuando establece el valor en 0 o partió la broca, apague el LED.

Ahora mira el video otra vez.  Ahora la imagen que tanto para los bucles, uno en la función principal y el bucle en el i2c_write función apuntan como rápido o más rápido que los LED parpadean.

La lógica de la i2c_write() realiza una lógica un poco más complejo, uso de python para visualizar cómo la alta o baja poco Estados está cambiando como los 8 bits son se intervino a través del bucle for.

Por favor, por seguir aprendiendo sobre microcontroladores y operaciones booleanas, que son los bloques de programación de microcontroladores.

Artículos Relacionados

Sistemas de filtrado en PC sin las inseguridades de TOR (el enrutador de la cebolla) de derivación o internet el hacer un túnel sobre SSH

Sistemas de filtrado en PC sin las inseguridades de TOR (el enrutador de la cebolla) de derivación o internet el hacer un túnel sobre SSH

después de leer un post sobre el enrutador de la cebolla (tor) que le permite eludir la censura sin seguimiento me sorprendió. Luego leí que no era tan seguro como algunos nodos podrían introducir datos falsos y traer de vuelta las páginas mal.Pensé,
Cómo hacer anillos de split sin las pinzas

Cómo hacer anillos de split sin las pinzas

cómo utilizar anillos de split sin los alicates de anillo partidoEste es mi primer tutorial, estoy muy emocionado, así que aquí vamos!Quería usar anillos de split para una pulsera de hecho para el cumpleaños de mi hermana, pero no quería gastar diner
Café Senseo sin las vainas

Café Senseo sin las vainas

corrí fuera de vainas para mi cafetera Senseo.  Era muy difícil por un tiempo para encontrar en las tiendas. Este es mi fácil, sin compras, hasta para llegar.Sólo necesitas tu cafetera, café, filtros pequeños y el soporte para dosis profunda.Paso 1:
Montaje Kit Pen sin las herramientas adecuadas

Montaje Kit Pen sin las herramientas adecuadas

Un amigo me dio esta pluma en forma de kit.  Ella incluye los bujes para sostener el barril en el mandril, pero no un mandril.  No tengo un mandril.  Decidí hacer mi propio mandril de precisión y hacer un buen trabajo de convertir el cañón acrílico e
Como fotocopia de un libro, sin las fronteras negro grandes!

Como fotocopia de un libro, sin las fronteras negro grandes!

Hacer fotocopias de libros es una necesidad para maestros o quienes realizan la investigación de materiales de referencia que no pueden ser extraídos de su biblioteca local.  Sin embargo, los bordes negros que aparecen alrededor de los bordes de la p
Espaguetis y albóndigas sin las albóndigas

Espaguetis y albóndigas sin las albóndigas

¿qué hacer cuando su outta ideas y todo queda en casa es unos espaguetis y un paquete de salchichas?bien puede hacer una comida bastante impresionante para usted y sus hijosPaso 1: ingredientes:* spaghetti cualquier marca hará en Sudáfrica uso fattis
Cómo hacer nieve Botas (sin las botas de nieve)

Cómo hacer nieve Botas (sin las botas de nieve)

es 19 de diciembre de 2009 en Washington DC, y tenemos 16 pulgadas de nieve en el suelo, con otra de 12 pulgadas que vienen en las próximos 12 o así horas.Todo el mundo es quedarse en casa, pero después de ser couped encima en la casa y tomar fotos d
Invasores del espacio de mármol juego de fete de funcionamiento escolar (y diversión matemáticas)

Invasores del espacio de mármol juego de fete de funcionamiento escolar (y diversión matemáticas)

Este es un juego que hicimos para la fiesta de la escuela, utilizando una paleta de cartón reciclada, bebidas botella tapas, algunas tazas de helado de fiesta, tarjeta de repuesto y un montón de pegamento caliente. La idea es como bagatelle (o pinbal
Trucos motor 6.2 Tutorial (sin terminar)

Trucos motor 6.2 Tutorial (sin terminar)

Hola y Bienvenidos a mi tutorial sobre Cheat motor 6.2!Tenga en cuenta que este es un tutorial para principiantes.Si todavía no tienes motor de trucos, puede descargar la última versión aquí.Paso 1: ¿Qué es Cheat Engine? Si ya tienes truco del motor
Avanzados sistemas eléctricos sin cepillo para pequeños Scooters eléctricos

Avanzados sistemas eléctricos sin cepillo para pequeños Scooters eléctricos

tesis: es factible construir un dispositivo de movilidad personal muy potente, eficiente y ligero utilizando equipo de hobby-grado para menos de $400. Esta cantidad puede ser considerablemente menos dependiendo de las necesidades individuales del con
Portales de MineCraft! (con sin mods!)

Portales de MineCraft! (con sin mods!)

He estado jugando Minecraft durante mucho tiempo, y una cosa que siempre he querido ser capaz de hacer fue hacer telepuertos. desde entonces he encontrado solo comandos del jugador, realmente. tenía este ingenioso código podría utilizar para teletran
¿Cierto grabado de foto de 8 bits con cortador laser chino - tal vez un mundos primero?

¿Cierto grabado de foto de 8 bits con cortador laser chino - tal vez un mundos primero?

Actualización 04/11/2016: el nuevo firmware está listo :)Puede descargar el archivo HEX aquí.Para subir a tu Mega2560 Utilice XLoader.El programa se explica más o menos: seleccione el archivo hexadecimal, tablero y com el puerto, subir de golpe y dis
Rápidamente quitar la cinta magnética de carretes

Rápidamente quitar la cinta magnética de carretes

Tuvimos algunos viejos carretes de cinta magnética que habíamos rescatado de un estudio de grabación - los carretes fueron robusto y agradable, pero la cinta magnética era bastante inútil para nosotros. Así que, decidimos quitar la cinta de los carre
Aplicación domótica mediante IR-Remote

Aplicación domótica mediante IR-Remote

Podemos utilizar la tecnología no convencional de control remoto para controlar los electrodomésticos fácilmente sin las placas de interruptor de pared fijo. Aquí estoy usando control remoto tecnología (IR remote) y la tecnología de control de Blueto