View
224
Download
0
Category
Preview:
Citation preview
7/22/2019 Guide de Programmation Des DSPIC V1
http://slidepdf.com/reader/full/guide-de-programmation-des-dspic-v1 1/8
Guide DSPIC30F
IOGS 2011-12
p.1
Guide de programmation des DSPIC30F
1. Présentation des DSPIC30F3013/3014
Les cartes de démonsration et développement DSPICdem 2 peuvent recevoir de
nombreux DSPIC30F différents. Parmi ceuxci nous utiliserons des DSPIC30F 30!3 et
30!" #ui composants sont tr$s proc%es l&un de l&autre.
'oici leurs broc%a(es )
Figure 1
dsPIC30F3014 en boitier PDIP 40 broches
Figure 2
dsPIC30F3013 en boitier PDIP 40 broches
7/22/2019 Guide de Programmation Des DSPIC V1
http://slidepdf.com/reader/full/guide-de-programmation-des-dspic-v1 2/8
Guide DSPIC30F
IOGS 2011-12
p.2
Leurs "0 broc%es se répartissent en )
Des broc%es d&alimentation *'ss+ 'dd+ ,'ss+ et ,'dd-
Des broc%es sur les #uelles vont transiter des si(naux analo(i#ue ou numéri#ues
La plupart des broc%es peuvent avoir plusieurs utilisations a priori.
ais / un instant t+ une broc%e ne peut avoir #u&un rle bien défini. C&est pour cela
#u&il va falloir initialiser le DSPIC au début du pro(ramme main.
Confi(urer+ ou initialiser le DSPIC consiste / mettre / certaines valeurs les !1 bits de
re(istres spécifi#ues *nommés SF c%e icroc%ip-.
Exemple )
ADCON1 = 0xFF ;
Positionne tous les bits du registre de Contrôle ADC!1 " 1
4ous allons voir en détail dans la partie suivante comment confi(urer un re(istre de
fa5on (énérale et plus en détails les re(istres confi(urant un port.
2.
Utilisation des PORTS du DSPIC
1. Comment utiliser un PORT ou un it d!un Port "
Cette utilisation se fait en 2 p%ases )
6ne p%ase d&initialisation #ui permet d&indi#uer #ue les bits #u&on sou%aite
utiliser sont des entrées ou bien sont des sorties+ et cela sans modifier les
autres bits.
6ne p%ase d&utilisation o7 on va écrire *ou lire- des données binaires sur les
bits #u&on sou%aite utiliser.
Dans ce #ui suit+ nous allons d&abord voir comment écrire *ou lire- sur un re(istre
ou bien sur un port+ puis nous verrons comment les confi(urer en entrée ou sortie. Il
8a plusieurs tec%ni#ues possibles et l&essentiel est résumé en fin de partie.
9n va auparavant donner #uel#ues précisions sur la notion de port et sur la
sécurité de ces ports.
7/22/2019 Guide de Programmation Des DSPIC V1
http://slidepdf.com/reader/full/guide-de-programmation-des-dspic-v1 3/8
Guide DSPIC30F
IOGS 2011-12
p.3
2.1. #uels sont les $orts et les its dis$oniles $our les entrées%sorties "
&TT'(TIO( ) Ce DSPIC étant alimenté entre 0' et :'+ au)une tension d!entrée ne
devra dépasser cet intervalle 0':'.
Il est / rappeler #u&une tension sinus d&litude :' passe la moitié de son tempsen né(atif *;us#u&/ :'- et donc passe :0< de son temps / détruire le DSPIC=
6n port peut >tre vu comme un acc$s direct / certaine cases mémoire du DSC via
des broc%es du composants *#u&on peut venir vérifier / l&oscilloscope ou sur les#uelles
on peut mettre directement une tension-.
9n va donc pouvoir via les ports+ soit écrire le contenu d&une mémoire vers le
monde p%8si#ue+ soit inversement stoc?er dans une mémoire des données venant dumonde p%8si#ue.
Ce DSC dispose de plusieurs ports *nommés ,+@+C +D+A+F- permettant l&éc%an(e
de données avec le milieu extérieur *sous forme de booléen ou de mots binaires-. Les
éc%an(es peuvent se faire dans les 2 sens *entrée ou sortie- et c%a#ue bit peut >tre
confi(uré en entrée ou en sortie indépendamment des autres bits du port.
9n dispose tr$s précisément *B! p. ::+ et B2- des ports et bits suivants )
Port & @it !!
Port * @its 0 / !2 parta(és notamment avec l&,DC
Port C @its !3+ !"+ !:
Port D @its 0 / 3 et bits E et
Port D @its 0 / 1
Tableau 1
&ttention ) il 8 a beaucoup plus de fonctions disponibles et donc de bits possibles
#ue de broc%es pour le composant. Donc on doit confi(urer les diverses broc%es pour
#u&elles soient associées / une fonction *et donc implicitement exclure l&usa(e d&autres
fonctions-. Par exemple les broc%es du port @ servent aussi comme entrée du
convertisseur analo(i#uenuméri#ue ) attention donc / ne pas avoir de conflit et c&est
au développeur le de (érer.
7/22/2019 Guide de Programmation Des DSPIC V1
http://slidepdf.com/reader/full/guide-de-programmation-des-dspic-v1 4/8
Guide DSPIC30F
IOGS 2011-12
p.4
&sso)ier les ro)+es , des -on)tions a tre -ait dans les 1res lines du )ode
main )!est la $+ase d!initialisation.
2.2. Comment é)rire sur un reistre et don) sur un Port "
& noter ) ce #ui suit est autant valable pour l&écritureGlecture d&un port #ue
pour celle d&un re(istre spécifi#ue SF ) c&est normal car un port est vu comme un
re(istre parmi d&autres pour le s8st$me de développement.
Pour écrire sur un port+ on peut directement coder une valeur sur un re(istre par )
PORTA = 0xFD ; // PORTA défini grâce au p30F3014.h
// codage en hexadécimal
9u encore
PORTA = 0b11111101 // codage en binaire
ais 5a pose (ros probl$me )
Si vous sou%aite faire *par exemple- passer / 0 uni#uement le bit ! du re(istreP9H,+ écrire les li(nes précédentes va forcer aussi / ! d&autres bits *#ui devaient
peut>tre rester / 0-.
D&o7 plusieurs tec%ni#ue décrites cidessous
2.2.1. Utilisation d!un mas5ue
Supposons #ue la valeur initiale du P9H, soit 0. 9n va coder sous cette forme )
PORTA = PORTA | 0x02 ;
représente le 96 Lo(i#ue bit / bit #ui permet de ne mettre / ! #ue le *ou
les- bits sou%aités.
L&effet sera la mise / ! du bit ! *2 J !0 en binaire- sans touc%er aux autres.
'ariante )
PORTA = PORTA | 0b00000010;,utre variante )
7/22/2019 Guide de Programmation Des DSPIC V1
http://slidepdf.com/reader/full/guide-de-programmation-des-dspic-v1 5/8
Guide DSPIC30F
IOGS 2011-12
p.5
PORTA |= 0x02 ; //codage compacté du C
Pour la mise / 0 de certains bits+ on va coder sous cette forme *FJ!!!! et
DJ!!0!- )
PORTA = PORTA & 0xFD ;
K représente le AH Lo(i#ue bit / bit #ui permet de ne mettre / 0 #ue le *ou
les- bits sou%aités.
L&effet sera la mise / 0 du bit ! forme *FJ!!!! et DJ!!0! en binaire- sans
touc%er aux autres.
'ariante )
PORTA = PORTA & 0b11111101;
,utre variante )
PORTA &= 0xFD ; //codage compacté du C
2.2.2. Utilisation des o$érateurs de dé)alae
L&opérateur du lan(a(e ou MM permettent de décaler les bits d&un mot binaire.
char a=0 ; // a occupe 1 octet initialisé à 0
a = 1<<3 ; // a va valoir en binaire 0001000
,utrement dit+ !MM4 va positionner / ! le bit nN 4.
Les codes précédents peuvent donc s&écrire )
PORTA = PORTA | (1<<2) ;
At en utilisant un alias dans un .% *le s8stem.% dans les pro;ets concernés- )
#define Bit2 (1<<2)d#ns le $h
Puis dans le code C
PORTA = PORTA | Bit2 ;
2.2.3. Utilisation des alias dé-inis dans $30F3014.+
Le fic%ier p30F30!".% B2 comprend des définitions permettant de code ainsi )
PORTBbits.RB0= 1 ; // mise à 1 du bit 0 du Port B
7/22/2019 Guide de Programmation Des DSPIC V1
http://slidepdf.com/reader/full/guide-de-programmation-des-dspic-v1 6/8
Guide DSPIC30F
IOGS 2011-12
p.6
Ces définitions utilisent des structures+ des c%amps de bits et asse souvent des
unions+ mais l&utilisateur peut se contenter des les utiliser telles #ue *s&il a bien inclus le
fic%ier p30F30!".% dans son pro;et PL,@-.
Le fic%ier p30F30!".% B2 comprend aussi des alias du t8pe )
#define _RB0 PORTBbits.RB0
9n peut donc aussi coder sous la forme )
_RB0= 1 ; // mise à 1 du bit 0 du Port B
&u -inal )!est la -a6on la $lus sim$le de )oder si on ne sou+aite
$ositionner les its 1 $ar 1.
6n (rand nombre des ces alias sont définis *li(nes !10: / 2"00 du fic%ier
p30F30!".% B2+ le plus efficace étant de lancer une rec%erc%e sur P9H@+ HIS@+
,DC94+ etc.-
2.3. Comment distinuer entrées analoi5ues $our l!&DC et entrées/sorties
numéri5ues
, partir de l&implémentation du DSPIC sur une carte électroni#ue *la DSPICdem 2
pour nous-+ certaines broc%es sont nécessairement analo(i#ues et on doit les
confi(urer telles #ue.
Cela se fait par l&intermédiaire du re(istre &DPCF7 *c&est aussi un des re(istres de
contrle de l&,DC-. Les entrées p%8si#ues du potentiom$tre et de la t%ermistance sont
,42 et ,43.
La mise / 0 d&un bit x du re(istre ,DPCFO confi(ure la broc%e ,4x *aussi nommée @x-
comme étant analo(i#ue *et donc comme étant une entrée analo(i#ue-.
La mise / ! d&un bit x du re(istre ,DPCFO confi(ure la broc%e ,4x *ou @x- comme
étant numéri#ue *et donc il faudra utiliser le re(istre HIS@ décrit dans le para(rap%e
suivant afin de paramétrer cette comme entrée ou bien comme sortie-.
9n doit donc coder dans l&initialisation )
Con%igur#tion des entr&es #n#logi'ues )
ADPCFGbits.AN2= 0 ;
ADPCFGbits.AN3= 0 ;
7/22/2019 Guide de Programmation Des DSPIC V1
http://slidepdf.com/reader/full/guide-de-programmation-des-dspic-v1 7/8
Guide DSPIC30F
IOGS 2011-12
p.7
Initi#lise A!2 et A!3 comme entr&e #n#logi'ues
Indispens#ble pour utiliser l# thermist#nce et le potentiom(tre de l# c#rte
D)PICdem 2$
2.4. Comment )on-iurer un it en entrée ou en sortie "
6ne fois confi(uré comme IG9 numéri#ue+ cela se fait en écrivant sur le bit nN 4
du re(istre spécifi#ue HIS@ *il existe aussi des re(istres HIS,+ HISC+ HISD+ HISA+
HISF- on va confi(urer c%a#ue bit en entrée ou bien en sortie de la fa5on suivante )
ettre le bit / ! impli#ue un bit en entrée
ettre le bit / 0 impli#ue une sortie
Comme tou;ours+ on ne modifie pas les bits non concernés en utilisant undes tec%ni#ues du para(rap%e 0
Exemple *
TRISB = TRISB & 0xFD ;
/* Le bit 2 du Port B devient une sortie
(mise à 0) et les autres sont inchangés.
*/
TRISB = TRISB | 0x08 ;
/* Le bit 3 du Port B devient une entrée
(mise à 1) et les autres sont inchangés. */
Ces li(nes sont t8pi#uement écrites dans la p%ase d&initialisation+ soit en début de
main. Alles sont modifiables n&importe o7 dans le code. ais attention+ une entrée est
souvent p%8si#uement connecté / un dispositif ne peut >tre transformée en sortie
sans probl$me électri#ue *courtcircuit+ etc.-.
Autre exemple *
_TRISB2= 0 ; // Le bit 2 du Port B est une sortie
(mise à 0) et les autres sont inchangés.
_TRISB3 = 1 ; // Le bit 3 du Port B devient une
entrée (mise à 1) et les autres sont inchangés.
9n a utilisé ici les alias défini dans le .%.
L&ensemble des bits et des re(istres concernant les ports du DSPIC est donné dansle tableau
7/22/2019 Guide de Programmation Des DSPIC V1
http://slidepdf.com/reader/full/guide-de-programmation-des-dspic-v1 8/8
Guide DSPIC30F
IOGS 2011-12
p.8
Tableau 2 : dsPIC30F3014/4013 PORT REGISTER MAP, (source : [1])
2.8. Résumé sur l!utilisation des $orts
Pour utiliser un port (ou un registre) :
@ien définir les bits utilisés+ et bien définir les entrées et les sorties
ADPCFGbits.AN2= 0 ;
ADPCFGbits.AN3= 0 ;
//Initialise les entrees thermistance et
potentiometre de la DSPICdem 2
Confi(urer les entrées par+ par exemple )
_TRISB8 = 0 ;
Confi(urer les sorties par+ par exemple )
_TRIS9 = 1 ;
6tiliser les ports par )
_RB2 = 1 ; // passage du bit B2 à 1
x = _RB3 ; // lecture du bit B3 dans la
variable x
Recommended