Ultrasons-évitant les Obstacle Robot (8 / 16 étapes)

Étape 8: PIC de programmation, un chargeur de démarrage, un témoin clignotant

Pourquoi avons-nous besoin en premier lieu un bootloader ?

Avoir un PicKit3 autour est nécessaire, cependant avoir traîner notre espace de travail avec sans aucune raison valable n’est pas. Au départ je n’ai pas voulu compliquer ma vie avec des bootloaders, mais plus tard je suis venu à réaliser la vérité : ce projet est mieux sans PicKit. Avoir un seul câble pour la programmation est agréable, surtout si c’est un extrêmement fréquent câble mini USB, chaque amateur a un tas de. L’en-tête du PDCI cinq broches a été écarté de la conception volontairement, j’ai utilisé ma planche de connecteur ZIF pour flasher le bootloader dans le PIC.

USB chargeur de démarrage, simple et bon

En regardant la fiche technique du processeur que j’ai décidé de l’utiliser, on peut voir qu’il y a UART et USB disponible. Si je prends UART, j’ai encore besoin d’un USB-UART convertisseur et un tas de fils - défait le but. Alors le choix de la meilleur, la plus simple et la plus belle est USB. Microchip propose toutes sortes d’exemples de code pour les photos, les chargeurs de démarrage aussi. Si vous téléchargez et installez « Bibliothèques Microchip pour les Applications », il y aura un dossier entier sur toutes sortes d’USB applications, bootloaders, outils et autres choses utiles. Dans le sous-dossier "Bootloaders" J’ai choisi "USB HID Bootloader" et l’ouvrit dans MPLAB X. Après avoir lu à travers elle une couple de fois pour comprendre sa logique, j’ai implémenté des modifications pour le rendre parfait pour mon RekaBot.

Quelques mots sur les chargeurs de démarrage

Un bootloader est une section spéciale du code qui est écrit dans les microcontrôleurs une fois et offre un moyen de télécharger le firmware sans avoir besoin d’un programmeur (haute tension) spécial, comme le PicKit3 dans notre cas. Malheureusement, il n’y a aucun moyen d’éviter complètement l’utilisation de la PicKit, le chargeur de démarrage doit entrer dans le PIC en quelque sorte. Le bon côté : vous pouvez emprunter un PicKit, ICD2 ou clignotant PIC d’un ami, et donner à nouveau une fois le bootloader est inscrit dans le microcontrôleur. Après que - selon quel type de programme d’amorçage a flashé, vous pouvez télécharger firmware sur mémoires programmables par UART, USB, CAN ou que ce soit. L’utilisation de chargeurs de démarrage est simple, mais il est livré avec l’inconvénient de perdre la mémoire programme précieux. Certains chargeurs de démarrage mangent moins de place, certains mangent plus - celui-ci mange 1K de mémoire. Au démarrage de chaque commandant de bord s’allume à l’adresse 0 et commence l’exécution de tout code le programmeur a écrit là. Si c’est le bootloader = le PIC de circuit le bootloader. Si c’est le code utilisateur = le PIC exécute le code utilisateur. Assez simple !

Afin d’utiliser les deux, nous devons passer en quelque sorte ces deux programmes. Ce passage peut se faire selon une condition, événement ou quoi que - il sera très semblable à une instruction énorme « si ». J’ai choisi cette condition est le niveau de tension sur une broche d’entrée, nommé USB sens dans les schémas. Cette broche a été connectée à la broche de 5V du connecteur USB à travers une résistance. Si la broche est à 5 [V] au démarrage, le commandant de bord doit s’exécuter la branche du bootloader de l’énorme « si », si elle est à 0 [V], le code d’application utilisateur a dû être exécuté. J’ai placé le code utilisateur juste après le code de programme d’amorçage, à adresse 1000h. Le PIC18F4550 vérifie la broche sens à plusieurs reprises, donc lorsque le câble USB est supprimé et les 5 [V] disparaît de la RD3, le PIC va sauter le code placé à 1000h, le code d’application utilisateur. Dans le code d’application utilisateur je vérifie à nouveau le niveau de tension sur la broche de sens, si le programme voit 5 [V] à ce sujet, le câble USB est branché à nouveau et le commandant de bord a de sauter pour le chargeur de démarrage. Je fais ce saut en mode bootloader avec une instruction de « RESET » assembly inline. Puisque le commandant de bord commence à s’exécuter à partir de l’adresse 0, la chose la plus simple et la plus courante à faire est de placer le code de programme d’amorçage là et le code utilisateur juste après le programme d’amorçage.

Le code de programme d’amorçage peut être modifié pour vérifier si oui ou non il y a un firmware valide rédigé dans le PIC. Cela se fait en vérifiant le contenu de la mémoire sur adresse h 1006-1007h. Après chaque programmation réussie, les inserts de bootloader "600D » (leet pour le « bien ») à cet endroit, ce qui signifie que le code a été écrit dans le PIC avec succès - c’est ce qu’il obtient vérifié pour la validité. Nous devons spécifier dans les paramètres de projet d’application utilisateur que cet endroit ne devraient pas être remplacés, voir les images pour voir comment c’est fait (les plages ROM sont spécifiées pour ignorer cet emplacement lorsque le code utilisateur de l’application est compilé). Faute de quoi se traduira par des erreurs vraiment difficiles à détecter par la suite. La section où les mensonges du chargeur de démarrage doivent être protégés ainsi : cela se fait en décalant le code d’application utilisateur entière de 1000h (Code décalage paramètre options de l’éditeur de liens). Bootloaders trouvent habituellement au début ou à la fin de la mémoire programme - il faut ne pas vouloir le remplacer ! Je voulais ajouter quelques paramétrage pour cet appareil, c’est pourquoi la gamme 3000-3100 est ainsi protégée. Vous n’avez pas besoin de cela, juste d’un !

Problèmes que j’ai touché lorsque vous travaillez avec le bootloader

La compilation du projet se traduira par un fichier hex qui est généré - cela doit être flashé dans le PIC avec un PicKit ou que ce soit. Dans un projet plus âgé, que je suis tombé sur un problème étrange, l’outil de chargeur de démarrage USB ne pouvait pas détecter quoi que ce soit. J’ai décidé de faire des mesures sur la broche VUSB du PIC à ma portée et au moment où que j’ai touché la cheville avec la sonde de la portée, le bien connu son USB joué et le jury a reconnu ! J’ai pensé que le problème a disparu, mais dès que j’ai enlevé la sonde, la chose a cessé de fonctionner à nouveau. J’ai réalisé que tout fonctionne quand la sonde de champ d’application est activé, même écrit, réinitialisations - le problème devait être quelque chose qui fixe de la sonde. Puis j’ai pensé : qu’ont portée sondes ? Capacité parasite. Le condensateur sur la broche VUSB a été énorme en valeur et ne pouvait pas filtrer les bruits de haute fréquence. Un condensateur de 100nF fut ajouté en parallèle, et le jury a reconnu immédiatement.

Sachant cela dès le départ, j’ai ajouté un condensateur de faible valeur sur le dessus de l’original, l’USB est venu sans problème à la première tentative ! Leçon apprise !

Si votre chargeur de démarrage fonctionne, flash de votre programme de feu clignotant LED, déboguez-le si nécessaire et continuer à écrire des trucs plus grave, décrit dans les étapes suivantes.

Articles Liés

HandSight : Un gant pour les aveugles à se sentir les formes et évitez les Obstacles

HandSight : Un gant pour les aveugles à se sentir les formes et évitez les Obstacles

HandSight est un gant de prototype pour aider les aveugles. Il peut détecter la luminosité ou l'obscurité d'une surface avec la rétroaction tactile d'un moteur de vibration pour chaque doigt individuel. Il peut également détecter la distance des obje
Robot-évitant les obstacles.

Robot-évitant les obstacles.

OBSTACLE ÉVITANT ROBOTFINANCÉ PAR ; INTEL KENYA EN LIAISON AVEC LA SOCIÉTÉ D'INGÉNIERIE ÉTUDIANTS AUTOMATION CLUB JKUAT.MEMBRES DU PROJET :1 ANTONY KARIUKI2 ERIC KINYANJUI3 EMMANUEL KINYANJUIPROJET INSTRUCTABLE :EXIGENCES :1 PLATEAU DE 2ÈME GÉNÉRATIO
Discours de l’Arduino contrôler et détecter les Obstacles Robot

Discours de l’Arduino contrôler et détecter les Obstacles Robot

Robot contrôlé par les commandes vocales avec Arduino et avec la voix de google Android téléphone à texte est contrôlée à l'aide de l'applicationhttp://Make.robimek.com/Voice-Commands-Controlled-robot/Étape 1: matériaux :Application 1-android : https
Se ronger les Obstacles Robot autonome « Sanglier » (sanglier)

Se ronger les Obstacles Robot autonome « Sanglier » (sanglier)

concept généralNotre première idée était de créer un robot sur chenilles capable de monter les escaliers et bien d'autres obstacles, pour atteindre une bonne vitesse (autour de 10 ou 15 km/h) alors que le tournage et la transmission de données. Il se
YourDuino : Base Compatible Arduino en évitant la Collision Robot

YourDuino : Base Compatible Arduino en évitant la Collision Robot

Comment construire un Robot en évitant la base Compatible Arduino CollisionRemarque : Consultez le disponible Arduino Software Test croquis et logiciel anticollision ici (cliquer)Remarque : Plus tard, vous devrez avoir l'Arduino « IDE » système de dé
Arduino Robot qui évite les humains

Arduino Robot qui évite les humains

Dans mon précédent instructable, j'ai montré que c'est très simple de contrôle que DC moteurs utilisant le contrôleur compatible Arduino Nano et Bouclier de tissu. Vous pouvez obtenir ce robot à travers mon projet Kickstarter.Je vais vous montrer com
Comment éviter les boutons et réduire l’acné naturellement par le droit de manger

Comment éviter les boutons et réduire l’acné naturellement par le droit de manger

vous pouvez prévenir, éclaircir ou éliminer l'acné en réduisant les aliments à charge glycémique élevée de votre alimentation et garder votre taux d'insuline faible. Cela peut sembler difficile, mais c'est vraiment juste une façon sophistiquée de dir
Comment éviter les dangers pour la santé de l’utilisation de Gadgets électroniques

Comment éviter les dangers pour la santé de l’utilisation de Gadgets électroniques

Tous les jours les gadgets électroniques comme les tablettes et smartphones parfois flak pour des soucis de santé indu qui sont complètement sans fondement – tels que les craintes sur la radiation et des signaux radio qui affectent le corps.Il y a, c
Oogoo mélangeur à bon compte (éviter les mains malpropres:))

Oogoo mélangeur à bon compte (éviter les mains malpropres:))

Oogoo est un outil très utile d'avoir dans chaque inventaire DIY'ers. C'est une substance polyvalente, offrant grand adhésif,propriétés structurelles (flexibilité) et il peut être utilisé comme matériau de support pour la fixation des éléments, ou co
Feux chocolat coeurs - et les moyens de corriger et d’éviter les problèmes de chocolat.

Feux chocolat coeurs - et les moyens de corriger et d’éviter les problèmes de chocolat.

Il y a une histoire derrière cette instructable. Eh bien, n'y a-t-il pas toujours, je suppose.Voir, j'ai eu un plan. Un meilleur plan décontracté. Légèrement, qui a été déjouée par les réalités du traitant de cette substance acariâtre, connue comme l
Éviter les pâtes bouillant à l’aide de baguettes en bois

Éviter les pâtes bouillant à l’aide de baguettes en bois

Usage inhabituel de baguettes en bois :utiliser des baguettes en bois pour éviter les pâtes bouillant(même si vous mettez la table, appréciez une antipasta,...)Ajout de sel ou d'huile n'a jamais semblé à beaucoup d'aide. Faire bouillir les pâtes dans
GameMaker : Comment faire les ennemis à marcher vers vous en évitant les murs

GameMaker : Comment faire les ennemis à marcher vers vous en évitant les murs

Salut. Il s'agit de chessru. J'ai toujours essayé de trouver un moyen de faire ce que l'indique le titre. Maintenant, il est ici !Etape 1: Créez les objetsPremières choses première. Nous avons besoin d'ennemis et un lecteur. Programmer le lecteur pou
Parti de l’action de grâces: 6 conseils pour éviter les risques de plomberie

Parti de l’action de grâces: 6 conseils pour éviter les risques de plomberie

Parti de l'action de grâces: 6 conseils pour éviter les risques de plomberieEntrer dans les dangers de plomberie après qu'une partie est très commune, mais est complètement évitable si pris en charge correctement au préalable. Voici un blog avec des
Étiquette conseils pour éviter les litiges voisin

Étiquette conseils pour éviter les litiges voisin

Si vous établissez une clôture, c'est votre travail pour s'assurer que les deux côtés sont bien entretenues. Pour éviter les litiges, revue restrictions avec votre compagnie de clôture avant de choisir une clôture.