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. Zorg enkel ervoor dat de foto die u de mogelijkheid van puls breedte modulatie (PWM heeft).
Er zijn een paar verschillende manieren voor het genereren van de golfvorm die we nodig hebben. Een methode die is vaak op het internet maakt gebruik van een reeks van NOPs produceren het signaal 38-kHz en instellen van het pulserend sproeien. Dat methode werkt omdat een 38-kHz puls iets meer dan 26us, duurt zodat is het vrij gemakkelijk om te doen dat het gebruik van de PIC interne 4-MHz klok (1us per instructie cyclus). De andere gemeenschappelijke methode is het gebruik van iets dat een 38-kHz puls stroom produceert en gebruik vervolgens de PIC aan de poort van de pulsen voor het juiste bedrag van tijd. Dat zou kunnen worden gedaan met behulp van iets als een 555 timer voor het genereren van de pulsen maar veel foto's hebben de puls generatie mogelijkheden gebouwd in. Wat ik bedoel is het PWM-functie die we in aflevering 9 om te controleren de snelheid van een DC-motor gebruikt. Voor de toepassing van onze IR, echter zullen wij toestaan dat de PWM-generator op een vaste duty cycle in plaats van het veranderen van het pulserend sproeien zoals we voor de motorsnelheid-controller deden wordt uitgevoerd.
Nogmaals, zoals we in aflevering 9 zagen, de PIC voorziet in een speciale pin het PWM-uitgang. Om poort van de pulsen op deze pin alle die wij moeten doen is het wijzigen van de definitie van de pin van een ingang tot een uitgang. Om te sluiten van de poort wijzigen we gewoon de definitie van de pin terug op een ingang. Dat kan worden gedaan op de vlieg in de software. Tijdens het starten van een transmissie willen we ervoor zorgen dat we worden gesynchroniseerd met de pulsen, dus we houden tabbladen op de vlag van de overloop Timer2. Timer2 is gewijd aan de PWM-functie, dus het zal de overloop vlag ingesteld met een snelheid van 38 kHz. Dan is alles wat we moeten doen om te tellen van het aantal overstorten gebaseerd op de tijd moeten we de poort open te laten. Bijvoorbeeld, is het 560us deel van de golfvorm van NEC gelijk aan ongeveer 21 pulsen. We rekenen ook overflows voor de poort gesloten tijd. Dat alles kan gebeuren met behulp van een andere timer en interrupts maar de gemakkelijke manier is gewoon tijd kijken naar de overloop vlag in de software. Dat is ok, want er is echt niet iets anders we doen moeten bij het uitvoeren van de IR-golfvorm.
In dit voorbeeld, ik hardcoded de IR pakken om 00 FF en willekeurige waarden gaf aan de twee schakelaar-opdrachten. U kunt wijzigen die aan uw eigen behoeften. De schakeloptie behandeling logica is heel simpel en ziet er gewoon voor een lage waarde op de juiste GPIO pin. Wanneer wordt een gedetecteerd dat een schakeloptie handler routine is aangeroepen. Elke switch-handler vertragingen van 50 MS en vervolgens gecontroleerd de GPIO pin opnieuw. Dat is goed voor contact stuiteren op de switch. Nadat de IR-commando is verzonden controleren we de GPIO pin voor een release van de schakelaar. Wanneer een release wordt gedetecteerd worden we opnieuw voor 50 MS ter verantwoording voor mogelijk contact bounce vertragen.
Nou, dat is het voor aflevering 11 van "Fun met PIC vergadering". Stay tuned voor meer afleveringen.