Stap 3: Software
Hieronder vindt u de link van de software. Terwijl het wordt gericht voor de 12F683, is het gemakkelijk ported aan andere versies van de PIC. U zult moeten veranderen de regel waarmee de PIC-versie (lijst =) en het INCLUDE-bestand, maar die zijn intuïtieve veranderingen. De __CONFIG lijn wellicht ook tweaken alleen maar omdat een of twee van de gebruikte etiketten zijn anders gespeld in sommige van de INCLUDE-bestanden.
Normaal gesproken zou we een I/O pin definiëren als een input of een uitgang voor welke functie die we gebruikten. In dit geval hebben we echter de eis om de condensator opladen en dan omdraaien en tegelijk afvoer en controleren van de spanning van de condensator. Het TRISIO-register regelt het de richting van de I/O pinnen zodat die moet worden gewijzigd elke cyclus timeout. Ook, aangezien de TRISIO en GPIO registers in verschillende banken zijn, moeten we ervoor zorgen dat we het commando juiste BANKSEL elke keer.
De oplaadtijd vereist voor de condensator wordt gedicteerd door de formule T = R * C waar T is in seconden, R in ohm, en C is in Farad. Dat betekent voor de voorbeeldwaarden in het diagram, een minimum van 11ms. De code die ik ben met begonnen had een routine 100ms vertraging dus ik links die in plaats van trimmen neer dichter tot het vereiste minimum. Als je echt op zoek bent om te minimaliseren kan totale energieverbruik, dan moet je gemakkelijk verminderen die vertraging. Eerlijk gezegd, het niet zou leiden tot veel besparingen omdat het merendeel van de tijd wordt besteed in slaapstand staat. Wat helpt voor energiebesparing is het verminderen van de kloksnelheid, dus in dit voorbeeld ingesteld we de interne klok op haar laagste tarief (31-kHz) door het selectievakje de frequentie controle bits in OSCCON. OSCCON standaard normaal voor het gebruik van de interne klok van 4 MHz-tarief. Een andere macht besparingen tip is het configureren van aller de ongebruikte GPIO pinnen als uitgang.
Uiteraard in het volgende voorbeeld in te stellen, een spaarder van de macht niet zal zijn omdat we een van de LED's zijn verlichting al van de tijd, zelfs tijdens de slaapstand. Zonder de LEDs gemeten ik slaap modus stroom van slechts een paar micro-ampère. Als we niet over energiebesparing schelen of als we iets moeten doen in de code tijdens de time-outperiode, kunt dan we het slaap-instructie verwijderen. In beide gevallen zal de time-out een interrupt genereren. In ons voorbeeld de interrupt handler gewoon laadt de condensator, schakelt de LED's, en vervolgens GPIF (GPIO Interrupt Flag) worden gewist. De uitgang van de interrupt handler stelt automatisch de GIE (algemene Interrupt Enable) vlag. Nou, thats it voor aflevering 7 van "Fun met PIC vergadering". Stay tuned voor meer afleveringen.