Le transcodeur RC5 I2C permet de recevoir et enregistrer les mots "sous-adresse" et "commande" émis par une télécommande infra-rouge de type RC5 et de les transférer à un microcontroleur ou un PC via un simple bus I2C à 2 fils (SCL,SDA).
La norme RC5 émane de Philips et toutes les télécommandes de type Philips,Radiola,Schneider,etc rentrent dans cette catégorie
Le LPC28
est un composant programmé sur un microcontrôleur OTP P87LPC760
de Philips dont le logiciel a été développé pour
palier à la fin de la commercialisation des SAA3028 SAA3049 de Philips.
Il présente l'avantage d'intégrer son circuit de reset et d'horloge.
Des tests ont été effectués avec une télécommade
de TV Philips , une télécommande de magnétoscope Schneider
et une télécommande de satellite standard.Son logiciel filtre
les informations parasites que le recepteur infrarouge est susceptible de fournir.
Le fonctionnement est correct dans les 3 cas (S/adresse respectivement 00, 05,0AH).
En dehors d'une réception I2C ou RC5,le boitier est en mode idle permettant
ainsi d'abaisser la consommation à 1,5 mA environ.
L'intérêt réside dans le fait qu'il n'est pas nécessaire
de scruter le LPC28 car la réception d'une salve RC5 valide sur ce dernier
provoque le passage à 0 de la broche /INT permettant de provoquer une
interruption sur le master.Elle devra faire appel à une routine provoquant
la lecture des deux octets S/adresse et commande via le bus I2C telle que celle
qui est proposée sur ce site pour le 8051. Il est conseillé d'effectuer
la lecture avant la fin des 85 ms qui suivent l'activation de /INT car la réception
d'une nouvelle salve provoquerait le remplacement des deux octets non lus par
les octets issus de la salve suivante.
La lecture I2C a été testée sur un bus I2C à 100Kb/s (vitesse standard).
Suivant
le positionnement des straps sur A2,A1,A0 on peut donner huit adresses esclave
différentes
au LPC28 permettant ainsi de disposer plusieurs LPC28 sur le même bus
ou de faire fonctionner le bus
avec d'autres boitiers I2C possédant une adresse en 4Xh.
Lorsque la broche /Repeat est à 0 ,le master peut venir lire indéfiniment les deux derniers octets reçus.
/Repeat
à 1 permettra une seule lecture des deux octets, lors de la lecture suivante
de ces mêmes octets,le LPC28 retournera FFFFH indiquant qu'une lecture
a déjà été effectuée.
Cette programmation est bienvenue quand
le boitier est utilisé en mode scrutation (/INT non utilisé) pour
permettre au master de déterminer si une nouvelle trame RC5 a été
reçue (FFFF = pas de nouvelle trame reçue).
La broche
TIMEOUT permet d'activer un timer en début de trame I2C permettant de
réinitialiser automatiquement la routine I2C du LPC28 dans le cas d'une
réception I2C erronée (mauvaise trame,pas de stop ou absence d'horloge
avant le stop).
L'utilisation de ce timer est conseillée en positionnant TIMEOUT à
+5V.
Toutefois, dans le cas d'un bus I2C lent (bus sur PC à 5 khz par exemple),
la réinitialisation interviendrait avant l'arrivée du stop et
la lecture I2C serait impossible.
Il conviendrait,dans ce cas,d'inhiber la fonction TIMEOUT en positionnant cette
broche à 0.
Les broches d'alimentation du LPC28 doivent être découplées
par une capacité de 10nF au plus près du boitier.
La led de réception (présence facultative) représentée
sur le schéma est un model faible consommation (2 mA).
Elle signale la réception de bits à 0 sur la sortie du détecteur
IR .
Le LPC28 effectue un contrôle de vraisemblance sur les informations reçues
et la patte /INT ne passera à 0 que si une trame RC5 viable et complète
a été enregistrée.
Toutefois,il est à noter que si une trame incomplète ou erronée
est reçue, la led s'allumera également même quant /INT ne
passe pas à 0 ensuite.
Pour éviter des réceptions intempestives, il est conseillé
de préférer au TSOP ou autres SFH à bas prix le récepteur
Sony RX-IR ref 33.2044 Selectronic.
Me consulter si vous souhaitez mettre en oeuvre ce circuit.
Adressage du LPC28 en RD avec adresse I2C 47h SCL |
Important:
Le LPC28 comporte un dispositif de stretching
interne qui tire le signal SCL à l'état bas en cas d'occupation
interne du circuit.
C'est le cas dans le graphique précédent pour le bit 6 de SCL de
l'adresse (2° pulse de syncro en partant de la gauche après le start).On
constate que l'état bas entre le premier et le deuxième pulse est
plus large que les états bas entre les autres pulses).
Voir spécifications du bus I2C page 13 8.3
Conséquence
pour la routine master I2C qui envoie l'octet sur le bus:
La routine master qui vient de fixer SCL à l'état
haut doit venir tester si SCL=1,attendre si nécessaire que cette condition
soit vérifiée et fixer l'état haut à 5 µS
max avec SCL=1 (100khz).
Toute routine I2C master bien écrite doit se comporter de cette manière
afin de garantir la compatibilité avec tous les circuits I2C.
Datasheet LPC28 | |
Routine I2C maître en assembleur pour 8051 | I2C.A51 |
Fichier INC associé pour 8051 de base | 8031.INC |
Routines en C pour utiliser le LPC28 | LPC28.C |
Notice de première mise en service | noticelpc28.txt |