Vous êtes sur la page 1sur 8

Guide DSPIC30F

Guide de programmation des DSPIC30F 1. Prsentation des DSPIC30F3013/3014


Les cartes de dmonsration et dveloppement DSPICdem 2 peuvent recevoir de nombreux DSPIC30F diffrents. Parmi ceux ci 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


IOGS 2011-12 p.1

Guide DSPIC30F

Leurs "0 broc%es se rpartissent en ) Des broc%es d&alimentation *'ss+ 'dd+ ,'ss+ et ,'ddDes broc%es sur les #uelles vont transiter des si(naux analo(i#ue ou numri#ues La plupart des broc%es peuvent avoir plusieurs utilisations a priori. .ais / un instant t+ une broc%e ne peut avoir #u&un r0le bien dfini. C&est pour cela #u&il va falloir initialiser le DSPIC au dbut du pro(ramme main. Confi(urer+ ou initialiser le DSPIC consiste / mettre / certaines valeurs les !1 bits de re(istres spcifi#ues *nomms SF2 c%e3 .icroc%ip-. Exemple ) ADCON1 = 0xFF ; Positionne tous les bits du registre de Contrle ADC !1 " 1 4ous allons voir en dtail dans la partie suivante comment confi(urer un re(istre de fa5on (nrale et plus en dtails 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 entres ou bien sont des sorties+ et cela sans modifier les autres bits. 6ne p%ase d&utilisation o7 on va crire *ou lire- des donnes 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 entre ou sortie. Il 8a plusieurs tec%ni#ues possibles et l&essentiel est rsum en fin de partie. 9n va auparavant donner #uel#ues prcisions sur la notion de port et sur la scurit de ces ports.

IOGS 2011-12 p.2

Guide DSPIC30F

2.1.

#uels sont les $orts et les its dis$oni les $our les entres%sorties "

&TT'(TIO( ) Ce DSPIC tant aliment entre 0' et :'+ au)une tension d!entre ne devra dpasser cet intervalle 0' :'. Il est / rappeler #u&une tension sinus d&amplitude :' passe la moiti de son temps en n(atif *;us#u&/ :'- et donc passe :0< de son temps / dtruire le DSPIC=

6n port peut >tre vu comme un acc$s direct / certaine cases mmoire du DSC via des broc%es du composants *#u&on peut venir vrifier / 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 mmoire vers le monde p%8si#ue+ soit inversement stoc?er dans une mmoire des donnes venant du monde p%8si#ue. Ce DSC dispose de plusieurs ports *nomms ,+@+C +D+A+F- permettant l&c%an(e de donnes avec le milieu extrieur *sous forme de boolen ou de mots binaires-. Les c%an(es peuvent se faire dans les 2 sens *entre ou sortie- et c%a#ue bit peut >tre confi(ur en entre ou en sortie indpendamment des autres bits du port. 9n dispose tr$s prcisment *B!C p. ::+ et B2C- des ports et bits suivants ) Port & Port * Port C Port D Port D @it !! @its 0 / !2 D parta(s notamment avec l&,DC @its !3+ !"+ !: @its 0 / 3 et bits E et F @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 associes / une fonction *et donc implicitement exclure l&usa(e d&autres fonctions-. Par exemple les broc%es du port @ servent aussi comme entre du convertisseur analo(i#ue numri#ue ) attention donc / ne pas avoir de conflit et c&est au dveloppeur le de (rer.

IOGS 2011-12 p.3

Guide DSPIC30F

&sso)ier les ro)+es , des -on)tions .a /tre -ait dans les 10res li1nes du )ode main 2 )!est la $+ase d!initialisation.

2.2.

Comment )rire sur un re1istre 3et don) sur un Port4 "

& noter ) ce #ui suit est autant valable pour l&critureGlecture d&un port #ue pour celle d&un re(istre spcifi#ue SF2 ) c&est normal car un port est vu comme un re(istre parmi d&autres pour le s8st$me de dveloppement.

Pour crire sur un port+ on peut directement coder une valeur sur un re(istre par ) PORTA = 0xFD ; // PORTA dfini grce au p30F3014.h // codage en hexadcimal 9u encore PORTA = 0b11111101 // codage en binaire .ais 5a pose (ros probl$me ) Si vous sou%aite3 faire *par exemple- passer / 0 uni#uement le bit ! du re(istre P92H,+ crire les li(nes prcdentes va forcer aussi / ! d&autres bits *#ui devaient peut >tre rester / 0-. D&o7 plusieurs tec%ni#ue dcrites ci dessous

2.2.1. Utilisation d!un mas5ue Supposons #ue la valeur initiale du P92H, soit 0. 9n va coder sous cette forme ) PORTA = PORTA | 0x02 ; I reprsente le 96 Lo(i#ue bit / bit #ui permet de ne mettre / ! #ue le *ou les- bits sou%aits. L&effet sera la mise / ! du bit ! *2 J !0 en binaire- sans touc%er aux autres. 'ariante ) PORTA = PORTA | 0b00000010; ,utre variante )
IOGS 2011-12 p.4

Guide DSPIC30F

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 reprsente le AH Lo(i#ue bit / bit #ui permet de ne mettre / 0 #ue le *ou les- bits sou%aits. 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)ala1e L&oprateur du lan(a(e LL ou MM permettent de dcaler 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 prcdents peuvent donc s&crire ) PORTA = PORTA | (1<<2) ; At en utilisant un alias dans un .% *le s8stem.% dans les pro;ets concerns- ) #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!".% B2C comprend des dfinitions permettant de code ainsi ) PORTBbits.RB0= 1 ; // mise 1 du bit 0 du Port B

IOGS 2011-12 p.5

Guide DSPIC30F

Ces dfinitions utilisent des structures+ des c%amps de bits et asse3 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!".% B2C 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 dfinis *li(nes !10: / 2"00 du fic%ier p30F30!".% B2C+ le plus efficace tant de lancer une rec%erc%e sur P92H@+ H2IS@+ ,DC94+ etc.-

2.3. Comment distin1uer entres analo1i5ues 3$our l!&DC4 et entres/sorties numri5ues , partir de l&implmentation du DSPIC sur une carte lectroni#ue *la DSPICdem 2 pour nous-+ certaines broc%es sont ncessairement analo(i#ues et on doit les confi(urer telles #ue. Cela se fait par l&intermdiaire du re(istre &DPCF7 *c&est aussi un des re(istres de contr0le de l&,DC-. Les entres 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 nomme 2@xcomme tant analo(i#ue *et donc comme tant une entre analo(i#ue-. La mise / ! d&un bit x du re(istre ,DPCFO confi(ure la broc%e ,4x *ou 2@x- comme tant numri#ue *et donc il faudra utiliser le re(istre H2IS@ dcrit dans le para(rap%e suivant afin de paramtrer cette comme entre 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 ;

IOGS 2011-12 p.6

Guide DSPIC30F

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-i1urer un it en entre ou en sortie "

6ne fois confi(ur comme IG9 numri#ue+ cela se fait en crivant sur le bit nN 4 du re(istre spcifi#ue H2IS@ *il existe aussi des re(istres H2IS,+ H2ISC+ H2ISD+ H2ISA+ H2ISF- on va confi(urer c%a#ue bit en entre ou bien en sortie de la fa5on suivante ) .ettre le bit / ! impli#ue un bit en entre .ettre le bit / 0 impli#ue une sortie Comme tou;ours+ on ne modifie pas les bits non concerns en utilisant un des 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 inchangs. */ TRISB = TRISB | 0x08 ; /* Le bit 3 du Port B devient une entre (mise 1) et les autres sont inchangs. */ Ces li(nes sont t8pi#uement crites dans la p%ase d&initialisation+ soit en dbut de main. Alles sont modifiables n&importe o7 dans le code. .ais attention+ une entre est souvent p%8si#uement connect / un dispositif ne peut >tre transforme en sortie sans probl$me lectri#ue *court circuit+ etc.-. Autre exemple * _TRISB2= 0 ; // Le bit 2 du Port B est une sortie (mise 0) et les autres sont inchangs. _TRISB3 = 1 ; // Le bit 3 du Port B devient une entre (mise 1) et les autres sont inchangs. 9n a utilis ici les alias dfini dans le .%. L&ensemble des bits et des re(istres concernant les ports du DSPIC est donn dans le tableau
IOGS 2011-12 p.7

Guide DSPIC30F

Tableau 2 : dsPIC30F3014/4013 PORT REGISTER MAP, (source : [1])

2.8.

Rsum sur l!utilisation des $orts 2 Pour utiliser un port (ou un registre) : @ien dfinir les bits utiliss+ et bien dfinir les entres et les sorties ADPCFGbits.AN2= 0 ; ADPCFGbits.AN3= 0 ; //Initialise les entrees thermistance potentiometre de la DSPICdem 2 Confi(urer les entres 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 et

IOGS 2011-12 p.8

Vous aimerez peut-être aussi