Étape 2: Programmation et Micro de sélection
Parce que cela devait être aussi réduite que possible, j’ai utilisé un 20pin SOIP 16F88. Il s’agissait d’une version large de la 300MIL, Microchip ont un SSOIP 150mil (paquet de maigre, petit aperçu), mais compte tenu de que l’appareil devait être prototypé à la main, j’ai voulu utiliser un plus grand plus facile à gérer la puce.
De toute évidence un SOIP paquet coutume s’adapter dans un programmeur donc j’ai dû utiliser ICSP... ce qui a entraîné beaucoup de chagrin ! ICSP est une façon de programmer le microcontrôleur, alors qu’il est toujours dans un circuit. ICSP signifie In Circuit Serial Programming et est couramment utilisé pour programmer les planches « blancs », ou mise à jour logicielle sans débrasage/tulipage le microcontrôleur.
Tout d’abord je n’ai pas lu assez sur le PDCI d’ajouter le bon circuit pour gérer le PDCI dans mon premier prototype. Puis, j’ai n’a pas lu la fiche technique de microchip concernant un couple de broches supplémentaires sur le 20pin 16F88SOIP. Ces broches sont les broches AVss et AVdd. Ils fournissent normalement les tensions de référence pour le convertisseur A/N.
J’ai pris un certain temps pour comprendre que ces goupilles doivent être connectés (j’ai connecté à GND/DMV) pour ICSP travailler.
Il est également important d’avoir un circuit de réinitialisation correcte pour la broche MCLR. C’est très important pour le programme de l’ICSP peut réinitialiser le microcontrôleur, avant de faire sa programmation.
Voir l’image principale dans cette section. Il montre la broche MCLR connectée à Vss via une résistance pullup et une diode. Le pullup est nécessaire, car pour ICSP fonctionne, vous devriez avoir vraiment la MCLR configuré comme une broche de remise à zéro, plutôt que comme un pin d’entrée (plus sur cela plus tard). La diode empêche la tension Vpp du programmateur ICSP qui peut être autour de 13V d’endommager le reste du circuit.
L’image montre également les connexions pour la DMV et AVdd reliés entre eux en ce qui concerne les GND/AVss.
Consulter les fichiers de schéma Eagle pour schéma complet (ou dans la section suivante), mais dans l’image principale, notez les symboles peu en forme de « X ». Ce sont des tampons SMD, il n’y a aucun connecteur dans ce dispositif, donc SMD pads sont utilisés pour souder les raccords d’alimentation et la connexion de l’ICSP. Les broches de l’ICSP sont disposés sur la planche dans un endroit commode. Courtes longueurs de fil de se connecter à un en-tête d’IDC 10pin (assez standard pour les programmeurs de l’ICSP). L’image secondaire montre cet arrangement.
Ils servent aussi à souder dans le cristal de la montre. Dans le 16F88 les broches PGD et PGC sont également les tiges de T1OSO et T1OSI qui servent à connecter un cristal externe à l’oscillateur PIC T1 de faire une horloge temps réel. Heureusement vous pouvez également utiliser ces lors de la programmation via ICSP ainsi... Si vous êtes prudent.
Si l’oscillateur va quand le programmateur ICSP tente d’utiliser les broches, le programmateur ICSP va avoir de la difficulté. Vous devez ajouter un retard au début de votre programme. Le fragment de code ci-dessous illustre cela en action. Notez que je suis également désactiver l’oscillateur externe dès que possible après le démarrage pour faire bonne mesure :
Sub main()
{
unsigned char i ;
nDelay court non signé ;
t1con = 0 ; désactiver le timer1 dès que nous réinitialisons
osccon = 0x76 ; pour l’horloge interne de 8MHz
tandis que ((osccon & 0 x 04) == 0) ; et attendez l’horloge pour régler et être prêt
périphériques de l’installation
Porta = 0 ;
PORTB = 0 ;
cmcon = 0 x 07 ; désactiver la sortie du comparateur, faire maintenant pour définir correctement les trisa
TRISA = 0xff ; Tous ensemble pour l’entrée au démarrage
trisb = 0xff ; toutes les broches en portb la valeur d’entrée
Ansel = 0 x 00 ; aucun analogue dans cette cct... pas important souvent oublié, je l’ai fait!!
delay_s(2) ; programmeur permettre de faire des choses... TRÈS IMPORTANT
Enfin, dans la note de l’image principale le symbole SMJ100 qui est pontée dans le coin supérieur gauche de haut appelé SJ100. Cela devait être utilisé en cas d’urgence, si j’ai accidentellement programmé dans une configuration qui a désactivé la broche MCLR et ne pouvait pas arrêter l’oscillateur montre farce vers le haut les broches de l’ICSP PGD/PGC. Il s’agit d’une autre pièce de bibliothèque Eaglecad Hasina, un simple lien SMD. Par elle le pontage sur ma planche, c’est un endroit commode pour unbridge si nécessaire. Cela serait nécessaire dans la situation décrite ci-dessus. Normalement vous ne vous connecter la broche MCLR (pour réinitialiser la puce), la broche GND (pour référence) et les broches PGD/PGC pour utiliser ICSP. Dans la pratique le programmeur va réinitialiser la puce, envoyer des signaux de commande magique au processeur via PGD/PGC et obtenir qu’il soit réceptif pour certains lovin ' les données nouvelles.
Cependant si le processeur est occupé à faire d’autres choses et ne va pas répondre à une réinitialisation, vous devez tirer sur le rail d’alimentation c' est pour attirer son attention. Dans ce cas la goupille de la DMV du programmateur ICSP doit être connecté au circuit. Je coupe le pont, brancher un fil sur le pad de Vdd SMD (le petit symbole de « X » est proche) et donner le processeur de nouvelles instructions. En fin de compte quand j’ai téléchargé le code douteux, j’ai juste mis sous tension le TDC du programmateur sans utiliser ce système. Si vous aviez un circuit plus complex ou d’alimentation faim vous devez avoir un moyen de déconnexion du processeur du rail d’alimentation circuit et connectez-la à la broche de la DMV sur votre programmateur.
Donc, en résumé faire succès PDCI n’oubliez pas :
-installer un circuit de réinitialisation correcte avec résistance pullup et diode de protection
-connecter AVdd/AVss les rails d’alimentation, si vous ne les utilisez pas (et la puce a eux, seulement pour 20pin 16F88... pas pour les autres versions).
-dans votre mise en page, mettre les connexions de l’ICSP quelque part raisonnable et facile à obtenir.
-avoir un moyen d’isoler la puissance du processeur de la puissance de la cct et reliant la DMV ICSP pour les urgences
-éviter les situations d’urgence en veillant à ce que les broches PGD/PGC sont prêts à l’emploi dès que possible après une réinitialisation.