Ultrasonic hinder att undvika Robot (8 / 16 steg)

Steg 8: PIC programmering, blinkar en LED, Bootloader




Varför behöver vi en bootloader i första hand?

Med en PicKit3 runt är nödvändigt, men att ha det liggande våra arbetsyta med utan goda skäl inte är. Inledningsvis jag inte ville komplicera mitt liv med bootloaders, men senare kom jag att inse sanningen: detta projekt är bättre utan PicKit. Att ha en enda kabel för programmering är trevligt, särskilt om det är en mycket vanlig USB mini kabel, som varje hobby har ett gäng. Fem stift ICSP sidhuvudet var kvar av designen avsiktligt använde jag min ZIF-kontakt ombord blixt bootloader till PIC.

USB-bootloader, enkel och bra

Titta på databladet för processorn jag beslutade att använda, kan man se att det finns UART och USB. Om jag plockar UART, jag fortfarande behöver en USB-UART-omvandlare och en massa sladdar - motverkar syftet. Så det bästa, enklaste, trevligaste val är USB. Mikrochip erbjuder alla slags kodexempel för bilder, bootloaders också. Om du hämtar och installerar "Mikrochip bibliotek för program", blir det en hel mapp om alla slags USB-applikationer, bootloaders, verktyg och andra nyttiga saker. I undermappen "Bootloaders" Jag plockade "USB HID Bootloader" och öppnat det i MPLAB X. Efter att ha läst igenom den ett par gånger att förstå sin logik, genomfört jag ändringar för att göra den perfekt för min RekaBot.

Några ord om bootloaders

En bootloader är en särskild del av kod som skrivs in microcontrollers en gång, och är ett sätt att ladda upp firmware utan behov av speciella (högspänning) programmerare, som PicKit3 i vårt fall. Tyvärr finns det inget sätt att helt undvika användning av PicKit, bootloader har att komma in i bilden på något sätt. Den goda delen: du kan låna en PicKit, ICD2 eller någon PIC flasher från en vän, och ge det tillbaka en gång bootloader är skriven till mikrokontroller. Efter det - beroende på vilken typ av bootloader fick blixtrade, du kan ladda upp firmware till programminne genom UART, USB, kan eller vad. Använda bootloaders är enkel, men kommer det med nackdelen att förlora dyrbar programminne. Vissa starthanterare äter upp mindre plats, vissa äter upp mer - här äter 1K minne. Vid start varje PIC befogenheter upp på adress 0 och börjar köra oavsett kod har programmeraren skrivit där. Om det är starthanteraren = den PIC går bootloader. Om det är användarkoden = den PIC går användarkoden. Ganska enkelt!

Använda dem båda, måste vi på något sätt växla mellan dessa två program. Denna övergång kan göras baserat på ett villkor, händelse eller något annat - det blir väldigt mycket som ett stort "om"-uttryck. Jag valde detta villkor vara spänningsnivån på en ingångsstift, heter USB-känsla i scheman. Detta stift var ansluten till USB-kontakten genom en resistor 5V stift. Om PIN-koden är på 5 [V] vid start, har PIC att verkställa den bootloader grenen av den enorma "om", om det är på 0 [V], användaren programkoden hade körs. Jag placerade användarkoden direkt efter bootloader koden, på adress 1000h. PIC18F4550 kontrolleras känsla pin stiftet upprepade gånger, så när USB-kabeln tas bort och 5 [V] försvinner från RD3, PIC hoppar till koden placeras på 1000h, tillämpning användarkod. Programkoden användaren kolla jag igen spänningsnivån på avkänningen klämma fast, om programmet ser 5 [V] på det, USB-kabeln har anslutits igen och PIC har att hoppa till startprogrammet. Jag gör detta hoppa till bootloader sätt med en inline församlingen "RESET" instruktion. Eftersom bilden börjar köra från adress 0, är det enklaste och vanligaste man kan göra att placera bootloader koden där, och användarkoden direkt efter startprogrammet.

Bootloader koden kan ändras för att kontrollera huruvida det finns en giltig firmware skriven i PIC. Detta görs genom att kontrollera minnet innehållet på adressen 1006h - 1007h. Efter varje lyckad programmering, bootloader skären "600D" (leet för "bra") på denna plats, vilket innebär att koden har skrivits in i PIC framgångsrikt - detta är vad det blir kontrolleras för giltighet. Vi måste ange i ansökan projektet användarinställningarna att denna plats inte bör skrivas, se bilderna för att se hur detta görs (ROM intervall anges att hoppa över denna plats när användaren programmets kod kompileras). Underlåta att göra detta kommer att resultera i fel verkligen svårt att upptäcka senare. Avsnittet där bootloader lögner måste också skyddas: detta görs genom avräkning programkoden hela användare av 1000h (kod offset parametern länkaralternativ). Bootloaders ligger vanligtvis i början eller slutet av programminnet - man måste vara försiktig att inte skriva över den! Jag ville lägga till några parametrization för den här enheten, det är därför intervallet 3000-3100 skyddas också. Du behöver det, bara den andra en!

Problem jag slog när du arbetar med bootloader

Kompilera projektet kommer att resultera i en hex-fil som genereras - detta måste flashad till PIC med en PicKit eller vad som helst. I äldre projekt jag sprang in i en främmande problem inte kunde verktyget USB bootloader upptäcka något. Jag bestämde mig att göra mätningar på den VUSB pin av PIC med min räckvidd, och nu jag rörde den PIN-kod med scope sond, välkända USB ljudet spelas och styrelsen fick erkännas! Jag trodde problemet gick bort, men så fort jag tog bort sonden, som slutat fungera igen. Jag insåg att allt fungerar när scope sond är på, även skriver, återställer - problemet skulle vara något som sonden fixar. Då tänkte jag: Vad har räckvidd sonder? Parasitiska kapacitans. Kondensatorn på VUSB stift var enorm i värde, och kunde inte filtrera bort högfrekventa ljud. En 100nF kondensator lades parallellt, och styrelsen erkändes omedelbart.

Att veta detta förskott, jag la en liten värde kondensator på originalet, USB kom på utan problem på första försöket! Lärdom!

Om din starthanterare fungerar, flash LED blinker programmet, felsöka det om det behövs och fortsätta att skriva några allvarligare saker, beskrivs i följande steg.

Se Steg
Relaterade Ämnen

Hur man gör ett hinder att undvika Robot

hinder att undvika robot är en enkel robot som drivs av en arduino och vad den gör är att det bara strövar runt och undviker hinder. Den upptäcker hinder med en HC-SR04 ultrasonic sensor med andra ord om roboten sinnen objekt nära till det, det tar a...

Hinder att undvika Robot med arduino

HINDER - ATT UNDVIKA ROBOTEtt hinder att undvika ROBOT är en som kan undvika ett hinder med hjälp av ultraljud sensor och gå i sin egen väg. Med en skärbräda bifogas roboten kan du spela roliga inom en kort tid. En sådan är vad vi ska diskutera här....

Hinder att undvika Robot med hjälp av ultraljud med evive (Arduino powered embedded plattform)

Vi har byggt ett hinder att undvika robot med evive. Till skillnad från andra, har vi monterat ultrasonic sensor på en servo. Så efter att ha upptäckt en kollision, roboten analyserar vilken riktning är bäst att gå med avstånd i olika vinklar från ul...

Hinder att undvika Robot V2

nyligen gjorde jag en instructable på en enkel hinder undvika robot. I detta instructable jag kommer att genomföra en panorering PING))) sensor, till skillnad från den tidigare roboten som har sensorn var stillastående. Jag kommer att använda denna t...

Hinder att undvika Robot

i denna tutorial jag arbetar med dig i en stegvis process som förklarar genom visuella och skriftliga instruktioner om hur du skapar ett hinder att undvika robotbil. Detta är en enkel starta projektet med arduino mikrokontroller och arduino motor skö...

Ljus som söker och hinder att undvika Robot

Syftet med detta projekt är att bygga en arduino robot som följer ljuset och undviker eventuella hinder i sin väg. Den är baserad på en Arduino Uno microcontroller ombord och den använder ljus beroende motstånd för att hitta mest ljusa ljuskällan sam...

Hur man gör ett hinder att undvika Robot Arduino stil

du alltid velat göra en av dessa coola robotar som kan i princip undvika alla objekt. Men du inte har tillräckligt med pengar för att köpa en av de riktigt dyra sådana, med redan skär delar där allt material där det för dig. Om du är lik mig gillar d...

RC bil till hinder att undvika Robot

detta är den gamla bilen.Jag hitta en gammal RC bil i mitt skjul.Hur jag förvandlas till en robot? Det är enkelt, jag kommer att förklara du i nästa steg.Steg 1: Den gamla RC bil 1. ta bort höljet2. ta bort kretsen.Steg 2: kontroll För att kontroller...

Hur man gör ett hinder att undvika Arduino Robot! "Min Robot V1"

Detta instructable visar steg instruktioner för att göra ett hinder att undvika robot med Arduino.Låt komma igångmin blogghttp://robot4pro.blogspot.com/p/My-robots.htmlSteg 1: Material som krävs förHär är allt du behöver för att MyRobotV1. Jag ska ge...

Robot-hinder att undvika.

HINDER ATT UNDVIKA ROBOTFINANSIERAS AV, INTEL KENYA TILLSAMMANS MED SOCIETY OF ENGINEERING STUDENTER AUTOMATION CLUB JKUAT.MEDLEMMAR:1 ANTONIUS KARIUKI2 ERIC KINYANJUI3 EMMANUEL KINYANJUIPROJEKTET INSTRUCTABLE:KRAV:1 INTEL GALILEO GENERATION 2 STYREL...

Autonomus vägg följande hinder att undvika Arduino Rescue Bot

jag är en ha som huvudämne elektroteknik och varje år mitt college gren av IEEE tävlar i en studenttävling hårdvara. Förra årets tävling var inspirerad av naturkatastroferna i Haiti och Chile (tävlingen hölls en vecka efter jordbävningen i Japan). De...

(Källa filer för) Hur man gör en OAWR (hinder att undvika Walking Robot)

detta är en utlöpare Instructable från hur man gör en OAWR (hinder att undvika Walking Robot) och innehåller versioner av filer från detta instructable i redigerbart format (alla trevliga och öppna source'ary jag gillar att tänka).(Om det finns någon...

Artoo [R2] (ATtiny2313 vägg att undvika Robot)

eftersom jag hade en massa ATtiny2313s liggande ville jag göra något häftigt med dem, jag tänkte ett tag och sedan beslutat att göra en enkel vägg att undvika robot med ATtiny2313, en ultrasonic sensor och 2 motorer.Dess en enkel att göra och enkel r...

Linkit ett objekt att undvika Robot

Denna i'ble behandlar objekt att undvika tekniker för linkit en.Dess enkla att göra ett objekt att undvika robot med linkit en. Anslut först HC-SR04 till linkit en än Anslut relä till linkit en och slutligen ansluta båda motorerna till relä och batte...

Raspberry Pi bygger väggen att undvika robot - FabLab NerveCentre

______________________________________________________________________________Observera: detta instructable är inte fullständigt - men kan vara till hjälpPublicerad för att den utmärkta människor på Derry's NerveCentre att ta koden ut till skolorJag...

Arduino vägg att undvika robot

Detta instructable förutsätter mycket lite med avseende på tidigare kunskap.Om det finns några områden som du känner skulle kunna förbättras eller förtydligas, gärna meddelande eller en kommentar och jag kommer att uppdatera.Här finns all information...

Hinder att undvika Arduino bil

Hej alla jag delar här vad jag göra ett hinder att undvika arduino bil. Jag använde här lätt tillgängliga material, dessa robo fortsätta springa fram tills och om inte hinder kom bilen så låt oss se och göra...Steg 1: material som krävs för 1-Arduino...

Billiga 4WD invända att undvika Robot med fyra IR närhet sensorer...

Detta är en billig grundläggande fyra motorer, fyra sensorer, programmerbara 8051 objekt att undvika robot med breadboad. Denna robot kan också användas som en linje efter robot bara ändra programmet. Jag installerade två batterier för mer makt, men...

Hur man gör ett hinder att undvika Arduino Robot

Hej alla! I detta Instructable kommer jag att visa dig hur man gör en robot som liknar "Mobile Arduino experimentella plattformen" (MAEP) som jag gjort. Den är utrustad med två motorer som kan styra roboten och förmågan att se hinder framför den...