Mikro - wrist watch LED mönster TIDMÄTARE (2 / 7 steg)
Steg 2: Programmering och Micro urval
Eftersom detta var att vara så liten som möjligt använde jag en 20pin SOIP 16F88. Detta var en 300MIL bred version, mikrochip har en 150mil SSOIP (mager, small outline package), men med tanke på enheten var att vara hand prototyped, jag ville använda en större lättare att hantera chip.
Uppenbarligen en SOIP paketet brukar passa i en programmerare så jag hade gå använda ICSP... vilket resulterade i en hel del sorg! ICSP är ett sätt att programmera mikrokontroller, medan det är fortfarande i en krets. ICSP står för i Circuit Serial Programming och ofta används för att programmera "tomt" styrelser eller uppdatera programvara utan unsoldering/socketing mikrokontroller.
För det första har jag inte läst tillräckligt om ICSP att lägga i rätt kretsar för att hantera ICSP i min första prototyp. Sen läste jag inte mikrochip databladet när det gäller ett par extra stift på 20pin 16F88SOIP. Dessa stift är AVss och AVdd stiften. De ger normalt referens spänningar för A/D omvandlare.
Jag tog ett tag att lista ut att dessa stift måste anslutas (jag ansluten till GND/Vdd) för ICSP att arbeta.
Också är viktigt att ha en ordentlig reset krets för MCLR stift. Detta är mycket viktigt så ICSP programmet kan återställa mikrokontroller, innan du gör sin planering.
Se själva bilden i det här avsnittet. Det visar den MCLR pin ansluten till Vss via en pullup motstånd och en diod. Pullup är nödvändigt, eftersom ICSP till verk du verkligen har de MCLR som konfigurerats som en Återställ PIN-kod, snarare än en ingångsstift (mer om detta senare). Dioden förhindrar Vpp spänningen från ICSP programmeraren som kan vara runt 13V från att skada resten av kretsen.
Bilden visar anslutningarna för Vdd och AVdd sammankopplade som för GND/AVss.
Hänvisa till Eagle Schematisk filerna för full Schematisk (eller i nästa avsnitt) men notera lite "X" formade symbolerna i huvudbilden. Dessa är SMD kuddar, det finns inga kontakter i den här enheten så SMD kuddar används för att löda strömförsörjningar och ICSP anslutningen. ICSP stiften är ordnade i styrelsen i ett bekvämligheter läge. Korta längder av tråd att ansluta till ett 10pin IDC huvud (ganska standard för ICSP programmerare). Andrabildens visar detta arrangemang.
De används också att löda i titta på kristallen. I 16F88 är PGD och PGC stiften också T1OSO och T1OSI stiften som används för att ansluta en extern crystal till PIC T1 oscillatorn att göra en realtidsklocka. Lyckligtvis kan du också använda dessa vid programmering via ICSP också... om du är försiktig.
Om oscillator kommer när ICSP programmeraren försöker använda stiften, kommer ICSP programmerare att ha problem. Du måste lägga till en försening i början av ditt program. Kodfragmentet nedan visar det i handling. Observera jag också inaktivera den externa oscillatorn så snart som möjligt efter start bara för bra åtgärd:
void main)
{
unsigned char i.
osignerad korta nDelay;
t1con = 0; Inaktivera timer1 så snart vi återställa
osccon = 0x76; för interna 8MHz klocka
medan ((osccon & 0x04) == 0); och vänta på klockan för att bosätta sig och vara redo
setup kringutrustning
Porta = 0;
portb = 0;
cmcon = 0x07; avaktivera komparator utgång, gör nu för att ställa in en trisa
trisa = 0xff; Att sätta ingång vid start
trisb = 0xff; alla stift i portb inställd på ingång
Ansel = 0x00; ingen analog i denna cct... viktigt steg ofta glöms bort, jag gjorde!
delay_s(2); programmerare att hinna göra grejer... MYCKET VIKTIGT
Slutligen i huvudbilden not symbolen SMJ100 som är överbryggas i övre övre vänstra hörnet kallas SJ100. Detta skulle användas i en nödsituation om jag av misstag programmerade i en konfiguration som inaktiveras MCLR stiftet och kunde inte sluta titta på oscillatorn fyllning upp ICSP PGD/PGC stiften. Detta är en annan handly Eaglecad bibliotek del, en enkel SMD länk. Genom att överbrygga det på min bräda är det en bekvämligheter plats att unbridge om det behövs. Detta skulle vara nödvändigt i ovanstående situation. Normalt ansluter du bara MCLR PIN-koden (att återställa chip), GND pin (för referens) och PGD/PGC stift att använda ICSP. I praktiken programmeraren återställs chip, skicka magiska styrsignaler till processorn via PGD/PGC och få det att vara lyhörd för några nya data Lovin '.
Om processorn är upptagen med andra saker och kommer inte att svara på en återställning, du emellertid yank sin makt järnväg för att få sin uppmärksamhet. I detta fall måste den Vdd pin av ICSP programmeraren vara ansluten till kretsen. Jag skulle skära bron, Anslut en tråd till Vdd SMD pad (den lilla "X" symbolen i närheten) och ge processorn nya instruktioner. I slutet när jag hämtade skumma koden, drivs jag bara upp GTT från programmeraren utan att använda detta system. Om du hade en mer komplex eller makt hungriga krets du bör har några sätt att koppla processorn från kretsen driver järnväg och Anslut den till Vdd PIN-koden på din programmerare.
Så i Sammanfattning att göra framgångsrika ICSP minns:
-installera en ordentlig reset krets med skydd diod och pullup motstånd
-Anslut AVdd/AVss till power rälsen om du inte använder dem (och chip har dem, endast för 20pin 16F88... inte för andra versioner).
-i din layout, sätta ICSP anslutningarna någonstans förnuftiga och lätt att få på.
-har ett sätt att isolera processorkraft från cct makt och ansluta ICSP Vdd för nödsituationer
-undvika nödsituationer genom att säkerställa att PGD/PGC stiften är klar för användning så snart som möjligt efter en återställning.