XRTC_PCF85063A - askn37/askn37.github.io GitHub Wiki
ããã¯NXP PCF85063A
ã«ã¬ã³ããŒICïŒå€éšRTCïŒãå¶åŸ¡ããã€ã³ã¿ãã§ãŒã¹ãæäŸããã
ãã® I2Cããã€ã¹IC 㯠"Duino" ç³»å補åã®ãªã³ããŒãã«æèŒãããŠãã
å
èåšèŸºæ©èœã§ã®èšæãªãã«é·åšæå²èŸŒãã¢ã©ãŒã å²èŸŒãã«ã¬ã³ããŒæ¥æä¿æãæäŸããã
以äžã®è§£èª¬ã§ã¯æã« "Duino" ããŒãåºææ©èœãåæã«ããå 容ãå«ãŸããããšã«æ³šæããããã
#include <XRTC_PCF85063A.h>
XRTC_PCF85063A XRTC = {Wire};
void setup (void) {
pinControlRegister(PIN_PF1) = PORT_PULLUPEN_bm | PORT_ISC_FALLING_gc;
Serial.begin(CONSOLE_BAUD);
Wire.initiate(TWI_SM);
if (!XRTC.update()) {
Serial.println(F("Failed XRTC"));
for (;;);
}
XRTC.startPeriodTimer(1);
set_sleep_mode(SLEEP_MODE_IDLE);
sleep_enable();
}
ISR(PORTF_PORT_vect) {
PORTF_INTFLAGS = PIN1_bm;
}
void loop (void) {
digitalWrite(LED_BUILTIN, TOGGLE);
if (XRTC.update()) {
bcddatetime_t BCD = XRTC.getBcdDateTimeNow();
Serial
.print(_BCDDT(BCD)->col.year, ZHEX, 4)
.write('-')
.print(_BCDDT(BCD)->col.month, ZHEX, 2)
.write('-')
.print(_BCDDT(BCD)->col.day, ZHEX, 2)
.write(' ')
.print(_BCDDT(BCD)->col.hour, ZHEX, 2)
.write(':')
.print(_BCDDT(BCD)->col.minute, ZHEX, 2)
.write(':')
.print(_BCDDT(BCD)->col.second, ZHEX, 2)
.ln();
}
Serial.flush();
sleep_cpu();
}
ãã®çšäŸã§ã¯XRTC
ã«1ç§åšæå²èŸŒãæç€ºãã
ãããPIN_PF1
端åã§æã㊠CPUäŒæ¢ç¶æ
ãè§£é€ãã
ã·ãªã¢ã«ã¢ãã¿ãŒã«çŸåšæå»ã衚瀺ããŠãŸã
CPUäŒæ¢ç¶æ
ã«å
¥ãåäœãç¹°ãè¿ãã
æå»ååŸãšè¡šç€ºã«ã¯
<bcddatetime.h>
ãå©çšããŠããã
æå»èšå®ã䜿ããã«åã«åšæå²èŸŒãçºçããããã ããªãstartPeriodTimer
ãã
åçºå²èŸŒãçºçããããã ããªãstartCountdownTimer
ã䜿ãã°è¯ãã
å²èŸŒåºåã¯ãªãŒãã³ãã¬ã€ã³ãªã®ã§ãå€éšå
¥å端åã«ãã«ã¢ããèšå®ã¯å¿
èŠã
/* 60ç§åšæå²èŸŒ : æ¯00ç§çºå */
XRTC.setMinuteInterruptEnable(true).activeTimer();
/* 30ç§åšæå²èŸŒ : æ¯00ç§ãšæ¯30ç§çºå */
XRTC.setHarfMinuteInterruptEnable(true).activeTimer();
/* ãã®ä»ä»»æé·åšæå²èŸŒ : 1ã15300 ç§ç¯å² : çŸæå»èµ·ç¹ */
XRTC.startPeriodTimer(20);
/* åçºã¿ã€ã ã¢ãŠãå²èŸŒ : 1ã15300 ç§ç¯å² : çŸæå»èµ·ç¹ */
XRTC.startCountdownTimer(20);
/* åçºå²èŸŒè§£é€ : è§£é€ãããŸã§å²èŸŒç«¯å㯠LOW ãç¶æ */
XRTC.clearTimerFlag();
/* å²èŸŒã¿ã€ããŒåäœåæ¢ */
XRTC.deactiveTimer();
ãã®ããã€ã¹ã䜿çšãããæå»ç®¡çãäžèŠãªãæ¬¡ã®æ¹æ³ã§åæ¢ã§ããã 忢ããªããã°äžæã«åšæå²èŸŒçãçºçããå Žåãããã
/* ããã€ã¹ãåæç¶æ
ã«æ»ããèšææ©èœåæ¢ */
XRTC.reset();
XRTC.stop();
PCF85063A
ã®å Žåã幎ã¯2æ¡ç²ŸåºŠãã€ã»ã³ãã¥ãªãŒãããæ©èœãæããªãã
ãã®ãã00
幎ã«ã¯åžžã«2æ29æ¥ãããã2000
幎以å€ãšäžèŽããªãã
ã€ãŸãæå»ç®¡çã®æå¹ç¯å²ã¯1900-03-01
ãã2100-02-28
ã§ããã
ãããææ¥ã¯ãããšç¡é¢ä¿ã«æ£ããæŽæ°ãããã®ã§ã
getCenturyDateTimeNow
ã¡ãœããã¯ä»¥äžã®è£æ£ãå ããããšã§
1900-01-01
ãã2299-12-31
ã®400幎éãæ£ããè¿åŽã§ããã
- çŸåšå¹Žææ¥ã
2000-01-01
ãã2099-12-31
ãšèŠåã㊠MJDïŒä¿®æ£ãŠãªãŠã¹éæ¥ïŒãååŸã - MJDããåŸãããææ¥ããçŸåšä¿æããŠããææ¥ãæžããŠ
7
ã®å°äœX
ãåŸãã -
X
ã0
ã§ãããªã2000
幎代ã§ããããè£æ£äžèŠã - MJDã
51603
以äžïŒ2000-02-29
以åïŒã§ããå Žåã
a. MJDã51603
ã§ãããªãååšããŠã¯ãªããªã鿥ã§ããããY
ãããŒã¯ã
b.X
ã5
ã§ãããªã1900
幎代ã§ããããMJDãã36524
ãæžããã
c.X
ã1
ã§ãããªã2100
幎代ã§ããããMJDã«36525
ãå ããã
d.X
ã3
ã§ãããªã2200
幎代ã§ããããMJDã«73049
ãå ããã - MJDã
51604
以äžïŒ2000-03-01
以éïŒã§ããå Žåã
a.X
ã6
ã§ãããªã1900
幎代ã§ããããMJDãã36525
ãæžããã
b.X
ã2
ã§ãããªã2100
幎代ã§ããããMJDã«36524
ãå ããã
c.X
ã4
ã§ãããªã2200
幎代ã§ããããMJDã«73048
ãå ããã - è£æ£ãããMJDããæ°ããªå¹Žææ¥ãå°ããããã¯åæã«ååšããªã
02-29
ã03-01
ã«çœ®æããã -
Y
ãããŒã¯æžãªãçŸåšå¹Žææ¥ã¯èª€ããªã®ã§ãæ°ããªå¹Žææ¥ãçŸåšå¹Žææ¥ã«èšå®ããã
äžèšã®è£æ£å€å®ããæŒããå¹Žææ¥ãšææ¥ã®çµã¯ã
ã°ã¬ãŽãªãªæŠã«ã¯ååšããªãã®ã§2000
幎代ãšèŠåããããåŸãªãã
äœæ
ãªãã°ã¬ãŽãªãªæŠã¯ä»¥äžã®åŒã«åŸã£ãŠã400幎éã§å¹Žææ¥ã𿿥ã®çµã埪ç°ããŠããããã ã
400幎 à 365æ¥ + 鿥97æ¥ == 146097æ¥ == 20871é± Ã 7æ¥ïŒç«¯æ°ãªãïŒ
ãã®æ§è³ªãã100幎æ¯ã®åæåæ¥ã®ææ¥ã¯ãã 4éããããªãã ãããè¶ ããç¯å²ã¯ææ¥è£æ£æ³ã§ã¯æ±ããããšãåºæ¥ãªãã
ãããããå¿ èŠãªã西æŠäžäœæ¡ã
setRamByte
ã§ä¿æããŠãããŠè£ããšè¯ãã
äŸåæ§ïŒ<api/TWIM.h>
<bcddatetime.h>
classXRTC_PCF85063A
ãå®çŸ©ããã
åæååã«ã¯TWIM_Class
ã€ã³ã¹ã¿ã³ã¹ïŒWire
çïŒãäžããã
ãã® I2C Bus ãå¥éåæåããããšã§ãããã€ã¹éä¿¡æºåãæŽãã
éä¿¡é床ã¯éåžž 100kbpsïŒTWI_SM
ïŒãæç€ºãããã
400kbpsïŒTWI_FM
ïŒã§ãã
10kbpsïŒTWI_LM
ïŒã§ãè¯ãã
#include <XRTC_PCF85063A.h>
XRTC_PCF85063A XRTC = {Wire};
...
Wire.initiate(TWI_SM); /* Wire.begin(100000L) ãå¯ */
XRTC.update();
PCF85063A
ã®å Žåã2çš®é¡ã®ç²ŸåºŠæ ¡æ£æ©èœãããã
ãŸã1ãã€ãã®ä»»æRAMä¿ææ©èœãããã
ããã€ã¹ã®çŸåšã®å¶åŸ¡ç¶æ ãååŸãããå®è¡ã¯å³æãæåããã°çãè¿ãã ããã«ã¯çŸåšã®æå»æ å ±ã®ä»ãåçš®å¶åŸ¡ç¶æ ãå«ãŸããã é å»¶äžã®èšå®åœä»€ã¯åæ ãããã«ç Žæ£ãããã ãã®ã¡ãœããã¯ããã以åŸã®ä»ã®å¶åŸ¡ã«å ç«ã£ãŠåŒã°ããªããã°ãªããªãã
ããã¯update
ã¡ãœããã®å¥åãšããŠæ©èœããã
ããã€ã¹ã«æ°ããªå¶åŸ¡ç¶æ ãåæ ããããå®è¡ã¯å³æãæåããã°çã ããã¯ãå®è¡ã¯é å»¶ããšèª¬æãããèšå®å€æŽããããã€ã¹ã«éä¿¡ããã
ããã€ã¹ãåèµ·åãããå®è¡ã¯å³æãupdate
ãç¶ããŠå®è¡ãããæåããã°çã
çŸåšæå»ã¯ç Žæ£ãããŠ2000-01-01 00:00:00
ããèšæãå§ãã
ã¢ã©ãŒã ãšã¿ã€ããŒã¯åæ¢ããã
åšæ³¢æ°åºåïŒCOTïŒç«¯åå¶åŸ¡ã¯åæèšå®ãšãªãã
isPowerDown
ã¯çãšãªãã
ããã€ã¹ãåèµ·åããããããã¯ã¢ãã黿ºåªå€±ãçµéšãããªãçãè¿ãã çŸåšæå»ã¯ä¿¡çšã§ããªãã ããããªæå»ãåèšå®ãããŸã§çã«çãŸãã
ãã¹ãã¢ãŒããæå¹ãªãçãéåžžéçšã§ã¯äœ¿çšããªãã
æ°Žæ¶çºæ¯åè² è·å®¹éèšå®ã®éžæå€ãè¿ããéåžžéçšã§ã¯äœ¿çšããªãã
ãŠãŒã¶ãŒèšå®RAMãã€ãã®èšå®å€ãè¿åŽãããä¿æã§ããã®ã¯1ãã€ãã ãã§ããã
ãã¹ãã¢ãŒãã®æå¹
/ç¡å¹
ãç
/åœ
ã§èšå®ãããå®è¡ã¯é
å»¶ãã¡ãœãããã§ãŒã³ãåŸç¶ã§ããã
éåžžéçšã§ã¯äœ¿çšããªãã
æ°Žæ¶çºæ¯åè² è·å®¹é12.5pf
/7pf
ã®åæ¿ãç
/åœ
ã§èšå®ãããå®è¡ã¯é
å»¶ãã¡ãœãããã§ãŒã³ãåŸç¶ã§ããã
éåžžéçšã§ã¯äœ¿çšããªãã
"Duino" ããŒãã§ã¯éåžž
7pf
æ°Žæ¶çºä¿¡åãæèŒãããŠããã®ã§æ¢å®å€ã§ããã
ãŠãŒã¶ãŒèšå®RAMãã€ãã0
ã255
ã®ç¯å²ã§èšå®ãããå®è¡ã¯é
å»¶ãã¡ãœãããã§ãŒã³ãåŸç¶ã§ããã
䜿çšã¯ä»»æãä¿åæéã¯ããã¯ã¢ãããã£ãã·ã¿æ¬¡ç¬¬ã
ããã€ã¹åèµ·åã§0
åæåãããã
1ãã€ãããä¿æã§ããªãã®ã§çšéã¯éãããã ããã
NIMEM
æ©èœã䜿ãã»ãããã倧容éãä¿æã§ããŠãã€éç Žå£æ€æ»ãåºæ¥ãã
ç²ŸåºŠæ ¡æ£ã¢ãŒãèšå®ã®éžæå€ãççå€ã§è¿ãã
ç²ŸåºŠæ ¡æ£ãæå¹ã§ããæãè£æ£ãã«ã¹ã®å²èŸŒç«¯ååºåãèšå®ãããŠãããªãã°çãéåžžéçšã§ã¯äœ¿çšããªãã
ç²ŸåºŠæ ¡æ£ã®çŸåšã®è£æ£å€ãè¿åŽããã
ç²ŸåºŠæ ¡æ£ã¢ãŒãã®1
/0
ã®å¥ãç
/åœ
ã§èšå®ãããå®è¡ã¯é
å»¶ãã¡ãœãããã§ãŒã³ãåŸç¶ã§ããã
æ ¡æ£ã¢ãŒã0ã®å Žåã2æéæ¯ïŒææ¡ãå¶æ°ã®æïŒèµ·ç¹ã§æå®æ°ã® 1/32768ç§Ãå ãå¢ãããæžããã ã€ãŸã調æŽå¯èœç²ŸåºŠã¯ ±4.34 ppm ç²åºŠã
äŸãã°ç²ŸåºŠæ ¡æ£å€ã
-3
ã ãšã2æéã«ä»ã 1/32768ç§ ã 1åééã§ 3åæžããããã
æ ¡æ£ã¢ãŒã1ã®å Žåã4忝ïŒåæ¡ã4ã®åæ°ã®æïŒèµ·ç¹ã§æå®æ°ã® 1/32768ç§Ãç§ ãå¢ãããæžããã ã€ãŸã調æŽå¯èœç²ŸåºŠã¯ ±4.069 ppm ç²åºŠã
äŸãã°ç²ŸåºŠæ ¡æ£å€ã
-3
ã ãšã4åã«ä»ã 1/32768ç§ ã 1ç§ééã§ 3åæžããããã
ç²ŸåºŠæ ¡æ£ã¯æå»å»ã¿ã«å¯ŸããŠè¡ãããããåšæ³¢æ°åºå端åã®åºååšæ³¢æ°ã«ã¯åœ±é¿ããªãã
ç²ŸåºŠæ ¡æ£ã¢ãŒãã§è£æ£ã¯ããã¯ãæ¿å
¥/é€å»ããããšãã
å²èŸŒç«¯åãæŽ»åãããããç
/åœ
ã§èšå®ãããå®è¡ã¯é
å»¶ãã¡ãœãããã§ãŒã³ãåŸç¶ã§ããã
ç²ŸåºŠæ ¡æ£å€ã-64
ã+63
ã®ç¯å²ã§èšå®ãããå®è¡ã¯é
å»¶ãã¡ãœãããã§ãŒã³ãåŸç¶ã§ããã
æŽæ°åæ ã¯æ¬¡åæ ¡æ£æå»ããæå¹ã
æå»ç®¡çã«ã¯æ¢å®ã® 24æé衚çŸã¢ãŒããšã12æé衚çŸã¢ãŒããšãããã äž¡è ã®åæ¿ã¯ééã§ã¯ãªãã®ã§æå»ã®åèšå®ãå¿ èŠã«ãªãã
PCF85063A
ã®å¹Žç®¡çã¯2æ¡ã ãã»ã³ãã¥ãªãŒãããã¯ãµããŒããããŠããªãã
ãã®ãã幎ã00
ã®å Žåãåžžã«éæ¥ïŒ2æ29æ¥ïŒãååšããã
ãããææ¥æŽæ°ã¯ãããšå¥ã«æ©èœãããããœãããŠã§ã¢ã§éæ¥è£æ£ãè¡ãããšãã§ãã
1900
ã2299
幎ç¯å²ã®è¥¿æŠãæ£ããæ±ãããšãåºæ¥ãã
ãªãPCF85063A
ã«ã¯ã¿ã€ã ã¹ã¿ã³ãïŒã¹ããããŠã©ããïŒã¢ãŒãã¯ãªããåãæ¿ããã§ããªãã
èšæåæ¢äžã®ããã€ã¹ã«èšæãåéããããå®è¡ã¯å³æãæåããã°çã æåããã°ã¡ããã© 0.5ç§åŸã«æåã®èšæïŒç§ã®æ¡ã®ïŒã€ã³ã¯ãªã¡ã³ããçºçããã èšæã¿ã€ãã³ã°åããã«äœ¿çšããã
èšæäžã®ããã€ã¹ã«èšæã忢ããããå®è¡ã¯å³æãæåããã°çã èšæã¿ã€ãã³ã°åããããããã¯ããã€ã¹ã䜿çšããªãå Žåã®çé»ååŸ æ©ã«äœ¿çšããã
ããã€ã¹ãèšæäžãªãçãè¿ããstop
ã¡ãœãããå®è¡ãããŸã§çã«çãŸãã
ããã€ã¹ãèšæåæ¢äžãªãçãè¿ããstart
ã¡ãœãããå®è¡ãããŸã§çã«çãŸãã
ããã€ã¹ã12æé衚çŸã¢ãŒãã§çšŒåäžãªãçãè¿ãã 24æé衚çŸã¢ãŒãïŒæ¢å®å€ïŒã§çšŒåäžãªãåœãè¿ãã
èšææ©èœã®èšæ
/忢
ãç
/åœ
ã§èšå®ãããå®è¡ã¯é
å»¶ãã¡ãœãããã§ãŒã³ãåŸç¶ã§ããã
start
stop
ãšæ©èœã¯åãã ã峿å®è¡ã§ã¯ãªãã
æå»è¡šç€ºã¢ãŒãã®12æéå¶
/24æéå¶
ã®å¥ãç
/åœ
ã§èšå®ãããå®è¡ã¯é
å»¶ãã¡ãœãããã§ãŒã³ãåŸç¶ã§ããã
æå»è¡šç€ºã¢ãŒã倿ŽåŸã®æå»ä¿æå 容ã¯äžæ£ã§ãããããæ¹ããŠèšå®ããªããã°ãªããªãã
çŸåšæå»ãtime_t
åã®UNIX Epoch
ã«å€æããŠè¿åŽããã
UTCïŒäžçå宿ïŒãåŠãã¯äœ¿çšè
å®çŸ©ã«ããã
è¿åŽå€ã¯çŸåšæå»ã西æŠ
2000
ã2099
幎ç¯å²ã®ããã ã®ã¿æ£ããã
getEpochNow
ã®å¥åã
çŸåšæå»ãbcddatetime_t
åã§ïŒå¹Žææ¥æåç§ãïŒè¿åŽããã
幎
ã¯2000
ã2099
ç¯å²ã§ãææ¥æ
å ±ã¯å«ãŸãªãã
æå¹ç¯å²å€ã®æå»ã§ã¯ææ¥ãæ£ãããªããªãã
çŸåšæå»ãbcddatetime_t
åã§ïŒå¹Žææ¥æåç§ãïŒè¿åŽããã
幎
ã¯1900
ã2299
ç¯å²ã§ãææ¥æ
å ±ã¯å«ãŸãªãã
ã°ã¬ãŽãªãªæŠã¯ 400å¹Žåšæã§åŸªç°ããŠãããããç¯å²å€ã®æå®ã¯çµæçã«äžžããããã
çŸåšæå»ãä¿æããŠããææ¥ãè¿ããç¯å²ã¯0:æ¥(Sun)
ã6:å(Sat)
ã§ããã
幎ã®ç²ŸåºŠã2æ¡ã®å Žåã ä¿æããŠããå¹Žææ¥ã21äžçŽãšèŠåããŠææ¥ãç®åºãããããšç°ãªããªã ä¿æããŠããå¹Žææ¥ã¯21äžçŽã§ã¯ãªããšå€å®ã§ããã ã°ã¬ãŽãªãªæŠã§ã®ãã®ææ¥çµã¿åããã¯èš4éãããååšããªãã®ã§ã ãããã20ã23äžçŽã®äœããã§ãããšèŠåãããšãã§ããã
ä»ã®3çš®ã¯ã°ã¬ãŽãªãªæŠã«çŸããã¯ãããªãã®ã§ãçµæã¯æªç¥ã§ããã
time_t
åã§çŸåšæå»ãèšå®ãããå®è¡ã¯å³æãæåããã°çã
çŸåšæå»ã«ã¯æ£ããææ¥ãèšå®ãããã
èšå®å¯èœãªã®ã¯è¥¿æŠ
2000
ã2099
幎ç¯å²ã®ããã ã«éãããã
鿥ã®ãªã幎㮠2æ29æ¥ã¯ã3æ1æ¥ãšã¿ãªãããã
bcddatetime_t
åã§çŸåšæå»ãèšå®ãããå®è¡ã¯å³æãæåããã°çã
幎
ã«ã¯1900
ã2299
ç¯å²ãæå®ã§ãã
çŸåšæå»ã«ã¯æ£ããææ¥ãèšå®ãããã
ã°ã¬ãŽãªãªæŠã¯ 400å¹Žåšæã§åŸªç°ããŠãããããç¯å²å€ã®æå®ã¯çµæçã«äžžããããã
鿥ã®ãªã幎㮠2æ29æ¥ã¯ã3æ1æ¥ãšã¿ãªãããã
bcddate_t
åã§å¹Žææ¥ã®ã¿ãçŸåšæå»ã«èšå®ãããå®è¡ã¯å³æãæåããã°çã
幎
ã«ã¯1900
ã2299
ç¯å²ãæå®ã§ãã
çŸåšæå»ã«ã¯æ£ããææ¥ãèšå®ãããã
ã°ã¬ãŽãªãªæŠã¯ 400å¹Žåšæã§åŸªç°ããŠãããããç¯å²å€ã®æå®ã¯çµæçã«äžžããããã
鿥ã®ãªã幎㮠2æ29æ¥ã¯ã3æ1æ¥ãšã¿ãªãããã
bcdtime_t
åã§æåç§ã®ã¿ãçŸåšæå»ã«èšå®ãããå®è¡ã¯å³æãæåããã°çã
date_t
åã® MJDïŒä¿®æ£ãŠãªãŠã¹éæ¥ïŒã§å¹Žææ¥ã®ã¿ãçŸåšæå»ã«èšå®ãããå®è¡ã¯å³æãæåããã°çã
幎
ã«ã¯1900
ã2299
ç¯å²ãæå®ã§ãã
çŸåšæå»ã«ã¯æ£ããææ¥ãèšå®ãããã
ã°ã¬ãŽãªãªæŠã¯ 400å¹Žåšæã§åŸªç°ããŠãããããç¯å²å€ã®æå®ã¯çµæçã«äžžããããã
鿥ã®ãªã幎㮠2æ29æ¥ã¯ã3æ1æ¥ãšã¿ãªãããã
adjustBcdDateTime
ã®å¥åãbcddatetime_t
åãæž¡ãã
adjustEpoch
ã®å¥åãtime_t
åãæž¡ãã
ã¢ã©ãŒã ã«ã¯é±
æ¥
æ
å
ç§
ã®5ã€ã®æ¯èŒèŠçŽ ãæãããã®è«çåãåãã
è€æ°ã®æ¯èŒãæå¹ã«ãããšããã®å
šãŠãçãšãªããªããã°ã¢ã©ãŒã åäœã¯çºåããªãã
ã¢ã©ãŒã åäœèªäœã¯åçºã¹ãããŒãã§ãããçºåãã©ã°ãã¯ãªã¢ããªããã° æ¬¡ã®æ¯èŒæ¡ä»¶ãæºãããæå»ã蚪ããŠããã¢ã©ãŒã åäœã¯çºåããªãã
ã¢ã©ãŒã çºåäžã¯å²èŸŒç«¯åã
LOW
ã«åŒããããŸãŸãšãªãã®ã§ããããã¯ãªã¢ããªããã°ä»ã®å²èŸŒããŸãéç¥ãããªãã
ã¢ã©ãŒã æ¯èŒæ¡ä»¶ãæ ŒçŽããæ§é äœå®çŸ©ã ã²ãšã€ã®ææ¥ãšã5ã€ã®æ¯èŒãã©ã°ãä¿æããŠããã
XRTC_ALARM_SETTINGS | å | 説æ |
---|---|---|
.WEEKDAYS | 3bit | ææ¥æå® 0-7 |
.SECOND | bool | çã§ç§æ¯èŒæå¹ |
.MINUTE | bool | çã§åæ¯èŒæå¹ |
.HOUR | bool | çã§ææ¯èŒæå¹ |
.DAY | bool | çã§æ¥æ¯èŒæå¹ |
.WEEKDAY | bool | çã§ææ¥æ¯èŒæå¹ |
ã¢ã©ãŒã ãçºåãããªãçãè¿ãã æ°ããªã¢ã©ãŒã ãèšå®ããããã¯ãªã¢ãããŸã§çã«çãŸãã
ãããã¯ãªã¢ãããªããã°çºåäžã®ã¢ã©ãŒã å²èŸŒç«¯åå¶åŸ¡LOW
ã¯åãäžããããªãã
ã¢ã©ãŒã å²èŸŒãæå¹ãªãçãè¿ãã
ã¢ã©ãŒã ã®æå¹
/ç¡å¹
ãç
/åœ
ã§èšå®ãããå®è¡ã¯å³æãæåããã°çã
ã¢ã©ãŒã ãæå¹åãããšãã¢ã©ãŒã å²èŸŒããŸãæå¹åãããã
ã¢ã©ãŒã ãç¡å¹åãããšãã¢ã©ãŒã å²èŸŒããŸãç¡å¹åãããã
çŸåšçºåäžã®ã¢ã©ãŒã ãã¯ãªã¢ãããå®è¡ã¯å³æãæåããã°çã çºåããã¢ã©ãŒã ãã¯ãªã¢ããŠããã¢ã©ãŒã å²èŸŒã¯ç¡å¹åãããªãã
ã¢ã©ãŒã æ¯èŒæ¡ä»¶ãèšå®ãããå®è¡ã¯é
å»¶ãã¡ãœãããã§ãŒã³ãåŸç¶ã§ããã
åŒæ°ã«ã¯ã²ãšã€ã®bcdtime_t
åã®æåç§ãšã
äžçµã®XRTC_ALARM_SETTINGS
æ§é äœãäžããã
çŸåšã®ã¢ã©ãŒã æ¯èŒæåç§ãbcdtime_t
åã§è¿åŽããã
çŸåšã®ã¢ã©ãŒã æ¯èŒèšå®ãXRTC_ALARM_SETTINGS
åã§è¿åŽããã
ã¿ã€ããŒåäœã«ã¯åšæåäœãšåçºåäœãããã åšæåäœã«ã¯æŽã«ãµãã€ã®çµèŸŒåºå®é·åšæã¿ã€ããŒãããã
äœããã®ã¿ã€ããŒãçºåãããªãçãè¿ãã
æ°ããªã¿ã€ããŒãèšå®ããããã¯ãªã¢ãããŸã§çã«çãŸãã
ãããã¯ãªã¢ãããªããã°åçºåäœã§çºåäžã®ã¿ã€ããŒå²èŸŒç«¯åã®LOW
å¶åŸ¡ã¯åãäžããããªãã
ã¿ã€ããŒå²èŸŒãæå¹ãªãçãè¿ãã
ä»»æã¿ã€ããŒãåšæåäœèšå®ãªãçãè¿ãã ä»»æã¿ã€ããŒãåçºåäœèšå®ãªãåœãè¿ãã
ã¿ã€ããŒåäœã®æå¹
/ç¡å¹
ãç
/åœ
ã§èšå®ãããå®è¡ã¯é
å»¶ãã¡ãœãããã§ãŒã³ãåŸç¶ã§ããã
éåžžããã¯ä»ã®ã¿ã€ããŒæäœå
ã§äžæžããããããã䜿çšããæ©äŒã¯ãªãã
ã¿ã€ããŒå²èŸŒåäœã®æå¹
/ç¡å¹
ãç
/åœ
ã§èšå®ãããå®è¡ã¯é
å»¶ãã¡ãœãããã§ãŒã³ãåŸç¶ã§ããã
éåžžããã¯ä»ã®ã¿ã€ããŒæäœå
ã§äžæžããããããã䜿çšããæ©äŒã¯ãªãã
ã¿ã€ããŒåäœãšå²èŸŒãç¡å¹åãããå®è¡ã¯å³æãæåããã°çã
çŸåšã®ã¿ã€ããŒçºåãã©ã°ã¯ã¯ãªã¢ãããã
activeTimer(false, false)
ã«åãã
ã¿ã€ããŒåäœãšå²èŸŒã®æå¹
/ç¡å¹
ãç
/åœ
ã§èšå®ãããå®è¡ã¯å³æãæåããã°çã
çŸåšã®ã¿ã€ããŒçºåãã©ã°ã¯ã¯ãªã¢ãããã
activeTimer(void)
ã¯activeTimer(true)
ã«åãã
activeTimer(false)
ã¯activeTimer(false, false)
ã«åãã
ã¿ã€ããŒåäœãšã¿ã€ããŒå²èŸŒã®åå¥ã®æå¹
/ç¡å¹
ãç
/åœ
ã§èšå®ãããå®è¡ã¯å³æãæåããã°çã
çŸåšã®ã¿ã€ããŒçºåãã©ã°ã¯ã¯ãªã¢ãããã
activeTimer(false, false)
ã¯deactiveTime(void)
ã«åãã
activeTimer(true, true)
ã¯activeTimer(void)
ã«åãã
activeTimer(false, true)
ã¯èšå®å¯èœã ãæå³ããªããªãã
activeTimer(true, false)
ã¯ã¿ã€ããŒçºåãã©ã°æŽæ°ã®ã¿èš±å¯ãããå²èŸŒç«¯åã¯é§åããªãã
ã¿ã€ããŒãçºåãããåŠãã¯isTimer
ã§èª¿ã¹ãããšãã§ããã
çŸåšã®ã¿ã€ããŒçºåãã©ã°ãã¯ãªã¢ããŠå²èŸŒç«¯åå¶åŸ¡ãåãäžãããå®è¡ã¯å³æãæåããã°çã
åšæåäœã¿ã€ããŒã¯æå¹ã§ããéãæå®ã®åšæé·ééã§åçºãã«ã¹ã¹ãããŒããç¹°ãè¿ãã ã¿ã€ããŒçºåãã©ã°ã¯ååçºåæã«çãšãªãã以åŸã¯ãªã¢ããããŸã§çãç¶æããã
ä»»æèšå®ã¿ã€ããŒã®ä»ã«60
ç§ããã³30
ç§ã®åºå®é·åšæã¿ã€ããŒãå¥ã«ããã
ä»»æåäœã®åšæã¿ã€ããŒãšåæã«äœ¿çšã§ããã
ãã ãã¿ã€ããŒçºåãã©ã°ã¯ã²ãšã€ãªã®ã§ãã©ã®ã¿ã€ããŒãçºåããããç¥ãããšã¯åºæ¥ãªãã
çµèŸŒ60
ç§åšæã¿ã€ããŒãæå¹ãªãçã
çµèŸŒ30
ç§åšæã¿ã€ããŒãæå¹ãªãçã
çµèŸŒ60
ç§åšæé·ã¿ã€ããŒã®æå¹
/ç¡å¹
ãç
/åœ
ã§èšå®ãããå®è¡ã¯é
å»¶ãã¡ãœãããã§ãŒã³ãåŸç¶ã§ããã
ãã®çµèŸŒåšæã¿ã€ããŒã¯ç§æ¡ã00
ã®æã«åçºå²èŸŒãçºçãããã
çµèŸŒ60ç§åšæã¿ã€ããŒã¯ãä»»æèšå®åšæã¿ã€ããŒãšåæã«äœ¿çšã§ããã
çµèŸŒ30
ç§åšæé·ã¿ã€ããŒã®æå¹
/ç¡å¹
ãç
/åœ
ã§èšå®ãããå®è¡ã¯é
å»¶ãã¡ãœãããã§ãŒã³ãåŸç¶ã§ããã
ãã®çµèŸŒåšæã¿ã€ããŒã¯ç§æ¡ã00
ã30
ã®æã«åçºå²èŸŒãçºçãããã
åŸã£ãŠçµèŸŒ60
ç§åšæé·ã¿ã€ããŒã®å¹æã¯é èœãããã
çµèŸŒ30
ç§åšæé·ã¿ã€ããŒã¯ãä»»æèšå®åšæã¿ã€ããŒãšåæã«äœ¿çšã§ããã
ä»»æèšå®åšæé·ã¿ã€ããŒã«ãçŸæå»ãèµ·ç¹ãšããåšæé·ãt_seconds
ã§äžããŠæå¹åãããå®è¡ã¯å³æãæåããã°çã
ã¿ã€ããŒçºåãã©ã°ã¯ã¯ãªã¢ãããã
æå®å¯èœãªæäœå€ã¯1
ç§ã
255
ç§ãŸã§ã¯ç§å»ã¿ã§æå®å¯èœã
ãã以äžã¯60
ç§å»ã¿ã«äžžãããã15300
ç§ãŸã§ãæå®ã§ããã
0
ãæå®ãããšãã®ã¿ã€ããŒåäœãšå²èŸŒã¯ç¡å¹åãããã
åçºåäœã¿ã€ããŒå²èŸŒã¯ããã®çºåäžã¯å²èŸŒç«¯åãLOW
ã«åŒãã
ããã¯clearTimerFlag
ã§ã¯ãªã¢ãããŸã§åãäžããããªãã
activateTimer
ãå®è¡ããéã®è©³çްèšå®æ§é äœã
éåžžããã䜿çšããå¿
èŠã¯ãªãã
XRTC_TIMER_SETTINGS | å | 説æ |
---|---|---|
.Value | uint8_t | ã«ãŠã³ãããŠã³èšå®å€0 ã255
|
.InterruptMode | bool | çã§åšæåäœãåœã§åçºåäœ |
.InterruptEnable | bool | çã§å²èŸŒç«¯åå¶åŸ¡èš±å¯ |
.Enable | bool | çã§ã¿ã€ããŒåäœæå¹ |
.ClockFrequency | 2bit | ã«ãŠã³ãããŠã³åšæ³¢æ°ã以äžã§æå® |
0 | 4.096kHz | |
1 | 64Hz | |
2 | 1Hz | |
3 | 1/60Hz |
ä»»æèšå®ã¿ã€ããŒã®çŸåšã®è©³çްæ
å ±ãXRTC_TIMER_SETTINGS
æ§é äœã«è¿åŽããã
ä»»æèšå®ã¿ã€ããŒã«è©³çްãã€å®å
šãªåäœèšå®ãXRTC_TIMER_SETTINGS
ã§äžãããå®è¡ã¯å³æãæåããã°çã
ã¿ã€ããŒçºåãã©ã°ã¯ã¯ãªã¢ãããã
éåžžããã䜿çšããå¿
èŠã¯ãªãã
ä»»æèšå®åçºåäœã¿ã€ããŒã«ãçŸæå»ãèµ·ç¹ãšããã«ãŠã³ãããŠã³æéãt_seconds
ã§äžããŠæå¹åãããå®è¡ã¯å³æãæåããã°çã
ã¿ã€ããŒçºåãã©ã°ã¯ã¯ãªã¢ãããã
æå®å¯èœãªæäœå€ã¯1
ç§ã
255
ç§ãŸã§ã¯ç§å»ã¿ã§æå®å¯èœã
ãã以äžã¯60
ç§å»ã¿ã«äžžãããã15300
ç§ãŸã§ãæå®ã§ããã
0
ãæå®ãããšãã®ã¿ã€ããŒåäœãšå²èŸŒã¯ç¡å¹åãããã
ä»»æèšå®åçºåäœã¿ã€ããŒãçºåãããšã¿ã€ããŒçºåãã©ã°ãçã«ãªãã
ãããã¯ãªã¢ããããŸã§å²èŸŒç«¯åãLOW
ãç¶æããã
åšæ³¢æ°åºå端åïŒCOTïŒã¯æ¢å®ã§ 32.768kHz ã®ç©åœ¢æ³¢ïŒpush-pullïŒãåžžæåºåããŠããã
ãã®ä¿¡å·ã¯ "Duino" ããŒãã®PIN_PF0
ã«ãžã£ã³ããŒèšå®ã§å
¥åããããšãã§ãã
RTC
åšèŸºæ©èœã«äŸçµŠããŸãã¯äž»å¶åŸ¡ã¯ããã¯ã®èªåæ ¡æ£ã
ãããã¯çŽæ¥çã«äž»å¶åŸ¡ã¯ããã¯ãšããŠäœ¿çšããããšãåºæ¥ãã
åšæ³¢æ°åºå端åïŒCOTïŒã®åºååšæ³¢æ°ãã以äžã®t_clockfreq
ã§æå®ãããå®è¡ã¯å³æãæåããã°çã
t_clockfreq | åºååšæ³¢æ° | ç©åœ¢æ³¢Dutyæ¯ | èšæåæ¢æ |
---|---|---|---|
0 | 32.768kHz | 60:40ã40:60 | äžå® |
1 | 16.384kHz | 50:50 | äžå® |
2 | 8.192kHz | 50:50 | äžå® |
3 | 4.096kHz | 50:50 | LOWåºå® |
4 | 2.048kHz | 50:50 | LOWåºå® |
5 | 1.024kHz | 50:50 | LOWåºå® |
6 | 1Hz | 50:50 | LOWåºå® |
7 | 忢 | - | LOWåºå® |
åºååšæ³¢æ°ã¯ã1Hzåºåãé€ããŠç²ŸåºŠæ ¡æ£ã®åœ±é¿ãåããªãã