Guide de Programmation Des DSPIC V1

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 ceux-ci nous utiliserons des DSPIC30F 3013 et 3014 qui composants sont très proches l’un de l’autre. Voici leurs brochages : Figure 1 dsPIC30F3014 en boitier PDIP 40 broches Figure 2 dsPIC30F3013 en boitier PDIP 40 broches

Transcript of Guide de Programmation Des DSPIC V1

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&amplitude :' 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