Mon premier projet PIC
Je n’ai jamais utilisé de microcontrôleur. Comme ce composant entre dans la fabrication d’appareils de mesure et notamment du fréquencemètre, je souhaite apprendre à l’utiliser et à le programmer. Il existe plusieurs familles de microcontrôleurs chez différents constructeurs. Lequel choisir? Quels outils de développement choisir?
Cahier des charges
- construire un programmateur,
- utiliser un outil de programmation open source ou une plate forme de développement libre,
- tester le programmateur et le programme avec un petit montage simple.
Choix
Après recherche sur internet, il apparaît que les plus connus sont ceux de la famille AVR d’Atmel et PIC de Microchip. On trouve une documentation importante sur la famille des microcontrôleur PIC et notamment sur la 16F. J’ai acquis sur Ebay quelques PIC16F84A bon marché qu’on dit obsolète mais qui feront très bien l’affaire pour mon apprentissage. Microchip offre une plate-forme de développement MPLAB en langage assembleur MPASM ou en langage C MPLAB C18.
Construire un programmateur USB est l’objectif final mais il nécessite, pour fonctionner un PIC embarquant un firmware. Il me faut d’abord passer par un programmateur plus simple. Le plus facile à construire, avec le plus de chance de succès, semble être le programmateur sur port parallèle. Comme le PIC 16F84 ne se programme pas en basse tension mais demande une tension de programmation comprise entre 12.0V et 14.0V, le programmateur devra fournir cette tension. Le programmateur « TAIT classic » fait bien cela.
Il me faut aussi un utilitaire qui charge le programme dans le microcontrôleur. J’opte pour PICPgm très complet, bien documenté qui supporte le programmateur TAIT. Il a l’avantage de reconnaître automatiquement le programmateur et le PIC.
En résumé:
PIC 16F84A de Microchip.
Programmateur « TAIT classic ».
Plateforme de développement assembleur MPLAB.
Utilitaire de chargement de programme PICPgm.
Liens
Mon premier projet PIC
Mon premier projet PIC – Programmateur sur port parallèle
Bonjour cher OM,
J’ai parcouru quelques pages (les autres viendront^^) de votre site avec grand intérêt. Je suis en plein apprentissage de LTSpice et j’apprends également la programmation en assembleur sur le 16F84, j’ai acheté pour cela un Pickit 3.
Bravo pour votre site web très intéressant, je me pose pas mal de questions sur l’utilisation de LTSpice, notamment sur la modélisation des transfos HF et j’ai appris pas mal de choses grace à vous.
Merci et 73′s
JC F6FCO
Bonjour Jean-Claude,
Cela fait plaisir d’avoir un message venant d’un OM. Bien que j’habite dans une région très peuplée, je me sens un peu seul ici. J’ai visité votre site et je suis émerveillé par la beauté de vos manipulateurs. Je vais l’ajouter en lien dans mon blog. Le seul manipulateur que j’ai utilisé est le J-45, posé sur le genou, branché sur l’ANGRC9 que j’utilisais quand j’étais opérateur radio de l’armée française, lors de mon service militaire dans les années 60.
LTspice est un superbe outil que je découvre au fur et à mesure que j’avance dans mes projets. N’hésitez pas à me faire part de vos observations et de vos critiques. C’est en comparant nos expériences que l’on s’enrichit.
73′s
Bernard F8EOZ
Bonjours Bernard,
Je suis ingénieur électronicien, retraité depuis 10 ans, et j’ai entrepris l’étude des PIC depuis quelques mois. Au cours de mes pérégrinations sur le net je suis tombé sur 2 cours que je trouve excellents : Bigonoff, qui privilégie le codage absolu et » http://www.gooligum.com.au » qui privilégie le code relogeable. Pour l’instant je me focalise sur le codage absolu et j’ai parcouru bigonoff 1ière partie(16F84). J’ai réalisé l’incontournable LED clignotante pour me familiariser avec MPLAB et un programmateur réalisé maison (sur port parallèle de Christian Tavernier). Impatient de passer à une application plus intéressante du p.d.v de la connaissance du PIC et des techniques de programmation, il m’est apparu qu’un fréquencemètre serait le bon choix. J’ai trouvé sur le net les fréquencemètres auxquels vous faites référence et encore bien d’autres. Mais la découverte du vôtre est une véritable révélation !! La description de la méthode et les commentaires dans le programme en font un projet REMARQUABLE dont beaucoup d’informaticiens et d’enseignants devraient s’inspirer. Ca fait 2 jours que je suis plongé dans le programme et je pense que j’aurai fait des progrès considérables quand j’aurai tout compris. La routine de mesure à elle seule vaut le « détour » !!
J’ai 3 questions :
- Vous serait-il possible de m’envoyer le schéma (je n’ai pas kicad et ne souhaite pas l’installer sur mon PC déjà fort chargé) ?
- Jusqu’à quelle fréquence l’avez-vous poussé ?
- Dans l’encadré qui précède la routine « Measure », dans la ligne 275 us=….ne faut-il pas remplacer « 12 » par « 11 » ?
Encore toutes mes félicitations et bonne journée.
Georges
Bonjour Georges,
Pour répondre à votre demande, j’ai ajouté le schéma dans l’article « Fréquencemètre à microcontrôleur PIC – Description ».
En cliquant sur le schéma vous obtenez sa version pdf.
Comme vous pouvez le constater, je suis en train de construire un transceiver qui fonctionne dans la bande des 14MHz. Le fréquencemètre que j’ai construit à cet usage a été utilisé pour l’instant jusque 15MHz. J’ai pu vérifier son fonctionnement correct et sa précision jusqu’à cette fréquence en mesurant la fréquence d’oscillation des quartz que j’utilise pour construire les oscillateurs et le filtre à quartz du transceiver.
Vous avez raison, il y a une erreur de frappe le compteur est bien initialisé à 11 (0x0B) comme le montre la directive ci-dessous
#define DELAY_275u_LOW 0x0B
.
J’ai hâte d’avoir le résultat de vos essais.
Bernard F8EOZ
Bonsoir Bernard,
Merci beaucoup pour la réponse et les infos. Je vous tiendrai certainement au courant, mais je ne me vois pas aboutir à une réalisation pratique avant plusieurs mois.
Bonjour Bernard,
J’avance dans l’étude du programme. J’ai compris l’autorange, la mesure et la conversion BIN/BCD. Cette dernière est une vrai torture de l’esprit, mais j’ai fait une simu concluante de cette partie sur MPLAB et ça me rassure.
J’en suis à la commande de l’afficheur LCD qui me conduit dans « delay subroutines ». je trouve là « movwf Delay » et movwf x_Delay ». Je cherche en vain où sont définis « Delay » et « x_Delay ».
Soit dit en passant, moi je suis nul et ignorant en HF. Ca m’a toujours rebuté depuis qu’à 15ans je n’ai pas réussi à faire fonctionner correctement un émetteur/récepteur de radiocommande sur 27MHz…….!! Question idiote: A quoi vous sert ce tranceiver 14MHz?
Bonne apès midi
georges
Bonjour Georges,
Delay et x_delay sont 2 zones de travail réservées dans la RAM voir sous CBLOCK RAMStart. Elles servent de compteur à la routine Delay500.
Je suis radioamateur classe 1, c’est à dire que je peux opérer dans tous les modes de transmission avec la puissance maximum et toutes les bandes autorisés aux radioamateurs, d’ où l’indicatif F8… Un transceiver est un émetteur récepteur. Celui que je construis est destiné à opérer en CW (morse) avec une puissance d’émission réduite < 5 W (QRP). Le challenge étant d’établir des contacts longue distance avec le moins de puissance possible.
Bernard F8EOZ
merci, je les avais vues sous ce CBLOCK, mais je ne comprends pas pourquoi leur déclaration est valable sans avoir spécifié la taille avec p.ex « :1″.
j’ignorais qu’on communique encore en morse de nos jours. Quel en est l’intérêt particulier?Quelle portée espérez vous atteindre?
La taille par défaut est 1.
Les distances sont variables en fonction de la fréquence et des conditions de propagation, de quelques centaines de Km à plusieurs milliers. La CW (continuous waveform) est un mode de transmission HF qui utilise une onde d’amplitude constante sans modulation. La bande occupée est étroite. C’est le moyen le plus simple d’établir une communication. Les opérateurs sont en général des passionnés, certains sont des « virtuoses » du manipulateur.
Bernard F8EOZ
merci et bonne manipation…..