Você está na página 1de 27

Formation M.I.M.

E
Master Informatique Spcialit : Informatique des Systmes Embarqus

SOMMAIRE
Prsentation Prsentation Raccordement du cble Description gnrale Les DIP-SWITCHs

Travaux pratiques de programmation du C ARM7 Pour applications Embarqus

Excuter un programme Crer un PROJET Utiliser le mode DEBUG Dmarrage rapide Travaux pratiques : programmation du C Arm7 Programme 1 : Gestion interruptions Programme 2 : Conversion analogique/numrique Programme 3 : Piloter un afficheur Programme 4 : Gestion compteur Programme 5 : Comparateur analogique. Programme 6 : Ports PPI en "E/S" Programme 7 : Ports EXP en "E/S" Programme 8 : Gestion UART (RS232) Programme 9 : Pilotage EEprom I2C Programme 10 : Raliser une horloge Programme 11 : 74HC165(Entres) / 74HC595(Sorties)

Anne 2010
A.A.C

Programme 12 : Application multitche Programme 12 : Pilotage sonar Programme 13 : Pilotage Acclromtre

Master Informatique spcialit Informatique des Systmes Embarqus


Prsentation de la carte

Formation MIME

La platine "Quick.Start.Board" est spcialement conue pour faciliter le dveloppement et les exprimentations l'aide du module ROVIN. Bien que d'apparence simple, elle vous permettra de tester la plupart des fonctionnalits et possibilits du ROVIN. La platine "Quick.Start.Board" est livre avec une plaque de connexion sans soudure qu'il vous sera possible d'apposer ou non sur le ct du circuit selon vos prfrences de travail. Si vous n'utilisez pas la plaque de connexion sans soudure, vous disposerez alors d'une large zone de dveloppement pastilles qui pourra recevoir des composants additionnels. La platine est quipe d'un tage de rgulation qui pourra fournir jusqu' 1 A. Il vous faudra juste acqurir une alimentation externe de 8 9 V (non livre) - Nous proposons le modle "PSU10R" par exemple. Il n'est pas ncessaire de vous soucier de la polarit de cette alimentation (la platine intgre en effet un pont diode). La plupart des priphriques de la carte disposent de connecteurs de raccordement. L'utilisateur pourra ainsi au grs de ses ralisations utiliser de simples fils pour relier ces derniers aux ports sur module ROVIN. La platine "Quick.Start.Board" (sans la platine d'ssai)

Comme vous pouvez le constater la platine "Quick.Start.Board" dispose de trs nombreux accessoires et composants spcifiques. Les Leds prs du buzzer pourront tre relies au port PD en utilisant le DIP Switch prvu cet effet. Ces dernires seront trs utiles pour tester et exprimenter vos diffrents programmes. Les autres LEDs ( ct du rgulateur) servent tester les sorties du circuit d'extension de port 74HC595. Note: les entres logiques de commande du circuit d'extension de port 74HC595 tant initialement en l'air, il se peut que sous l'influence de signaux parasites, les Leds de visualisation associes ce dernier s'allument et s'teignent toute seules de faon intempestive. Si vous n'utilisez pas le 74HC595, il est conseill de "forcer" sa broche "SCK" au niveau logique 0 en la reliant la masse.

La platine de connexion sans soudure dispose de 2 ranges pour la reprise des alimentations: + et (masse). Ces signaux pourront tre rcuprs sur certains connecteurs de la platine "Quick.Start.Board".

Master Informatique spcialit Informatique des Systmes Embarqus


Relation entre les connecteurs femelles et les broches sur le module ROVIN

Formation MIME
La reprsentation ci-dessus montre le module ROVIN insr sur le support de la platine "Quick.Start.Board" .Coupez imprativement l'alimentation de la platine "Quick.Start.Board" avant d'insrer ou de retirer le module ROVIN de son support sous peine de DESTRUCTION de ce dernier. Dans tous les cas insrez le module avec prcaution en exerant une force "modre" sur les 2 cts du ROVIN. Dans le mme ordre d'ide, retirez ce dernier avec prcaution en vitant de forcer sur un seul des cts.

Le brochage du "ROVIN
Patte N 1
1 2 3 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 36 37 38 39 40 41 42 43

50 67 51 68 44 52 69 45 53 70 46 54 71 47 55 72 48 56 73 49 57 74 58 75 59 76 60 77 61 78 62 79 63 80 64 81 65 82 66 83

GND

VCC

4 5 6 7 8 9 10 11 12 13 14 15

Comme vous pouvez le voir ci-dessus, les connecteurs femelles de "reprise" des broches du ROVIN reprennent exactement la mme implantation que celui-ci (broche broche). Les connecteurs en jaune vous permettrons ainsi de vous connecter sur n'importe quelle broche du ROVIN conformment au brochage de ce dernier (voir dtail dans le manuel du ROVIN ou l'aide en ligne). ATTENTION: Du fait qu'aucun marquage ne soit disponible sur la platine, il vous faut imprativement vrifier avec attention le brochage du ROVIN avant de raliser vos connexions afin d'viter toute erreur pouvant tre prjudiciable ce dernier. Les connecteurs femelles rouges vous permettrons de rcuprer les tensions d'alimentation 0 V et 5 V afin de pouvoir par exemple les rapporter sur la plaque de connexion sans soudure La carte quipe du module ROVIN

16 33 17 34

Master Informatique spcialit Informatique des Systmes Embarqus

Formation MIME
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 PC-RXD SYSTEM SYSTEM SYSTEM SYSTEM SYSTEM VCC(5.0V) 3.3V OUT SYSTEM SYSTEM SYSTEM SYSTEM PWM1C PWM1B PWM1A PWM0 XBUS XBUS XBUS XBUS VCCIO-PC PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 EXPD7 EXPD6 EXPD5 EXPD4 EXPD3 EXPD2 EXPD1 EXPD0 VCCIO-PD PD7 PD6 PD5 PWM2 CT2 CT0 CP0 TXD1/INT3 RXD1/INT2 INT1 INT0 RXD pour connexion du ROVIN au PC Laissez libre ( Ne rien connecter sur cette broche !) Laissez libre ( Ne rien connecter sur cette broche !) Laissez libre ( Ne rien connecter sur cette broche !) Laissez libre ( Ne rien connecter sur cette broche !) Laissez libre ( Ne rien connecter sur cette broche !) A connecter au 5.0 V. Sortie 3.3 V. A n'utiliser que pour alimenter des systmes trs faible consommation. Laissez libre ( Ne rien connecter sur cette broche !) Laissez libre ( Ne rien connecter sur cette broche !) Laissez libre ( Ne rien connecter sur cette broche !) Laissez libre ( Ne rien connecter sur cette broche !) Broche PWM1C/PWM2 uniquement de sortie. Broche de sortie PWM1B uniquement. Broche de sortie PWM1A uniquement. Broche de sortie uniquement. Laissez libre ( Ne rien connecter sur cette broche !) Laissez libre ( Ne rien connecter sur cette broche !) Laissez libre ( Ne rien connecter sur cette broche !) Laissez libre ( Ne rien connecter sur cette broche !) Tension de PULL-UP du port PC. (Moins de 5V ) E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale ou CT2. E/S gnrale ou CT0. E/S gnrale. E/S gnrale ou CP0. E/S gnrale, TXD1, broche Interruption externe. E/S gnrale, RXD1, broche Interruption externe. E/S gnrale ou broche Interruption externe. E/S gnrale ou broche Interruption externe. Tension de PULL-UP du port PD. (Moins de 5V ) E/S gnrale. E/S gnrale. E/S gnrale.

Tableau des entres/sorties


N 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 Nom EXPA7 EXPA6 EXPA5 EXPA4 EXPA3 EXPA2 EXPA1 EXPA0 VCCIO-PA PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 EXPB7 EXPB6 EXPB5 EXPB4 EXPB3 EXPB2 EXPB1 EXPB0 VCCIO-PB PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 GND(0.0V) XRESET PC-TXD Fonc. sup ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 INT7, CP1 INT6, CT0 PWM/INT5 PWM/INT4 PWM/AIN1 (-) AIN0(+) TXD0 RXD0 Dsignation E/S gnrale ou conversion " A/N ". E/S gnrale ou conversion " A/N ". E/S gnrale ou conversion " A/N ". E/S gnrale ou conversion " A/N ". E/S gnrale ou conversion " A/N ". E/S gnrale ou conversion " A/N ". E/S gnrale ou conversion " A/N ". E/S gnrale ou conversion " A/N ". Tension de PULL-UP du port PA. (Moins de 5V ) E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale, CP1, ou interruption externe. E/S gnrale, CT0, ou Interruption externe. E/S gnrale, PWM3C, ou Interruption externe. E/S gnrale, PWM3B, ou Interruption externe. E/S gnrale, PWM3A, Tension entre ANCOMP (-), ou Interruption externe. E/S gnrale ou Tension entre ANCOMP (+). E/S gnrale ou TXD0. (UART) E/S gnrale ou RXD0. (UART) Tension de PULL-UP du port PB. (Moins de 5V ) E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. GND (A connecter au 0 V) RESET DU MODULE ROVIN. TXD pour connexion du ROVIN au PC

Master Informatique spcialit Informatique des Systmes Embarqus


79 80 81 82 83 PD4 PD3 PD2 PD1 PD0 E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale. E/S gnrale.

Formation MIME

Les DIP-SWITCHs
Explications La platine "Quick.Start.Board" dispose de 4 DIP switchs. Ces derniers permettent de connecter ou de dconnecter certaines broches du module ROVIN des composants prsents sur la platine. En utilisant ces derniers, vous pourrez isoler totalement les broches du module ROVIN. Dip Switch Explications

Le cble USB connexion vers le PC


Ce cble vous permettra de tlcharger vos programmes (tches) au sein du module ROVIN et de dbugguer ces derniers. Avant de pouvoir l'utiliser, quittez tous les programmes en cours puis insrez le cble sur le port USB de votre PC afin que votre machine le dtecte et procde l'installation de son driver (slectionnez l'emplacement o le programme d'installation pourra trouver le driver: gnralement X:/Program Files/ROVIN/ROVIN-IDE/CABLE DRIVER). Si votre systme d'exploitation est WindowsXP, il se peut que la fentre d'installation du driver vous indique que le vous n'est pas certifi. A ce stade, le circuit imprim, Si driverralisez vous-mme votre propreprogramme vous vous demandera de lui confirmer que vous voulez poursuivre pouvez acqurir le connecteur mle associ afin que vous l'installation (validez la confirmation pour finaliser le puissiez raliser la connexion ci-dessous. processus). Dans tous les cas, ne rallongez jamais la longueur du cble USB Si l'installation s'est correctement droule, l'excution du de programmation du module ROVIN. logiciel de dveloppement "ROVIN-IDE", le voyant USB

Lorsque ces derniers sont sur la position "ON", les entres du port PD sont PD/LED connectes sur les Leds prs du buzzer. A l'inverse lorsque les Dip switchs sont dans l'autre position ,les Leds sont dconnects du port PD. Lorsque ces derniers sont sur la position "ON", les tensions VCCIO des ports PA/PB/PC/PD sont relies au +5 V. A l'inverse lorsque les Dip switchs sont dans l'autre position, les ports sont en "Drain ouvert" VCCIO et vous pourrez appliquer vous-mme la tension de rfrence voulue (vitez imprativement de placer les Dip Switchs sur la position "ON" si vous appliquez votre propre tension de rfrence sous peine de destruction possible du module ROVIN. Lorsque ces derniers sont sur la position "ON", les broches correspondantes du ROVIN sont physiquement relis aux circuits de mise niveau des UART. Les 2 UART dip Switchs du haut sont ddis l'UART1, les 2 du bas, l'UART0. A l'inverse lorsque les Dip switchs sont dans l'autre position, les broches correspondantes du ROVIN peuvent tre utilise comme des ports "E/S" usage gnrale. Lorsque ces derniers sont sur la position "ON", un niveau "1" est appliqu sur les Entres entres du circuit 74HC165. A l'inverse lorsque les Dip switchs sont dans l'autre position, un niveau "0" est appliqu sur 74HC165 les entres du circuit 74HC165.

Master Informatique spcialit Informatique des Systmes Embarqus


Comment faire excuter un programme au module ROVIN Aprs avoir procd l'installation du logiciel de l'environnement de dveloppement "ROVINIDE" et du driver du cble USB (conformment la notice livre avec le CD-ROM), reliez le cble USB au module ROVIN, puis alimentez votre application. Suivez alors les instructions cidessous pour pouvoir apprendre faire excuter un programme au module ROVIN 1. Dmarrez l'environnement de dveloppement "ROVIN-IDE

Formation MIME

2. Cliquez sur "Fichier"->"Ouvrir Projet".

4. L'cran de l'environnement "ROVIN-IDE" doit alors ressembler ci-dessus

3. Slectionnez un fichier "Projet" (*.dwn) et ouvrez ce dernier

Master Informatique spcialit Informatique des Systmes Embarqus

Formation MIME

5. Cliquez sur la petite flche droite du bouton "Tlcharger programme(s)"

6. Vrifiez que le fichier de tlchargement et bien "coch" et que la case de droite correspondante la rpartition mmoire soit bien 100 % (auquel cas modifiez ces dernires comme sur l'cran ci-dessous). Fermez ensuite la fentre de tlchargement l'aide de la petite croix en haut droite

7. Recompilez et tlchargez le programme au sein du ROVIN l'aide du bouton Si il n'y a eu aucun changement ralis dans le code source.Transfrez simplement le programme dans le module ROVIN l'aide du bouton

Master Informatique spcialit Informatique des Systmes Embarqus

Formation MIME
Avant de pouvoir commencer crer le projet proprement dit, il vous faut en priorit commencer crire votre programme en langage "C". Le plus simple est de rcuprer un fichier source existant. Une fois sous l'environnement de dveloppement "ROVIN-IDE", ouvrez un fichier source (ces derniers ont une extension '.c')

2. Sauvegardez le fichier sous un nouveau rpertoire (en lui donnant si ncessaire un nouveau nom). Modifiez et adaptez alors le fichier selon les besoins de votre application (si vous en tes votre premire utilisation, laissez le fichier en tat afin d'viter toute erreur de compilation).

8. Cliquez sur le bouton Reset , afin que le module ROVIN excute le programme. Si le module ROVIN ne ragit pas correctement, consultez la rubrique "Problmes et solutions" disponible dans l'aide en ligne ou la fin du manuel du ROVIN

Crer un "Projet
La cration d'un projet vous permettra d'enregistrer tous les paramtres de votre application dans un seul et mme fichier. Ce dernier contiendra: Le nom des fichiers sources de vos programmes (si vous dveloppez une application monotche, il ne mmorisera que le nom du fichier source principal). Le nom des fichiers excutables (gnrs aprs une compilation) qui pourront tre tlchargs dans la mmoire du ROVIN. Les valeurs des rpartitions mmoires que vous aurez dfinis pour chaque tche. - Le nom du fichier "de paramtres" utilis pour le mode DEBUG. Ainsi lorsque vous chargez un projet en mmoire, l'environnement de dveloppement "ROVINIDE", rcuprera toutes les donnes relatives votre application (l'diteur mettra votre disposition tous les fichiers source de votre projet, le manageur de tlchargement connatra quels seront les programmes potentiellement tlchargeables dans la mmoire du ROVIN et quelle est leur rpartition mmoire associe, Le mode DEBUG pourra galement tre activ volont). 3. Cliquez alors sur le bouton "Linker". Au bout de quelques secondes la fentre de message au bas de l'cran doit vous signaler que la compilation s'est correctement droule. Le "ROVIN-IDE" vous aura alors cr un fichier excutable portant le mme nom que celui de votre source, mais avec l'extension (.pro)

Master Informatique spcialit Informatique des Systmes Embarqus

Formation MIME

5. Cliquez sur la petite flche droite du bouton "Tlcharger Programme(s)"

4. Vous pourrez galement voir apparatre le nom des variables et fonctions utilises dans votre source dans la fentre "Code Exploreur".

Master Informatique spcialit Informatique des Systmes Embarqus


6. La fentre "tlchargement - Manageur de tches" s'ouvre alors. Cliquez sur le bouton "Ajouter Tche" afin d'indiquer l'environnement de dveloppement "ROVIN-IDE" quel est le ou les programmes tlcharger dans la mmoire du "ROVIN

Formation MIME

. 8. La fentre "tlchargement Manageur de tches" doit alors afficher ceci.

7. Slectionnez alors le fichier avec l'extension (*.pro) prcdemment gnr

10

Master Informatique spcialit Informatique des Systmes Embarqus

Formation MIME

9. Cochez la case de gauche et indiquez l'environnement de dveloppement "ROVIN-IDE" que le fichier excutable transfrer peut prendre 100 % de la capacit mmoire du ROVIN (pas de problme puisqu'il n'y a qu'une seule tche). Il n'est pas non plus ncessaire de modifier la rpartition mmoire l'intrieur de la tche: de ce fait, la barre noire qui spare les bargraphs vert et rouge ne ncessite aucun rglage. Cliquez enfin sur le bouton "Sauver".

10. Saisissez le nom de votre PROJET. Ce dernier peut avoir le mme nom que celui de votre fichier source. Ne mettez aucune extension au nom de votre PROJET. L'environnement de dveloppement se chargera tout seul de lui attribuer une extension (.dwn). De mme veillez imprativement ne pas changer de rpertoire (tous les fichiers d'un Projet doivent tre absolument prsents dans le mme rpertoire).

11

Master Informatique spcialit Informatique des Systmes Embarqus

Formation MIME

11. Tlchargez alors le programme au sein du ROVIN l'aide du bouton

ou

. 12. Cliquez sur le bouton Reset , afin que le module ROVIN excute le programme (vous pouvez galement solliciter le bouton-poussoir Reset de la platine du ROVIN afin d'obtenir le mme rsultat).

12

Master Informatique spcialit Informatique des Systmes Embarqus

Formation MIME

Si le module ROVIN ne ragit pas correctement, consultez la rubrique "Problmes et solutions" donne la fin du manuel du ROVIN. Consultez la documentation du ROVIN pour apprendre comment dvelopper des applications multitches

2. Si tout se passe normalement l'environnement de dveloppement "ROVIN-IDE" vous signalera dans la fentre "On-The-Fly" que vous tes e effectivement pass en mode DEBUG et de nouveaux boutons apparaissent dans la botes outils du haut de l'cran.

Utiliser le mode "DEBUG Afin de pouvoir activer le mode DEBUG, il vous faut avoir pralablement charg et compil un programme. Puis avoir complt la fentre "Tlchargement - Manageur de tches" et tlcharg l'application au sein du module ROVIN. 1. Cliquez alors sur l'onglet "DEBUG" au bas de la bote outils du haut de l'cran

13

Master Informatique spcialit Informatique des Systmes Embarqus

Formation MIME

Si le module ROVIN ne ragit pas correctement, consultez la rubrique "Problmes et solutions" donnes la fin du manuel du ROVIN. Consultez la documentation du ROVIN pour apprendre comment utiliser le mode DEBUG et recevoir des informations de la part du module ROVIN dans la fentre "On-The-Fly"

14

Master Informatique spcialit Informatique des Systmes Embarqus


Programme1 : Gestion des Interruptions
//Ce programme va vous permettre d'exploiter les entres d'interruption EXINT[7..4] (connects sur les BP4 .. BP7 en les //programmant pour des modes de fonctionnement diffrents (avec pour chacun d'eux un message associ qui s'affichera //dans la fentre "On- The-Fly" void PPI_Init(void); void EXPORT_Init(void); void IRQ_EVENT_(void) { ----// Test la nature des venements et affichage le nom de celui qui a t dtect // dans la fentre "On-The-Fly" du PC en mode DEBUG. unsigned char iMSG; iMSG=GetMsg(); switch(iMSG) { case MSG_EXINT4 : //[Test cas EVENEMENT EXINT4]{-----------------DebugPrint("EVENEMENT 'EXINT4' dtect ! -> Front montant (relchement de la touche).\n"); break; //}------------------------------------------------------------case MSG_EXINT5 : //[Test cas EVENEMENT EXINT5]{-----------------DebugPrint("EVENEMENT 'EXINT5' dtect ! -> Front descendant (Appui sur la touche).\n"); break; //}------------------------------------------------------------case MSG_EXINT6 : //[Test cas EVENEMENT EXINT6]{-----------------DebugPrint("EVENEMENT 'EXINT6' dtect ! -> Niveau bas (tant qu'on reste appuy sur la touche).\n"); // Ractive l'autorisation de l'interruption // car on fonctionne sur un niveau et non pas sur une transistion ExintOn(6); break; //}------------------------------------------------------------case MSG_EXINT7 : //[Test cas EVENEMENT EXINT7]{-----------------DebugPrint("EVENEMENT 'EXINT7' dtect ! -> Ragit un changement d'tat (appui ou relachement touche).\n"); break; //}------------------------------------------------------------} } void main (void) { unsigned short nowVMTIME; unsigned short beforeVMTIME;

Formation MIME

//[Initialisatiobn des PORTS du ROVIN]{----------------PPI_Init(); EXPORT_Init(); //}--------------------------------------------------------------------//[Initialisation des entres d'interruption EXINT]{------//Les broches EXINT[7..4] sont en entres. PortSetMode(EXPB,0xf0); // Les entres sont configures en PULL-UP ! PortOut(EXPB,0xff); //*********************************************************** // Configure l'entre d'interruption EXINT.7 pour gnrer un vnement sur un changement d'tat // (lorsqu'on appuie et qu'on relche la touche) ! ExintSet(7,EXINT_CHANGE); // Autorise la gnration des vnements par EXINT.7 ExintOn(7); // Configure l'entre d'interruption EXINT.6 pour gnrer un vnement tant que l'entre est au niveau bas ExintSet(6,EXINT_LOW); // Autorise la gnration des vnement sur EXINT.6 ExintOn(6); // Configure l'entre d'interruption EXINT.5 pour gnrer un vnement sur la dtection d'un front descendant // lorsqu'on appui sur la touche ExintSet(5,EXINT_LEDGE); // Autorise la gnration des EVENEMENT sur EXINT.5 ExintOn(5); //*********************************************************** // Configure l'entre d'interruption EXINT.4 pour gnrer un vnement sur la dtection d'un front montant // lorsqu'on relche la touche ExintSet(4,EXINT_HEDGE); //Autorise la gnration des vnements sur EXINT.4

15

Master Informatique spcialit Informatique des Systmes Embarqus


ExintOn(4); //}------------------------------------------------------------------------//{------------------------------------------------------------------------//Autorise la gnration d'vnements EventOn(); // Boucle principale... Attend les vnements ! while(1); //}------------------------------------------------------------------------} void PPI_Init(void) { // Initialisation des ports PA, PB et PC en entres. // 0 : Broche en sortie. // 1 : Broche en entre. PPI_SetMode(PA,0xff); PPI_Out PPI_SetMode(PB,0xff); PPI_Out PPI_SetMode(PC,0xff); PPI_Out (PA,0xff); (PB,0xff); (PC,0xff);

Formation MIME

// Initialisation du port PD en sortie et extinction des Leds de la platine PPI_SetMode(PD,0x00); PPI_Out (PD,0xff); } void EXPORT_Init(void) { // Initialisation des ports EXPA, EXPB et EXPD en entres (haute impdance). PortSetMode(EXPA,0xff); PortSetMode(EXPB,0xff); PortSetMode(EXPC,0xff); PortSetMode(EXPD,0xff); } Travail faire : Tester ce programme en mode dbug, puis afficher sur les leds jaunes lactivation des boutons poussoirs.

16

Master Informatique spcialit Informatique des Systmes Embarqus Programme 2 : conversion analogique numrique
// Ce programme va vous permettre d'apprendre utiliser les entres du comparateur analogique. Les 2 entres devront tre relie au curseur de rsistance ajustable (ou potentiomtre) comme indiqu sur le schma. A chaque fois que la valeur de la tension des 2 entres sera identique. Une interruption sera gnre (EVENEMENT) et un message associ s'affichera dans la fentre "OnThe-Fly" du mode DEBUG. Pour les tests, placez la rsistance ajustable de la plaque de connexion sans soudure mi-course, puis tournez le potentiomtre, lorsque les 2 tensions seront identiques, le message s'affichera dans la fentre. Si vous arrivez trouver l'quilibre parfait, le message s'affichera en permanence (puisque l'interruption est ractive chaque fois dans le programme). void PPI_Init(void); void EXPORT_Init(void); void Delay(int pTIME) { while(pTIME--); } void IRQ_EVENT_(void) { //[Rcupre valeur de l'vnement switch(GetMsg()) { case MSG_ANCOMP : // Est-ce un EVENEMENT caus par le comparateur analogique ? DebugPrint("Les 2 tensions sont identiques !\n"); // Oui -> Affiche message dans fentre "On-The-Fly" AncompOn(); // Autorise nouveau gnration EVENEMENTS par le comparateur break; } } void main(void) { // Initialisation des ports du ROVIN PPI_Init(); EXPORT_Init(); // Configure le comparateur analogique et autorise la gnration d'EVENEMENT par ce dernier ! AncompSet(ANCOMP_TOGGLE); AncompOn();

Formation MIME
// Active l'horloge RTC car le comparateur dpend de cette dernire. RtcOn(); // Autorise la gnration des EVENEMENTS ! EventOn(); // Attend un EVENEMENT ! while(1); } void PPI_Init(void) { // Initialisation des ports PA, PB et PC en entres. // 0 : Broche en sortie. // 1 : Broche en entre. PPI_SetMode(PA,0xff); PPI_Out (PA,0xff); PPI_SetMode(PB,0xff); PPI_Out (PB,0xff); PPI_SetMode(PC,0xff); PPI_Out (PC,0xff); // Initialisation du port PD en sortie et extinction des Leds de la platine PPI_SetMode(PD,0x00); PPI_Out (PD,0xff); } void EXPORT_Init(void) { // Initialisation des ports EXPA, EXPB et EXPD en entres (haute impdance) PortSetMode(EXPA,0xff); PortSetMode(EXPB,0xff); PortSetMode(EXPC,0xff); PortSetMode(EXPD,0xff); }

Travail faire : - Cbler correctement sur les entres du microcontrleur le potentiomtre figurant sur la carte. - Installer un deuxime potentiomtre sur les entres du microcontrleur et modifier le code ci-dessus puis Afficher la valeur des deux potentiomtres.

Programme 3 : Gestion des UARTS (RS232)

17

Master Informatique spcialit Informatique des Systmes Embarqus


// Ce programme va vous permettre d'utiliser le port srie UART1 du ROVIN. Ce dernier est configur pour gnrer un EVENEMENT chaque fois qu'il reoit 1 octet. Ds lors, le programme rcuprera la valeur de cet octet et le renverra aussitt sur le port srie. Si vous utilisez un terminal de saisie connect la platine du ROVIN (comme hyper terminal (TM) par exemple), chaque fois que vous taperez des caractres dans la fentre de saisie du terminal, ces mmes caractres vous seront retourns par le ROVIN et ils s'afficheront sur l'cran du PC. // le terminal de saisie devra tre configur en 9600 bds ! void PPI_Init(void) { // Initialisation des ports PA, PB et PC en entres. // 0 : Broche en sortie. // 1 : Broche en entre. PPI_SetMode(PA,0xff); PPI_Out (PA,0xff); PPI_SetMode(PB,0xff); PPI_Out (PB,0xff); PPI_SetMode(PC,0xff); PPI_Out (PC,0xff); // Initialisation du port PD en sortie et extinction des Leds de la platine PPI_SetMode(PD,0x00); PPI_Out (PD,0xff); } void EXPORT_Init(void) { // Initialisation des ports EXPA, EXPB et EXPD en entres (haute impdance) PortSetMode(EXPA,0xff); PortSetMode(EXPB,0xff); PortSetMode(EXPC,0xff); PortSetMode(EXPD,0xff); } void Delay(int pTIME) { while(pTIME--); } #define uartPORTnum #define rxPACKETsize void main(void) 1 1 } void IRQ_EVENT_(void) { //[Gestion des EVENEMENTS unsigned char iSTR[255]; GetMsg(); { //Initialise les ports PPI_Init(); EXPORT_Init();

Formation MIME

//[Initialise l'UART1 - UART1 9600 BPS UartSetBaud(uartPORTnum,9600); // Active l'UART1 ! UartOn(uartPORTnum); // Confugure l'UART UartSetPacketSize(uartPORTnum,rxPACKETsize); // Active les EVENEMENTs de l'UART UartEventOn(uartPORTnum); //}------------------------------------------------------------------------------------------------------------RtcOn(); // Autorise les EVENEMENTS EventOn(); // Attend des EVENEMENTS while(1);

// Taille du buffer

// Rcupre le contenu du buffer de l'UART. UartRxBufRead(uartPORTnum,iSTR); // Renvoi l'octet reu sur l'UART UartWrite(uartPORTnum,iSTR[0]); }

18

Master Informatique spcialit Informatique des Systmes Embarqus 1) Configurer Hyper Terminal

Formation MIME

Travail faire : - Tester ce programme. - Modifier ce programme pour quil gnre un vnement chaque fois qu'il reoit 255 octets. Ds lors, le programme rcuprera le contenu du buffer et le renverra aussitt sur le port srie.

- Lancer Hyper Terminal - Donnez un nom la communication (par exemple ROVIN9600), puis validez.

Slectionnez la vitesse de communication (9600 ou 115200 bds (ou une autre valeur) selon la vitesse configure sur le ROVIN. Recopiez galement les autres paramtres comme sur la fentre ci-dessus. Ds lors la communication est oprationnelle et vous pouvez commencer les changes de donnes entre le PC et la platine du ROVIN.

19

Master Informatique spcialit Informatique des Systmes Embarqus

Formation MIME
// Initialisation du port PD en sortie et extinction des Leds de la platine PPI_SetMode(PD,0x00); PPI_Out (PD,0xff); }

Programme 4 : Gestion du 74HC165: // Ce programme va vous permettre d'apprendre piloter un circuit 74HC165 en ajoutant ainsi // 8 entres supplmentaires votre module ROVIN, via une communication SPI. Le programme recopiera les entres du //74HC165 (modifiables via le dip-Switch) sur les Leds du port PD. void PPI_Init(void); void EXPORT_Init(void); void Delay(int pTIME); void main(void) { // Initialisation des Ports ! PPI_Init(); EXPORT_Init(); // Cration du port SPI pour pilotage du circuit 74HC165 SpiCreate(1, PC, (1<<4)|7, 6, (1<<4)|5, (1<<4)|4, SPI_CPHA0|SPI_CPOL1, SPI_MSBFIRST, 0); while(1) { // Lecture des entres et recopie sur le port PD SpiLatch(1, SPI_LOWPULSE); PPI_Out(PD, ~SpiIn(1)); Delay(0xff); } } void PPI_Init(void) { // Initialisation des ports PA, PB et PC en entres. // 0 : Broche en sortie. // 1 : Broche en entre. PPI_SetMode(PA,0xff); PPI_Out (PA,0xff); PPI_SetMode(PB,0xff); PPI_Out (PB,0xff); PPI_SetMode(PC,0xff); PPI_Out (PC,0xff);

void EXPORT_Init(void) {// Initialisation des ports EXPA, EXPB et EXPD en entres (haute impdance) PortSetMode(EXPA,0xff); PortSetMode(EXPB,0xff); PortSetMode(EXPC,0xff); PortSetMode(EXPD,0xff); PortOut(EXPA,0x00); PortOut(EXPB,0x00); PortOut(EXPC,0x00); PortOut(EXPD,0x00); } void Delay(int pTIME) { while(pTIME--); } Schma de cblage

Cblage sur la platine

20

Master Informatique spcialit Informatique des Systmes Embarqus


PPI_SetMode(PD,0x00); PPI_Out (PD,0xff); }

Formation MIME

void EXPORT_Init(void) { //Initialisation des ports EXPA, EXPB et EXPD en entres (haute impdance). PortSetMode(EXPA,0xff); PortSetMode(EXPB,0xff); PortSetMode(EXPC,0xff); PortSetMode(EXPD,0xff); } void Delay(int pTIME) { while(pTIME--); } void main(void) { unsigned int iINTERVAL; iINTERVAL=0xf0; // Vous pouvez changer ici la valeur de la tempo iINTERVAL ! PPI_Init(); EXPORT_Init(); // Cration ligne par ligne de l'effet "chenillard" // Afin de vous perfectionnez utilisez une entre de conversion "A/N" pour // modifier la vitesse de dfilement l'aide du potentiomtre de la carte. while(1) { PPI_Out(PD,~0b00000000); PPI_Out(PD,~0b00000001); PPI_Out(PD,~0b00000010); PPI_Out(PD,~0b00000100); PPI_Out(PD,~0b00001000); PPI_Out(PD,~0b00010000); PPI_Out(PD,~0b00100000); PPI_Out(PD,~0b01000000); PPI_Out(PD,~0b10000000); PPI_Out(PD,~0b00000000); PPI_Out(PD,~0b10000000); PPI_Out(PD,~0b01000000);

Travail faire : - Tester le programme, puis brancher toutes les entres du composant sur le microcontrleur. - Brancher un potentiomtre sur le 74HC165 puis lisez sa valeur partir du microcontrleur. Programme 5 : Port PPI en E/S // Ce programme va vous permettre de raliser un petit chenillard avec les Leds du port PD (configur en sortie). void PPI_Init(void) { // Initialisation des ports PA, PB et PC en entres. // 0 : Broche en sortie. // 1 : Broche en entre. PPI_SetMode(PA,0xff); PPI_Out (PA,0xff); PPI_SetMode(PB,0xff); PPI_Out (PB,0xff); PPI_SetMode(PC,0xff); PPI_Out (PC,0xff); // Initialisation du port PD en sortie et extinction des Leds de la platine

Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL);

21

Master Informatique spcialit Informatique des Systmes Embarqus


PPI_Out(PD,~0b00100000); PPI_Out(PD,~0b00010000); PPI_Out(PD,~0b00001000); PPI_Out(PD,~0b00000100); PPI_Out(PD,~0b00000010); PPI_Out(PD,~0b00000001); } } PP-IN // Ce programme va simplement rcuprer l'tat du port PA (configur pour l'occasion en entre) et en faire une recopie sur le port PD (configur pour l'occasion en sortie). void PPI_Init(void) { // Initialisation des ports PA, PB et PC en entres. // 0 : Broche en sortie. // 1 : Broche en entre. PPI_SetMode(PA,0xff); PPI_Out (PA,0xff); PPI_SetMode(PB,0xff); PPI_Out (PB,0xff); PPI_SetMode(PC,0xff); PPI_Out (PC,0xff); // Initialisation du port PD en sortie et extinction des Leds de la platine PPI_SetMode(PD,0x00); PPI_Out (PD,0xff); } void EXPORT_Init(void) { // Initialisation des ports EXPA, EXPB et EXPD en entres (haute impdance). PortSetMode(EXPA,0xff); PortSetMode(EXPB,0xff); PortSetMode(EXPC,0xff); PortSetMode(EXPD,0xff); } void Delay(int pTIME) { while(pTIME--); } void main(void) } Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL); Delay(iINTERVAL); {

Formation MIME
// Initialisation des ports du ROVIN PPI_Init(); EXPORT_Init(); while(1) {// Boucle principale (recopie de l'tat du port PA sur PD) PPI_Out(PD,PPI_In(PA)); }}

// Ce programme configure les ports en entre ou en sortie et fait clignoter toutes les Leds du port PD (configur pour //occasion en sortie) en plaant indfiniment ce dernier 0xff, puis 0x00 et ainsi de suite avec une temporisation entre //chaque changement d'tat. void PPI_Init(void) { // Initialisation des ports PA, PB et PC en entres. // 0 : Broche en sortie. // 1 : Broche en entre. PPI_SetMode(PA,0xff); PPI_Out (PA,0xff); PPI_SetMode(PB,0xff); PPI_Out (PB,0xff); PPI_SetMode(PC,0xff); PPI_Out (PC,0xff); // Initialisation du port PD en sortie et extinction des Leds de la platine PPI_SetMode(PD,0x00); PPI_Out (PD,0xff); void EXPORT_Init(void) { //Initialisation des ports EXPA, EXPB et EXPD en entres (haute impdance). PortSetMode(EXPA,0xff); PortSetMode(EXPB,0xff); PortSetMode(EXPC,0xff); PortSetMode(EXPD,0xff); } void Delay(int pTIME)

22

Master Informatique spcialit Informatique des Systmes Embarqus


{ while(pTIME--); } void main(void) {//Initialisation des ports du ROVIN PPI_Init(); EXPORT_Init(); while(1) { PPI_Out(PD,0x00); Delay(0x5ff); PPI_Out(PD,0xff); Delay(0x5ff); }} Travail faire : - Tester ces 3 programmes puis modifier un des trois programmes pour afficher sur un afficher 7 segment les nombres en hexadcimale de 1 a F. //[Initialisation des ports] PPI_Init(); EXPORT_Init();

Formation MIME

//Cration du port I2C] I2cCreate(0, PA, 5, 4, I2C_MSBFIRST, 0); //Test d'criture de la mmoire EEprom 24LC32 for(i=0; i<=0xff; i++) { I2cStart(0);

// Condition START I2C ! // Envoi 8 bits formant l'octet de contrle de la // Test ACK de la part de la 24LC32 (TIME OUT // Envoi adresse HAUTE ! // Envoi adresse BASSE ! // Envoi la DONNEE ! // Condition STOP I2C!

// Allume toutes les Leds // Tempo // Eteind toutes les Leds // Tempo

I2cBitOut(0, 8, 0b10100000); 24LC32 ! if(!I2cAck(0,0xff)) break; = 32 ms) I2cBitOut(0, 8, i>>8); if(!I2cAck(0,0xff)) break; I2cBitOut(0, 8, i); if(!I2cAck(0,0xff)) break; I2cBitOut(0, 8, i); if(!I2cAck(0,0xff)) break; I2cStop(0);

Programme : Pilotage dune EEPROM I2C // Ce programme va crire et lire dans une mmoire EEPROM srie l'aide d'une communication I2C. Pour ce faire, un //port I2C sera dclar en affectant la broche PA.5 SDA et PA.4 SCL. Le programme va simplement crire les octets //00 FF depuis l'adresse 00 FF. Ce dernier va ensuite relire les adresses 00 FF et afficher le contenu de chaque octet // Lu sur les Leds du port PD. void PPI_Init(void); void EXPORT_Init(void); void Delay(int pTIME); int i; void main(void) {

//Tempo - L'criture d'un octet en mmoire EEprom dure environ 5 ms. On attend 6 ms pour avoir une // marge de scurit. Delay(0x1a); } //[Test lecture de la mmoire EEprom 24LC32] for(i=0; i<=0xff; i++) { I2cStart(0); I2cBitOut(0, 8, 0b10100000); 24LC32 ! if(!I2cAck(0,0xff)) break; = 32 ms) I2cBitOut(0, 8, i>>8);

// Condition START I2C ! // Envoi_ bits formant l'octet de contrle de la // Test ACK de la part de la 24LC32 (TIME OUT // Envoi adresse HAUTE!

23

Master Informatique spcialit Informatique des Systmes Embarqus


if(!I2cAck(0,0xff)) break; I2cBitOut(0, 8, i); if(!I2cAck(0,0xff)) break; // Envoi adresse BASSE ! PortSetMode(EXPA,0xff); PortSetMode(EXPB,0xff); PortSetMode(EXPC,0xff); PortSetMode(EXPD,0xff); PortOut(EXPA,0x00); PortOut(EXPB,0x00); PortOut(EXPC,0x00); PortOut(EXPD,0x00); } void Delay(int pTIME) { while(pTIME--); }

Formation MIME

// Cycle de lecture de la mmoire EEprom I2cStart(0); I2cBitOut(0, 8, 0b10100001); if(!I2cAck(0,0xff)) break; 32 ms) PPI_Out(PD, ~I2cBitIn(0, 8)); sur le port PD! I2cAck(0,0); 24LC32) I2cStop(0); Delay(0x5f); du port PD } } // Condition START I2C ! // Envoi octet de contrle (de lecture) de la 24LC32 ! // Test ACK de la part de la 24LC32 (TIME OUT = // Lecture de la donne (8 bits, soit 1 octet) et sortie // Gnration cycle d'horloge (pour ACK vers la // Condition STOP I2C ! //Temporisation pour visibilit de l'affichage des Leds

void PPI_Init(void) { // Initialisation des ports PA, PB et PC en entres. // 0 : Broche en sortie. // 1 : Broche en entre. PPI_SetMode(PA,0xff); PPI_Out (PA,0xff); PPI_SetMode(PB,0xff); PPI_Out (PB,0xff); PPI_SetMode(PC,0xff); PPI_Out (PC,0xff); // Initialisation du port PD en sortie et extinction des Leds de la platine PPI_SetMode(PD,0x00); PPI_Out (PD,0xff); } void EXPORT_Init(void) { // Initialisation des ports EXPA, EXPB et EXPD en entres (haute impdance)

Schma du 24C32

Cblage sur la Platine

24

Master Informatique spcialit Informatique des Systmes Embarqus

Formation MIME
// Ce programme va vous permettre d'exploiter un module sonar MSU04.La broche PD.0 sera relie l'entre Trigger //Pulse du module afin que le ROVIN lui gnre des 'pulses'. En retour, le module MSU04 retournera des impulsions dont //la dure sera proportionelle la distance sparant le MSU04 de l'obstacle. La dure des impulsions sera mesure grce // l'entre Capture 0 qui sera configure pour dtecter une impulsion haute. Puis la valeur sera affiche dans la fentre //"On-The-Fly" du PC (vous devrez donc passer en mode DEBUG pour obtenir un affichage dans l'environnement //"ROVIN-IDE"). // Initialisation des ports du ROVIN void PPI_Init(void); void EXPORT_Init(void); // Dclaration des variables unsigned short unsigned short CP_LOW_TIME; CP_HIGH_TIME; ((double)1/18432000)*1024

#define _capTIME_

// Fonction de gnration des tempos void Delay(int pTIME) { while(pTIME--); } Travail faire void IRQ_EVENT_(void) { // Gestion des EVENEMENTS Test la nature des vnements et affichage de la valeur des mesures dans la // fentre "On-The-Fly" du PC en mode DEBUG. switch(GetMsg()) { case MSG_CAPTURE0 : capture 0 ?

// Rcupre la nature de l'vnement et regarde si il s'agit de

// Oui -> Lecture de la valeur mesure par Capture 0 // et sauvegarde cette dernire dans CP_HIGH_TIME. CaptureRead(0, &CP_LOW_TIME, &CP_HIGH_TIME); // Affiche la dure dans la fentre "On-The-Fly" (Efface la fentre au pralable). Programme : Pilotage dun sonar DebugClear(); DebugPrint("[ Dure du pulse du MSUO4 ] = ");

25

Master Informatique spcialit Informatique des Systmes Embarqus


DebugDOUBLE(CP_HIGH_TIME, DEC); Delay (0xff); // Tempo ncessaire pour permettre une lecture sur l'cran du PC // Ractive la capture. CaptureOn(0); } } // Fonction principale void main(void) {// Initialisation des ports du ROVIN PPI_Init(); EXPORT_Init(); PPI_Out(PD,0xfe); // Eteint les Leds du port et sortie PD.0 0 //[Initialisation de la capture] // Utilise l'entre de capture 0 // Configure cette entre en mode "HIGHCYCLE" afin de capturer // la dure d'une impulsion haute, puis basse / Introduit un facteur de division de 1024 CaptureSet(0, CAPTURE_HIGH|CAPTURE_DIV1024); CaptureOn(0); // L'entre Capture 0 sera configure avec une rsistance de PULL-UP ! // Autorise la gnration d'EVENEMENTS EventOn(); // Bouclesans fin... Gnre impulsion et ... Attend les venements ! for(;;) { PPI_BitOut(PD,0,1); // Niveau Haut. Delay (0x10); PPI_BitOut(PD,0,0); // Niveau Bas. } } // Intialisation des ports void PPI_Init(void) { // Initialisation des ports PA, PB et PC en entres. // 0 : Broche en sortie. // 1 : Broche en entre. PPI_SetMode(PA,0xff); PPI_Out (PA,0xff); } // Intialisation des ports void EXPORT_Init(void) PPI_SetMode(PB,0xff); PPI_Out PPI_SetMode(PC,0xff); PPI_Out

Formation MIME
(PB,0xff); (PC,0xff);

// Initialisation du port PD en sortie et extinction des Leds de la platine PPI_SetMode(PD,0x00); PPI_Out (PD,0xff);

{ // Initialisation des ports EXPA, EXPB et EXPD en entres (haute impdance). PortSetMode(EXPA,0xff); PortSetMode(EXPB,0xff); PortSetMode(EXPC,0xff); PortSetMode(EXPD,0xff); }

Cblage de la platine et du sonar

26

Master Informatique spcialit Informatique des Systmes Embarqus

Formation MIME

Travail a faire : - Tester le programme. - Installer lensemble sur un robot puis piloter le robot dans un labyrinthe (modifier le code actuel).

27

Você também pode gostar