Paso 12: Configurar el PIC como maestro I²C
Rutina de inicialización de la I²Cvoid I2C_Init (void){
TRISA1 = 1;
TRISA2 = 1;
ANSELA = 0b00000000;
SSP1ADD = 0 X 03;
SSP1STAT = 0 X 80;
SSP1CON1 = 0X28;
SSP1CON2 = 0 X 00;
}
Esto es casi lo mismo con lo que hicimos con el sensor, solo que esta vez que tenemos que configurar el MSSP para actuar como un maestro. Escribí algunas funciones para hacer esto, le haré algunos recortes con código de ejemplo, para que usted consiga rodar. Por alguna razón estúpida que no fue capaz de publicar esto como una imagen, así que aquí está, un poco más feo, pero al menos funciona.
La rutina principal
Este es mi código principal y I²C, algunos software de rebote se hace para cambiar la luminosidad de la pantalla, se emiten comandos I²C para recolectar datos de la distancia de la HC-SR04 por procesador esclavo, luego los números son interpretados para mostrarse en el display de 7 segmentos LED. Para más fácil enrutamiento que elegí los cátodos de dígitos al azar ir al MAX7219, es mucho más fácil conseguir alrededor de esto en el software y luego hacer algunas fantasia de enrutamiento para obtener las pistas derecha.
Podría parecer demasiado pequeño en determinadas pantallas, es definitivamente pequeño aquí, en el editor, así que si usted no puede ver demasiado bien, su enlace y ver en flickr.
Las tres transferencias ya hemos visto cuando le presenté la transmisión auxiliar. El autobús es el mismo, por lo que no se molestan en tomar nuevos recortes - el concepto de sí mismo está bien y es lo que importa.
Dicho esto, el PIC maestro ahora habla con el esclavo PIC, pidiendo medidas de distancia. Cuando recibe datos los valores de pantalla inmediatamente se modifican para mostrar la actual medida de la distancia.
También he añadido una interfaz de usuario para configurar el brillo de la pantalla. El maestro PIC tiene un botón en el pin MCLR. Presionando por lo menos la mitad del segundo, el usuario puede completar un ciclo a través de ocho niveles de brillo. Solamente pongo esto, porque el MAX7219 tiene esta función incorporada y tenía ese botón ahí inútil de todos modos.
Todavía estoy pensando en una buena característica para poner en el segundo botón, que se conecta al pin MCLR del PIC de esclavo. Pensé en usarlo para medir la diferencia entre el real y la medición anterior, pero el sensor ve sólo 400 centímetros, eso es un poco corto, no se moleste.
Sugerencias son bienvenidas!