Вы находитесь на странице: 1из 36

Création d’une application

Créer un projet
Sélectionner le ou les user module (UM)
Configurer le ou les user module (UM)
Générer l’application
Coder
Compiler
Programmer
Création d’un projet Choisir le nom du projet,
l’environnement crée un répertoire
dans le répertoire de base.

Répertoire de base.

Choisir le bon
composant

Choisir Projet
en C
Sélectionner les User Modules
Configurer le ou les UM
Configuration global UM sélectionner

Configuration
Du bloc

Configuration
des pattes
Génération de l’application

Coder
Compiler l’application

Programmer

Selectionner
Mini prog

Selectionner
Mode RESET

Attention à n’avoir qu’un PSoc Programmer ouvert!!!!!


Documents ressources:
• Paramétrage ressources globales
• Mise en œuvre sortie logique
• Mise en œuvre entrée logique
• Mise en œuvre LCD
• Mise en place interruption timer
• Mise en œuvre liaison série (UART)
• Mise en œuvre interruption externe
• Mise en œuvre DAC
• Mise en œuvre ADC
• Mise ne œuvre multiplexeur avec ADC
• Mise en œuvre I2C
• Schéma de la gamel
Paramétrage ressources globales
Définition des horloges
Internes

Configuration de l’alimentation des


blocs analogiques:

Dynamique de tension des blocs


Analogiques : Sélectionner

Mettre à High pour alimenter les


blocs analogiques
Mise en œuvre d’une sortie logique
Paramétrage des pattes Sélectionner le Drive Mode

Output logique : STRONG


Input logique : High Z, ou
pull up ou pull down
Analogique Input ou output :
High Z analog
Codage

PRT?DR = 0x??

Port considéré Valeur

Pour travailler sur un bit, l’utilisation de masque est obligatoire :

PRT0DR = PRT0DR | 0x01; //set pin 0 of 0 port


PRT0DR = PRT0DR & 0xFE; //reset pin 0

Dans le masque, ne mettre à 1 que les


pattes en sorties
Mise en œuvre d’une entrée logique
Paramétrage des pattes
Sélectionner le Drive Mode :
High Z, pull up ou pull down

Code
Variable = (PRT0DR & 0x??)

Masque pour sélectionner le bit à tester


Mise en œuvre de l’écran LCD
Sélection de l’UM LCD

Configuration du user module


Utilisation du LCD (API en langage C)

Exemple :
char theStr[] = "PSoC LCD"; // Define RAM string
LCD_Start(); // Initialize LCD
LCD_Position(0,5); // Place LCD cursor at row 0, col 5.
LCD_PrString("PsoC LCD"); // Print "PSoC LCD" on the LCD
LCD_PrCString (theStr); // Print a constant "ROM" string

API d’affichage:
extern void LCD_Start(void);
extern void LCD_Init(void);
extern void LCD_Control(BYTE bData);
extern void LCD_WriteData(BYTE bData);
extern void LCD_PrString(char * sRamString);
extern void LCD_PrCString(const char * sRomString);
extern void LCD_Position(BYTE bRow, BYTE bCol);
extern void LCD_PrHexByte(BYTE bValue);
extern void LCD_PrHexInt(INT iValue);
Mise en place d’une interruption timer
Insertion et placement d’un UM Timer
Sélection du mode d’interruption
Mise en place de la réponse à l’interruption
timer
Mise en place du code à exécuter
Insertion et placement d’un UM Timer
Sélection du mode d’interruption : Définition des paramètres de l UM
Utilisation de l horloge VC3

Periode Interrupt  Period * Période VC 3

Déclanchement d’une
interruption sur fin de
comptage
F Calcul de la période d’interruption

VC3  VC 2 / 100  SysClk / 16 / 15 / 100  1000Hz


1
Periode Interrupt  TVC 3 * Period  .1000  1s
1000

Mise en place de la réponse à l’interruption timer


Après avoir générer l’application, ouvrir le source
assembleur correspondant à la réponse à une interruption
du timer:
• Rechercher dans le source
assembleur (timer16int.asm) le code
correspondant à la réponse à une
interruption
• Insérer un LongJump vers la
procedure en C contenant le code à
réaliser: ljmp _nom_procedure

Mise en place du code à exécuter (dans main.c)


Indique au compilateur que affiche
est une procédure de réponse à une
interruption

Autorise les interruptions timer


Start le timer

Autorise les interruptions au niveau


du cœur du micro
Mise en œuvre de la liaison série
Sélectionner le bloc UART

Placer et router UART

Relier RX à une patte (P11 dans l’exemple, configurée en (High Z) par défaut)
Relier TX à une patte (P10 dans l’exemple, configurée en (Strong) par défaut)
Configuration du user module Relier à une horloge dont la fréquence est
8x le debit de la liaison
VC 3 = 76 800 HZ pour 9 600 Bauds

Travail en API haut niveau

Le caractère ASCII 13 est interprété


comme une fin de commande

Le caractère ASCII 32 est interprété


comme délimiteur d’argument dans la
commande considérée

Relier physiquement sur le kit les pattes P11 à RX et P10 à TX


Configurer le terminal
Liaison : 9600,8,1, none; contrôle de flux : aucun
Propriétés / Paramètres / Configuration ASCII : Valider ‘reproduire localement
les caractères entrés.
Codage
Mise en place d’une interruption externe
Configurer la patte (Drive et mode d’interruption)
Mise en place de la réponse à l’interruption GPIO
Mise en place du code à exécuter

Configurer la patte (Drive et mode d’interruption)

Sur le kit, l’interrupteur Interruption sur front


est connecté au Vcc montant
Mise en place de la réponse à l’interruption GPIO

• Rechercher dans le source


assembleur (psocgpioint.asm) le code
correspondant à la réponse à une
interruption
• Insérer un LongJump vers la
procedure en C contenant le code à
réaliser: ljmp _nom_procedure
Mise en place du code à exécuter
Utilisation d’un DAC
Insertion et placement d’un UM DAC
Routage de la sortie et de l’horloge
Sélection des paramètres UM
Codage
Insertion et placement d’un UM DAC

Routage de la sortie et de l’horloge

Connexion de la sortie à l’Analog Out Bus


Sélection des paramètres UM

Global Ressources:

Choisir le format !

Codage
Utilisation d’un ADC
Insertion et placement d’un UM ADC
Routage de l’entrée
Sélection des paramètres UM
Codage
Insertion et placement d’un UM ADC
Sélectionner par exemple un ADC incrémental 7-13 bits :
Utiliser le placement par défaut.

Routage de l’entrée

Le plus souvent, il est impossible de connecter directement l’entrée du


convertisseur sur une patte. Il est alors nécessaire de mettre en ouvre un PGA
de gain 1 :

Dans cet exemple, l’entrée du


convertisseur est reliée à la sortie
du PGA.
L’entrée du PGA est reliée à P10
via le
Sélection des paramètres UM

VC1 = 2.4 M Hz
ADCINCVR DC and AC 5.0V Electrical Characteristics (Data Sheet)

Dans notre exemple, sélection de VC1 comme horloge, avec VC1=2.4 MHz

Global Ressources:
Codage
Utilisation d’un multiplexeur
Sélectionner un bloc AMUX4

Paramétrer le multiplexer considéré (assignation d’un colonne)

Pour connaître l’état d’un multiplexeur, utiliser le registre AMX_IN

Pour affecter l’état d’un multiplexeur, utiliser la procédure

AMUX4_InputSelect(AMUX4_PORT0_3);
Paramètre défini dans AMUX4.h
Utilisation du bus I2C
Insertion et placement d’un UM I2CHW (Utilisation du bloc Hardware I2C)
Sélection des paramètres UM
Codage

Insertion et placement d’un UM I2CHW


Choisir le type de topologie (I2CMaster),
puis placer l’UM

Sélection des paramètres UM

A spécifier pour cause de bug sur la


série 27xA

SDA SCL
Cycle lecture / écriture
Codage
Initialisation

Écriture d’une trame

Adresse de Longueur de la
L’esclave trame
(0x00 pour broadcast)
Trame : voir cycle écriture [le pointeur de registre est incrémenté, puis non réinitialisé
en fin d’écriture]
Vérification de la bonne écriture d’une trame
Lecture d’une trame
Écriture du pointeur d’adresse (écriture d’une trame ne comportant d’un octet)

Lecture de la trame de donnée Adresse de


L’esclave

Attente de la fin d’écriture

Trame : voir cycle de lecture [le pointeur de registre est incrémenté,


puis réinitialisé en fin de lecture]
Schéma
U1
P0_0 24 20 P2_0
P0(0) P2(0)
VCC P0_1 4 8 P2_1
P0(1) P2(1)
P0_2 25 21 P2_2
R1 P0(2) P2(2)
P0_3 3 7 P2_3
100K P0(3) P2(3)
P0_0 26 22 P2_4 VCC J1
P0(4) P2(4)/Ext AGNDIn
P0_5 2 6 P2_5 1
P0(5) P2(5) VCC
27 23 P2_6 2
P0(6) P2(6)/Ext VREFIn VSS
P0_7 1 5 P2_7 XRES 3
P0(7) P2(7) XRES
SCLK 4
SCLK
SDATA 15 17 P1_4 SDATA 5
P1(0)/XtalOut/SDATA P1(4) SDATA
SCLK 13 11 SPI_SDA
P1(1)/XtalIn/SCLK P1(5)
VCC P1_2 16 18 P1_6 ISP
P1(2) P1(6)
P1_3 12 10 SPI_SCL
R2 P1(3) P1(7)
XRES 19 9
100K XRES SMP
P0_1 VCC
14 28
VSS VCC
VCC
CY8C29466-24PI

C1 LCD1
100nF VCC 1
VSS
2
VDD
VCC VCC VCC P0_2 3
VO
P2_5 4
RS
VCC J2 P2_6 5
SW1 SW2 SW3 R/W
P2_4 6
POUSSOIR POUSSOIR POUSSOIR 4 E
SPI_SDA 7
3 DB0
SPI_SCL 8
2 DB1
9
1 DB2
10
DB3
I2C P2_0 11
DB4
P2_1 12
DB5
P1_2 P1_3 P2_7 P2_2 13
DB6
P2_3 14
R3 DB7
VCC P0_3 15
A
330 16
K
VCC
R4 Afficheur LCD
330 P1_4 P1_6 P0_7 P0_5
R9
560 R5 R6 R7 R8
SW4 560 560 560 560
POUSSOIR

D5
D3 D2 D1 D4

XRES
V_BAT
VCC JP1
Reserve VCC
1 2
VCC DROITE_EXT DROITE_INT
3 4
R4 FIN_COURSE GAUCHE_INT
5 6
330 Reserve B1 CODEUR_D R5
7 8
Reserve B0 GAUCHE_EXT 1K
D3 9 10
SGN_G SGN_D BAT
SW1 11 12
CODEUR_G JACK
RESET 13 14
PWM_G PWM_D R6
15 16
1K
R3
560
U1
XRES GAUCHE_EXT 24 20 FIN_COURSE
P0(0) P2(0)
DROITE_INT 4 8 CODEUR_G
P0(1) P2(1)
PHOTO_G 25 21 SGN_G
P0(2) P2(2)
PHOTO_SRC 3 7 PWM_D
P0(3) P2(3)
PHOTO_SRC BAT 26 22 PWM_G
P0(4) P2(4)/Ext AGNDIn
PHOTO_D 2 6 SGN_D VCC
P0(5) P2(5)
R8 GAUCHE_INT 27 23 JACK
P0(6) P2(6)/Ext VREFIn
J7 8.2K R9 DROITE_EXT 1 5 CODEUR_D VCC
P0(7) P2(7)
PHOTO_G 8.2K R1
3
PHOTO_D SDATA 15 17 SERVO 1K
2 P1(0)/XtalOut/SDATA P1(4)
SCLK 13 11 SPI_SDA R2
1 P1(1)/XtalIn/SCLK P1(5)
TX 16 18 LIGHT 1K
P1(2) P1(6)
Photodetect RX 12 10 SPI_SCL
P1(3) P1(7)
XRES 19 9
XRES SMP
VCC
14 28
VSS VCC
CY8C29466-24PI

C3

100nF
VCC J1
1
VCC
2
VSS
XRES 3
XRES
SCLK 4
SCLK
SDATA 5
SDATA
ISP

U3 VCC J2
C4 1 2 C5 VCC
100nF C1+ VDD 100nF 4
3 16 SPI_SDA
C1- VCC 3
4 SPI_SCL
C2+ C6 2
5
C7 C2- 100nF 1
100nF TX 11 14 I2C
T1IN T1OUT J3
10 7
T2IN T2OUT
1 VCC J4
RX 12 13 6 4
R1OUT R1IN VCC
9 8 2 11 RX 3
R2OUT R2IN C9 Rx
7 TX 2
100nF Tx
15 6 3 10 1
GND VEE GND
8
MAX232ACPE 4 RJ9_Serie
9
C8 5 J5
VCC SERVO
3
D Connector 9 2
100nF
1
Servo

J6
LIGHT R7
2
330 1
Light