8 kanal programmerbar Timer (4 / 13 steg)

Steg 4: Knappsats avbryter



Jag ville använda sig av PORTB avbrottet på förändring avbrott på någon trycker på en tangent. För detta, en anpassad avbryta hade skapas i Flowcode, att se till den PORTB riktningen och data har ställts in korrekt före och efter varje knappsats avbrott. Ett avbrott genereras varje gång en knapp trycks ned, och släpptes. Avbryta rutinen svarar endast när en tangent är nedtryckt.

ANPASSADE AVBROTT

Aktivera koden

portb = 0b00001110;
trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

Handler kod

om (intcon & (1 << RBIF))

{FCM_%n();

portb = 0b00001110;

trisb = 0b11110001;

wreg = portb;

clear_bit (intcon, RBIF);

}

Problem som påträffas

Under ett avbrott, avbrottstjänstens rutin skall under inga förhållanden, anropa andra makro som kan användas någonstans i resten av programmet. Detta leder så småningom till stack overflow problem, som avbrottet kan förekomma samtidigt som huvudprogrammet är också i samma subrutinen. Detta är också identifierad som ett allvarligt fel av Flowcode när koden kompileras.

I anpassad kod knappsatsen under GetKeyPadNumber finns det ett samtal till makrot Delay_us, som kommer att orsaka dataspill. För att övervinna detta, jag har bort kommandot Delay_us(10), och ersatt det med 25 rader "wreg = porta;" kommandon. Detta kommando läser PORTA och placerar dess värde i W registret, bara för att få viss försening. Detta kommando kommer att sammanställas till en enda instruktion som liknar assembler movf porta, 0. Varje instruktion kommer att 400ns för 10MHz klockan används i projektet, och för att få en 10us fördröjning, jag behövde 25 i dessa instruktioner.

Notera på den andra raden i figur 3: GetKeypadNumber anpassad kod, som kommandot ursprungliga delay_us(10) har inaktiverats med "/ /". Under detta, jag har lagt min 25 "wreg = porta;" kommandon för att få en ny 10us fördröjning. Ingen kräver alla makron inuti Keypad_ReadKeypadNumber anpassad kod, med kan knappsatsen makrot nu användas inuti en avbrottstjänstens rutin.

Det bör noteras att Flowcode knappsats och eBlocks komponenter inte använder standard pull-up motstånd på ingående linjer. Det används i stället 100K nedrullningsbara motstånd. 100 K motstånden ersattes med 10 K på grund av vissa störningar finns på knappsatsen under utveckling, och alla 10 K motstånd ersättas med 1 K 5. Knappsatsen har testats för att fungera korrekt med leads på 200mm.

Se Steg
Relaterade Ämnen

Programmerbara Time-lapse Remote

__MY_SETUPJag gjorde min för Pentax SLR serien kameror eftersom det är vad jag äger.Jag använde pic16f688 chip eftersom det är vad jag hade och den kan köras på 2 AA-batterier.Gränssnittet är lite fånigt för jag hade inga små potentiometrar. Det börj...

Min inomhus DWC Hydroponics System

detta instructable kommer att omfatta att bygga och drift av ett djupt vatten kultur hydroponics. Så långt, har jag framgångsrikt vuxit banan paprika i denna setup med fullständig lätthet eftersom de flesta av processen är automatisk.Även odlades des...

Arkitektoniska gjuten betong: Vägg mössor, kolumn mössor, och öppen spis härd och Mantel

Som arkitekt har jag ibland en vision för en designelement eller finish som är svåra eller dyra att förvärva eller bygga. Exempelvis är gjuten betong produkter som bänkskivor eller möbler vacker och tålig, men relativt dyra.2011 var jag starta min eg...

Automatisk återställning av en USB-enhet.

Inte vi alla hatar behöva lossa sedan åter ansluter en USB-enhet om den har slutat att svara? Min USB UIRT är nyckeln till min hem tillgång och komfort automation. Ibland det låser sig och jag måste antingen åter koppla in den eller starta om datorn....

CO2-laser som klipper plåt

Vänligen notera: jag verkligen inte tävlar om att vinna laser, en t-shirt skulle vara bra, tack.Jag såg tävlingen och trodde det skulle vara kul att visa upp min system.Introduktion. Den allmänna idén med detta CO2 lasersystem är att en ljusstråle ri...

En 2-stegs elektroniska Modellera raket (med 3D-tryckta delar!)

Hej alla! Har du någonsin undrat vad gränserna var till vad en enkel modell raket kunde göra? Många månar sedan jag undrade samma sak och efter några försök och misstag tror jag att de gränser och komplexitet kan du lägga till din körning av mill Mod...

16 tips på växande Hot Chili Peppers i ett kallt klimat

Om någon läser detta har faktiskt smakade min matlagning, vet du hur viktigt chilifrukter är till min dagliga rutin. De flesta av de måltider som jag har lagat utan chili är ganska äckliga, med undantag av ost på toast, även om detta också serveras v...

Gröna tak - Teto Verde

systemet består av:1. en takträdgård, med ett avloppssystem med konventionell PVC rör;2. en cistern, att fånga regnvatten;3. en pump, för att göra vattnet höja en vattentank;4. en automatiserade bevattningssystem, med hjälp av insamlade vatten.Min ch...

Garage projektet i kretsloppsodling Starter

Kretsloppsodling använder fiskavfall för att mata växter. I sin tur hjälpa växterna rent vatten fisken lever i. Detta system fungerar genom att pumpa vatten från ett akvarium genom en växa säng och sedan låta gravitationen rinner vattnet tillbaka i a...

Uppgradera Smart RGB lysdioder: WS2812B vs WS2812

Det stora antalet projekt som vi har sett att använda sig av Smarta RGB lysdioder– vare sig det är remsor, moduler eller anpassade PCB - de senaste 3 åren är ganska häpnadsväckande. Detta utbrott av RGB LED användning har gått hand i hand med en bety...

Bitars banka steg för steg: Arduino kontroll av WS2811, WS2812 och WS2812B RGB lysdioder

Disclaimer: under det senaste året, några olika bibliotek har skrivits för att kontrollera dessa allestädes närvarande RGB lysdioder av Karl beslutsfattare från Adafruit, PJRC och FastSPI projektet. Biblioteken fungerar mycket bra, och vi bör försöka...

Svävande belysning

detta är en snabb, billig och enkel svävande ljus installationen med några ljus sockets och kedja.De flesta, om inte alla objekt du kan hitta runt ditt hus / garage. Jag egentligen bara gick ut och köpte det material jag behövde och kunde bo under $4...

Underbara vinden båten

Underbara vinden båten skapades för 2016 Makecourse slutliga projektet vid Uniersity i södra Florida. Denna båt är skapad av en 3D-skrivare tillsammans med några andra tillverkningstekniker för att uppnå Flytförmågan. Båten är också avlägsen kontroll...

GSM Solar Powered vind stationen

Målet med detta projekt är att bygga en självständig station som ger vindhastighet och vindriktning.Stationen kommer att besvara telefonsamtal och leverera information över talsyntes.Steg 1: Material som används: 1 x vindgivare (ebay.ch Davis Vantage...

Arduino drivs 1400 LED Christmas Tree

Jag köpte en GE pre upplysta julgran i 2007. Belysningen består av anpassade strängar av tydlig konstant på glödlampor. Varje sträng med 1, 2 eller 3 grupper av 49 konstant på lökar och en säkring lampa i serie. Det fanns totalt 1200 lökar på trädet....

Automatiserad ultraljud imma 3D utskrift polermaskin PRO

Det har varit över ett år sedan jag publicerade en populär Instructable om ultraljud imma ABS 3D tryckta delar med aceton ånga. Ett par månader sedan blev jag inspirerad att återkomma till detta projekt av den professionella 3D printing "Polysher&quo...

Gör en Mini Arduino programmerbar 4 kanal DC-DVM

detta Instructable kommer att lära dig hur du använder Arduino Analog hamnarna.Digitala Voltmetrar (DVMs) är ett specialfall av Analog till Digital omvandlare - A / DCs.-de mäter spänning - och är oftast en funktion av en generell instrument som kall...

Billiga programmerbara vatten värmare Timer

Min makt företaget erbjuder ett energischema som är billigare än genomsnittet under morgon och kväll men mycket dyrare under topp dag timmar. Så för att spara lite pengar från varmvattenberedaren vrida från klockan tolv till 7 pm jag skapade denna pr...

Sprinkler bevattning system timer

Detta är i huvudsak fancy timer(s) med en manuell omställning, tänkt köra en 8 zon nätstruktur bevattningssystem, programmerbara via ett webbgränssnitt.Steg 1: IngrediantsJag bor i Bunbury, Western Australia, dina delar leverantörer kan variera.En >...