Dernière mise à jour le 16/03/2019

Présentation


Si vous n’avez pas fait un tour par ici je vous invite à le faire afin de bien comprendre le fonctionnement du protocole I2C. Si cas contraire j’en déduis que vous avez compris le fonctionnement du protocole I2C, dans ce cas nous allons voir comment programmer un PIC 18F4550 en tant qu’esclave qui celui-ci pourra envoyer des données directement au maitre lorsque ce dernier enverra un bit de lecture (8ème bit à l’état logique “1”)

Fonctionnement


Mode réception
En mode réception I2C le PIC 18F4550 est configuré en tant qu’esclave, ainsi en mode esclave le matériel générera toujours une interruption si et seulement il y a une correspondance d’adresse.

 

 
Prenons un exemple, le maitre envoie une trame de données qui est cadencée par l’horloge ce qui par la même occasion impose aux esclaves cette cadence. Lorsque ces données arrivent sur les broches RB0 et RB1 du PIC 18F4550, les 7 premiers bits qui correspondent à l’adresse sont comparés au bit SSPADD que vous avez renseigné dans le programme. Lorsque les 7 bits correspondent au bit SSPADD une interruption sera générée.

Ci-dessous programmation des interruptions ainsi que l’adresse de l’esclave en MikroPascal:

INTCON.GIE := 1; // On active les interruptions globales
INTCON.PEIE := 1; // On active les interruptions périphériques
PIE1.SSPIE := 1; // On active les interuptions du MSSP ( Module de port série synchrone principal I2C ou SPI)
PIR1.SSPIF := 0; // On met le drapeau à zéro pour commencer

SSPADD := 0xA8; // Configuration de l’adresse de l’esclave du PIC 18F4550

Si vous avez choisi la même adresse identifiés ci-dessus (0xA8 (hexadécimale)) et que le maitre envoie la même adresse alors votre PIC sera reconnue. Attention!! si vous avez plusieurs esclaves, chaque esclaves doivent avoir une adresse unique.

Les registres nommés SSPSR et SSBUF forme ensemble un récepteur double tampon. Lorsque le registre SSPSR reçoit un octet complet (8 bits (0 à 7) sans compter le bit d’acquittement « ACK ») et que l’adresse est validée, une impulsion Acknowledge (ACK), sera générée automatiquement par le PIC et va charger le registre SSPBUFF avec la valeur reçue actuellement située dans le registre SSPSR ce qui va produire une interruption via le bit SSPIF.
le bit SSPIF va passer à l’état logique “1” et doit donc être remis à “0” par logiciel.

PIR1.SSPIF := 0; // C’est ce bit qui passe à l’état logique “1” chaque fois que le SSBUFF est chargé


Vous trouverez plus bas la programmation du maitre ainsi que de l’esclave, je vous laisse lire le programme afin de mieux comprendre le fonctionnement.

Schéma



(Clique pour agrandir)

Logiciel du PIC


Ci-dessous les réglages dans le menu”Edit Project” (MikroPascal ou MikroC) à réaliser. je n’ai pas continué les autres captures d’écran mais tout le reste est à desactiver “Disabled”.


Programme MikroPascal du PIC 18F4550 –
MikroPascal

Programme MikroC du PIC 18F4550 – MikroC

Prototype


Une petite vidéo pour la démonstration mais vidéo rapide

Circuit(s) imprimé(s)


Aucun.

Historiques


16/03/2019
-1er mise à disposition