Vous êtes sur la page 1sur 32

Mini-Projet 1

Réaliser
par :
Chahla
essounn
i
EI2

2022/20
23
-1-
I. MISE EN SITUATION :

1. Introduction :

Le PSoC (Programmable System on Chip) est un composant associant un Microcontrôleur et des


fonctions logiques et analogiques configurable et interconnectables entre eux dont le but est de
réduire le nombre des composants.

Figure 1 : PSoC (Programmable System on Chip)

La famille PSoC est constituée des références CY8C21x34, CY8C24x23A, CY8C26xxx,


CY8C27x43, CY8C29x66, qui diffèrent selon le nombre de blocs numériques et analogiques
intégrés, la taille de la mémoire de programme (type Flash), celle de la mémoire de données
(type SRAM) et le nombre de broches d’entrée/sortie (de 6 pour les boîtiers 8 broches à 44 pour
les boîtiers 48 broches). Certaines caractéristiques sont communes tel que la tension
d’alimentation qui est de 3,3 V à 5 V, la fréquence de travail qui varie de 93,7 kHz à 24 MHz ou
encore la température de fonctionnement.
La figure suivante présente l’architecture interne d’un PSoC

Figure 2 : Architecture interne d’un PSoC

-2-
Le cœur de la structure interne d’un PSoC est un microcontrôleur 8-bits qui interagit avec :

- Mémoire Flash

- Oscillateurs Internes

- Multiplieur/Accumulateur

- Contrôleur D’interruptions, Sleep Timer, Watchdog Timer

- Contrôleur I2C.

Il présente également des blocs logiques et analogiques banalisés configurables :

- Blocs logiques configurables en compteurs, timers, UARTs, PWMs, SPI, générateurs


CRC, séquences pseudo aléatoires, etc.
- Blocs analogiques configurables en amplis-op simples, comparateurs, filtres, CNAs,
CANs, modem, etc.
a) Contenu du kit :

Tout au long des séances de l’atelier, nous allons utiliser la CT PSOC-DEV01 qui est un kit
didactique fabriqué et commercialisé par la société tunisienne Corail Technologies.
La CT PSOC-DEV01 est un système de développement pour les microcontrôleurs Cypress
PSOC. Elle est conçue pour permettre aux étudiants de tester rapidement et facilement les
capacités des microcontrôleurs PSOC. Elle permet aussi d’interfacer les microcontrôleurs PSOC
avec des circuits et des systèmes extérieurs.
Pour utiliser ce kit, il faut passer par ces étapes :

- Etape 1 : installer le PSoC Designer Setup.

- Etape 2 : alimenter la carte CT PSOC-DEV01.

- Etape 3 : connecter le PSOC MINIProg au PC par le câble rétractable USB2 contenu


dans le kit CY3217 et à la carte CT PSOC-DEV01 par le biais du connecteur ISSP.
- Etape 4 : tourner l’alimentation ON.

-3-
Figure 3: Présentation du kit

Dans ce qui suit, nous allons présenter le manuel d’utilisation de la CT PSOC-DEV01 avant
d’entamer la partie manipulation.

b) Manuel d’utilisation de la CT PSOC-DEV01 :

La carte de développement CT PSoC-DEV01 permet d’utiliser un grand nombre de PSoC,


elle est livrée avec deux PSoC Cypress CY8C27643 montés sur des cartes d’adaptation
SSOP48- DIP48.Elle permet aussi d’interfacer les microcontrôleurs PSOC avec des circuits et
des systèmes extérieurs.
Les figures 4 et 5 présentent respectivement un schéma synoptique présentant les
différents blocs de la CT PSOC-DEV01 et une image réelle détaillant les composants réels de
la carte :

-4-
Figure 4: Schéma synoptique

Figure 5: Photo réel de la CT PSOC-DEV01

-5-
On présente également le schématique de la carte dans l’ [Annexe1]. Ceci est conçu et fourni par
la société Corail Technologies.
A partir de ce manuel, on va étudier chaque bloc séparément afin d’identifier et comprendre le
rôle dans le fonctionnement de la carte.
c) Bloc MCU :

La carte de développement CT PSoC-DEV01 contient un bloc MCU comme l’indique la figure


suivante :

Figure 6: Bloc MCU

Le Bloc MCU contient trois autres sockets : DIP28, DIP20 et DIP8. Il est à signaler également
qu’avec cette carte, on peut monter et utiliser une liste non exhaustive des PSoC suivante :
CY8C21123 CY8C21223 CY8C21234 CY8C21323 CY8C21334 CY8C21434
CY8C21534 CY8C21634 CY8C22113 CY8C22213 CY8C24123 CY8C24223
CY8C24423 CY8C24794 CY8C24894 CY8C24994 CY8C25122 CY8C26233
CY8C26443 CY8C26643 CY8C27143 CY8C27243 CY8C27443 CY8C27543
CY8C27643 CY8C28000 CY8C28243 CY8C28403 CY8C28413 CY8C28433
CY8C28445 CY8C28513 CY8C28533 CY8C28545 CY8C28623 CY8C28643
CY8C28645 CY8C29466 CY8C29566 CY8C29666 CY8C29866

Tous les Ports du microcontrôleur sont connectés sur des connecteurs SILS pour les utiliser dans des
applications externes.
Le tableau ci-dessous indique les différents types de PsoC1 ainsi que leurs principales caractéristiques :
Tableau 1: Récapitulatif des différentes caractéristiques

-6-
Remarque :

- Pour le kit d’évaluation, le circuit implémenté est le CY8C27643.


- Vu les connexions entre les différents sockets, il ne faut brancher qu’un seul
microcontrôleur à la fois.

d) Bloc d’alimentation :

La carte de développement CT PSoC-DEV01 peut être alimentée par deux sources de


tension:
- une alimentation extérieure +12V (convertisseur extérieure AC/DC SAGEM)
- une alimentation +5V du programmateur PSOC MINIProg.

Lors de l’utilisation d’une source extérieure, l’alimentation +5V est délivrée par le circuit
régulateur L49418V. Elle présente un switch S1 qui bascule entre ces deux types de sources
de tension.

Figure 7 : Bloc d’alimentation


e) Jumper

Un Jumper est utilisé pour établir une connexion entre deux points. Sous la couverture plastique
du Jumper, il y’a un contact métallique qui établit une connexion quand le Jumper est placé entre
les deux points.
Il est utilisé soit pour sélectionner entre deux connexions possibles d’un connecteur de trois
pins : le pin du milieu peut être connecté au pin de droite ou de gauche, soit pour connecter le
microcontrôleur à un bloc donné de la carte.

Figure 8 : Jumper
-7-
f) Bloc LED :

La carte CT PSoC-DEV01 contient un bloc de 8 LED connectées à travers d’un Jumper W2 au


port0 du microcontrôleur. LED (light-emitting diode) est un composant largement utilisé pour
afficher l’état logique.
Une diode LED ne laisse passer le courant électrique que dans un seul sens (le sens passant,
comme une diode classique, l'inverse étant le sens bloquant.

Figure 9: Bloc de 8 LED


g) Bloc Clavier :

La carte CT PSoC-DEV01 contient un clavier (4 lignes x 4 colonnes) connecté directement au


port4 du microcontrôleur. Il est largement utilisé dans les applications embarquées pour la
commande et l’interface homme/ machine.

Figure 10 : Bloc Clavier

Ce clavier contient 16 touches dont leur branchement avec les pins du microcontrôleur est
mentionné dans le tableau ci-dessous :

Tableau 2: Branchement des pins du clavier

-8-
h) Bloc d’affichage :

Les afficheurs à cristaux liquides, autrement appelés afficheurs LCD (Liquid Crystal Display),
sont des modules compacts intelligents et nécessitent peu de composants externes pour un bon
fonctionnement.

La carte CT PSoC-DEV01 contient un afficheur LCD connecté directement au port1 du


microcontrôleur dont son contraste est réglable par un potentiomètre et communique en 4- bits
parallèles.
 Il est doté également d'un rétroéclairage de l'affichage via une LED montée derrière
l'écran du module et branchée au port 2 pin 4 du microcontrôleur.
 Il est utilisé pour visualiser les données et les messages sur deux lignes et 16 caractères.

Figure 11: Blocs LCD & Contraste

La carte CT PSoC-DEV01 est équipée aussi d’un afficheur 4 digits 7 segments comme le montre la
figure ci-dessous :

Figure 12: Bloc afficheur 7 segments

-9-
Les afficheurs 7 segments sont un type d'afficheur très présent sur les applications embarquées :
les caractères (des chiffres, bien que quelques lettres soient utilisées pour l'affichage
hexadécimal) s'écrivent en allumant ou en éteignant des segments, au nombre de sept.
Cet afficheur 7segements est constitué de 4 digits reliés au port1 du microcontrôleur et 7
segments et un DP (digital point) reliés au port0 (voir le schématique dans l’Annexe1).
i) Bloc ADC :

La carte CT PSoC-DEV01 contient un potentiomètre utilisé pour ajuster une tension de test
d’une valeur comprise entre 0v-5v. Cette tension est connectée à travers un Jumper w1 au pin
P2.1.

L’utilisation de la conversion A/N est très répandue dans la plupart des applications. Dans notre
cas, le PSOC accepte une valeur mesurée qui varie entre 0v-5v.

Figure 13: Bloc ADC

j) Bloc Buzzer :

La carte CT PSoC-DEV01 contient un Buzzer connecté à travers d’un Jumper W4 au pin p2.5
pour le commander par un signal PWM.

Figure 14: Bloc Buzzer

- 10
-
Un Buzzer est un élément électromécanique ou piézoélectrique qui produit un sa caractéristique
quand on lui applique une tension.
La fréquence du signal sonore est relative au signal appliqué. Cette fréquence est généralement
comprise entre 2 kHz et 4 kHz. Ce type de Buzzer peut générer des bips graves, aigus, plus
graves ou plus aigus.
k) Capteur DS1820 :

Le thermomètre DS1820 est un capteur numérique de température qui capte une valeur entre
-55° et +125° avec une résolution de 0.5° (entre -10° et +85°).

Figure 15: Bloc thermomètre

Il communique avec le microcontrôleur par le biais d’une liaison 1_wire qui permet de
connecter (en série, parallèle ou en étoile) des composants avec seulement deux fils (un fil de
données et un fil de masse). Cette communication avec le PSoC est effectuée à travers les deux
pins p2.6 et p2.7.
l) Bloc de communication série (RS232) :

La communication RS232 est largement utilisée pour l’acquisition et le transfert point à point
des données entre le microcontrôleur et le PC.
Puisque le niveau de tension entre ces deux derniers n’est pas compatible, il faut utiliser le
MAX232 qui inclut deux récepteurs transformant les signaux RS232 en signaux TTL, et deux
émetteurs transformant les signaux TTL en signaux RS232.
Ce circuit utilise un convertisseur élévateur de tension pour fournir les niveaux de +12V et - 12V
à partir du +5V.

- 11
-
Tableau 3 : Configuration des PINs (RS232)

Figure 16 : Bloc RS232

2. Programmation de la carte CT PSoC--DEV01 :


Dans cette partie, nous allons décrire la programmation du PSoC intégré dans la carte CT PSoC-
DEV01. Ceci sera valable pour les différentes manipulations décrites dans ce fascicule. La
programmation du PSOC nécessite la présence d’un kit CY3217 contenant un PSOC MINIProg
qui permet le transfert du programme à la carte.

Figure 17: PSOC MINIProg et câble USB

Le PSOC MINIProg se connecte à la carte CT PSoC-DEV01 par le biais du connecteur ISSP et au


PC via un câble USB2.
a) Prise en main avec PSoC-DESIGNER 5.1
Cypress fournit plusieurs outils de développements gratuits comme PSoC Designer, PSoC Creator
et PSoC Programmer :

- 12
-
Figure 18: Outils de développement PSoC
Tout au long de cet atelier, nous faisons appel au logiciel PSoC Designer (voir Figure 19) pour

le développement des PSoC1.

Figure 19 : Interface du logiciel PsoC Designer

- 13
-
La conception d’un nouveau projet nécessite le passage par les quatre étapes suivantes :
- Sélection et placement des modules
- Configuration des modules et des drivers d'entrées et sorties
- Connexion des modules
- Codage, Compilation, vérification et débogage.
-
MANIPULATION 1 :

Activité 1 :

L’objectif de cette activité est de débuter avec une première application simple sur la carte CT
PSoC-DEV0 qui consiste à allumer une LED (voir figure 20) choisie parmi 8 (D9 par exemple).

Figure 20: LED1 choisie

Ceci sera effectué en expliquant pas à pas les différentes étapes de développement d’une
application PSoC.

Figure 21: Etapes de développement d’une application PSoC

- 14 -
 Après l’installation du PSoC Designer, lancez le programme et créez un nouveau projet nommé
« TestLed »

 Dans la fenêtre « Select Project Type», sélectionnez « select target device » et cliquez sur view
catalog. La fenêtre de « device catalog » s'ouvre. Cliquez sur l'onglet PSoC et choisissez la
référence CY8C27643-24PVXI.
 Choisissez le langage de programmation C pour le programme main. Puis cliquez sur OK.
 Dans la fenêtre « User Modules», sélectionnez « Misc Digital » et cliquez sur le module « LED
».
 Paramétrez le module LED au niveau « Parameters-LED » et donnez les valeurs des champs
suivants :
1. Name
2. Port
3. Pin
4. Drive
(Vous pouvez afficher la documentation du module en cliquant avec le bouton droit sur le module LED
puis « Datasheet » puis « Show in Separate Window »).

 Dans la fenêtre «Workspace Explorer», sélectionnez TestLed>Source File>main.c et


écrivez le programme permettant d’allumer la LED choisie.
 Compilez le programme élaboré et ensuite effectuez le flashage du fichier « .HEX » généré.
 Testez directement l’allumage de la LED sur la carte alimentée par le programmateur
sans faire le branchement de l’alimentation externe.

DEBUTER AVEC PSoC :

Activité  :

Création d’un nouveau projet pour PSoC designer

Afin de créer un nouveau projet, nous suivons les étapes mentionnées dans la figure ci- dessous :

- 15 -
Figure 22 : Etapes de création d'un nouveau projet

Dans la fenêtre « Select Project Type», sélectionnez « select target device» et cliquer sur view catalog.
La fenêtre de « device catalog » s'ouvre. Nous choisissons le PSoC CY8C27643-24PVXI pour notre

kit d’évaluation comme indique la figure suivante :

Figure 23: Device catalog-Chip level

- 16 -
Nous choisissons le langage de programmation C pour le programme main. Puis nous cliquons
sur OK.

Figure 24: Choix du langage C

Dans la fenêtre « User Modules», sélectionnez « Misc Digital » et cliquez sur le module « LED
».
Dans cette étape, nous ajoutons le module LED (voir figure 24) via la fenêtre User Modules. Ce
module permet de contrôler une Led directement branchée sur une broche du PSoC.

La fenêtre User Module n’est présente dans PSoC designer, nous pouvons
l’afficher avec le menu View puis User Module Catalog.

Figure 25: Insertion du Module LED

- 17 -
Paramétrez le module LED au niveau « Parameters-LED » et donnez les valeurs des
champs suivants :
o Name : LED_1
o Port : Port_0
o Pin : Port_0_0
o Drive : Active high

Figure 26 : Paramétrage et Pinout du module LED

NB :

Le module LED peut être configuré pour entraîner soit une configuration «Active High» ou

«Active Low».

Dans la configuration «Active High», l'anode de la LED est connectée à la broche de PSoC à
travers une résistance, et la cathode de la diode est reliée à Vss.
Par contre pour une configuration «Active Low», la cathode de la LED est connectée à la broche de
PSoC à travers une résistance, et l'anode de la diode est reliée à Vcc. (voir datasheet LED)
Nous pouvons afficher la documentation du module en cliquant avec le bouton droit sur

LED ou sur LED_1 puis Datasheet puis « Show in Separate Window ».

Figure 27: Documentation du module LED

- 18 -
Dans la fenêtre «Workspace Explorer», sélectionnez TestLed>Source File>main.c
Dans cette partie, nous écrivons le programme permettant d’allumer la diode LED.
En se référant à la datasheet du module LED, nous aurons besoin des fonctions suivantes :
- LED_Start() : La fonction permet d’éteindre la LED.
- LED_Switch() :La fonction permet d’éteindre ou d’allumer la LED selon la valeur
donnée :
 Si la valeur est à 1allumer la led
 Si la valeur est à 0éteindre la led.

Listing du programme :

#include <m8c.h> #include "PSoCAPI.h"

void main(void)
{
LED_1_Start(); LED_1_Switch(1);
}

Compilation du programme élaboré et flashage du fichier « .HEX » généré.

Figure 28: Etapes de compilation

- 19 -
Dans la fenêtre Output en bas, nous devrons avoir le message suivant :
«TestLed - 0 error(s) 0 warning(s) 18:24:43

Dans cette partie, nous cherchons à flasher dans le PSoC le fichier .HEX généré. Pour cela, nous
allons suivre les étapes suivantes :

- Etape1 : Connectez le programmateur CY3217 MiniProg à la carte, sans alimenter la carte.

Figure 29: MiniProg CY3217


- Etape2 : cliquez sur Program dans le menu de PSoC Designer puis Program Part…

Figure 30: Menu de PSoC Design

- 20 -
- Etape3 : cliquez sur le bouton de programmation (encadrer en bleu)

Figure 31: Menu Program Part

- Etape4 : Cliquer sur le bouton d’alimentation (encadrer en rouge)

Figure 32: Menu Program Part

- 21 -
MANIPULATION 2 :
La CONVERSION ANALOGIQUE/NUMERIQUE :

 Ajoutez le module DELSIG11 qui se trouve sous Users Modules\ADCs

Figure 33 : Ajout du module DELSIG11

 Combien de modules utilisateurs nécessite le convertisseur ? de quels types sont les modules
?
La conversion A/N nécessite deux blocs utilisateurs : un bloc analogique (DELSIG11 ADC) et un bloc
numérique (DELSIG11 TMR)
 Reliez l’entrée du module analogique à l’entrée 2.1

Figure 34 : Câblage de l'entrée analogique

 Paramétrez le module en fixant les valeurs des champs suivants :


- Au niveau des paramètres globaux du projet :
o Analog Power : SC On/Ref High (le niveau maximal d’alimentation du bloc)
o Ref Mux : (Vdd/2)+/-(Vdd/2) (la plage de mesure s’étend de 0v à 5v)
- Au niveau des paramètres de DELSIG11
o TMR Clock : VC2 (il faut fixer le même signal d’horloge pour les deux blocs
analogique et numérique) - 22 -
Figure 35 : Signal d'horloge des blocs DELSIG11

o Input : Port_2_1 (déjà câblé)


o Polling : Enable (afin de récupérer la valeur de la conversion directement de la
variable globale « DELSIG11_iResult » : voir datasheet)
 En se référant à la datasheet du module DELSIG11, donnez la formule qui permet de calculer la
valeur de la tension lue par le microcontrôleur
La sortie du module DELSIG11 est codée sur 11 bits en complément à 2. Donc la valeur reçue
(stockée dans la variable globale DELSIG11_iResult) est comprise entre -1024 et 1024 pour une
entrée analogique comprise entre 0v et 5v. Pour appliquer la règle de trois, nous faisons un
décalage de 1024, ce qui nous donne :
2048 5v
DELSIG11_iResult +1048  valeur lue en
volt
Donc : valeur lue en volt = (DELSIG11_iResult +1048) *5/2048 : c’est cette valeur lue qui
sera affichée sur l’afficheur LCD de la maquette
 Ajoutez le module LCD et paramétrez-le (comme déjà vu au niveau du TP 3)
L’afficheur LCD est relié au port 1 du PSoC. Il ne faut pas oublier sa LED de rétroéclairage
reliée à la broche 2.4

- 23 -
Figure 36 : Paramétrage de l'afficheur LCD

 Réalisez un programme qui permet de lire la valeur envoyée par le potentiomètre et de l’afficher
sur l’afficheur LCD
En se référant à la datasheet du DELSIG11, nous aurons besoin des fonctions suivantes :
- DELSIG11_Start(DELSIG11_HIGHPOWER) : initialiser le module et définir le niveau
de puissance qui lui sera alloué (dans notre cas c’est la puissance maximale autorisée)
- DELSIG11_StartAD() : activer et initialiser le temporisateur du convertisseur
- DELSIG11_fIsDataAvailable() : vérifier la disponibilité d’une donnée valide
- DELSIG11_iGetData() : retourner la donnée convertie, après avoir vérifier sa disponibilité.
La valeur sera stockée dans la variable globale DELSIG11_iResult (à condition d’activer
l’option Polling)
- DELSIG11_ClearFlag() : remettre à zéro le drapeau de présence d’une donnée valide avant
de passer à la conversion suivante:

Listing du programme :

#include <m8c.h>
#include "PSoCAPI.h"
#include "stdlib.h"

void main(void)
{
float v;
char *tmp;
int stat;

extern int DELSIG11_iResult;


LCD_1_Start();
DELSIG11_Start(DELSIG11_HIGHPOWER);
DELSIG11_StartAD();

M8C_EnableGInt;
LED_Start();
LED_Switch(1); - 24 -

while (1)

{
while (DELSIG11_fIsDataAvailable() ==
Remarque :

- Pour afficher une information sur l’afficheur LCD, elle doit être de type caractère. C’est
pour cette raison qu’il faut convertir la tension calculée (variable v dans notre programme)
en une chaine de caractère à l’aide de la fonction « ftoa ». pour utiliser cette fonction, il faut
ajouter la bibliothèque « stdlib.h » à l’entête de notre programme.

- 25 -
 Compilez votre programme et transférez le vers la maquette. Vérifiez son bon fonctionnement.

Figure 37: Affichage sur LCD

 Modifiez votre programme pour qu’il n’affiche que deux chiffres après la virgule.

Pour fixer le nombre de chiffres après la virgule, il suffit d’ajouter le caractère fin de chaine

« \0 » à la position souhaitée. Dans notre cas, si nous voulons deux chiffres après la virgule,

nous insérons le caractère de fin de chaine à la 4 ème position juste avant de l’afficher sur

… tmp=ftoa(v,&stat); tmp[4]='\0' ;
LCD_1_PrString(tmp); DELSIG11_ClearFlag();

}
}

l’afficheur :

 Compilez votre programme et transférez le vers la maquette. Vérifiez son bon fonctionnement.

- 26 -

Figure 38: Formatage de l'affichage de la tension


MANIPULATION 3 :
1. Principe de fonctionnement du clavier :

Un clavier est constitué, comme montre la figure ci-dessous, de 16 boutons poussoirs


interconnectés de façon à former une matrice 4x4 (4 lignes x 4 colonnes). Un appui sur une touche
court-circuite la ligne et la colonne correspondantes.
Des résistances de tirage vers le bas (résistance de pull-down) pour garantir l’état bas des rangées
(colonnes) au repos. Dans la carte CT PSoC-DEV01, nous utilisons les résistances de tirage intégré
dans le PSoC.

Figure 39: Clavier


Activité :
Le but de cette activité est d’écrire un programme permettant de commander une diode LED à
travers une touche parmi 16 du clavier.

 Le clavier est branché avec le PSoC de la carte CT PSoC-DEV01 sur le port 4.


 Le tableau suivant présente l’adresse de chaque touche du clavier.

- 27 -
Numéro Adres Numér Adres Numéro Adres Numéro Adresse
de la se en o se en de la se en de la en
Hexadéci de la hexadéci touche hexadéci touche hexadécimal
touche mal mal mal
touc
he
B 0x18 B 0x28 B9 0x48 B13 0x88
1 5
B 0x14 B 0x24 B10 0x44 B14 0x84
2 6
B 0x12 B 0x22 B11 0x42 B15 0x82
3 7
B 0x11 B 0x21 B12 0x41 B16 0x81
4 8

 Nous ajoutons le module LED tout en le configurant à travers le remplissage de ces paramètres.

Figure 40: Configuration du module LED

- 28 -
 Dans cette partie, nous paramétrons les broches du microcontrôleur afin de configurer les
résistances de tirages :

Tableau 4: Configuration des résistances de tirages

Pour cela, nous suivrons les étapes suivantes :


- Etape1 : Cliquez P4 [0] Drive et sélectionnez Pull Down

Figure 41: Etape1 Drive-Pull Down


Il existe différents modes d'entraînement :
 High Z : Ce mode peut être utilisé lorsque le signal d'entrée est numérique ou analogique. Mais
il ne doit pas être utilisé lorsque la broche doit fonctionner comme une broche de sortie.
Lorsque le mode « High Z » est sélectionné, le trigger de Schmitt est activé. Dans ce cas, la
CPU peut lire l'état de la broche à travers le registre PRTxDR où le signal sur la broche peut
être transmis à des blocs numériques.
 High Z Analog : Ce mode d'entraînement doit être utilisé lorsque la broche sera configurée
comme entrée analogique. Dans ce mode, le trigger de Schmitt est désactivée.
 Open Drain Low et Open Drain High : Le mode Open Drain Low peut être utilisé pour
mettre en œuvre un circuit ET câblé.

- 29 -
Par contre, le mode Open Drain High peut être utilisé pour créer un circuit OU câblé.
 Pull Up et Pull Down : Dans ces modes, la broche est entraînée par une résistance pour un 1
et 0 respectivement. Ces modes peuvent être utilisés aussi bien pour les entrées et les sorties.
 Strong : Ce mode d'entraînement est utilisé lorsqu’ une sortie connectée à la broche
nécessite plus de quantité de courant.
 Strong Slow : Un condensateur interne est ajouté lorsque ce mode est choisi. Cela réduit les
harmoniques de la sortie.

- Etape2 : Répétez la même manipulation pour P4 [1] jusqu’à P4 [7]. Le résultat devrait
ressembler à la -figure ci-dessous :

Figure 37: Configuration de 8 pins du port4

- 30 -
 Pour écrire un programme permettant d’allumer une diode LED à travers la touche B1 du clavier
par exemple, nous avons recours aux :
Registre PRTXDR : C’est un registre de données qui contrôle l’état des ports. Chaque port est
associé à un registre de données. Par exemple, PRT4DR contrôle le Port4 ; Le bit # 0 des
contrôles PRT4DR est associé au P4 [0]. L'état d'une broche GPIO peut également être lu en
utilisant le registre PRTxDR.
Variable rows (type chaine de caractère) : nous affectons dans cette variable l’adresse de la
ligne.

PRT4DR = 0xF0; //initialisation


cols = PRT4DR; //adresse de la colonne

Variable cols (type chaine de caractère) : nous attribuons dans cette variable l’adresse de la colonne.

PRT4DR = 0x0F; //initialisation


rows = PRT4DR; //adresse de la ligne

Variable code (type chaine de caractère) : nous stockons dans cette variable l’adresse de la touche du
clavier appuyée. Ceci résulte d’un ET logique (&) entre rows et cols.
LED_Switch(1) : nous utilisons cette fonction pour activer la diode led.

Listing du programme :
#include <m8c.h>
#include "PSoCAPI.h"
char rows = 0, cols = 0;
char code ;
void main(void)
{
LED_1_Start();
while(1){
PRT4DR = 0xF0;
cols = PRT4DR;
PRT4DR = 0x0F;
rows = PRT4DR;
code = rows & cols;
switch (code)
{
case 0x18: //Adresse de la touche B1
LED_1_Switch(1);
break;

default: LED_1_Switch(0);

break;
}
}
}

- 31 -
- 32 -

Vous aimerez peut-être aussi