HDD klocka - persistens av vision (7 / 13 steg)

Steg 7: Bootloader - att bli av med PicKit



1. Varför behöver vi en bootloader?

Med en PicKit 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. Tur för mig, fel för att vara fast på båda PCB så det var ett bra tillfälle att lägga till bootloader hårdvara och funktionalitet. Fem stift ICSP sidhuvudet var kvar av designen avsiktligt, och jag hade att löda wrap trådarna till flash bootloader. Naturligtvis - att ledningar kan inte stanna där, det skulle kasta allt på bordet när rotorn snurrar - lyckligtvis USB slot är kompakt och kan bo. Koppla in när programmering, koppla ut när testning och spinning.


2. USB-bootloader, enkel och bra

Tittar på databladet för processorn jag beslutade att använda en kan 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, började jag att genomföra de ändringar för att passa perfekt i styrelserna som jag tänkt använda det till.


3. några ord om bootloaders

En bootloader är en speciell 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 PicKit 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 jag beslutade att använda är cirka 1K. 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, IO RD3 PORTD registret. Detta stift var ansluten till USB-kontakten genom en resistor 5V stift. Om PIN-koden på 5V vid start, har PIC att verkställa den bootloader grenen av den enorma "om", om det är på 0V, användaren programkoden hade körs. Jag placerade användarkoden direkt efter bootloader koden, på adress 1000h. PIC18F4550 kontrolleras RD3 stiftet upprepade gånger, så när USB-kabeln tas bort och 5V 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å RD3, om programmet ser 5V 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!

4. 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. Mine har inte ville starta upp för ett bra tag, verktyget USB bootloader inte kunde 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. Problemet löst!

Se Steg
Relaterade Ämnen

Hard Drive persistens av Vision (HDPOV)

tallrik av en hårddisk snurrar bra över sextio gånger per sekund. Om en smal springa var skuren i tallrik så att lamporna lysa igenom, kan vi uppnå flimra fusion och lura ögat att se en stabil bild. Detta fenomen kallas persistens av vision (POV). De...

Hårddisk Clock (HDD klocka med Arduino Uno)

Detta är ett roligt projekt som kan göras enkelt och också billigt. I detta instructable vi kommer att förklara steg för steg hur man gör denna vackra POV klocka.Använda materialet:Arduino Uno,Tiny RTC modul,ULN 2003,IR diod och IR transistor (använd...

GÖR Controller persistens av Vision effekt med lysdioder

Hej, detta är min första instructable och jag hoppas du gillar den. Det är ett enkelt projekt, göra styrenhet (en mycket användbar controller från www.makezine.com), som gör en uthållighet-av-vision-effekt med hjälp av lysdioder. När du flyttar styre...

Persistens av vision

den ursprungliga idén till projektet kom från David Bjanes som har många projekt i hans Projektkön lysande sinne. Inspirationen kom när David såg en video av en liknande POV display på Youtube.com. Vi kontaktade Bruce Land, vår professor, för att dis...

Ultra låg kostnad sol-uppladdningsbara persistens av vision display

denna enhet ger en ljusstark och iögonfallande Visa för att skriva text och små bilder genom luften. Det använder under £2 (ca $3,20 USA på i skrivande stund) i delar, och är en trevlig liten helg projekt att imponera på dina vänner och familj.Det an...

Arduino persistens av Vision visar

en vision (PoV) display är en rad med lysdioder som flash ut kolumnerna i ett meddelande. När matrisen med lysdioder flyttas, som när monterad på ett cykelhjul, kan meddelandet läsas som om det var många LED hela, i stället för en enda rad.Maskinvaru...

En LED persistens av Vision namnbricka

detta Instructable visar en namnbricka som jag har byggt för min dotter.Jag har sett Defcon märken, och trodde att de var cool. Varför kan mina barn har också - men speciellt byggd för dem?Så här går du - en enkel märke som använder en PIC 16F88, och...

Persistens av Vision trollstav för Arduino

i detta instructable, jag visar dig hur du skapar en trollstav (slags) så att du kan skriva i luften, som bilden ovan visar.Steg 1: Hårdvara Behöver du:-Lödkolv-Löda-5 3v gröna lysdioder-fästa startkablarObs: I stället för lödning, du kan göra detta...

3D POV Clock from a HDD

I detta Instructable kommer vi att omvandla en gammal hårddisk till en 3D persistens av Vision klocka.POV klockor använder en enkel metod för att Visa tid på ett riktigt snyggt sätt. En POV klocka snurrar en uppsättning av lysdioder riktigt snabbt, v...

Lite Brite LED klocka

Lite Brite pinnar ser ut som lysdioder inte de? Det är vad jag dock häromdagen efter att ha arbetat på en LED cube i några timmar. Jag råkade se min dotters Lite Brite sitter där, och jag tittade på högen av lysdioder på mitt skrivbord. Vad en perfek...

Sunrise Alarm LED klocka

Förmågan att förstå och kontrollera ledde matriser är en viktig färdighet för alla som vill vara väl bevandrade i elektronik. Förståelsen av SKIFT register och rad scanning tekniker behövs för sådana bedrifter kommer att vara användbara i otaliga and...

2,5" HDD ta tid

detta är en 2,5" HDD klocka jag gjort från en inaktiv extern hårddisk. Jag använde en 2,5-tums enhet i stället för en 3,5-enhet som i Storbritannien är det mycket svårt att hitta urverk som har en tillräckligt lång spindel att gå hela vägen.Detta är...

Ihållande Vision (POV)-2 sätt att spela -

efter trött på att söka POV handledning som inte klart och komplicerad, jag hittade till slut det bästa en. I detta instructable jag kommer att återskapa en POV (persistens av Vision) trollstav inspirerad av amandaghassaei's ursprungliga design. När...

(POV) Ihållande Vision världen

! Uppdatera! Jag har lagt till ett excel-program som gör det mycket lättare att rita och kod nya bilder!En enkel persistens av vision klot. Spela upp VIDEODetta är ett projekt som jag haft i åtanke under en längre tid och "Göra det Glow" tävling...

Återvunnet hårddisk Clock - FuneLab

Hej alla!Detta är min femte projekt på Instructables & Tack alla gillade detta.Du har en trasig hårddisk? Du skulle lägga den i papperskorgen eller sälja det på Ebay för några dollar? Åh nej!Gör dig redo att vända kraschade hårddisken till en unik kl...

ESP8266 Desktop Clock (WiFi synkroniserad!)

ESP8266 är en awesome chip; med integrerad WiFi, 80MHz klockfrekvens, totalt 160kb RAM, 512kb flash-minne, och massor av andra funktioner, gör det en regelbunden Arduino ser ut som ett skämt. Projektet visas i detta Instructable är enbart baserad på...

Mikro - wrist watch LED mönster TIDMÄTARE

en annan RGB Sunset produktioner produktion!Detta projekt är ett kretskort för att göra en wrist watch storlek version av min mina klocka:med några fler funktioner mer tillämplig på en bärbar enhet. En hel del hjälp och förslag kom från ians 01 / \ /...

Multiplexering med Arduino och 74HC595

74HC595 är en lätt och billig (på cirka 60 cent styck) sätt att öka antalet digitala ut stiften på din Arduino. I denna tutorial ska jag visa dig hur man kör upp till 16 lysdioder med en 74HC595 med hjälp av en teknik som kallas multiplexing. I slutä...

Charlieplexing lysdioder - teorin

detta instructable är mindre en bygga dina egna projekt och mer en beskrivning av teorin av charlieplexing. Den är lämplig för personer med grunderna i elektronik, men fullständig inte nybörjare. Jag har skrivit det som svar på de många frågor jag få...