|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre chevronné
![]() être humain Inscription : décembre 2007 Messages : 471 ![]() |
bonjour à tous, abordons la programmation pratique des micro-contrôleurs pic.
ces petits composants sont très simples et abordables. avec un minimum de compétences en électronique et en assembleur, il est possible à moindre frais de programmer des PICs. la liaison ICSP (in circuit serial programming) est là pour ça. cette liaison est constituée de 5 signaux, VDD, VSS, VPP, PGC et PGD. VDD fait 5volts par rapport à VSS (qui est en fait GND). VPP fait entre 5 et 13 volts, selon que le pic supporte ou non la programmation haute tension (13v). PGC et PGD sont la liaison serie qui permet au pic et au PC de communiquer. C pour clock (horloge), D pour data (données). le principe est de communiquer par une interface reconnue, et deja supportée par les divers logiciels de programmation de microcontroleurs, comme icprog ou winpic, ou autre... le choix se porte sur jdm programmer. ce circuit necessite peu de composants, et fonctionne, mais bon, il faut des transistors, tout ça, c'est long à souder, et ça prend de la place. impossible à faire tenir dans un dé à coudre. et là, magie, sur internet, il y a une version ameliorée du jdm programmer, nommée RCD, et utilisant vraiment très peu de composants. trois fois rien. ![]() j'utilise celui là, il fonctionne à merveille. il existe une version encore plus simple, sans condensateur ni diode, car il utilise les diodes internes aux pics... 4 résistances, une par tension, sauf gnd en direct... mais cette solution ne me plait guerre, j'ai pas confiance, et comment permettre le contrôle de vpp et vcc avec cette méthode? donc, solution RCD, oublier le montage JDM original qui est trop couteux et difficile à câbler. il faut tester la liaison, arriver à programmer le pic de sorte qu'il fonctionne avec un code trouvé sur internet. ça marche, la led clignote. il reste donc à désassembler le programme pour obtenir les instructions, c'est sur cette base qu'il va falloir générer les opcodes qu'il faut, si le fichier compilé donne le même résultat que le fichier d'origine, on à tout bon. et ça donne ça: Code :
Code :
cliquer sur program device (attention au oscal, il faut surtout pas le modifier, sinon, on le perd.)... une barre de défilement apparait, et lorsqu'elle disparait, le pic est programmé. patienter un peu, le temps que la liaison ICSP s'arrête, et le pic redémarre normalement (environ 10 à 15 secondes, c'est long, quel suspence). normalement, ça fonctionne. et je n'en dis pas plus, si ça vous interresse, vous aurez la curiosité de fouiller et de lire les datasheet (en anglais) des composants qui sont de toutes façon indispensables pour bien coder les pics. |
||||
|
|
10
|
|
|
#2 | ||||||||||
|
Membre chevronné
![]() être humain Inscription : décembre 2007 Messages : 471 ![]() |
lors de la création d'un fichier binaire pour PIC, il y a lieu de créer non seulement une section de code, située au début du fichier, et de la taille de la mémoire de code évidement, mais aussi des zones de calibration et de données eeprom selon le modèle de pic.
sur les pic12f675 par exemple, il y a 1024 mots de 14 bits, soit en fichier binaire, 1024 mots de 16 bits. les deux bits de poids fort sont ignorés. le dernier mot de la zone de code est utilisé pour stocker la valeur d'osccal. ce champ est destiné aux MCU pourvus d'un oscillateur interne, et n'existe pas dans les pic qui n'ont pas cet oscillateur (16f84 entre autres). à la suite, il y a lieu de créer une zone de configuration et une autre zone pour la mémoire eeprom de données. pour ce faire, j'ai crée 3 macros supplémentaires dont l'utilisation est aussi simple que d'écrire une ligne de code. seul bémol, la création de la zone de données eeprom est particulière. le logiciel de programmation ne lit qu'un octet sur deux, celui de poid fort. pour ça, il faut donc créer les données de sorte que chaque octet est défini en double, ou précédé d'un octet null, qui sera de toutes façon ignoré lors du chargement. assez de théories, voici la pratique: l'osccal se déclare à la fin de la section de code, et s'il n'y à pas assez de place pour insérer cet osccal, le compilateur répond par une erreur. ce qui est très bien car ça permet aussi de s'assurer que le code ne déborde pas de la zone de code acceptable. Code :
Code :
pour ce qui est de la configuration, la macro est composée là aussi d'un padding suivit d'un mot contenant la configuration Code :
cette valeur est valable pour les 12f675, et surement d'autres pic dont le modèle mémoire est similaire. l'utilisation de ce padding passe là aussi par une macro: Code :
Code :
le padding est comme suit la macro comme ça Code :
macro eeprom {include 'include/paddeeprom.inc'} ce qui est bancal, mais fonctionnel, donc, acceptable. au final, ça donne un paquet de fichiers autours de notre macro de base 'pic14.inc' dont l'organisation en fichiers et dossiers permet de ne pas avoir à tout manipuler à chaque fois. en téléchargement, j'ai mis la dernière version de ce code, vous pourrez ainsi vous exercer sans refaire ce qui est expliqué ici vous pouvez aussi aller sur ma page sur ce projet. ne faites pas attention au reste de la page, ça sort du cadre de ce sujet. |
||||||||||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com