DS3231 – իրական ժամանակի ժամացույցի միացում: Ժամացույց DS3231 և AVR միկրոկոնտրոլեր SDA և SCL կապում տարբեր Arduino տախտակների վրա

DS3231 չիպը բարձր ճշգրտության RTC իրական ժամանակի ժամացույց է, որն ունի ներկառուցված ջերմաստիճանով փոխհատուցվող քվարց տատանվող, որի արդյունքում ժամանակի շեղում է կազմում տարեկան ընդամենը ±2 րոպե: Բացի այդ, իրականացվում է ազդանշանային ֆունկցիա, և կա նաև ընդհատման ելք: Ժամացույցը կարելի է ձեռք բերել որպես պատրաստի Arduino մոդուլ՝ ամրացնող տարրերով և մարտկոցի խցիկով։

Ես պատվիրեցի մոդուլը այստեղ: Դիագրամը ներկայացված է ստորև նկարում.


Միկրոշրջանն օգտագործում է լայնորեն կիրառվող . Աջակցում է ստանդարտ (100 կՀց) և բարձր (400 կՀց) տվյալների արագությանը: I2C ավտոբուսի միկրոսխեմայի հասցեն (7 բիթ) 1101000 է: Բացի այդ, մոդուլն ունի I2C հիշողություն (24C32), որը ցույց չի տրված դիագրամում:

Էլեկտրաէներգիայի ռեժիմներ

Միկրոշրջանի սնուցման լարումը կարող է լինել 2,3...5,5 Վ-ի սահմաններում, կա երկու հոսանքի գիծ՝ արտաքին աղբյուրի (Vcc line), ինչպես նաև մարտկոցի (Vbat) համար։ Արտաքին աղբյուրի լարումը մշտապես վերահսկվում է, և երբ այն իջնում ​​է Vpf=2.5V շեմից ցածր, այն անցնում է մարտկոցի գծին: Հետևյալ աղյուսակը ցույց է տալիս էլեկտրահաղորդման գծերի միջև անցման պայմանները.

Ժամացույցի ճշգրտությունը պահպանվում է շրջակա միջավայրի ջերմաստիճանի մոնիտորինգի միջոցով: Միկրոշրջանն սկսում է ժամացույցի գեներատորի հաճախականությունը կարգավորելու ներքին ընթացակարգը, ճշգրտման չափը որոշվում է հաճախականության և ջերմաստիճանի հատուկ գրաֆիկի միջոցով: Գործընթացը սկսվում է հոսանքի միացումից հետո, այնուհետև կատարվում է յուրաքանչյուր 64 վայրկյանը մեկ:

Լիցքավորումը պահպանելու համար, երբ մարտկոցը միացված է (լարումը կիրառվում է Vbat գծի վրա), ժամացույցի գեներատորը չի գործարկվում այնքան ժամանակ, քանի դեռ Vcc գծի լարումը չի գերազանցում Vpf շեմային արժեքը, կամ միկրոշրջանի ճիշտ հասցեն չի փոխանցվում միջոցով: I2C ինտերֆեյսը: Ժամացույցի գեներատորի գործարկման ժամանակը մեկ վայրկյանից պակաս է: Էլեկտրաէներգիայի կիրառումից (Vcc) կամ հասցեն I2C ինտերֆեյսի միջոցով ստացվելուց մոտավորապես 2 վայրկյան հետո սկսվում է հաճախականության ուղղման ընթացակարգը: Ժամացույցի գեներատորը սկսելուց հետո այն շարունակում է աշխատել այնքան ժամանակ, քանի դեռ առկա է Vcc կամ Vbat: Երբ առաջին անգամ միացված է, ամսաթվի և ժամի գրանցամատյանները վերակայվում են և ունեն հետևյալ արժեքները՝ 01/01/00 – 01 – 00/00/00 (օր/ամիս/տարի/ – շաբաթվա օր – ժամ/րոպե / վայրկյան):

Ընթացիկ սպառումը, երբ սնուցվում է 3,63 Վ մարտկոցով, կազմում է 3 µA, I2C ինտերֆեյսի միջոցով տվյալների փոխանցման բացակայության դեպքում: Առավելագույն հոսանքի սպառումը կարող է հասնել 300 µA-ի, երբ օգտագործում եք արտաքին 5,5 Վ սնուցման աղբյուր և տվյալների փոխանցման բարձր I2C արագություն:

Արտաքին վերակայման գործառույթ

RST գիծը կարող է օգտագործվել արտաքին վերակայման համար և ունի նաև ցածր լարման ազդանշանային ֆունկցիա: Գիծը բարձր է քաշվում ներքին ռեզիստորի միջոցով, արտաքին ձգում չի պահանջվում: Արտաքին վերակայման գործառույթն օգտագործելու համար RST գծի և ընդհանուր լարերի միջև կարելի է միացնել կոճակ, միկրոսխեման ունի կոնտակտային ցատկումից պաշտպանություն: Տագնապի ֆունկցիան ակտիվանում է, երբ մատակարարման լարումը Vcc իջնում ​​է Vpf շեմային արժեքից ցածր, մինչդեռ RST գիծը սահմանվում է ցածր տրամաբանական մակարդակի:

DS3231 ռեգիստրների նկարագրությունը

Ստորև բերված աղյուսակը ցույց է տալիս իրական ժամանակի ժամացույցի ռեգիստրների ցանկը.

ՀասցեD7D6D5D4D3D2D1D0ԳործառույթՍահմանափակումներ
0x000 10 վայրկյանՎայրկյաններՎայրկյաններ00-59
0x010 10 րոպերոպերոպե00-59
0x020 12/24 AM/PM10 ժամԺամԴիտեք1-12 + AM/PM կամ 00-23
10 ժամ
0x030 0 0 0 0 ՕրՇաբաթվա օր1-7
0x040 0 10-րդԹիվամսաթիվը01-31
0x05դար0 0 10 ամիսԱմիսԱմիսներ/դար01-12 + Դար
0x0610 տարիՏարիՏարիներ00-99
0x07A1M110 վայրկյանՎայրկյաններՎայրկյաններ, 1-ին ահազանգ00-59
0x08A1M210 րոպերոպեՐոպե, 1-ին ահազանգ00-59
0x09A1M312/24 AM/PM10 ժամԺամԺամացույց, 1-ին զարթուցիչ1-12 + AM/PM կամ 00-23
10 ժամ
0x0AA1M4DY/DT10-րդՕրՇաբաթվա օր, 1-ին ահազանգ1-7
ԹիվԱմսաթիվ, 1-ին ահազանգ01-31
0x0BA2M210 րոպերոպեՐոպե, 2-րդ ահազանգ00-59
0x0CA2M312/24 AM/PM10 ժամԺամԺամացույց, 2-րդ զարթուցիչ1-12 + AM/PM կամ 00-23
10 ժամ
0x0DA2M4DY/DT10-րդՕրՇաբաթվա օր, 2-րդ ահազանգ1-7
ԹիվԱմսաթիվ, 2-րդ ահազանգ01-31
0x0EEOSCBBSQWCONVRS2RS1INTCNA2IEA1IEԿարգավորումների ռեգիստր (Control)
0x0FՕ.Ս.Ֆ.0 0 0 EN32 կՀցBSYA2FA1FԿարգավիճակի գրանցում
0x10ՆՇԱՆՏՎՅԱԼՆԵՐՏՎՅԱԼՆԵՐՏՎՅԱԼՆԵՐՏՎՅԱԼՆԵՐՏՎՅԱԼՆԵՐՏՎՅԱԼՆԵՐՏՎՅԱԼՆԵՐԾերացման օֆսեթ ռեգիստր
0x11ՆՇԱՆՏՎՅԱԼՆԵՐՏՎՅԱԼՆԵՐՏՎՅԱԼՆԵՐՏՎՅԱԼՆԵՐՏՎՅԱԼՆԵՐՏՎՅԱԼՆԵՐՏՎՅԱԼՆԵՐՋերմաստիճանի ռեգիստր, բարձր բայթ
0x12ՏՎՅԱԼՆԵՐՏՎՅԱԼՆԵՐ0 0 0 0 0 0 Ջերմաստիճանի ռեգիստր, ցածր բայթ

Ժամանակի մասին տեղեկատվությունը պահվում է երկուական տասնորդական ձևաչափով, այսինքն՝ տասնորդական թվի յուրաքանչյուր նիշ (0-ից մինչև 9) ներկայացված է որպես 4 բիթանոց խումբ: Մեկ բայթի դեպքում ցածր խայթոցը հաշվում է մեկը, բարձր խայթոցը հաշվում է տասնյակ և այլն: Ժամանակը հաշվվում է 0x00-0x06 հասցեներով ռեգիստրներում, ժամերի հաշվման համար կարող եք ընտրել 12 կամ 24 ժամ ռեժիմը: Ժամացույցի ռեգիստրի 6-րդ բիթը սահմանելով (հասցե 0x02) սահմանում է 12-ժամյա ռեժիմ, որում 5-րդ բիթը ցույց է տալիս օրվա ժամը, 1 արժեքը համապատասխանում է կեսօրին (PM), 0 արժեքը՝ կեսօրին (AM): 6-րդ բիտի զրոյական արժեքը համապատասխանում է 24-ժամյա ռեժիմին, այստեղ 5-րդ բիթը ներգրավված է ժամերի հաշվման մեջ (20-23 արժեքներ):

Շաբաթվա օրվա ռեգիստրը ավելանում է կեսգիշերին՝ հաշվելով 1-ից 7-ը, ամսվա ռեգիստրը (հասցե 0x05) պարունակում է Century bit (7-րդ բիթ), որը փոխվում է, երբ տարիների հաշվառման ռեգիստրը (հասցե 0x06) հորդում է 99-ից մինչև 00: .

DS3231 չիպն իրականացնում է երկու զարթուցիչ, 1-ին զարթուցիչը կազմաձևված է ռեգիստրների միջոցով՝ 0x07-0x0A հասցեներով, 2-րդ զարթուցիչը կազմաձևված է 0x0B-0x0D ռեգիստրների միջոցով: A1Mx և A2Mx բիթերը կարող են օգտագործվել ահազանգերի տարբեր ռեժիմներ կարգավորելու համար, բիթը սահմանելը բացառում է համապատասխան ռեգիստրը համեմատական ​​գործողությունից: Ստորև բերված աղյուսակները ցույց են տալիս բիթերի համակցությունները տարբեր ազդանշանային ռեժիմների համար.

Աղյուսակներում չնշված բիթերի համակցությունները հանգեցնում են ահազանգերի սխալ աշխատանքի: Եթե ​​DY/DT բիթը ջնջված է, ապա ամսաթվի համընկնումը (ամսվա օրը) վերահսկվում է զարթուցիչի համար, երբ DY/DT բիթը սահմանվում է, ստուգվում է շաբաթվա օրվա համապատասխանությունը:

Գործառույթների մեծ մասը կազմաձևված է Control ռեգիստրում: EOSC բիթը վերահսկում է ժամացույցի գեներատորի մեկնարկը, բիթը զրոյացնելով՝ գործարկում է ժամացույցի գեներատորը: Բիթի կարգավորումը դադարեցնում է գեներատորը միայն մարտկոցի ռեժիմի համար (Vbat): Երբ սնուցվում է արտաքին աղբյուրից (Vcc), տատանվողը միշտ աշխատում է անկախ EOSC-ի բիտի վիճակից: Երբ միացված է, բիթերի կանխադրված արժեքը 0 է:

BBSQW բիթի կարգավորումը թույլ է տալիս INT/SQW ելքին (3-րդ փին) աշխատել մարտկոցի էներգիայի ռեժիմում, արտաքին հոսանքի բացակայության դեպքում: Երբ բիթը սահմանվում է զրոյի, INT/SQW ելքը անցնում է 3-րդ վիճակին (անջատված), եթե արտաքին աղբյուրի Vcc լարումը ընկնում է Vpf շեմային արժեքից ցածր: Հոսանքի կիրառումից հետո բիթերի կանխադրված արժեքը 0 է:

CONV բիթը պատասխանատու է հարկադիր ջերմաստիճանի չափման համար, բիթը դնելով սկսվում է փոխակերպման գործընթացը, որի ընթացքում կարգավորվում է նաև ժամացույցի գեներատորի հաճախականությունը, չափման արդյունքը գտնվում է 0x11, 0x12 հասցեներով գրանցամատյաններում: Սկսելը հնարավոր է միայն այն դեպքում, եթե նախորդ փոխարկումն ավարտված է, նախքան սկսելը, դուք պետք է ստուգեք զբաղված դրոշը BSY: Ջերմաստիճանի հարկադիր փոխակերպումը չի ազդում ներքին 64 վայրկյան հաճախականության ճշգրտման ցիկլի վրա: CONV բիթը սահմանելը չի ​​ազդում BSY դրոշի վրա 2 ms. CONV և BSY բիթերը ավտոմատ կերպով մաքրվում են փոխակերպման ավարտից հետո:

RS2, RS1 բիթերը սահմանում են ուղղանկյուն իմպուլսների հաճախականությունը (քառակուսի ալիք) INT/SQW ելքի վրա: Լռելյայնորեն, երբ միացված է, բիթերը սահմանվում են 1: Ստորև բերված աղյուսակը ցույց է տալիս բիթերի հնարավոր համակցությունները.

INTCN բիթը վերահսկում է INT/SQW ելքը: Եթե ​​բիթը զրոյացված է, ելքի վրա հայտնվում են ուղղանկյուն իմպուլսներ (քառակուսի ալիքներ), որոնց հաճախականությունը սահմանվում է RS2, RS1 բիթերով։ Երբ INTCN բիթը սահմանված է, ելքը օգտագործվում է տագնապի ընդհատումներ առաջացնելու համար: Լռելյայնորեն, բիթային արժեքը 1 է: Ելքի տեսակը INT/SQW է` բաց արտահոսք, հետևաբար անհրաժեշտ է այն դիմադրողի միջով քաշել մինչև բարձր տրամաբանական մակարդակ, ակտիվ մակարդակը ցածր է:

A1IE, A2IE բիթերի կարգավորումը հնարավորություն է տալիս ընդհատումներ կատարել համապատասխանաբար 1-ին և 2-րդ տագնապի ազդանշանների վրա: Վերակայել բիթերը, անջատել ընդհատումները: Նախնական արժեքը 0 է:

Կարգավիճակի ռեգիստրը պարունակում է իրադարձությունների դրոշակներ և վերահսկում է 32 կՀց ելքը: OSF դրոշը արտացոլում է ժամացույցի գեներատորի վիճակը, 1 արժեքը նշանակում է, որ ժամացույցի գեներատորը դադարեցված է, այս իրադարձությունը կարող է տեղի ունենալ հետևյալ դեպքերում.

  • Էլեկտրաէներգիայի կիրառումից հետո առաջին անգամ
  • Մարտկոցը կամ արտաքին լարումը բավարար չէ ժամացույցի գեներատորը գործարկելու համար
  • Գեներատորն անջատվում է՝ EOSC բիթը մարտկոցի ռեժիմում դնելով
  • Բյուրեղային տատանումների վրա ազդող արտաքին գործոններ (աղմուկ, արտահոսք և այլն)

Սահմանվելուց հետո բիթային արժեքը չի փոխվում, բիթը պետք է վերականգնվի ձեռքով:

EN32kHz բիթի կարգավորումը թույլ է տալիս ստեղծել ուղղանկյուն իմպուլսներ (քառակուսի ալիքներ) 32 կՀց ելքի վրա (1-ին պինդ), իմպուլսի հաճախականությունը ֆիքսված է և հավասար է 32,768 կՀց: Բիթը վերականգնելը անջատում է այս ֆունկցիան և ելքը տեղափոխում է 3-րդ վիճակ (բարձր մուտքային դիմադրություն): Լռելյայնորեն, բիթային արժեքը 1 է, հոսանքի կիրառումից հետո իմպուլսները հայտնվում են ելքի վրա: Ելքի տեսակը 32 կՀց բաց արտահոսք է, ուստի այն պահանջում է ձգում մինչև բարձր տրամաբանական մակարդակ:

BSY զբաղված դրոշը սահմանվում է ջերմաստիճանի փոխարկման և ժամացույցի ճշգրտման գործընթացում: Դրոշը զրոյացվում է, երբ փոխակերպումն ավարտված է:

Զարթուցիչի դրոշակները A1F, A2F սահմանվում են, երբ ժամանակի հաշվառման գրանցամատյանների և զարթուցիչի ռեգիստրների արժեքները համընկնում են: Եթե ​​ահազանգը ընդհատում է A1IE, A2IE-ը միացված է, և նշանակվում է ընդհատման ելք (INTCN բիթը սահմանված է), ապա INT/SQW ելքում հայտնվում է ընդհատման ազդանշան (անցում բարձր տրամաբանական մակարդակից ցածր): Դրոշները պետք է զրոյականացվեն ձեռքով` գրելով 0 արժեքը:

Ծերացման օֆսեթ ռեգիստրը նախատեսված է ժամացույցի գեներատորի հաճախականությունը կարգավորելու համար: Ռեգիստրի արժեքը ավելացվում է տատանվող հաճախականությանը ներքին ճշգրտման ընթացակարգի ընթացքում, եթե հայտնաբերվում է ջերմաստիճանի փոփոխություն, ինչպես նաև, երբ ջերմաստիճանի փոխարկումը հրահրվում է CONV բիթով: Օֆսեթ արժեքը ստորագրված է, այսինքն, դրական արժեքները (1-127) նվազեցնում են հաճախականությունը, բացասական արժեքները (128-255) մեծացնում են այն: Նույն օֆսեթի դեպքում հաճախականության փոփոխությունը տարբեր կլինի՝ կախված ջերմաստիճանից: +25°C-ի դեպքում հաճախականության փոփոխությունը կկազմի 0.1 ppm/LSB:

Ընթացիկ ջերմաստիճանի արժեքը պահվում է 0x11 և 0x12 հասցեներով ռեգիստրներում, համապատասխանաբար բարձր և ցածր բայթը, ռեգիստրներում ջերմաստիճանի արժեքը պարբերաբար թարմացվում է: Ձախ հավասարեցումը դրված է, լուծաչափը 10 բիթ է կամ 0,25°C/LSB, այսինքն՝ բարձր բայթը պարունակում է ջերմաստիճանի ամբողջ մասը, իսկ ցածր ռեգիստրների 6-րդ, 7-րդ բիթերը կազմում են կոտորակային մասը։ Բարձր բայթում 7-րդ բիթը ցույց է տալիս ջերմաստիճանի նշանը, օրինակ՝ 00011011 01 արժեքը համապատասխանում է +27,25 °C ջերմաստիճանի, 11111110 10 արժեքը համապատասխանում է -2,5 °C ջերմաստիճանի։

Ժամանակի ռեգիստրները կարդալիս խորհուրդ է տրվում օգտագործել լրացուցիչ բուֆեր, այսինքն՝ կարդալ միանգամից մի քանի ռեգիստր, և ոչ առանձին, քանի որ անհատական ​​ընթերցման գործողությունների միջև ժամանակի գրանցամատյանները կարող են փոխել իրենց արժեքը: Այս կանոնը խորհուրդ է տրվում պահպանել նաև հաշվի ռեգիստրներում նոր տվյալներ գրելիս: Վայրկյանների ռեգիստրում նոր արժեք գրելը ժամացույցը դադարեցնում է 1 վայրկյանով, մնացած ռեգիստրները պետք է վերագրվեն այս ընթացքում:

DS3231-ի միացում միկրոկառավարիչին

Ես միացրի ժամացույցը PIC16F628A միկրոկառավարիչին և օգտագործեցի: Միացման դիագրամը ներկայացված է ստորև.


Հոսանքը միացնելուց հետո ցուցիչների վրա ցուցադրվում են գծիկներ (––––––), այնուհետև ժամացույցը սկզբնավորվում է, ժամանակի արժեքը ցուցիչների վրա հայտնվում է 1 վայրկյան ուշացումով, որը պահանջվում է ժամացույցի գեներատորը գործարկելու համար։ Ցուցանիշները ցույց են տալիս ժամերը, րոպեները և վայրկյանները՝ բաժանված տասնորդական կետով, իսկ ժամանակի ձևաչափը 24 ժամ է: Օգտագործելով SB1 «Ցուցում» կոճակը, կարող եք փոխել ցուցադրման ձևաչափը, որտեղ ցուցիչները կցուցադրեն ջերմաստիճանը, ինչպես նաև ժամերի և րոպեների արժեքը՝ բաժանված տասնորդական կետով, որը թարթում է 2 Հց հաճախականությամբ: Ջերմաստիճանը ցուցադրվում է առանց կոտորակային մասի, ծրագիրը կարդում է միայն ջերմաստիճանի պահպանման բարձր բայթը 0x11 հասցեում:

Ժամանակի արժեքը կարդացվում է ժամացույցից SQW/INT գծի ընդհատման միջոցով, որը կառավարվում է 1-ին տագնապի ազդանշանով, ժամացույցի սկզբնավորման ժամանակ զարթուցիչը դրվում է յուրաքանչյուր երկրորդ ազդանշանի վրա: HL1 LED-ը ծառայում է որպես ցուցիչ և թարթում է ընդհատման ազդանշանի ժամանակ ամեն վայրկյան: HL2 LED-ը վառվում է, եթե I2C ինտերֆեյսի միջոցով տվյալների փոխանցման ժամանակ սխալ կա:

Բացի այդ, ես ծրագրին ավելացրի ժամացույցը կարգավորելու հնարավորությունը, օգտագործելով SB2 «Կարգավորումներ», SB3 «Տեղադրում» կոճակները: Կարգավորման ռեժիմը մուտքագրվում է՝ սեղմելով SB2 կոճակը, ցուցիչները րոպեների և վայրկյանների փոխարեն ցույց են տալիս 00 ժամ և գծիկներ (00 – – – –): Օգտագործելով SB3 կոճակը, դուք սահմանում եք ժամի արժեքը (ավելացում յուրաքանչյուր սեղմումով), այնուհետև սեղմելով SB2 կոճակը փոխվում է րոպեների խմբագրման, գծիկի փոխարեն կցուցադրվի 00 րոպե: SB3 կոճակը նաև սահմանում է պահանջվող արժեքը և այլն: Վայրկյանները խմբագրելուց և SB2 կոճակը սեղմելուց հետո ժամացույցի ժամանակը վերագրվում է, իսկ թարմացված ժամանակը ցուցադրվում է ցուցիչների վրա:

Ծրագրի մասնակի կոդը տրված է ստորև (ամբողջական տարբերակը կարելի է ներբեռնել հոդվածի վերջում).

;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;; ; #ներառում ՑԱՆԿ p=16F628A __CONFIG H"3F10" ;Միկրոկառավարիչի կազմաձևման սխալ մակարդակ -302 ;չցուցադրել 302 սխալով հաղորդագրությունները Sec equ 0020h ;օժանդակ հաշվի ռեգիստրներ Sec1 equ 0021h ; Sec2 equ 0022h; scetbit equ 0024h;օժանդակ ռեգիստր՝ հաշվելու բիթերի քանակը perem equ 0025h;օժանդակ ռեգիստր բայթերի ընդունման/հաղորդման համար spi-ի միջոցով, i2c temp equ 0026h;ջերմաստիճանի ռեգիստր perem_1 equ 0027h;օժանդակ ռեգիստր երկուական-deci փոխարկիչի համար: արդյունքը հավասար է 0028h ;երկու-տասնորդական փոխարկիչի օժանդակ ռեգիստր dat_ind equ 0029h ;տվյալների ռեգիստր spi արձանագրության միջոցով փոխանցման համար adr_ind equ 002Ah ;սպի արձանագրության միջոցով փոխանցման հասցեի ռեգիստր երկրորդ equ 002Bh ;վայրկյանների պահպանման ռեգիստր՝ ժամանակի րոպեի հավասարումը կարգավորելու համար ;րոպե պահման ռեգիստրը equ 0 ժամանակի սահմանման համար ժամային պահեստային ռեգիստր ժամանակի կարգավորումների համար adr_i2c equ 002Eh ;i2c ինտերֆեյսի տվյալների փոխանցման ենթածրագրի գրանցիչներ tmp_i2c equ 002Fh slave_adr equ 0030h data_i2c equ 0031h դրոշ equ 007Fh ;դրոշակագիր NT3 գիծը #DEBQ, նոտ 3 գիծը #DEBQ, ՍԱՀՄԱՆԵԼ sda PORTB ,1 ;տող SDA միացումների համար DS3231 #DEFINE scl PORTB,2 ;SCL գիծ DS3231 միացնելու համար #DEFINE sda_io TRISB,1 ;SDA գծի ուղղություն #DEFINE scl_io TRISB,2 ;SCL գծի ուղղություն #DEFINE data. ;MAX7219 վարորդի տվյալների մուտքագրման գիծ #DEFINE cs PORTB ,6 ;վարորդի ընտրության տող MAX7219 #DEFINE clk PORTB,7 ;վարորդի ժամացույցի գիծ MAX7219 #DEFINE led PORTB,4 ;i2c սխալ LED #DEFINE led_c PORTB ցուցիչ, առաջընթաց 3 LED 1Hz #DEFINE regim PORTA,2 ;Ցուցման կոճակ - փոփոխում է ցուցադրման ռեժիմը #DEFINE nast PORTA,3 ;Կարգավորման կոճակ - մտնում է ժամանակի կարգավորման ռեժիմ #DEFINE ust PORTA,4 ;Կարգավորման կոճակ - ժամացույցի արժեքի կարգավորում;;;;; ;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;; org 0000h ;սկսել ծրագրի կատարումը 0000h հասցեից goto Start ;անցել Start label ;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;; ;Հիմնական ծրագիրը Start movlw b"00000000" ;սահմանելով A նավահանգստի ելքային սողնակների արժեքները movwf PORTA; movlw b"01000000"; սահմանել B պորտի ելքային սողնակների արժեքները movwf PORTB; movlw b"00000111" ;անջատել համեմատիչները movwf CMCON ; bsf STATUS,RP0 ;ընտրեք 1-ին բանկ movlw b"00000111" ;կարգավորեք B պորտի մուտքային/ելքային գծերը movwf TRISB ;RB0-RB2 - մուտքագրման համար, մնացածը ելքի movlw b"11111111"; կարգավորեք մուտքային/ A movwf TRISA նավահանգստի ելքային գծեր ;բոլոր տողերը մուտքագրելու համար bcf STATUS,RP0 ;ընտրեք բանկը 0 clrf դրոշ ;վերակայել դրոշակակիր գրանցամատյանը կանչել init_lcd ;զանգահարել վարորդի սկզբնավորման ենթածրագրը (MAX7219) կանչել viv_not ;ելքի գծիկ նշանները " ----- " ;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;; movlw b"11010000" ;սարքի հասցեն (DS3231) movwf slave_adr ;գրեք 4 բայթ ընդունման/փոխանցման գրանցամատյաններին i2c-ի միջոցով;այստեղ կազմաձևված է 1-ին ահազանգը, որը հնչում է ամեն վայրկյան movlw data_i2c ;սահմանել առաջին ընդունման/փոխանցման ռեգիստրը via ; movlw b"10000000" ;տվյալներ 1-ին ահազանգի վայրկյանների ռեգիստրի համար movwf INDF; incf FSR,F; movlw b"10000000" ;1-ին ահազանգի րոպեների ռեգիստրի տվյալները movwf INDF; incf FSR,F; movlw b"10000000" ;տվյալներ 1-ին զարթուցիչի ժամացույցի ռեգիստրի համար movwf INDF; incf FSR,F; movlw b"10000000" ;տվյալներ 1-ին ահազանգի movwf INDF-ի ամսաթվի/օրվա ռեգիստրի համար; movlw. 4 ;փոխանցել 4 բայթ i2c movwf tmp_i2c միջոցով ; movlw 0x07 ;1-ին զարթուցիչի վայրկյանների ռեգիստրի հասցեն սահմանելը movwf adr_i2c ; զանգել write_i2c ;գրելու ենթածրագրի կանչը i2c ինտերֆեյսի միջոցով զանգահարել err_prov ;ստուգել I2C գրելու/ընթերցելու սխալները movlw .1 ;1-ին բայթի փոխանցում i2c movwf tmp_i2c ; movlw 0x0E ;կարգավորող ռեգիստրի հասցեն movwf adr_i2c ; movlw data_i2c ;առաջին փոխանցման/ստացման ռեգիստրի կարգավորում i2c movwf FSR-ի միջոցով; movlw b"00000101" ;գործարկել ժամացույցի գեներատորը, արգելել INT/SQW փին աշխատանքը movwf INDF-ի համար; մարտկոցի սնուցման ռեժիմ, զարկերակային հաճախականությունը INT/SQW ելքում 1Հց է, INT/SQW ելքը օգտագործվում է ահազանգ ստեղծելու համար: ժամացույցի ընդհատումներ, ;միացնել զարթուցիչի ընդհատումները 1-ին զարթուցիչի զանգ write_i2c ;ձայնագրման ենթածրագրի կանչում i2c ինտերֆեյսի միջոցով զանգահարել err_prov ;ստուգում I2C գրելու/ընթերցման սխալները met_2 movlw .1 ;1-ին բայթի փոխանցում i2c_ movwft-ի միջոցով ; movlw 0x0F ;կարգավիճակի ռեգիստրի հասցեն սահմանելը movwf adr_i2c ; movlw data_i2c ;առաջին փոխանցման/ստացման ռեգիստրի կարգավորում i2c movwf FSR-ի միջոցով; movlw b"00000000" ;վերակայել OSF-ի բիթը, արգելել իմպուլսների ստեղծումը EN32kHz ելքի վրա, movwf INDF ;վերակայել ահազանգի ընդհատման դրոշները A2F, A1F զանգահարել write_i2c ;կանչել ձայնագրման ենթակարգը I_2C ինտերֆեյսի միջոցով զանգահարել err /կարդալու սխալներ met_1 btfsc int, տագնապի ընդհատման տողով հարցումը goto met_3; bsf led_sec ;միացնել ժամացույցի առաջընթացի ցուցիչը LED goto met_4 ; met_3 bcf led_sec ;անջատում է ժամացույցի առաջընթացի ցուցիչը LED btfsc nast ;հարցում է ժամացույցի կարգավորումների կոճակը goto met_5 ; զանգահարեք nast_time ;զանգահարեք ենթածրագրին `ժամը սահմանելու համար goto met_2 ; met_5 btfsc regim ;ցուցադրման ռեժիմի կոճակի հարցումը goto met_1 ; met_6 զանգ paus_knp; btfss ռեժիմ; goto met_6; btfss flag,2 ;փոխել ցուցման ռեժիմի դրոշի արժեքը goto met_7 ; bcf flag,2 ;վերակայել ցուցիչի դրոշը, ժամացույցի ցուցադրման ռեժիմը goto met_1 ; met_7 bsf flag,2 ;ցուցանիշի դրոշի, ջերմաստիճանի և ժամացույցի ցուցադրման ռեժիմի կարգավորումը goto met_1 ; met_4 movlw .1 ;1-ին բայթի փոխանցում i2c movwf tmp_i2c միջոցով; movlw 0x11 ;բարձր ջերմաստիճանի ռեգիստրի հասցեն սահմանելը movwf adr_i2c ; զանգել read_i2c ;Կանչել ընթերցման ենթակարգը I2C-ի միջոցով զանգահարել err_prov ;ստուգել I2C գրելու/ընթերցման սխալները movf INDF,W ;ջերմաստիճանի արժեքը պատճենել ջերմաստիճանի գրանցամատյանում movwf temp rd_time movlw .3 ;3 բայթ փոխանցել i2c movwf-ի միջոցով ; movlw 0x00 ;վայրկյանների գրանցման հասցեի կարգավորում movwf adr_i2c ; զանգահարել read_i2c ;Կանչել ընթերցման ենթածրագրը I2C-ի միջոցով զանգահարել err_prov ;ստուգել I2C գրելու/ընթերցելու սխալները btfsc դրոշ,2 ;ցուցադրման ռեժիմի դրոշի հարցում goto met_8 ; զանգահարել vivod ;զանգել ենթածրագրը՝ թվային էկրանի վրա ժամացույցի արժեքը ցուցադրելու համար goto met_2 ; met_8 զանգահարեք vivod_temp ;ջերմաստիճանը և ժամացույցը թվային էկրանին ցուցադրելու ենթածրագրին կանչելը goto met_2 ;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

#ներառում

CONFIG H"3F10" ;Միկրոկառավարիչի կոնֆիգուրացիա

errorlevel -302 ;ցուցակում չցուցադրել 302 սխալի հաղորդագրություններ

Sec equ 0020h ;օժանդակ հաշվի ռեգիստրներ

Sec1 equ 0021h;

Sec2 equ 0022h;

scetbit equ 0024h; հաշվում է բիթերի օժանդակ ռեգիստրի քանակը

perem equ 0025h ;օժանդակ բայթերի ընդունման/փոխանցման ռեգիստր spi, i2c-ի միջոցով

ջերմաստիճանի հավասարում 0026h;ջերմաստիճանի ռեգիստր

perem_1 equ 0027h ;BCD օժանդակ ռեգիստր

արդյունքը հավասար է 0028h ;երկու-տասնորդական փոխարկիչի օժանդակ ռեգիստր

dat_ind equ 0029h ;տվյալների ռեգիստր spi արձանագրության միջոցով փոխանցման համար

adr_ind equ 002Ah ;հասցեների գրանցում spi արձանագրության միջոցով փոխանցման համար

երկրորդ հավասարումը 002Bh ;վայրկյանների պահպանման ռեգիստր՝ ժամանակը սահմանելու համար

minut equ 002Ch ;րոպե պահման ռեգիստր՝ ժամանակը սահմանելու համար

ժամ հավասարաչափ 002Dh ;ժամային պահեստային ռեգիստր՝ ժամանակը սահմանելու համար

adr_i2c equ 002Eh ;i2c ինտերֆեյսի տվյալների փոխանցման ենթածրագրի գրանցումներ

tmp_i2c equ 002Fh

slave_adr equ 0030h

data_i2c equ 0031h

դրոշի հավասարում 007Fh; դրոշի ռեգիստր

#ՍԱՀՄԱՆԵԼ int PORTB,0 ;ընդհատվող գիծ INT/SQW DS3231

#DEFINE sda PORTB,1 ;SDA գիծ DS3231-ը միացնելու համար

#DEFINE scl PORTB,2 ;SCL գիծ DS3231-ը միացնելու համար

#DEFINE datai PORTB,5 ;MAX7219 վարորդի տվյալների մուտքագրման գիծ

#DEFINE cs PORTB,6 ;վարորդի ընտրության տող MAX7219

#DEFINE clk PORTB,7; MAX7219 վարորդի ժամացույցի գիծ

#DEFINE led PORTB,4 ;i2c սխալ LED

#DEFINE led_sec PORTB,3 ;LED ժամացույցի առաջընթացի ցուցիչ 1Hz

#DEFINE regim PORTA,2 ;Ցուցման կոճակ - փոխում է ցուցադրման ռեժիմը

#DEFINE nast PORTA,3 ;Կարգավորումների կոճակ - մտնում է ժամանակի կարգավորման ռեժիմ

#DEFINE ust PORTA,4 ;Սահմանել կոճակ - սահմանել ժամացույցի արժեքը

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

org 0000h ;սկսել ծրագրի կատարումը 0000h հասցեից

goto Սկսել ;գնալ Սկսել պիտակին

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Հիմնական ծրագիր

Սկսեք movlw b"00000000"; սահմանեք A նավահանգստի ելքային սողնակների արժեքները

movlw b"01000000"; սահմանել B պորտի ելքային սողնակների արժեքները

movlw b"00000111" ;անջատել համեմատիչները

bsf STATUS,RP0 ;ընտրեք 1-ին բանկը

movlw b"00000111" ;B պորտի մուտքային/ելքային գծերի կարգավորում

movwf TRISB ;RB0-RB2 - մուտքին, մնացածը ելքին

movlw b"11111111" ;Ա նավահանգստի մուտքային/ելքային գծերի կարգավորում

movwf TRISA ;բոլոր տողերը մուտքագրելու համար

bcf STATUS,RP0 ;ընտրեք բանկ 0

clrf flag ;վերականգնել դրոշի ռեգիստրը

զանգահարել init_lcd ;զանգել վարորդի սկզբնավորման ռեժիմը (MAX7219)

զանգահարեք viv_not ;արտադրեք « ------» գծանշանները ցուցիչներին

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

movlw b"11010000" ;սարքի հասցեն (DS3231)

;գրեք 4 բայթ ստացող/փոխանցող ռեգիստրներին i2c-ի միջոցով

movlw data_i2c ;i2c-ի միջոցով առաջին ընդունման/փոխանցման ռեգիստրի կարգավորումը

movlw b"10000000" ;1-ին ահազանգի վայրկյանների ռեգիստրի տվյալներ

movlw b"10000000" ;1-ին ահազանգի րոպեների ռեգիստրի տվյալներ

movlw b"10000000" ;տվյալներ 1-ին զարթուցիչի ռեգիստրի համար

movlw b"10000000" ;1-ին ահազանգի ամսաթվի/շաբաթվա ռեգիստրի տվյալներ

movlw .4 ;փոխանցել 4 բայթ i2c-ի միջոցով

movlw 0x07 ;սահմանելով 1-ին զարթուցիչի վայրկյանների ռեգիստրի հասցեն

Տարբերակիչ հատկանիշներ.

  • Ճշգրտություն ±2 ppm ջերմաստիճանի 0°C-ից +40°C միջակայքում
  • Ճշգրտություն ±3,5 ppm ջերմաստիճանի միջակայքում -40°C-ից +85°C
  • Ինքնավար սնուցման աղբյուրը միացնելու համար մուտք՝ շարունակական աշխատանք ապահովելու համար
  • Աշխատանքային ջերմաստիճանի տիրույթ կոմերցիոն՝ 0°C-ից +70°C արդյունաբերական՝ -40°C-ից +85°C
  • Ցածր սպառումը
  • Իրական ժամանակի ժամացույցը հաշվում է վայրկյանները, րոպեները, ժամերը, շաբաթվա օրերը, ամսվա օրերը, ամիսը և տարին, նահանջ տարվա շտկումով մինչև 2100
  • Երկու օրական ահազանգ
  • Քառակուսի ալիքի ելք՝ ծրագրավորվող հաճախականությամբ
  • Արագ (400 կՀց) I 2 C միջերես
  • 3.3 Վ հզորություն
  • Ջերմաստիճանի թվային ցուցիչ՝ ±3°C չափման ճշգրտությամբ
  • Պահանջվող ճշգրտման մասին տվյալներ պարունակող գրանցում
  • nonRST զրոյացնել մուտքը/ելքը

Դիմում:

  • Սերվերներ
  • Էլեկտրոնային էլեկտրաէներգիայի հաշվիչներ
  • Հեռախոսային սարքավորումներ
  • GPS համակարգեր

Տիպիկ միացման դիագրամ DS3231-ի համար.

Ընդհանուր նկարագրությունը:

DS3231-ը իրական ժամանակի բարձր ճշգրտության ժամացույց է (RTC)՝ ներկառուցված I 2 C ինտերֆեյսով, ջերմաստիճանով փոխհատուցվող բյուրեղյա տատանիչով (TCXO) և քվարցային ռեզոնատորով: Սարքն ունի ներածում պահեստային էներգիայի ինքնավար աղբյուրին միացնելու համար, որը թույլ է տալիս ժամանակի և ջերմաստիճանի չափում նույնիսկ այն դեպքում, երբ հիմնական սնուցման լարումն անջատված է: Ներկառուցված քվարցային ռեզոնատորը մեծացնում է սարքի ծառայության ժամկետը և նվազեցնում արտաքին տարրերի պահանջվող քանակը։ DS3231-ը հասանելի է կոմերցիոն և արդյունաբերական ջերմաստիճանի տարբերակներով և փաթեթավորված է 300 միլ 16 փին SO փաթեթում:

RTC-ն ապահովում է վայրկյանների, րոպեների, ժամերի, շաբաթվա օրերի, ամսվա և տարվա օրերի հաշվում: Ամսվա ավարտի ամսաթիվը որոշվում է ավտոմատ կերպով՝ հաշվի առնելով նահանջ տարիները: Իրական ժամանակի ժամացույցը գործում է 24 կամ 12 ժամ ֆորմատով՝ օրվա ընթացիկ կեսի ցուցումով (AM/PM): Սարքն ունի օրական երկու ահազանգ և քառակուսի ալիքի ելք՝ ծրագրավորվող հաճախականությամբ։ Սարքի հետ տվյալների փոխանակումն իրականացվում է ներկառուցված սերիական I 2 C համատեղելի ինտերֆեյսի միջոցով:

«. Եկեք ծանոթանանք DS3231 իրական ժամանակի ժամացույցի մոդուլին։ Հոդվածը պարունակում է վիդեո հրահանգներ, ծրագրերի ցանկեր, DS ընտանիքից Arduino-ին մոդուլներ միացնելու նպատակը և մեթոդները:

DS3231 Իրական ժամանակի ժամացույցի մոդուլ

Ի՞նչ է DS3231 իրական ժամանակի ժամացույցի մոդուլը:

Իրական ժամանակի ժամացույցի մոդուլ- սա էլեկտրոնային միացում է, որը նախատեսված է ժամանակագրական տվյալների գրանցման համար (ընթացիկ ժամ, ամսաթիվ, շաբաթվա օր և այլն), և իրենից ներկայացնում է համակարգ, որը բաղկացած է էներգիայի ինքնավար աղբյուրից և ձայնագրող սարքից:

DS3231 մոդուլԴա ըստ էության սովորական ժամացույց է։ Arduino տախտակները արդեն ունեն ներկառուցված ժամանակի սենսոր Միլիս, սակայն, այն աշխատում է միայն այն ժամանակ, երբ սնուցումը կիրառվում է տախտակի վրա: Եթե ​​անջատեք, ապա միացնեք Arduino-ն, Millis-ի ժամանակը կզրոյացվի: Իսկ DS3231-ն ունի մարտկոց, որը նույնիսկ այն ժամանակ, երբ Arduino տախտակն անջատված է, շարունակում է «սնուցել» մոդուլը՝ թույլ տալով չափել ժամանակը:

Մոդուլը կարող է օգտագործվել որպես ժամացույց կամ զարթուցիչ՝ հիմնված Arduino տախտակների վրա: Կամ որպես ահազանգ տարբեր համակարգերի համար, օրինակ՝ Smart Home-ում:

DS3231 Տեխնիկական պայմաններ.

  • մոդուլը հաշվարկում է ժամերը, րոպեները, վայրկյանները, ամսաթվերը, ամիսները, տարիները (նահանջ տարիները հաշվի են առնվում մինչև 2100 թ.);
  • Տարբեր սարքերին միանալու համար ժամացույցը միացված է I2C ինտերֆեյսի միջոցով:

32K— Արտաքին էներգիա մատակարարելու համար նախատեսված ելք >12 Վ.

S.Q.W.— Ծրագրավորվող քառակուսի ալիքի ազդանշանի ելք:

SCL– Այս փին-ի միջոցով տվյալները փոխանակվում են ժամացույցի հետ I2C ինտերֆեյսի միջոցով:

Ս.Դ.Ա.– Ժամացույցի տվյալները փոխանցվում են այս փինով:

VCC– Էլեկտրաէներգիայի մատակարարում իրական ժամանակի ժամացույցի համար, պահանջվում է 5 վոլտ: Եթե ​​այս քորոցին լարում չկա, ժամացույցը անցնում է քնի ռեժիմի:

GND- Երկիր:

DS3231 իրական ժամանակի ժամացույցի և պարզ ծրագրի միացման դիագրամ

SDA և SCL կապում տարբեր Arduino տախտակների վրա.

Ս.Դ.Ա. SCL
ՄԱԿ A4 A5
Մինի A4 A5
Նանո A4 A5
Mega2560 20 21
Լեոնարդո 2 3

Եկեք միացնենք իրական ժամանակի ժամացույցի մոդուլը Arduino UNO-ին: SDA - pin A4, SCL - pin A5:

Հետևյալ ծրագիրը հարմար է մոդելի աշխատանքի համար (կարող եք պարզապես պատճենել ծրագիրը Arduino IDE-ում).

#ներառում

void setup() (
ուշացում (300);
Serial.begin (9600);
time.begin();
}
void loop ()



}
}

Այս էսքիզում ժամանակը պարզապես հաշվում է։

Առաջին հերթին sktech-ում միացրեք գրադարանը iarduino_RTC.h.

Այնտեղ նշեք ձեր մոդուլի ճշգրիտ անվանումը՝ դրա հետ ճիշտ աշխատելու համար։

Արդյունքում մենք ստանում ենք ժամանակի ելք DS3231 մոդուլից դեպի պորտի մոնիտոր: Ցուցադրվում են ժամեր, րոպեներ, վայրկյաններ:

Հաջորդ էսքիզում մենք կավելացնենք ֆունկցիա սահմանված ժամանակ, որը թույլ է տալիս սահմանել նախնական հետհաշվարկի ժամանակը:

#ներառում
iarduino_RTC ժամանակ (RTC_DS3231);
void setup() (
ուշացում (300);
Serial.begin (9600);
time.begin();
time.settime(0,0,18,24,04,17,1); // 0 վրկ, 0 րոպե, 18 ժամ, 24 ապրիլի, 2017, երկուշաբթի
}
void loop ()
if(millis()%1000==0)( // եթե անցել է 1 վայրկյան
Serial.println (time.gettime ("d-m-Y, H:i:s, D")); // ցուցադրման ժամանակը
ուշացում (1); // դադար 1 ms-ով, որպեսզի ժամը 1 ms-ում մի քանի անգամ չցուցադրվի
}
}

Օրինակում ժամանակը սկսում է հաշվել 0 վրկ, 0 րոպե, ժամը 18, 2017 թվականի ապրիլի 24, երկուշաբթի:

Դասի գրառումներ.

  1. Առաջին դաս.
  2. Երկրորդ դաս.
  3. Երրորդ դաս.
  4. Չորրորդ դաս.
  5. Հինգերորդ դաս.
  6. Դաս վեցերորդ.
  7. Յոթերորդ դաս.
  8. Ութերորդ դաս.
  9. Իններորդ դաս.

Այսօր մենք կշարունակենք իրական ժամանակի ժամացույցի (RTC) կատարյալ չիպի մեր որոնումը: Մենք կպատրաստենք ժամացույցներ հիման վրա. Մշակման համար էկրանն ավելի հարմար կլինի՝ LCD էկրան, որը կցուցադրի բոլոր տեղեկությունները միանգամից, բացի կարգավորումներից։ Այս ձևով ժամացույցը հարմար է օգտագործել որպես աշխատասեղանի տարբերակ:

Այսպիսով, եկեք նայենք ինքնին DS3231 չիպին: DS3231-ը իրական ժամանակի ժամացույց է՝ չափազանց ճշգրիտ շարժումներով (արտադրողները ընտրել են բառը)՝ շնորհիվ ներկառուցված քվարցային ռեզոնատորի՝ ջերմաստիճանի փոխհատուցմամբ: Տվյալների փոխանցման ինտերֆեյսը I 2 C է: Այս միկրոսխեման ունի նաև պահեստային մարտկոցի լարման մուտք, երբ հիմնական հոսանքն անջատված է, միկրոսխեման ավտոմատ կերպով անցնում է շահագործման պահեստային մարտկոցից, իսկ պահեստային մարտկոցից աշխատանքի ճշգրտությունը չէ: ազդել. Շատ հաճելի է, այնպես չէ՞: DS3231-ն աջակցում է վայրկյանների, րոպեների, ժամերի, ամսվա օրերի (ամսաթիվ), շաբաթվա օրերի, ամիսների և տարիների հաշվման (ներառյալ նահանջ տարին ամիսների համար): Աջակցում է աշխատանքին 12 և 24 ժամ ֆորմատով: Առկա է 2 զարթուցիչ՝ դրանք կարգավորելու և կարգավիճակը վերահսկելու հնարավորությամբ։ Ջերմաստիճանի փոխհատուցման ճշգրտության ճշգրտում: Եվ նաև երկու ելք՝ 32 կՀց հաճախականությամբ (ելքը 32,768 կՀց) և ծրագրավորվող ելք 1 Հց-ից մինչև 8,192 կՀց: Կա նաև զրոյական փին - RST: Իրական ժամանակի ժամացույցի չիպը հասանելի է SO-16 փաթեթում: Գործը բավականին մեծ է, բայց եթե հաշվի առնեք, որ ներսում արդեն քվարց կա, և դա նույնպես փոխհատուցվում է ջերմաստիճանի վրա, ապա ինձ թվում է, որ չափերի հետ ամեն ինչ կարգին է։ DS3231-ն ունի երկվորյակ DS3232-ի տեսքով, որը, սակայն, ունի ևս 2 ոտք։ Այս ամենը շատ է հիշեցնում NXP արտադրանքները՝ PCA2129 և PCF2129 ժամացույցի չիպսեր: Նմանատիպ ջերմաստիճանով փոխհատուցվող ներկառուցված քվարց ռեզոնատոր, երկուսն էլ նույն երկվորյակներ են միայն տարբեր թվով n.c. DS3231-ի հետ կապված քորոցներ և նմանատիպ գործառույթներ՝ ի լրումն ժամանակաչափի:

RTC DS3231-ը վաճառքի է հանվում անհրաժեշտ լարերով մոդուլների տեսքով, ինչպես նաև ամբողջական EEPROM չիպով, որն ամենից հաճախ անհրաժեշտ չէ, այն միայն ավելացնում է քաշը.

Բացի անհրաժեշտ մասերից, մոդուլի տախտակի վրա կա նաև լուսադիոդ, որի ֆունկցիան տերմինալներին հոսանքի միացումը ցույց տալն է։ Հավանաբար հենց գեղեցկության համար են մատուցել:

Այն, ինչ կարևոր է իմանալ իրական ժամանակի նման ժամացույցի չիպի հետ աշխատելիս, այն է, թե ինչպես կարելի է դրանից տվյալներ հանել կամ գրել այնտեղ: Ժամացույցն ունի I 2 C ինտերֆեյս: Տվյալներ գրելու համար (և դա նաև անհրաժեշտ է տվյալները կարդալու համար), դուք պետք է անցնեք մեկնարկի պայմանը (այս հրամաններն իրականացվում են I 2 C ապարատային կամ ծրագրային ապահովման միջոցով: միկրոկոնտրոլեր), այնուհետև փոխանցեք չիպի հասցեն բիթային գրառումով, այնուհետև փոխանցեք ռեգիստրի հասցեն, որին մենք մուտք կգործենք, և այնուհետև փոխանցեք տվյալների մեկ բայթ այս ռեգիստրին, եթե այնուհետև փոխանցեք մեկ այլ բայթ տվյալ, դա կլինի գրված է հաջորդ գրանցամատյանում և այլն: Ավարտելուց հետո դուք պետք է անցնեք կանգառի պայման: Վերոհիշյալի գրաֆիկական ներկայացումը նկարում.

Տվյալների գրանցումը պահանջվում է սկզբնական տեղադրման, ինչպես նաև ընթացիկ ժամանակը սահմանելու համար: Հաջորդը, մենք պետք է անընդհատ տվյալներ ստանանք ընթացիկ ժամի և ամսաթվի մասին: Դա անելու համար անհրաժեշտ է կարդալ այս տեղեկատվությունը պահող ռեգիստրներից: Ընթերցանությունը բաղկացած է երկու ընթացակարգից՝ ցանկալի ռեգիստրի վրա ցուցիչ դնելը և այն կարդալը: Ցանկալի ռեգիստրին ցուցիչ դնելու համար անհրաժեշտ է անցնել մեկնարկի պայմանը, այնուհետև փոխանցել չիպի հասցեն գրման բիթով և բայթ ռեգիստրի հասցեով: Հաջորդը կա՛մ կանգառի պայման է, ապա՝ մեկնարկի պայման, կա՛մ պարզապես վերագործարկում: Այժմ երկրորդ ընթացակարգը ուղղակիորեն ընթերցվում է գրանցամատյաններից: Մեկնարկը փոխանցվում է, այնուհետև պետք է կարդալ միկրոսխեմայի հասցեն կարդալու բիթով և այնուհետև կարդալ ռեգիստրները անհրաժեշտ թվով, իսկ ավարտից հետո փոխանցել կանգառի վիճակը: Եթե ​​ռեգիստրից տեղեկատվությունը կարդացվել է, ցուցիչը ինքնաբերաբար տեղափոխվում է հաջորդ ռեգիստր՝ առանց միկրոկառավարիչի (սարքի վարպետի) կողմից ավելորդ գործողությունների: Նկարը ցույց է տալիս այն ամենը, ինչ ասվել է վերևում I 2 C ինտերֆեյսի օգտագործմամբ ռեգիստրների ընթերցման վերաբերյալ.

Չիպի հասցե.

  • ձայնագրման համար՝ 0b11010000
  • կարդալու համար - 0b11010001

C ծածկագիրը կունենա հետևյալ տեսքը.

// ֆունկցիաներ ժամացույցով ============================================ ================================================== ================== ======== // սկզբնական կարգավորումները void RTC_init(void)( i2c_start_cond(); // starting i2c i2c_send_byte (RTC_adr_write); // սարքի հասցեի փոխանցում, ձայնագրման ռեժիմ i2c_send_byte (0x0E); // հիշողության հասցեի փոխանցում i2c_send_byte (0b00100000); // ջերմաստիճանի փոխակերպման մեկնարկ և ելք 1 Հց հաճախականությամբ i2c_send_byte (0b00001000); // միացնել 3-ի կոճակը // դադարեցնել i2c) // ստանալ ժամը և ամսաթիվը void RTC_read_time(void)( i2c_start_cond() ; // սկսել i2c i2c_send_byte (RTC_adr_write); // փոխանցել սարքի հասցեն, գրելու ռեժիմ i2c_send_byte(0x00); // փոխանցել հիշողության հասցեն i2c_stop_cond (); // դադարեցնել i2c i2c_start_cond (); // սկսել i2c i2c_send_byte (RTC_adr_read); / / սարքի հասցեն փոխանցող, ընթերցման ռեժիմ վրկ = bcd (i2c_get_byte (0)); // կարդալ վայրկյան, ACK minte 2 c_d (0)); // րոպեների ընթերցում, ACK ժամ = bcd(i2c_get_byte(0)); // կարդալ ժամացույց, ACK wday = bcd(i2c_get_byte(0)); // կարդալ շաբաթվա օրը, ACK օր = bcd (i2c_get_byte (0)); // թվի ընթերցում, ACK ամիս = bcd(i2c_get_byte(0)); // ընթերցման ամիս, ACK տարի = bcd (i2c_get_byte (1)); // ընթերցման տարի, NACK i2c_stop_cond(); // դադարեցնել i2c) // սահմանել ժամը void RTC_write_time(unsigned char hour1, unsigned char min1, unsigned char sec1)(i2c_start_cond(); // start i2c i2c_send_byte(RTC_adr_write); // փոխանցել սարքի հասցեն՝ i2tec_գրառումներով: 0x00); // հիշողության հասցեի փոխանցում i2c_send_byte(bin(sec1)); // 0x00 վայրկյան (նպատակահարմար է նաև նշել վայրկյանները): i2c_send_byte(bin(min1)); // 0x01 րոպե i2c_send_byte(bin(hour1)) ; // 0x02 ժամացույց i2c_stop_cond(); // դադարեցնել i2c) // սահմանել ամսաթիվը void RTC_write_date (չստորագրված նիշ wday, անստորագիր նիշերի օր, անստորագիր նիշերի ամիս, անստորագիր նիշերի տարի) ( i2c_start_cond (); //byte_write_2 // փոխանցել սարքի հասցեները, ձայնագրման ռեժիմ i2c_send_byte (0x03); // հիշողության հասցեի փոխանցում i2c_send_byte (bin(wday)); // շաբաթվա 0x03 օր (կիրակի - 1, երկուշաբթի 2, երեքշաբթի 3, չորեքշաբթի 4, Հինգշ 5, Ուրբ 6, Շաբ 7) i2c_send_byte(bin(օր)); // 0x04 օր ամիս i2c_send_byte(bin(ամիս)); // 0x05 ամիս i2c_send_byte(bin(տարի)); // 0x06 տարի i2c_stop_cond(); // դադարեցնել i2c) // կարդալ ջերմաստիճանը void RTC_read_temper(void)( i2c_start_cond(); // սկսել i2c i2c_send_byte(RTC_adr_write); // փոխանցել սարքի հասցեն, գրելու ռեժիմ i2c_send_byte(0x11); // փոխանցել վերին հիշողության հասցեն i2c (); // դադարեցնել i2c i2c_start_cond (); // սկսել i2c i2c_send_byte (RTC_adr_read); // փոխանցել սարքի հասցեն, կարդալ ռեժիմ t1 = i2c_get_byte (0); // կարդալ MSB ջերմաստիճան t2 = i2c_get_byte (1); // կարդալ LSB ջերմաստիճան i2c_stop_cond (); // դադարեցնել i2c t2=(t2/128); // տեղաշարժ 6-ով - ճշգրտություն 0,25 (2 բիթ) // տեղաշարժ 7-ով - ճշգրտություն 0,5 (1 բիթ) t2=t2*5; )

Սա այն ամբողջ կոդն է, որն օգտագործվում էր միկրոսխեմայի հետ աշխատելու համար. ժամացույցի արագության կարգավորումը չի ազդել, քանի որ ժամացույցը մի քանի օրվա ընթացքում վայրկյան անգամ չէր կորցրել:

Այո, հիանալի հատկանիշ DS3231-ն այն է, որ նույն չիպը կատարում է ջերմաչափի գործառույթները (հակառակ դեպքում, ինչպես այլ կերպ իրականացնել ջերմաստիճանի փոխհատուցում) և ընթացիկ ջերմաստիճանը կարդալու ունակությունը: Ջերմաստիճանի առավելագույն թույլատրելիությունը 0,25 աստիճան Ցելսիուս է։ Նաև ջերմաստիճանի թարմացման ժամկետը բավականին երկար է՝ մոտ 1 րոպե։ Այո, մենք կարիք չունենք այն արագ թարմացնելու:

Ժամացույցի ամբողջ կառուցվածքի դիագրամը հետևյալն է.

Միկրոկառավարիչը ընտրվել է Atmega8-ի կողմից իր լայն հասանելիության և ցածր գնի համար: Այս միկրոկառավարիչը կարող է օգտագործվել ինչպես DIP-28 փաթեթում, այնպես էլ SMD տարբերակում՝ TQFP-32 փաթեթում: Ռեզիստոր R3-ն անհրաժեշտ է միկրոկառավարիչի ինքնաբուխ վերագործարկումը կանխելու համար PC6 պտուտակի վրա պատահական աղմուկի դեպքում: Ռեզիստորը R3-ն ավելացնում է հզորությունը դեպի այս քորոցը՝ հուսալիորեն ստեղծելով ներուժ դրա վրա: Ցուցադրման համար օգտագործվում է հեղուկ բյուրեղյա էկրան (LCD): Ես օգտագործել եմ 2004A էկրանը՝ 20 նիշից բաղկացած 4 տողն ավելի շատ է գեղեցկության համար, այնպես որ կարող եք օգտագործել ավելի ծանոթ էկրան՝ 2 տող 16 նիշից: LCD էկրանը միացված է միկրոկոնտրոլերին՝ օգտագործելով չորս բիթանոց համակարգ: Փոփոխական ռեզիստոր R2 անհրաժեշտ է էկրանի նիշերի հակադրությունը կարգավորելու համար: Պտտելով այս ռեզիստորի սահիչը՝ մենք մեզ համար հասնում ենք էկրանի ամենապարզ ընթերցումները: LCD էկրանի հետևի լուսավորությունը կազմակերպվում է ցուցադրման տախտակի վրա գտնվող «A» և «K» պտուտակների միջոցով: Հետևի լույսը միացված է ընթացիկ սահմանափակող ռեզիստորի միջոցով՝ R1: Որքան բարձր է արժեքը, այնքան ավելի մթագնում է էկրանը լուսավորված: Այնուամենայնիվ, այս դիմադրությունը չպետք է անտեսվի, որպեսզի խուսափի հետևի լույսի վնասից: S1 - S4 կոճակները կառավարում են ժամացույցի կարգավորումները: LED-ը ցույց է տալիս, որ ահազանգը միացել է: LED-ը կարող է փոխարինվել ինչ-որ ձայնային սխեմայով: R5 - R8 ռեզիստորները ձգվող են և անհրաժեշտ են ժամացույցի չիպի տերմինալներում ուղղանկյուն իմպուլսների ձևավորման համար: Սա անհրաժեշտ է նաև I2C արձանագրության ճիշտ աշխատանքի համար։ Շղթան սնուցելու համար օգտագործվում է L7805 գծային կայունացուցիչ չիպ, այն կարող է փոխարինվել KR142EN5A հինգ վոլտ գծային կայունացուցիչի կենցաղային անալոգով, կամ կարող եք օգտագործել մեկ այլ լարման կայունացուցիչ չիպ՝ դրա միացմանը համապատասխան միացումում (օրինակ. LM317 կամ անջատիչ կայունացուցիչներ LM2576, LM2596, MC34063 և այլն): Հաջորդը, 5 վոլտը կայունացվում է մեկ այլ միկրոշրջանով՝ AMS1117 տարբերակով, որը տալիս է 3,3 վոլտ ելք: Ժամացույցի չիպը, ըստ տվյալների թերթիկի, սնուցվում է 3,3 վոլտ լարման միջոցով: Այնուամենայնիվ, առավելագույն լարումը 5,5 վոլտ է: Հետևաբար, այս կայունացուցիչը կարող է օգտագործվել, թե ոչ, ձեր հայեցողությամբ: AMS1117 լարման կայունացուցիչը կարող է փոխարինվել նաև ADJ տարբերակով (AMS1117ADJ), այսինքն՝ կարգավորվող տարբերակով, այս ընտրությամբ ձեզ հարկավոր է սահմանել անհրաժեշտ լարումը:օգտագործելով երկու ռեզիստորներ, որոնք միացված են միկրոսխեմային՝ համաձայն դրա տվյալների թերթիկի:

Շղթան հավաքվել և կարգաբերվել է ATmega8 միկրոկառավարիչի զարգացման տախտակի միջոցով.

Կոճակների նպատակը.

  • S1 - անջատում է տագնապի ազդանշանը կամ ցանկացած կարգավորումների ընտրացանկից դուրս է գալիս հիմնական մենյու
  • S2- միկրոկոնտրոլերի վերականգնում
  • S3 - կարգավորումների ցանկում փոխում է ժամը կամ ամսաթիվը
  • S4 - մուտքագրեք կարգավորումների ցանկը և ոլորեք ցանկի միջով

32 կՀց հաճախականությունը կարող է օգտագործվել բյուրեղային հաճախականությունը վերահսկելու համար: Մենք միացնում ենք հաճախականության հաշվիչ կամ օսցիլոսկոպ այս փինին և վերահսկում հաճախականությունը.

Ինչպես երևում է օքսիլոգրամի սքրինշոթից, հաճախականությունը մոտավորապես համապատասխանում է 32,768 կՀց-ին (մոտավորապես հաճախականության չափումների լուծման սահմանափակումների պատճառով, և դժվար է այդքան ճշգրիտ որոշել «աչքով»):

Արդյունքում ստացվեց ժամացույց հետևյալ բնութագրերով.

  • ժամանակի նշում
  • ամսաթվի ցուցադրում
  • շաբաթվա օրվա ցուցում
  • զարթուցիչի գործունեության ցուցում
  • 1 զարթուցիչ միկրոկառավարիչից ազդանշանի ելքով
  • շրջակա միջավայրի ջերմաստիճանի նշում (ծրագրային ապահովման մեջ ներդրվում է միայն դրական ջերմաստիճանը, բացասական ջերմաստիճանը, կարծում եմ, մեզ համար ոչ մի օգուտ չի տալիս)
  • ազդանշանային կարգավորումներ
  • ժամանակի կարգավորումներ
  • ամսաթվի կարգավորումներ
  • LCD էկրան հետին լույսով
  • կարգավորումների պահպանում և ժամացույցի շարունակություն, երբ հիմնական հոսանքն անջատված է

Եկեք ամփոփենք. DS3231 իրական ժամանակի ժամացույցի չիպը հիանալի լուծում է: Ճշգրտությունը համեմատելի է որոշ DS1307 կամ ավելի բարձր մոդելների հետ, սակայն PCA/PCF2129-ը դեռ կարող է մրցակցել դրա հետ: Իրական ժամանակի ժամացույցի չիպերի շարքում, որոնք ես վերանայել եմ, այս օրինակը ներկայումս զբաղեցնում է առաջին տեղը ֆունկցիոնալության և ճշգրտության առումով:

Atmega8 միկրոկառավարիչը ծրագրավորելու համար դուք պետք է իմանաք ապահովիչների բիթերի կազմաձևումը (ծրագրում արված սքրինշոթ).

Հոդվածն ուղեկցվում է Atmega8 միկրոկառավարիչի որոնվածով, ծրագրում սխեմայի ձևավորում, ինչպես նաև ժամացույցի աշխատանքի տեսանյութ (հենց սկզբում զարթուցիչը կմիանա. LED-ը կվառվի):

Ռադիոէլեմենտների ցանկ

Նշանակում Տիպ Դոնոմինացիա Քանակ ՆշումԽանութԻմ նոթատետրը
IC1 MK AVR 8-bit

ATmega8

1 Նոթատետրում
IC2 Իրական ժամանակի ժամացույց (RTC)

DS3231

1 Նոթատետրում
VR1 Գծային կարգավորիչ

L7805AB

1 Նոթատետրում
VR2 Գծային կարգավորիչ

AMS1117-3.3

1 Նոթատետրում
VD1 Ուղղիչ դիոդ

1N4148

1 Նոթատետրում
C1 470 μF1 Նոթատետրում
C2, C3, C5, C7 Կոնդենսատոր100 nF4 Նոթատետրում
C4 Էլեկտրոլիտիկ կոնդենսատոր220 μF1 Նոթատետրում
C6, C8 Էլեկտրոլիտիկ կոնդենսատոր10 μF2 Նոթատետրում
R1 Ռեզիստոր

22 Օմ

1 Նոթատետրում
R2 Հարմարվողական ռեզիստոր10 կՕհմ1 3296W-1-103LF

Շատ սարքեր պահանջում են ժամանակագրական տվյալների մշտական ​​գրանցում (ամսաթիվ, ժամ), այս ֆունկցիան իրականացվում է հատուկ էլեկտրոնային սխեմաների միջոցով, որոնք կոչվում են իրական ժամանակի ժամացույցներ: Ներկայումս իրական ժամանակի ժամացույցն իրականացվում է առանձին միկրոսխեմայի տեսքով, որին անհրաժեշտ է ավելացնել քվարցային ռեզոնատոր և ինքնավար սնուցման աղբյուր: Որոշ միկրոսխեմաներում ներսում կառուցված է քվարցային ռեզոնատոր: Այս ժամացույցներից մեկը չիպի վրա DS3231SN Ես այն գնել եմ իմ համարնախագծերը . Օրինակում ես իրական ժամանակի ժամացույցը միացնելու եմ չինական անալոգային Arduino UNO.

Դրանք ամբողջական ZS-042 մոդուլ են, որը կարելի է միացնել տարբեր սարքերի, ոչ միայն Arduino հարթակին:


Մոդուլը կառուցված է միկրոսխեմայի վրա DS3231SN որն ըստ էության իրական ժամանակի ժամացույց է: Ի տարբերություն հին ժամացույցի մոդելի, օրինակ DS1307 չիպի վրա, այս ժամացույցը պարունակում է ներքին քվարցային ռեզոնատոր, որի շնորհիվ ժամացույցն ունի ճշգրիտ ժամանակը։

Դուք կարող եք ժամացույց իրականացնել Arduino-ում առանց DS3231SN-ի, բայց հետո, եթե հոսանքազրկվի, ժամանակաչափի արժեքները զրոյացվում են:Այս նույն ժամացույցներն ունեն պահեստային հզորություն, ուստի եթե հոսանքն անջատվի, նրանք շարունակում են աշխատել:

Ժամացույցը կարող է հաշվել ժամեր, րոպեներ, վայրկյաններ, ամսաթվեր, ամիսներ, տարիներ (նահանջ տարիները հաշվի են առնվում մինչև 2100 թվականը)։ Նրանք աշխատում են 12 կամ 24 ժամ ռեժիմով, պարունակում են երկու զարթուցիչ, ինչպես նաև ունեն ներքին ջերմաչափ՝ -40°C-ից +85°C միջակայքով: Տարբեր սարքերին միանալու համար ժամացույցը միացված է I2C ինտերֆեյս.


ZS-042 մոդուլի վրա քորոցների գտնվելու վայրը և նպատակը.

S.Q.W.- Ծրագրավորվող քառակուսի ալիքի ազդանշանի ելք:

SCLԱյս կապի միջոցով տվյալները փոխանակվում են ժամացույցի հետ I2C ինտերֆեյսի միջոցով:

Ս.Դ.Ա.Ժամացույցի տվյալները փոխանցվում են այս փինով:

VCCԷլեկտրաէներգիայի մատակարարում իրական ժամանակի ժամացույցի համար, պահանջվում է 5 վոլտ: Եթե ​​այս քորոցին լարում չկա, ժամացույցը անցնում է քնի ռեժիմի:

GND- Երկիր:

Միանալու համար Arduino UNO, Մենք ժամացույցի SDA փին միացնում ենք A4-ին, իսկ SCL փինը՝ A5-ին: Էլեկտրաէներգիայի մատակարարման համար օգտագործվում են GND(-) և VCC(+5v) կապերը:

SDA և SCL կապում տարբեր Arduino տախտակների վրա.

Ս.Դ.Ա. SCL
ՄԱԿ A4 A5
Մինի A4 A5
Նանո A4 A5
Mega2560 20 21
Լեոնարդո 2 3

Եկեք ժամացույցի մեջ տեղադրենք CR2032 մարտկոց, այդպիսի տարրեր օգտագործվում են համակարգիչների BIOS-ը սնուցելու համար։

Երբ USB մալուխը միացնում եք Arduino-ին, ժամացույցի լուսադիոդը պետք է լուսավորվի ՈՒԺ«(կարմիր LED):

Arduino IDE-ի միջոցով ժամացույցը ծրագրավորելու համար անհրաժեշտ է տեղադրել գրադարաններ։

Ներբեռնեք գրադարանը Ժամանակը և DS1307RTC.

Վերջին գրադարանը գրվել է DS1307 չիպի վրա ժամացույցի համար, սակայն դրա փոխազդեցության արձանագրությունները համատեղելի են DS3231-ի հետ, ուստի գրադարանը կհամապատասխանի մեր ժամացույցին:

Գրադարանները պետք է ներբեռնվեն, ապափաթեթավորվեն և տեղադրվեն թղթապանակում:գրադարաններ« Arduino IDE-ն գործարկելիս, նրանք օրինակներով պետք է հայտնվեն « Նմուշներ».

Սահմանեք ամսաթիվը և ժամը:

Դա անելու համար պատճենեք այս կոդը Arduino IDE-ում:

Ճիշտ կարգավորումների համար անհրաժեշտ է փոխել տողի տվյալները

setTime (13,35,0,22,12,2016);



Փակագծերում՝ ստորակետերով բաժանված, սահմանի՛ր ճիշտը՝ ժամ, րոպե, վայրկյան, օր, ամիս, տարի: Իմ օրինակում այն ​​սահմանված է 13 ժամ 35 րոպե 0 վայրկյան, դեկտեմբերի 22, 2016 թ. Վերբեռնեք էսքիզը Arduino-ում:

Այժմ, ժամացույցի ընթերցումները կարդալու համար կարող եք օգտագործել օրինակը. Ֆայլ» - « Նմուշներ» - « DS1307RTC» - « ReadTest«Եվհետևում վերբեռնեք այն Arduino-ում:

Բացվող պատուհանը կցուցադրի ընթացիկ ամսաթիվը և ժամը: Եթե ​​անջատեք ժամացույցի մոդուլի հոսանքը Arduino-ից, Arduino-ն չի կարողանա հետևել արժեքներին և որոշ ժամանակ անց հաղորդագրությունը « ... կարդալու սխալ:«(ընդգծված է կարմիրով): Էլեկտրաէներգիայի վերականգնումից հետո ամսաթիվը և ժամը կշարունակեն հետհաշվարկել: Ամսաթիվը և ժամը չեն վերակայվել, քանի որ ժամացույցը սնվում էր իր CR2032 մարտկոցից: