Ultrasone obstakel-vermijden Robot (8 / 16 stap)

Stap 8: PIC Programmeren, knippert een LED, Bootloader


Waarom hebben we in de eerste plaats een bootloader nodig?

Na een PicKit3 rond is noodzakelijk, niet echter met het liggend rond onze werkruimte met geen goede reden is. Aanvankelijk heb ik niet wilde mijn leven met bootloaders compliceren, maar later kwam ik tot het realiseren van de waarheid: dit project is beter zonder PicKit. Na één enkele kabel voor programmeren is leuk, vooral als het een zeer gemeenschappelijk USB mini kabel, die elke hobbyist een heleboel heeft. De vijf pin ICSP header werd weggelaten uit het ontwerp opzettelijk, gebruikte ik mijn ZIF-connector boord te knipperen de bootloader in de PIC.

USB-bootloader, eenvoudig en goed

Als we kijken naar de datasheet van de processor die heb ik besloten om te gebruiken, kan men dat er UART- en USB-beschikbaar is. Als ik kies UART, ik moet nog een USB-UART converter en een bos van draden - verslaat het doel. Zo is de beste, leukste en eenvoudigste keuze USB. Microchip biedt ook allerlei codevoorbeelden voor de foto's, bootloaders. Als u downloadt en installeert "Microchip Libraries for Applications", zal er een hele map over allerlei USB toepassingen, bootloaders, hulpmiddelen en andere nuttige dingen. In de submap "Bootloaders" ik "USB HID Bootloader" geplukt en opende het in MPLAB X. Na het lezen door het een paar keer om te begrijpen van zijn logica, uitgevoerd ik wijzigingen om te maken het ideaal voor mijn RekaBot.

Een paar woorden over bootloaders

Een bootloader is een speciale sectie met code die is geschreven in microcontrollers eenmaal, en biedt een manier voor het uploaden van de firmware zonder de noodzaak van een speciale programmeur (hoogspanning), zoals de PicKit3 in ons geval. Helaas, er is geen manier om volledig te voorkomen dat het gebruik van de PicKit heeft de bootloader te krijgen in de PIC een of andere manier. Het goede deel: kunt u een PicKit, ICD2 of een flasher PIC van een vriend lenen, en geef het terug zodra de bootloader is geschreven in de microcontroller. Na die - kunt afhankelijk van wat voor soort bootloader flitste kreeg, u firmware uploaden naar programmageheugen via UART, USB, kan of wat dan ook. Met behulp van bootloaders is eenvoudig, maar het komt met het nadeel van het verlies van kostbare programmageheugen. Enkele bootloaders eten minder ruimte in beslag, sommige opeten meer - dit één eet 1K geheugen. Bij het opstarten elke PIC op adres 0 inschakelt en begint wat code uit te voeren heeft de programmeur er geschreven. Als het de bootloader = de PIC loopt de bootloader. Als het is de gebruikerscode = de PIC loopt de gebruikerscode. Vrij eenvoudig!

Om ze beide gebruiken, moeten we een of andere manier schakelen tussen deze twee programma's. Deze omschakeling kan worden gedaan op basis van een voorwaarde, evenement of wat dan ook - het zal heel graag een grote "als"-instructie. Ik koos voor deze voorwaarde als het spanningsniveau op een invoer pin, USB zin in de schema's genoemd. Deze pin was aangesloten op de 5 v-pin van de USB-aansluiting via een weerstand. Als de pin 5 [V] bij het opstarten, wordt heeft de foto om uit te voeren van de tak van de bootloader van de grote "als", als het op 0 [V], de code van de toepassing van de gebruiker moest worden uitgevoerd. Ik plaatste de gebruikerscode direct na de bootloader code, op adres 1000h. De PIC18F4550 controleert de zin pin pin herhaaldelijk, zodat wanneer de USB-kabel wordt verwijderd en de 5 [V] uit Td3 verdwijnt, de PIC naar de code geplaatst bij 1000h, de code van de toepassing van de gebruiker springt. In de code van de toepassing van de gebruiker controleren ik opnieuw het spanningsniveau op de pin van de zin, als het programma 5 [V] daarop ziet, de USB-kabel heeft opnieuw zijn aangesloten en de PIC heeft om naar de bootloader te springen. Ik maak deze sprong aan bootloader wijze met een "RESET" inline Montage-instructie. Aangezien de PIC uitvoeren van adres 0 begint, is de eenvoudigste en meest voorkomende ding om te doen om de bootloader code er, en de gebruikerscode direct na de bootloader.

De code van de bootloader kan worden aangepast om te controleren of er een geldige firmware geschreven in de PIC is. Dit wordt gedaan door het controleren van de geheugeninhoud op adres 1006 1007 hh. Na elke succesvolle programmering, krijgt de bootloader inserts "600D" (leet voor "goed") op deze locatie, wat betekent dat de code is geschreven in de PIC met succes - dit wat het is gecontroleerd op geldigheid. We moet opgeven in de gebruikersinstellingen voor het project van toepassing dat deze locatie niet moeten worden overschreven, zien de afbeeldingen om te zien hoe dit wordt gedaan (ROM bereiken zijn opgegeven naar deze locatie overslaan wanneer de gebruiker de toepassingscode wordt gecompileerd). Niet te doen zal resulteren in fouten echt zwaar voor speurder later. Het gedeelte waar de bootloader leugens ook beschermd moeten worden: dit wordt gedaan door middel van verrekening van de code van de toepassing van de hele gebruiker door 1000h (Code gecompenseerd parameter bij een linker opties). Bootloaders liggen meestal aan het begin of aan het einde van het programmageheugen - wees voorzichtig niet om het te overschrijven! Mij wilden voor toevoegen sommige parametrisatie voor dit apparaat, dat is waarom het bereik 3000-3100 zo goed wordt beschermd. U hoeft niet dat slechts de andere een!

Ik raakte bij het werken met de bootloader problemen

Compileren van het project zal resulteren in een hex bestand wordt gegenereerd - dit moet worden geflitst in de PIC met een PicKit of wat dan ook. In een ouder project liep ik in een vreemd probleem, kon niet het hulpmiddel van de USB-bootloader speurder iets. Heb ik besloten om metingen op de pin van de VUSB van de PIC met mijn bereik, en het moment dat ik de pin met de sonde van de werkingssfeer raakte, de bekende USB-geluid en het bestuur kreeg herkend! Ik dacht dat het probleem ging weg, maar zodra ik de sonde verwijderd, het ding verstopping werking weer. Ik realiseerde me dat alles werkt wanneer de werkingssfeer sonde ingeschakeld, zelfs schrijft, opnieuw is-het probleem moest iets die worden opgelost met de sonde. Toen ik dacht: wat hebben de werkingssfeer sondes? Parasitaire capaciteit. De condensator op VUSB pin was enorm in waarde, en niet kon hoge frequentie geluiden uitfilteren. Een condensator van 100nF parallel is toegevoegd, en de Raad van bestuur werd onmiddellijk erkend.

Kennend dit upfront, voegde ik een condensator van geringe waarde op de bovenkant van de oorspronkelijke map, de USB kwam op zonder een probleem bij de eerste poging! Les geleerd!

Als uw bootloader werkt, uw LED blinker programma flash debug het indien nodig en gaat u verder met het schrijven van enkele meer ernstige dingen, beschreven in de volgende stappen.

Gerelateerde Artikelen

BASIC ARDUINO obstakel vermijden ROBOT

BASIC ARDUINO obstakel vermijden ROBOT

maken een eenvoudige arduino gebaseerde obstakel vermijden robotStap 1: vereisten BENODIGDE MATERIALEN1. natuurlijk Arduino Uno (een andere compatibele board) X 12. Chasis voor robot (ik gebruikte een van mijn broer's RC auto)3. een L293D Dual h-brug
How to Build obstakel vermijden Robot voor Beginners met Arduino Tutorial

How to Build obstakel vermijden Robot voor Beginners met Arduino Tutorial

Deze Tutorial is voor iedereen aan de slag met arduino. Wij zullen bouwen obstakel te vermijden robot die gebruikmaakt van een ultrasone sensor voor HC SR-04 om objecten en 2 continu (360 graden) servo's aangesloten op een externe batterijvoeding te
Remote Controlled obstakel vermijden Robot met PIC Microcontroller

Remote Controlled obstakel vermijden Robot met PIC Microcontroller

Ik gebruik pic 16f877aservo motor ultrasone module afgestemd motor motor stuurprogramma en 20 mhz kristal.In robotica is obstakel te vermijden de taak van het voldoen aan enkele doelstelling van de controle niet-splitsing of niet-botsing functie bepe
Hoe maak je een obstakels vermijden Robot - Arduino stijl

Hoe maak je een obstakels vermijden Robot - Arduino stijl

je altijd al wilde maken van een van deze coole robots die in principe elk object kunnen vermijden. Maar je niet genoeg geld om te kopen een van die erg duur zijn hoefde, met reeds gesneden delen waar alle materialen waar er voor u. Als u als me bent
Arduino obstakel vermijden Robot

Arduino obstakel vermijden Robot

De kerels van Hey,Materiaal:1 Arduino Microcontroller - http://www.robotshop.com/en/arduino-uno-usb-microc...2 parallax continu roterende Servos - http://www.robotshop.com/en/parallax-futaba-contin...1 180 graad Hi-Tec HS-422 Servo - http://www.robot
Obstakel te vermijden Robot met arduino

Obstakel te vermijden Robot met arduino

OBSTAKEL - VERMIJDEN ROBOTEen obstakel te vermijden ROBOT is een die kan een obstakel te vermijden met behulp van ultrasone sensor en navigeren in haar eigen pad. Met een breadboard gekoppeld aan de robot kunt u plezier spelen binnen een korte period
Obstakel te vermijden Robot met behulp van IR Module geïnterfacet met een boord van Mediatek LinkIt

Obstakel te vermijden Robot met behulp van IR Module geïnterfacet met een boord van Mediatek LinkIt

In deze Intructable zal u worden kunnen te maken een obstakel vermijden Robot met behulp van IR module met L293D en Mediatek Linkit een boord.Stap 1: vereisten L293D Motor Driver IC.2 IR Sensor Modules.Chassi voor Bot.Mediatek LinkItOne-Board2 100 RP
TurtleDuino Object vermijden Robot

TurtleDuino Object vermijden Robot

Hallo, in dit instructable ik zal tonen u stap voor stap hoe te bouwen van de TurtleDuino, een object vermijden robot, met een Arduino UNO microcrontroller aan boord. Ik ontwierp de TurtleDuino met behulp van materiaal van de hardware winkel (Home De
Obstakel ontwijkt Robot met behulp van de Arduino Uno en de nabijheid van de IR Sensor

Obstakel ontwijkt Robot met behulp van de Arduino Uno en de nabijheid van de IR Sensor

Volg de stappen voor het maken van een obstakel vermijden Robot met behulp van Arduino Uno en IR Sensor van de nabijheidStap 1: Onderdelen die nodig zijn1) Arduino Uno R3 (kloon zal doen)2) IR naderingssensoren (2 aanbevolen)3) chassis met motoren4)
Hoe maak je een obstakel te vermijden Robot

Hoe maak je een obstakel te vermijden Robot

obstakel te vermijden robot is een eenvoudige robot die wordt beheerd door een arduino en wat het doet is dat het gewoon zwerft rond en vermijdt obstakels. Het detecteert de belemmeringen met een ultrasone sensor van HC-SR04 met andere woorden als de
Obstakel te vermijden Robot

Obstakel te vermijden Robot

Dit instructable is de schriftelijke versie van mijn "Arduino: hoe te bouwen een obstakel te vermijden Robot" Youtube-video die ik onlangs heb geüpload. Ik raden u om het te controleren.Dus, zonder dralen, laten we beginnen!Stap 1: Een chassis!
Arduino obstakel te vermijden Robot

Arduino obstakel te vermijden Robot

In dit instructable ik zal u tonen hoe te maken van uw eigen obstakel te vermijden robot!We zullen de Arduino uno board en een ultrasone sensor gebruiken. Als de robot een object voor, met de hulp van een kleine servomotor, detecteert scant het het g
Obstakel te vermijden Robot V2

Obstakel te vermijden Robot V2

ik deed onlangs een instructable op een eenvoudige belemmering vermijden robot. In dit instructable ik zal de uitvoering van een panning PING))) sensor, in tegenstelling tot de vorige robot die sensor werd stationaire. Ik zal gebruik maken van deze d
Obstakel te vermijden Robot - Motor Shield

Obstakel te vermijden Robot - Motor Shield

Hallo jongens! Dit is een eenvoudige en elementaire tutorial voor het maken van een obstakel te vermijden Robot... Lees verder...Stap 1: Benodigde materialen Het obstakel te vermijden Robot u nodig te bouwen-Arduino Uno R3 (aangeraden Arduino Uno r3