ChronosMEGA; ett armbandsur (5 / 16 steg)

Steg 5: Programvara med församling




Logik flödet av SW för Watch avbildas ovan. Programmering gjordes helt i församlingen, genomföra de avbrott, ADC, Power Management, GPIO och Timer funktionerna för ATmega328P. De skäl jag välja för min programmeringsspråk var att optimera min program bäst jag kunde och eftersom jag stolthet över mig själv arbetar i svårare, nivåer lägre för projekt.

5.1 första prototypen

En utvecklingssystem som ungefär emuleras det slutliga ChronosMEGA konstruerades för att genomföra SW som skulle köras på klockan. Strömtillförseln till klockan skapades först separat på en fabricerade PCB jag utformade och användes för att driva kretsen. Denna enhet var sedan inbäddade till färdig produkt.

En video som visar bakbord kretsen visas nedan:

5.2. avbryter

Det finns 4 olika avbrott rutiner för ChronosMEGA: en för HR + och MIN + knappar, en för sömnen och displayen knappar, en för Timer2 jämför match, och sist för Timer1 jämför match.

8-bitars Timer2 modulen är programmerad att räkna 10ths av en sekund asynkront från systemet. När det räknas en 10: e sekund det avbryter och ökar 10 i ett andra värde.

16-bitars Timer1 modulen används för att gå ut i 5 sekunder när användaren trycker på knappen Display tid att se tiden. När denna Timer avbryter, det stänger av bildskärmen och ChronosMEGA återgår till sitt viloläge.

5.3. energisparfunktioner och viloläge

Ett stort mål var att göra ChronosMEGA så effektiv som möjligt, med stora 400mAh batteri, klockan har förmågan att pågå mycket länge på en enda laddning. Det avslutade projektet och ChronosMEGA drar en osjälvisk 4 microAmps i viloläget och beräknas till sista 11 år på en enda laddning.

ChronosMEGA spår fortfarande tid i nuläget sömn, vakna upp bara för att öka räknaren andra och knapptryckningar. Systemklockan stoppas helt, och endast Timer2 modulen med dess asynkron 32.768kHz kristall håller igång.

När användaren trycker på knappen "Sleep", programmet sätter en flagga och släcks LED-displayen. I Main slingan, kontrolleras sömn flagg och börjar sova preparat om det är 0x01. Nedan är de viktigaste loopen:


De sova registrerar ställs in innan huvudloop att gå in i "Energisparläge" läge genom att ange SM [2:0] bitar till 0b011. "Energisparläge" läge stänger av ATmega328P men tillåter Timer2 att hålla igång förutsatt att det är asynkron. Jämför match och externa avbryter kommer att vakna upp ATmega328P tillfälligt, för att serva rutinen avbrott och somna om så behövs.

5.4. emission av LED flimrar och jitter

Efter uppladdning det inledande programmet till ChronosMEGA, märkte jag några svagt flimmer i några av lamporna när de inte skulle vara på. Detta störde mig och jag kom till slutsatsen att det måste vara något fel med min programmering konventioner som orsakade problemet.

Källan till problemet upptäcktes när jag observerade stacken under simuleringar och märkte att min generella registren var inte vara sköt och dök från stacken, alltså skruva upp min bearbetning. Detta löstes genom att trycka register på stacken när en avbrottstjänstens rutin anropas, och poppar registren när rutinen är klar. Ett avbrott exempel visas nedan:


När funktionen "IncSec10" kallas, stacken visas som nedan:


Efter "IncSec10" är klar, är registren popped tillbaka av stacken att återställa sitt ursprungliga värde.
Se Steg
Relaterade Ämnen

Bygga/ändra ett armbandsur! En stor gåva eller bara för dig själv!

Trött på tråkiga kör mill handleden klockor? Gör en själv! Imponera på den speciellt någon eller göra en själv. Billigt och enkelt. Allt du behöver är en bruten eller arbetar armbandsur, en givare digital klocka och vissa kreativitet!Steg 1: Material...

Styra en Arduino med ett armbandsur (TI eZ430 Chronos)

klockanTexas Instruments eZ430 Chronos är en cool gadget. Det har dubbelriktad radiokommunikation och en hel massa sensorer: temperatur, tryck, acceleration.I själva verket är det ett development kit för MSP 430 (en lågenergi-mikrokontroller), som TI...

Anpassad, fungerande solur armbandsur TJT2/6

detta korrekt solur armbandsur är tid-resa verktyg 2 av 6. Herakleitos beskrivs som en flod rusande mot oss. 3D-skrivare fart uppför floden, men i vilken takt? Rätt tid verktyg hjälper oss att förstå och styra våra öden. De ansluter oss jorden och de...

Armbandsur pin kudde

det finns alltid tid för sömnad! Detta Instructable lär dig hur man gör en pin kudde som fäster till din handled med kardborre så du kan hålla din stift i närheten på alla gånger. För att göra det ännu roligare, vi gjorde den pin kudden så det ser ut...

Enda IN-2 Nixie rör armbandsur

För några år sedan jag upptäckte Nixies och köpte mig en 4 siffrig Nixie klocka, det dröjde inte länge innan jag ville också göra ett armbandsur med en Nixie.Efter en lång tid ute på internet för en enkel klocka design kom jag upp med den här sidan....

Taktisk ficklampa armbandsur

Ficklampa klockor är en cool, handsfree-sätt att ge ljus, men de kan vara ganska dyrt. Detta DIY ficklampa klocka är ett billigt och enkelt sätt att förvandla saker du måste ligga runt huset till en taktisk ficklampa klocka. I själva verket är denna...

Peacock armbandsur

jag kom över ett armbandsur med denna vackra peacock ratten. Köpte den; bort remmen tanke; spelade med några pärlor....

Steampunk armbandsur - The molnigt kamrat

vem idag vågar uppsättning av jakt på äventyr utan en bra klocka på honom? För dem som drömmer om dimmiga bergen, toppar outforskade, presenterar vi den grumlig kamrat, ett armbandsur robusta och praktiska.Kära kunder,Flytande redskap företag * prese...

Awesome väggklocka

Denna klocka kan göras i 5 minuter och ser fantastiskt!Steg 1: Den enda åtgärd Allt du behöver för detta projekt är ett armbandsur, en hårddisk tallrik, en hobbykniv och några tänger.Börja med att demontera klockan. Bryta av den lilla ratten på sidan...

Alien Optimus marionett

utlänningar frustande av människors kistor. Vem älskar inte 'em?Denna främmande * marionett gjordes ursprungligen som en del av min djupa "deep sea diver / alien offer" Halloween-kostym, men det var så tidskrävande att jag ansåg att det var ett...

Pocket Watch Vault

är du trött på att ha små föremål stulen för dig? Pocket Watch valvet är ett litet värdeskåp, komplett med nyckel, gömd inuti ett ordinarie fickur. Den kan lagra upp till storlek några staplade halv dollar och är oansenliga. Det är svårt att öppna me...

Överleva en EMP Apocolypse

Det talas om apocolypse, kollapsen av ekonomin, kärnvapenattack och även en zombie övertagande. Vad är inte omfattas av de flesta människor är hotet om en EMP attack. Finns det översta nivå människor i regeringen som varnar att nätet inte är att vara...

DIY kardborrband armband

Om du äger ett armbandsur med en läderrem, är chanserna du en dag kommer för att möta detta. Stinkande rem på grund av fukt och smuts uppbyggd. Nedan är en DIY ersättning rem kan du på mindre än 5 minuter med minimal verktyg och material.Steg 1: Mate...

Flygbolaget Travel Tips

min fru och jag oftast flyga Southwest Airlines inom landet, det vill säga inom gränsar av Förenta staterna. Detta är insidan av en Boeing 737 som southwesten använder uteslutande i sin flotta. (Fotot är från Bing bilder.)Om jag försöker att läsa, gi...

Misslyckande & framgångssaga av Arduino klocka

Jag beslutade att bygga en Arduino binära armbandsur. Jag vet ett armbandsur bör vara små i storlek som det är en bärbar projekt. För att valt jag utanpåliggande montering enhet (SMD) som SMD LED, TQFP Atmega IC och SMD motstånd. Som controller vald...

Steampunk Pocket-klocka

Hej allaBra saker måste inte alltid vara komplicerat:Lås på denna lilla steampunk gadget för fickan. Det var doe i två timmar (efter att få tanken ;-))Steg 1: Hur man gör: jag tog bara en gammal järn ärende som var i gamlatider en ficklampa. Men som...

Timer för offentliga tal

som pastor jag tala offentligt varje vecka. Jag behöver något att hålla mig medveten om förfluten tid samtidigt ge min predikan. Vad jag erbjuder här skulle hjälpa någon som måste tala inför en publik och ändå hålla sig inom tidsbegränsningen. Bilden...

Quidditch Diorama klockan

för Halloween gjorde jag ett diorama (klocka). Jag ville göra något i mindre skala med ett armbandsur. Det tog mig ett tag att fatta beslut om temat för diorama, men jag råkade titta på en Harry Potter film, när jag tänkte, vad sägs om quidditch. Så...

Gör en klocka!

Göra din egen awesome Polymer lera se!Jag kom upp med idén som jag satt ute på en kulle av lera undrar vad de ska göra-_-Jag ville ha något som skulle integrera teknik, vara användbar, och ändå ser cool som något aldrig sett innan att jag skulle verk...