A legegyszerűbb óra az avr

Úgy döntöttem, hogy összegyűjtöm az órámat szeretteim születésnapjára. Forrasztott a régi mikrohullámú tábla hét szegmensű mutatója egy vastagbél, és ment az interneten keresni egy áramkört és firmware egy egyszerű ismétlés.
Így néz át rajtam, egyik a másik nagy cikk leírja az órát egy csomó funkció, ébresztőóra, stopper, naptár és hőmérséklet-érzékelő és gondolkodni óra múlva kell csak megjeleníti az időt, és alig, hogy azok, lógni én falra , nem elég csak egy éjszakai fény. Tehát csak az idő függvényére van szükségem. Ezért a programot és a programot a lehető legnagyobb mértékben egyszerűsíteni kell.
Mindössze annyit kell tennünk, hogy a hét szegmensű kijelzőt dinamikus megjelenítési üzemmódban csatlakoztassuk, két gombot a órák és percek beállításához és az óra rendezéséhez.
Majdnem elfelejtettem! Szükség van a tartalék energiára, így amikor a főforrást leválasztják, az óra nem áll vissza, de a jelzés ki van kapcsolva, és a fogyasztás minimálisra csökken.
A rendszer a következő:
Közös-anód kijelző, anódot közvetlenül csatlakozik a C port mikokontrollera, szegmensek ellenállások tettem 220 Ohm, lehet még kevesebb több, éjjel nagyon fényes ragyogás (azaz kevesebb lehet, de nem kevesebb, mint 100 Ohm, akkor minden gyalog a port fogja betölteni 35mA maximum, és az adatlap 40mA lehet). Rossz számlálás. Többre van szükségünk. Sokkal többet ... 560 Ohmra cseréltem, és az áram nagyobb, mint az adatlap. De működik.
A Q1 tranzisztor egy feszültségérzékelő. A gombokhoz hasonlóan a külső megszakító vonalhoz van kapcsolva, az ATMega16-nak csak három van.
Az óra Asynchronous Timer2 módban kerül megszervezésre. Ebben az üzemmódban az időzítő 32768 Hz-es külső kvarcból érkezik, és nem áll le a mikrokontroller alvó üzemmódjában, amelyet akkor fogunk használni, amikor az órát egy biztonsági forrásból működtetjük.
Most nézzük meg a kódot:
A dinamikus jelzés a Timer0, az időzítő2 óra, az Int0 és az Int1 külső megszakítások gombjai, az Int2 külső megszakítás hatásfoka.
A fő hurokban csak az idő átváltása bináris tizedesre és hibernációra maradt, a Bin2BCD funkcióval kifejezetten csökkentett, mivel nem több, mint 100 perc és óra, tehát nincs értelme 10000, 1000 és 100 tesztelésére.
Maga az időfüggvény az AVR ApNote134-ből származott, és a kívánt méretre vágta.
Szerelés órában és percben először kerül a másodperc számláló megszakítás feldolgozását, aztán úgy döntött, hogy a következő lépést egy második - túl lassú, és elindult a felvezető a dinamikus kijelző, szedés empirikusan összegét túlfolyó korrekció időmérő normál sebességgel.
Először összeállítottam egy elrendezést a Pinboard2-ben:


Végtére szerzett, a boldogságra gyorsan elterjedt a zsebkendőjét, maratott, fúrt forrasztva, de amikor elkezdtem forrasztani vezetékek villogni, láttam, hogy miután a legutóbbi munkája a mega8, elfelejtette a legfontosabb dolog - PIN kód))). Fel kellett tennem a posztot.

Díjat tettek a LUT-tól. Először megpróbáltam a laminátort, de látszólag a hőmérséklet 170 fokos volt, nem volt elég, és minden rosszul ment. A régimódi vas is így volt. Ebben a fórumon először két lemezt vezettem a 1206 ellenállás alatt. Ahogy láthatja, rendben volt.
A fyuzah-ban meg kell állítani a belső RC-generátort 4 vagy 8 MHz-en, és tiltani kell a JTAG-ot.
Nos, mint általában, néhány fotót:



A mellékletben a forrás, a séma, a Proteus fájl a modellezéshez, a firmware.
UPD: a héjban tervezve:

A kapszulát az autó parfüméből vettük. Az indikátor alatt helyezzen egy antisztatikus tasakot egy rétegbe.
By the way, a paraméterek a feszültségellátás feszültség osztó a végén kiderült, hogy 39kΩ és 6.2kΩ.
END_UPD
+5V minden érintkezőhöz (jobb, mint INT) ellenálláson keresztül (tisztán védelem, 1-10k). Nem megbízható megoldás. Az AVR-tűnek kb. 1,5 V-os küszöbértékű TS-je van. Tudja, hogy ez fenyegeti? Az akkumulátor lemerülése.
Ha az áram meghibásodik, az 5V-os feszültség leesik
3V, majd a tápegység az akkumulátortól származik. Ugyanakkor a bemeneten lévő kondenzátor nagyon lassan kiürül a bemenetre beállított MK-érintkezőn keresztül (és jobb lenne, ha a merevítőt nem állították fel rajta). És vele együtt, és egy tartalék akkumulátorral.
Legalább egy ellenállásosztó vagy egy dummy terhelés a kapacitások leengedéséhez a vágási szint alatt (Ebben a sémában ezek egy osztó az alapáramkörben).
Még a megosztáson keresztül is a jelző csak egy vagy két másodperccel kikapcsol, miután kikapcsolta a külső áramellátást. Ezért gondoltam a komparátorra.
Elegendő a névleges értékek egy kicsit csökkentése. Mondja ki, hogy 4.7k + 1k. Akkor, ha eléri a 3 Volt a bázis lesz 0,5V és kevesebb, ami elég ahhoz, hogy kapcsolja ki a tranzisztort. A működési módban a bázison átfolyó áram nem használatos 1mA-ra, ezért nem érdemes aggódni. És az extra milliampere a BP-től nem annyira kritikus, mivel a háttérvilágítás jelentősen többet fogyaszt.
Általában a komparátor nem szükséges. Csak válassza ki az ellenállás értékét a megbízható leállításhoz 3V-nál (és a kívánt 4-3.5V-nál, azaz van hely).
Az egyetlen probléma, amit látok, amikor a háttérvilágítás ki van kapcsolva, a feszültség némiképp felemelkedett - újra bekapcsoljuk a háttérvilágítást - újra esett ... (a BP-ben, egy nagy kúp és a vezetékek nem ideálisak).
Először is, van egy hasonló küszöb. Másodszor, lehetséges (vagy inkább kellene) egy gyors kisülés a kondenzátorok, ha a készülék (pl ha a mutatók tápellátását a kulcs nem a teljesítmény IC, és a külső erő, hamar vyzhrut Conder és kialszik). Nos, a harmadik, akkor nem az ellenálláson keresztül, hanem az oszlopon keresztül, és felemeli a küszöböt bármely kívánt értékre.
Először is, van egy hasonló küszöb. Nem, most 1 V-ra van vágva, és az egy volt gyorsabb, mert már van egy kis kiáramlási áramkör az alapban levő osztó formájában (pontosabban még egy ellenállás és egy alapátalakulás).
Nos, a harmadik, akkor nem az ellenálláson keresztül, hanem az oszlopon keresztül, és felemeli a küszöböt bármely kívánt értékre. Elfelejtetted a MK csapok hiszterézisét. Annak érdekében, hogy a háttérvilágítás kikapcsolásához magasabb feszültségszint jöjjön létre, mi megtagadjuk a bekapcsolást, amikor az áramellátást alkalmazzuk.
A jelenlegi verzióban természetesen van egy "csörgés", és ez problémát jelenthet, de van is némi védelem is a nagyon történeti pina formájában. A kis ingadozásokat semlegesíteni kell, a nagyoktól kezdve a bekerülés késleltetése érdekében.
A tranzisztor nem felesleges :)
Nem, most már 1V-os vágás van. Az osztó 1: 1, a tranzisztor küszöbfeszültsége kb. 0,7V - ez körülbelül 1,4V. A terhelés (vagy a fő tápegység gyors kisütésének más terve) igen, azt értettem, de elfelejtettem.
Elfelejtetted a MK csapok hiszterézisét. Annak érdekében, hogy a háttérvilágítás kikapcsolásához magasabb feszültségszintet érjünk el, mi megtagadjuk a bekapcsolást, amikor a tápellátást alkalmazzuk. A hiszterézis, amennyire én emlékszem, nem olyan nagy, hogy megakadályozza a pólus megbízható kapcsolását, ha a feszültség 3V és 5V között változik.
Nos, nézzük meg. Számomra az ATtiny2313 adatlapja (ami az AVR-ben található kellemetlen szerelmi helyzetben van, a fügék találják meg, hogy ez szükséges).
Ennek megfelelően, ahhoz, hogy zéró szintet érjenek el, ha a tápegységben 3V-ot érünk el, akkor egy 0,9V-os feszültséget kell kapnunk a tűhöz alacsony szinten, ami legfeljebb 0,3Vcc lehet - akkor már nem tudsz írni többet :)
Ie függetlenül attól, hogy a partíció 0,3Vcc-os (maximális zérószint) alacsony szintre álljon, soha nem fogunk 0,6Vcc-ot (a legkisebb szintet egy egységben) ugyanazzal a megosztóval ellátni.
mi az avr kínos szerelmese, a füge megtalálja, amire szüksége van És ez az igazság. És a shita (bár előzetes) a mega16 szükséges adatok nem is (bár a varrás tini 13 én feltétlenül találtam őket).
De nem olyan olcsó. Ezek a követelmények a digitális jel logikai szintjeire vonatkoznak, itt a TS speciális paramétereivel foglalkozunk a tű bemenetén.
Az adatok az ATMEGA8A-hoz, ezek az adatok már léteznek. 26-37..26-39. Felső küszöbérték
2,2V, a hiszterézis 0,45V. Igaz, a tápfeszültséghez kötődnek (furcsa, és a 13-as apró 13-as datashit szerint nem tűnnek össze), ez már bonyolítja a feladatot. A 3V és 5V közötti különbség megkülönböztetéséhez az osztót zener diódától 2V-ig és egy ellenállásból kell készíteni. Nos, vagy zavarba ejtse a külső erő gyors felszabadulása, és ne zavarjon megkülönböztetni a 3B és az 5V között általában (a sobsna, most a tranzisztor ellenére).
Úgy nézek ki, és hajlamosabb vagyok a komparátorra nézve, úgy tűnik, a használata egyszerre kiküszöböli ezeket a problémákat. Igaz, mindent meg kell változtatnia, és a díjat és a programot ... És már elkezdtem egy másik érdekes projektet. Eddig igen.