Programmation des pic_en_c_part1

download Programmation des pic_en_c_part1

of 38

  • date post

    18-Dec-2014
  • Category

    Automotive

  • view

    1.412
  • download

    1

Embed Size (px)

description

 

Transcript of Programmation des pic_en_c_part1

  • 1. Programmation des PIC en CMicrocontrleur facile pour lectronicien amateur PARTIE 1 Noxyben 2007 -1-
  • 2. Introduction ................................................................................................................................ 3Intrt de la programmation en langage C ................................................................................. 4Choix du compilateur ................................................................................................................. 5Choix dun PIC : le 16F877 ....................................................................................................... 6Choix du programmateur ........................................................................................................... 7Structure du PIC 16F877............................................................................................................ 8 Le cur du PIC : le microprocesseur ..................................................................................... 9 La mmoire .......................................................................................................................... 11 La Pile et le Compteur Programme ...................................................................................... 13 Les Ports dEntres/Sorties gnraux : PORTA, PORTB, PORTC, PORTD, PORTE....... 15 Le Port Parallle Esclave (PSP : Parallel Slave Port) .......................................................... 17 Le circuit de gnration dhorloge ....................................................................................... 18 Le TIMER0 .......................................................................................................................... 19 Le TIMER1 .......................................................................................................................... 20 Le TIMER2 .......................................................................................................................... 22 Les modules CCP1 et CCP2................................................................................................. 23 Le convertisseur Analogique Digital 10bits :.................................................................... 25 LUSART ............................................................................................................................. 27 Le SSP, Synchronous Serial Port ......................................................................................... 29 La logique de RESET........................................................................................................... 31 LIn-Circuit Debugger.......................................................................................................... 33 Low-Voltage Programming et ICSP (In-Circuit Serial Programming) ............................... 34 Les Bits de Configuration .................................................................................................... 36 Les Interruptions .................................................................................................................. 36 Le mode SLEEP ................................................................................................................... 37Brochage du PIC16F877 .......................................................................................................... 38Conclusion................................................................................................................................ 38 -2-
  • 3. IntroductionDans un pass pas trs lointain, llectronique pour les amateurs (clairs) sersumait essentiellement aux circuits analogiques et ventuellement en logiquecble (portes logiques, compteurs, registres dcalage). Lusage desmicroprocesseurs tait plutt rserv un public averti dingnieurs sachant lesinterfacer avec diffrents circuits priphriques (eprom, ram) et programmer enassembleur.Au fil du temps on a vu apparatre de nouveaux circuits regroupant dans une seulepuce le microprocesseur et ses circuits priphriques : les microcontrleurs.On en trouve maintenant partout : automobile, lave-vaisselle, rasoir, brosse dentlectriqueLoffre en microcontrleurs sest dveloppe dautant : plus de priphriquesintgrs, capacit de calcul accrue, plus de mmoire embarque. Il y a maintenantde nombreux fabricants de microcontrleurs, possdant chacun plusieurs gammesallant du circuit gnraliste , vritable couteau suisse lectronique, la pucespcialise ddie par exemple, la rgulation de vitesse dun moteur de ventilateur.La voie royale pour tirer le maximum des performances de ces circuits est toujours laprogrammation en assembleur. On accde alors au moindre bit enfoui dansnimporte quel registre du circuit. Cela ncessite nanmoins un investissement entemps consquent, lassembleur ntant pas un langage trs naturel . De plus,dun constructeur lautre, voire dun circuit lautre dans la mme gamme, il existedes diffrences qui obligent rapprendre tout ou partie du langage lorsque lonchange de microcontrleur. Cest un investissement intressant pour unprofessionnel qui cherche produire un code optimis sur la puce la moins chrepossible, mais pnible pour un amateur qui ne dispose que de relativement peu detemps pris sur ses loisirs.Heureusement, avec la monte en puissance des microcontrleurs, on voitapparatre actuellement des compilateurs en langage C (voire mme C++) quipermettent de gagner un temps considrable pour le dveloppement et le dbogagedes programmes.Pour tous ceux qui se sont retrouv largu sur le bord du chemin cause de ces de microcontrleurs, cest mon avis une formidable opportunit desauter dans le train de llectronique numrique et dapprivoiser ces tranges petitesbtes. Et pourquoi pas un ampli tubes pilot par microcontrleur ? Les capacitstonnantes de ces circuits vous ouvrent un espace de crativit infini. Ce seraitvraiment dommage de se passer de leurs servicesUne fois la dcision prise je vais me lancer dans les micros ! se pose la questiondu comment. On trouve sur internet toutes les informations ncessaires, la difficultserait plutt de les trier. Vous pouvez commencer par exemple par lire ladocumentation de Microchip sur la gamme de PIC mid-range , cest uneexcellente ide, mais a va vous prendre du temps (plus de 800 pages !)Dans le but de vous simplifier la tche, je vais essayer dans le prsent ouvrage desynthtiser quelque peu ces informations. Et pour viter la frustration du je sauraisutiliser un microcontrleur PIC, mais avant je dois me taper un bouquin de 1000pages je vais tcher dutiliser une approche progressive permettant de, trsrapidement, crer de vritables petits circuits. -3-
  • 4. Intrt de la programmation en langage CTout dabord, les inconvnients : Un compilateur C produit du code plus volumineuxet moins performant que ce que sait faire un bon programmeur en assembleur. Deplus, selon le compilateur employ, on naccde plus difficilement, voire pas du tout certaines ressources de bas niveau. Et nayant plus besoin de plonger les mainsdans le cambouis, on risque galement de moins approfondir ltude dumicrocontrleur utilis. Un dernier point : les compilateurs C sont souvent payants.En contrepartie, il y a de sacrs avantages : connatre la programmation en C permetde crer des programmes sur de multiples plateformes, commencer par les PC.Autrement dit, les connaissances utilises sont en grande partie rutilisables. Le Cest un langage de haut niveau , compar lassembleur, qui permet dcrire desprogrammes nettement plus intelligibles et donc plus faciles relire et corriger oumodifier. Le compilateur contrle la cohrence du code au moment de la compilationet signale bon nombre derreurs, qui seront autant de bogues en moins corriger. Lecompilateur prend en charge la gestion dun certain nombre de mcanismesfastidieux : par exemple, pas besoin de spcifier la page mmoire dans laquelle onveut crire, le compilateur sen charge ! De plus, certains compilateurs permettenttout de mme daccder des ressources de bas niveau, voir mme dinsrer dansle code des portions dassembleur. A vrai dire, moins dtre un pro delassembleur, vous pourrez certainement crer avec un bon compilateur C un codeplus propre et plus robuste, en nettement moins de temps. Et, cerise sur le gteau, leportage dun de vos programmes sur un nouveau microcontrleur sera nettementsimplifi.Pour bien fixer les ides sur la diffrence de niveau de langage entre assembleur etC, je vais donner un exemple. Soit dcrire une action simple : ouvrir la fentre de lapice dans laquelle vous tes actuellement.En assembleur a donnerait : - soulever pied droit - avancer pied droit - poser pied droit - soulever pied gauche - avancer pied gauche - poser pied gauche - soulever pied droit - avancer pied droit - . - Slectionner bras gauche - Soulever bras - Avancer bras - Prendre poigne fentre dans main gauche - Tourner poigne de -90 - Tirer poigne - Etc.En C ce serait plutt : - Ouvrir la fentreEt cest le compilateur qui se chargerait de traduire la fonction ouvrir la fentre eninstructions lmentaires comprhensibles par le microcontrleur.Alors, merci qui ? Merci le C