Étape 12 : Configurer le PIC maître I²C
I²C la routine d’initialisationvoid I2C_Init (void){
TRISA1 = 1 ;
TRISA2 = 1 ;
ANSELA = 0b00000000 ;
SSP1ADD = 0 X 03 ;
SSP1STAT = 0 X 80 ;
SSP1CON1 = 0 X 28 ;
SSP1CON2 = 0 X 00 ;
}
C’est à peu près la même chose avec ce que nous avons fait avec le capteur, mais cette fois qu'il faut configurer le MSSP pour agir comme un maître. J’ai écrit quelques fonctions pour ce faire, je vais faire quelques captures pour vous avec le code d’exemple, pour vous aider à rouler. Pour une raison stupide, que je n’ai pas pu faire ce post comme une image, si elle est ici, un peu plus laid, mais au moins ça marche.
La routine principale
Ceci est mon code principal et le code I²C, certains logiciels hors rebondissant est fait pour changer la luminosité de l’écran, I²C commandes sont émises pour collecter les données de distance de la HC-SR04 par processeur esclave, puis les chiffres sont analysés pour être affiché sur l’afficheur 7 segments LED. Dans un souci de routage plus facile que j’ai choisi les cathodes de chiffres pour aller au hasard le MAX7219, c’est bien plus simple pour contourner ce problème dans le logiciel, puis faire quelques routage fantaisie pour obtenir les titres de droite.
Il pourrait sembler trop petit sur certains écrans, il est définitivement petit ici, dans l’éditeur, donc si vous ne voyez c’est trop bon, suivre c' est lien et visualisez-la sur flickr.
Les trois transferts vous avez déjà vu lorsque je vous avais présenté la transmission de l’esclave. Le bus est le même, donc je n’a pas pris la peine de prendre de nouvelles cisailles - le concept en lui-même est très bien, et c’est ce qui compte.
Cela dit, le PIC maître parle maintenant à l’esclave PIC, demandant des mesures de distance. Lorsque les données sont reçues les valeurs d’affichage sont immédiatement modifiées pour indiquer la mesure de distance actuelle.
J’ai aussi ajouté une interface utilisateur pour régler la luminosité de l’écran. Le capitaine PIC a un bouton sur la broche MCLR. En appuyant dessus au moins la moitié de la seconde, l’utilisateur peut faire défiler huit niveaux de luminosité. Seulement, j’ai mis cela, parce que le MAX7219 dispose de cette fonctionnalité intégrée et avait ce bouton traînent inutilement quand même.
Je pense toujours à une bonne fonction pour mettre sur le deuxième bouton, qui relie à la broche MCLR de PIC, l’esclave. J’ai pensé à l’utiliser pour mesurer la différence entre le réel et l’évaluation antérieure, mais le capteur ne voit que 400 centimètres, c’est un peu court, donc je ne dérange pas.
Suggestions sont les bienvenues !