6
M1-Archi 2016-2017 Page 1 ___________________________________________________________________________ Architecture des systèmes à microprocesseur TD n°2 : Interruptions ___________________________________________________________________________ Objectifs de la séance -Prise en main de la plateforme en ligne : mbed -Compréhension du mécanisme d’interruption ___________________________________________________________________________ Matériel requis : -Une plateforme nucleo-board STM32F446RE ___________________________________________________________________________ I. Introduction Comme lors du précédent TD, on se propose d’utiliser la plateforme de développement en ligne mbed d’ARM. Cette plateforme regroupe tout un ensemble de fonctionnalités permettant à l’utilisateur de se focaliser sur le codage de son système via l’utilisation d’un grand nombre d’API. I. Aller sur le site : https://www.mbed.com/en/ puis Developer Resources et enfin Compiler. II. Authentifiez-vous afin d’accéder à votre workspace.

Architecture des systèmes à microprocesseur TD n°2

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Architecture des systèmes à microprocesseur TD n°2

M1-Archi 2016-2017 Page1

___________________________________________________________________________

ArchitecturedessystèmesàmicroprocesseurTDn°2:Interruptions

___________________________________________________________________________

Objectifsdelaséance-Priseenmaindelaplateformeenligne:mbed-Compréhensiondumécanismed’interruption

___________________________________________________________________________

Matérielrequis: -Uneplateformenucleo-boardSTM32F446RE___________________________________________________________________________I. Introduction

CommelorsduprécédentTD,onseproposed’utiliserlaplateformededéveloppementen lignembedd’ARM.Cetteplateformeregroupetoutunensemblede fonctionnalitéspermettantàl’utilisateurdesefocalisersurlecodagedesonsystèmevial’utilisationd’ungrandnombred’API.

I. Allersurlesite:https://www.mbed.com/en/puisDeveloperResourcesetenfinCompiler.

II. Authentifiez-vousafind’accéderàvotreworkspace.

Page 2: Architecture des systèmes à microprocesseur TD n°2

M1-Archi 2016-2017 Page2

III. Unefoisauthentifié,vouspouvezvisualiservotreenvironnementdetravail

(workspace).

II. Documentationsurl’APIInterruptIn

1. APIsd’interruption

UndesprincipauxavantagesdembedestdedisposerdenombreusesAPI.Celles-cipermettentd’écrirefacilementunprogrammefonctionnelenquelqueslignes.Nousavonsvuqu’ilenexisteunvastechoix:

• APIsdegestiondetâchesd’OS,• APIsdegestiondesentrées/sortiesanalogiquesetnumériques• APIsdecommunications…• …

Ladocumentationcomplèteestaccessibleici: https://docs.mbed.com/docs/mbed-os-api-reference/en/latest/APIs/io/InterruptIn/Question:Aquoisertuneinterruption?Parquoipeut-elleêtregénérée?Quelestl’intérêt?

2. Programmedebase

Afin de se familiariser avec l’environnement mbed, importer directement le programmeexempleintituléReadtheuserbuttonusingexternalinterrupt,commeindiquéci-dessous.

Page 3: Architecture des systèmes à microprocesseur TD n°2

M1-Archi 2016-2017 Page3

Ici,surl’imageprécédente,lemicrocontrôleurchoisitestleF401RE,sélectionnerlevotrequiestlenucleo-F446RE. Lecodedufichierprincipalmain.cppestlesuivant:

Question: -Quelleestlasourced’interruption? -Queréaliseleprogramme?

Page 4: Architecture des systèmes à microprocesseur TD n°2

M1-Archi 2016-2017 Page4

3. Comptage du nombre d’appui par interruption et affichage de lavaleursurlaliaisonsérie

A partir du template précédent, on souhaite faire évoluer le programme vers unsystèmequicomptelenombred’appuisurlebouton.Lenombred’appuiseramisàjouretenvoyésurlaliaisonsérie.

• Implémenterlanouvellefonctionnalité.Sibesoin,regarderl’APISerial.

Pourallerplusloin…

i) Interruptionextérieuresurunebroched’entrée-sortie

• Onsouhaitequel’interruptionsoitissued’unebrocheextérieure(etnonplusparle bouton poussoir). On vous laisse la possibilité de travailler sur une seuleplateformeouavecunbinôme.

Programmesuruneseuleplateforme:Dansceprogramme,lesignald’interruptionseragénéréauseindevotreprogramme.Pourcela,onpourraparexemplemettreà1unebrocheexternependant1mspuisà0pendant1s.Labrochesourced’interruptionseralabroche.Lesdeuxbrochesserontconnectéesparunsimplefilcommeindiquésurlafiguresuivante:Documentationutile:https://developer.mbed.org/platforms/ST-Nucleo-F446RE/Programmeàdeuxplateformes(deuxbinômes):Lesignalprovoquantl’interruptionseragénérépar lacarted’unbinôme.Pourcela,vousvousrépartirezletravaildelamanièresuivante:

o Binôme1:Réaliserleprogrammepermettantdegénérerdesimpulsionsrégulièressurunebrocheexterne.Onpourraparexemplemettreà1unebrocheexternependant1mspuisà0pendant1s.

o Binôme 2 : Réaliser le programme permettant de prendre en compte

l’interruption sur la broche. La détection devra tenir compte du frontdescendantetafficherlenombred’impulsionsurlaliaisonsérie.

Page 5: Architecture des systèmes à microprocesseur TD n°2

M1-Archi 2016-2017 Page5

PC8 PC6Documentationutile:https://developer.mbed.org/platforms/ST-Nucleo-F446RE/

ii) Interruptiongénéréepériodiquementparuntimer

• Dans ce nouveau programme sous mbed, on souhaite que l’interruption soitgénéréepériodiquementparuntimer.Réaliserunprogrammequipermettoutesles3secondesdechangerlapériodedeclignotementdelaled.Onpourrafixerunepériodep1à200msetunepériodep2à1s.

o RegardernotammentlesautresAPIdisponibles…

iii) Sourcesmultiplesd’interruption

• Danscenouveauprogramme,onsouhaitegérerplusieurssourcesd’interruption.Lapremièresourceserauneinterruptiongénéréeparuntimerquipermettradelirelavaleurissueducapteurdetempérature(AnalogInadc_temp(ADC_TEMP)).Lasecondesourced’interruptionseralagénérationpériodiqued’unsignalPWMsurlaled.LapériodedusignalPWMsera500msavecunrapportcycliquede40%.Générer aussi une interruption au niveau du bouton poussoir pour changer lerapportcyclique.Onleferavarierde10%à80%parpasde10%.

NB:Sivousavezbesoindeplusd’infosurlecapteurdetempérature,seréféreraureference_manualdelaplateformeutilisée.

Page 6: Architecture des systèmes à microprocesseur TD n°2

M1-Archi 2016-2017 Page6

___________________________________________________________________________

Pourconclure,quelquesquestionsàseposer:

-Quelssontlesregistresconcernéslorsd’interruption?-QuelestlerôleducontrôleurNVIC(NestedVectoredInterruptController)-Quesepasserait-ilsideuxinterruptionsseproduisentaumêmeinstant? -Existe-t-ildesprioritésparmilesdifférentessourcesd’interruptions?

___________________________________________________________________________