IchigoJam P ใง็จใใใใ Raspbery Pi Pico (RP2040) ใซใฏใRTC (ใชใขใซใฟใคใ ใฏใญใใฏ) ใๅ ่ตใใใฆใใใ็พๅจๆๅปใฎๆ ๅ ฑใๆฑใใใจใใงใใใ
ไปๅใฏใๅฎ้ใซใใฎ RTC ใซใขใฏใปในใใๆๅปใ่ชญใฟๆธใใใฆใฟใใ
ใใฎใใใRaspberry Pi Pico ใฎๅๅใใผใธใซๆฒ่ผใใใฆใใ RP2040 ใฎใใผใฟใทใผใใๅ็
งใใใใญใฐใฉใใณใฐใ่กใฃใใ
ใใฎ่จไบใซๆฒ่ผใใฆใใใใทใณ่ชใฎใขใปใณใใชใณใผใใฏใๆน้ ็ asm15 ใงใขใปใณใใซใใใใจใๆณๅฎใใฆใใใ
โปIchigoJamใฏjig.jpใฎ็ป้ฒๅๆจใงใใ
RTC ใฎๆไฝใๆฏใใๆ่ก
RTC ใซไพ็ตฆใใใใฏใญใใฏใฎ็ขบ่ช
RP2040 ใฎ RTC ใๆๅปใ้ฒใใๅบๆบใจใชใใฏใญใใฏใฏใclk_rtc ใงใใใ
ใใผใฟใทใผใใฎ 2.15. Clocks ใใใจใซใใใฎใฏใญใใฏใ IchigoJam P ใซใใใฆใฉใฎใใใช่จญๅฎใซใชใฃใฆใใใใ็ขบ่ชใใใ
10 ' IchigoJam P clk_rtc
20 POKE#700,#03,#4B,#3F,#A2
30 POKE#704,#18,#68,#10,#60
40 POKE#708,#58,#68,#50,#60
50 POKE#70C,#70,#47,#00,#00
60 POKE#710,#6C,#80,#00,#40
70 X=USR(#700,0)
80 ?"CLK_RTC_CTRL = #";
90 ?HEX$([1],4);HEX$([0],4)
100 ?"CLK_RTC_DIV = #";
110 ?HEX$([3],4);HEX$([2],4)
ORG #700
R3 = [@CLK_RTC_ADDRESS]L
R2 = @ARRAY_ADDRESS
R0 = [R3]L
[R2]L = R0
R0 = [R3 + 1]L
[R2 + 1]L = R0
RET
ALIGN 4,0,0
@CLK_RTC_ADDRESS
UDATAL #4000806C
ORG #800
@ARRAY_ADDRESS
ๅฎ่ก็ตๆใฏใไปฅไธใฎใใใซใชใฃใใ
CLK_RTC_CTRL = #00000800
CLK_RTC_DIV = #00040000
ใจใชใฃใฆใใใใจใใใไปฅไธใฎใใจใใใใใ
-
clk_rtcใซใฏใใฏใญใใฏใฎไพ็ตฆใ่กใใใฆใใ (ENABLE = 1) -
clk_rtcใซไพ็ตฆใใใใฏใญใใฏใฏใPLL_USB ใฎๅบๅใใใจใซใชใฃใฆใใ (AUXSRC = 0) -
clk_rtcใซไพ็ตฆใใใใฏใญใใฏใฎๅจๆณขๆฐใฏใใใจใฎใฏใญใใฏใฎ 1 / 1024 ใงใใ
ใใฃใฆใPLL_USB ใฎๅบๅใ 48 MHz ใงใใใจไปฎๅฎใใใจใclk_rtc ใซใฏใใใฉใซใใง 46,875 Hz ใฎใฏใญใใฏใไพ็ตฆใใใฆใใใใจใใใใใ
ไปๅใฏใใใใไปฎๅฎใใๅฎ่ฃ
ใ่กใใ
400ใฎๅๆฐใงใชใ100ใฎๅๆฐใฎๅนดใฎๅคๅฎ
RP2040 ใฎ RTC ใฏใ0๏ฝ4095 ๅนดใๆฑใใใจใใงใใใ
ใใใๅนดใฎๅฆ็ใซใใใฆใ4ใฎๅๆฐใฎๅนดใใฎๅคๅฎใฏใใผใใฆใงใขใง่กใฃใฆใใใใใ100ใฎๅๆฐใฎๅนดใใฎๅคๅฎใฏ่กใใใใใใฉใซใใงใฏ4ใฎๅๆฐใฎๅนดใฏๅฟ
ใใใใๅนดใจใใฆๅฆ็ใใใใ
ใใใ้ฒใใซใฏใใฝใใใฆใงใขใงๅคๅฎใ่กใใใฌใธในใฟใฎๅฏพ็ญ็จใใฉใฐใ่จญๅฎใใชใใใฐใชใใชใใ
ใจใใใใRP2040 ใซใฏๅฒใ็ฎใ่กใๅฝไปคใ็กใใ100ใฎๅๆฐใฎๅนดใใฎๅคๅฎใซใฏๅทฅๅคซใๆฑใใใใใ
ใใใงใAI ใซใใๆนใ่ใใฆใฟใใ
ใใใจใ6554 ใๆใใฆ 16 ใใใๅณใทใใใใใใจใง 400 ใฎ้ๆฐใๆใใ็ตๆใฎ่ฟไผผใๆฑใใใจใใๆนๆณใ็คบใใใใ
ๆฎๅฟตใชใใใใฎๆนๆณใฏ้้ใฃใฆใใใ400 ใงใฏใชใ 10 ใงๅฒใฃใๅคใๅพใใใใ
ใใใใใๆใ็ฎใจใใใใทใใใงๅฒใ็ฎใ่ฟไผผใใใใจใใใขใคใใข่ชไฝใฏๆๅนใใใงใใใ
ใใใงใใใใคใใฎใใใใทใใๅน
ใซใคใใฆใๆใใในใๅคใๆฑใใใ
ๆใใในใๅคใฏใ(1 << ใทใใๅน
) / 400 ใงๆฑใใใใจใใงใใใ
ใชใใ็ถใๅฆ็ใฎ้ฝๅใงใๆฑใใ่ฟไผผๅคใฏ็ใฎๅคใใๅฐใๅฐใใใฎใใใใ
| ใทใใๅน | ๆใใในใๅค |
|---|---|
| 16 | 163.84 |
| 15 | 81.92 |
| 14 | 40.96 |
| 13 | 20.48 |
| 12 | 10.24 |
| 11 | 5.12 |
| 10 | 2.56 |
| 9 | 1.28 |
ๆใใๅคใใใฎใๆใใในใๅคใใใๅฐๆฐ็นไปฅไธใๅใๆจใฆใ (ใใชใใกใๅฐใๅฐใใใใ) ๅคใซใใใใจใงใ็ใฎๅคใใๅฐใๅฐใใ่ฟไผผๅคใๅพใใใจใใงใใใ
ใใฎไธญใงใฏใใทใใๅน
11 ใฎใจใๅใๆจใฆใ้ใ 0.12 ใจๅฐใใใฎใงใ่ชคๅทฎใๅฐใใใชใใใจใๆๅพ
ใงใใใจใใฆๆก็จใใใ
ๅนดใฎๅคใ 400 ใงๅฒใฃใๅใๆฑใพใฃใใใใใใซ 400 ใๆใใฆๅนดใฎๅคใใๅผใใใจใงใๅนดใฎๅคใ 400 ใงๅฒใฃใไฝใใๆฑใใใใจใใงใใใ
ไปๅใฏๅใฎ่ฟไผผๅคใ็จใใฆใใใใใใฏๆญฃใใๅใใๅฐใใใใจใใใใใใๆฑใพใใไฝใใใฏ 400 ไปฅไธใซใชใใใจใใใใ
ใไฝใใใ 400 ไปฅไธใซใชใฃใ้ใฏ 400 ใๅผใใใจใงๆญฃใใไฝใใๆฑใใใใจใใงใใใ
ใจใใใงใไปๅใฏไฝใใๆฑใใใใฎใงใฏใชใใไฝใใ 100 ใฎๅๆฐใซใชใใใ ใใใใใฐใใใ
ใใฎใใใใใฎๅคๅฎใซๅฝฑ้ฟใไธใใชใใใฐใ400 ใๅผใๅฆ็ใ็็ฅใงใใใ
ๅฎ้ใซใไปฅไธใฎใณใผใใง่ฉฆใใฆใฟใใ
#include <stdio.h>
int main(void) {
int i;
int wa_cnt = 0;
for (i = 0; i < 4096; i++) {
int q = (i * 5) >> 11;
int r = i - 400 * q;
int expected = i % 100 == 0 && i % 400 != 0;
int actual = r == 100 || r == 200 || r == 300;
int ac = expected == actual;
printf("%4d %4d %d %d %d\n", i, r, expected, actual, ac);
wa_cnt += !ac;
}
printf("wa_cnt = %d\n", wa_cnt);
return 0;
}
ๅฎ่ก็ตๆ ใ่ฆใใจใwa_cnt = 0 ใ 0 ใจใชใฃใฆใใใๅ
จใฆใฎๅ
ฅๅใซใใใฆๆญฃใใๅคๅฎใใงใใใใจใใใใใ
ใใชใใกใๅ
ฅๅใ 0๏ฝ4095 ใฎ็ฏๅฒใฎใจใใ400 ใงๅฒใฃใใจใใฎๅใใ5 ใๆใใฆ 11 ใใใๅณใทใใใใใๅฆ็ใง่ฟไผผใใใใฎๅใ็จใใฆใไฝใใใๆฑใใ็ตๆใ 100, 200, 300 ใฎใใใใใงใใใใๅคๅฎใใใใจใงใใๅ
ฅๅใ 100 ใฎๅๆฐใงใใใใใค 400 ใฎๅๆฐใงใฏใชใใใใฉใใใจๅใๅคๅฎ็ตๆใๅพใใใจใใงใใใ
ใใฃใฆใใใฎๅคๅฎๆนๆณใงใ4 ใฎๅๆฐใงใใฃใฆใใใใๅนดใงใชใๅนดใใฉใใใใๅคๅฎใใใใจใใงใใใ
ใใใใทใใใ็จใใใใใใในใฏๅฆ็
่คๆฐใฎๆ
ๅ ฑใๆ ผ็ดใใใใฏใผใใใๆฌฒใใๆ
ๅ ฑใๅใๅบใใซใฏใใใใใในใฏใจใฎ AND ๆผ็ฎใ่กใๆนๆณใใใ็จใใใใใ
ใใใใใใฎๆนๆณใงใฏใใพใใใใใในใฏใฎๅคใ็จๆใใๅฟ
่ฆใใใใ้ขๅใงใใใ
ใใจใใฐใใฌใธในใฟ R0 ใฎไธใใ 4 ใใใ็ฎใใ 7 ใใใ็ฎใๅใๅบใๅ ดๅใ็ด ็ดใซๅฎ่ฃ
ใใใจ
R1 = R0 >> 4
R2 = #F
R1 &= R2
ใฎใใใซใ3 ๅฝไปคใไฝฟใใใจใซใชใใ
ใใใใไปฅไธใฎใใใซใใใใจใงใใใใใทใใใ็จใใฆๆฌฒใใๆ ๅ ฑใๅใๅบใใใจใใงใใใ
- ๅทฆใทใใใ่กใใๆฌฒใใๆ ๅ ฑใใไธไฝใฎไฝ่จใชใใใใ็ฏๅฒๅคใซๆผใๅบใ
- ่ซ็ๅณใทใใใ่กใใๆฌฒใใๆ ๅ ฑใใไธไฝใฎไฝ่จใชใใใใ็ฏๅฒๅคใซๆผใๅบใ
่ซ็ๅณใทใใใฎๅน
ใฏใใ่กใฃใๅทฆใทใใใฎๅน
๏ผ ๆๅใฎ็ถๆ
ใงใฎๆฌฒใใๆ
ๅ ฑใใไธไฝใฎไฝ่จใชใใใใฎๆฐใใงใใใ
ใใฎๆนๆณใ็จใใใจใ
R1 = R0 << 24
R1 = R1 >> 28
ใฎใใใซใ2 ๅฝไปคใงๆฌฒใใๆ ๅ ฑใ ใใๅใๅบใใใจใใงใใใใ็ญใใณใผใใงๅฎ็พใงใใใ
ๆธใ่พผใฟใซใใใใใใปใใใปใใใใฏใชใข
RP2040 ใฎๅจ่พบๆฉๅจใๅถๅพกใใใฌใธในใฟใงใฏใๆฎ้ใฎ่ชญใฟๆธใใขใฏใปในใซๅ ใใ
- ๆฌๆฅใฎใขใใฌในใซ
0x2000ใ่ถณใใใขใใฌในใซๆธใ่พผใใใจใงใๆธใ่พผใใ ๅคใใ1ใใฎใใใใใ1ใใซใใใ0ใใฎใใใใฏๅคใใชใ (ใใใใปใใ) - ๆฌๆฅใฎใขใใฌในใซ
0x3000ใ่ถณใใใขใใฌในใซๆธใ่พผใใใจใงใๆธใ่พผใใ ๅคใใ1ใใฎใใใใใ0ใใซใใใ0ใใฎใใใใฏๅคใใชใ (ใใใใฏใชใข)
ใใจใใงใใใ
(ใใผใฟใทใผใ 2.1.2. Atomic Register Access)
ใใฎๆฉ่ฝใ็จใใใใจใงใใฌใธในใฟๅ ใฎไธ้จใฎใใใใฎใฟใๅคๆดใใใ้ใ
- ใฌใธในใฟใฎๅคใ่ชญใฟๅบใ
- ๅคๆดใใใใใใใๅคๆดใใ
- ๅคๆดๅพใฎๅคใๆธใ่พผใ
ใจใใๆ้ ใ่ธใพใใๅคๆดใใใใใใฎไฝ็ฝฎใ่กจใๅคใๆธใ่พผใใ ใใงๅคๆดใงใใใฎใงใๅน็ใใๅฆ็ใ่กใใใจใใงใใใ
RTC ใฎๆไฝใง็จใใใใผใฟๅฝขๅผ
RTC ใฎใฌใธในใฟ (RP2040 ใฎไปๆง)
RP2040 ใฎ RTC ใงใฏใ32ใใใใฎใฌใธในใฟใ2ๅ็จใใฆๆๅปใ่กจ็พใใใ
2ๅใฎใฌใธในใฟใซใใใใใใๆฅไปใใผใฟใใใใณใๆๆฅใปๆๅปใใผใฟใใๆ ผ็ดใใใ
ๆฅไปใใผใฟ
| ใใผใฟๅ | ๆไธไฝใใใ | ใใใๆฐ | ๆๅณ |
|---|---|---|---|
YEAR |
12 | 12 | ๅนด (0๏ฝ4095) |
MONTH |
8 | 4 | ๆ (1๏ฝ12) |
DAY |
0 | 5 | ๆฅ (1๏ฝๆๅคง31) |
ๆฅใฎๆๅนใชๆๅคงๅคใฏใๅนดใจๆใซใใใ
ๆๆฅใปๆๅปใใผใฟ
| ใใผใฟๅ | ๆไธไฝใใใ | ใใใๆฐ | ๆๅณ |
|---|---|---|---|
DOTW |
24 | 3 | ๆๆฅ (ๆฅ๏ผ0ใๆ:1ใโฆใๅ๏ผ6) |
HOUR |
16 | 5 | ๆ (0๏ฝ23) |
MIN |
8 | 6 | ๅ (0๏ฝ59) |
SEC |
0 | 6 | ็ง (0๏ฝ59) |
้ ๅใ็จใใ่กจ็พ (ไปๅใฎ็ฌ่ชไปๆง)
ไปๅใฏใIchigoJam BASIC ใฎ้
ๅใฎ่ฆ็ด ใไปฅไธใฎใใใซๆฅๆใฎ่ฆ็ด ใซๅฒใๅฝใฆใใ
ๆๆฅใฏๆฑใใชใใ
| ๆทปๅญ | ๆฅๆใฎ่ฆ็ด |
|---|---|
| 0 | ๅนด |
| 1 | ๆ |
| 2 | ๆฅ |
| 3 | ๆ |
| 4 | ๅ |
| 5 | ็ง |
RTC ใฎ่ชญใฟๅบใๅฆ็ใฏใใใใใฎ่ฆ็ด ใซ็ตๆใๆ ผ็ดใใใ
้ใซใRTC ใธใฎๆธใ่พผใฟๅฆ็ใฏใใใใใฎ่ฆ็ด ใใๆธใ่พผใๆฅๆใๅๅพใใใ
RTC ใฎๆไฝใ่กใๆนๆณ
RP2040 ใฎ RTC ใฏใไปฅไธใฎๆ้ ใงๆไฝใ่กใใใจใใงใใใ
ใใใงใใใชใใปใใใใจใฏใๅใฌใธในใฟใฎใขใใฌในใใ 0x4005c000 (RTC ้ขไฟใฎใฌใธในใฟใฎใใผในใขใใฌใน) ใๅผใใๅคใ็คบใใ
ใใชใใกใๅใฌใธในใฟใฎใขใใฌในใฏใใใชใใปใใใใซ 0x4005c000 ใ่ถณใใใใฎใงใใใ
ใพใใใใใใฎไฝ็ฝฎใฏ LSB (ๆไธไฝใใใ) ใ 0 ใจใใใ(0-origin)
RTC ใซๆๅปใๆธใ่พผใ
ไปฅไธใฎๆ้ ใงใRTC ใ็ฎก็ใใฆใใๆๅปใ่จญๅฎใงใใใ
- ๆธใ่พผใๆๅปใ่จญๅฎใใ
- ่จญๅฎใใๆๅปใๆธใ่พผใๆ็คบใๅบใ
ๅ ทไฝ็ใซใฏใไปฅไธใฎใใใซ่กใใ
-
SETUP_0ใฌใธในใฟ (ใชใใปใใ0x04) ใซๆฅไปใใผใฟใๆธใ่พผใ -
SETUP_1ใฌใธในใฟ (ใชใใปใใ0x08) ใซๆๆฅใปๆๅปใใผใฟใๆธใ่พผใ -
CTRLใฌใธในใฟ (ใชใใปใใ0x0c) ใฎLOAD(ใใใ 4) ใซ1ใๆธใ่พผใ
RTC ใ่ตทๅใใ
ใพใใRTC ใซไพ็ตฆใใฆใใใฏใญใใฏ clk_rtc ใฎๅจๆณขๆฐใฎๆ
ๅ ฑใ่จญๅฎใใใ
ๅ
ทไฝ็ใซใฏใCLKDIV_M1 ใฌใธในใฟ (ใชใใปใใ 0x00) ใซใๅจๆณขๆฐ [Hz] ๏ผ 1ใใฎๅคใ่จญๅฎใใใ
ใใฎใฌใธในใฟใฏใไธไฝ 16 ใใใใๆๅนใงใใใ
ไปๅใฏ clk_rtc ใฎๅจๆณขๆฐใ 46,875 Hz ใจไปฎๅฎใใฆใใใฎใงใ46874 ใ่จญๅฎใใใ
ใใใฏใclk_rtc ใๅๅจใใฆ 1 Hz ใซใใใใใฎๅๅจๆฏใฎ่จญๅฎใงใใใ
ๆฌๆฅใใๅฐใใๅคใ่จญๅฎใใใจใๆๅปใๆฌๆฅใใ้ใ้ฒใใใใซใชใใๅฎ้จใชใฉใซๅฝน็ซใคๅฏ่ฝๆงใใใใ
ๆฌกใซใRTC ใๆๅนใซใใใ
ๅ
ทไฝ็ใซใฏใCTRL ใฌใธในใฟ (ใชใใปใใ 0x0c) ใฎ RTC_ENABLE (ใใใ 0) ใซ 1 ใๆธใ่พผใใ
RTC ใๅไฝใใฆใใใใฏใCTRL ใฌใธในใฟ (ใชใใปใใ 0x0c) ใฎ RTC_ACTIVE (ใใใ 1) ใง็ขบ่ชใงใใใ
ใใฎใใใใ 1 ใงใใใฐๅไฝใใฆใใใ0 ใงใใใฐๅไฝใใฆใใชใใ
RTC ใใๆๅปใ่ชญใฟ่พผใ
ไปฅไธใฎๆ้ ใงใRTC ใ็ฎก็ใใฆใใๆๅปใๅๅพใงใใใ
-
RTC_0ใฌใธในใฟ (ใชใใปใใ0x1c) ใใๆๆฅใปๆๅปใใผใฟใ่ชญใฟ่พผใ -
RTC_1ใฌใธในใฟ (ใชใใปใใ0x18) ใใๆฅไปใใผใฟใ่ชญใฟ่พผใ
ๅฟ
ใ RTC_1 ใฌใธในใฟใ่ชญใฟ่พผใๅใซ RTC_0 ใฌใธในใฟใ่ชญใฟ่พผใใ
ใใใใใใจใงใRTC_0 ใฌใธในใฟใใ่ชญใฟ่พผใๆใซ RTC_1 ใฌใธในใฟใใ่ชญใฟ่พผใๅคใๆฑบๅฎใใใๆญฃใใๆๅปใๅๅพใงใใใใใซใชใใ
SETUP_0 ใใใณ SETUP_1 ใฌใธในใฟใจใฏใ 0/1 ใจใใผใฟใฎๅฏพๅฟ้ขไฟใ้ใงใใใ
ใใใๅนดๅคๅฎใฎ่ฃๆญฃใ่กใ
ไปฅไธใฎๆกไปถใๅ จใฆๆบใใๅ ดๅใ2ๆ28ๆฅใฎๆฌกใฎๆฅไปใ2ๆ29ๆฅใซใชใใ(ใใใๅนด)
- ๅนดใฎๅคใ 4 ใงๅฒใๅใใ
-
FORCE_NOTLEAPYEARใใใใ 0 ใงใใ
ใใใงใชใๅ ดๅใ2ๆ28ๆฅใฎๆฌกใฎๆฅไปใฏ3ๆ1ๆฅใซใชใใ(ๅนณๅนด)
FORCE_NOTLEAPYEAR ใใใใฎๅคๅฎใฏ2ๆ28ๆฅใ็ตใใๆใซ่กใใใใใฎๅใฎไปปๆใฎใฟใคใใณใฐใง่จญๅฎใใฆใใใ
ใใจใใฐใๅๅ็ญใ้้ใงๆๅปใใใผใชใณใฐใใชใใ็พๅจๆๅปใฎๅนดใ ใใ่ฆใฆใใใใ 100 ใงๅฒใๅใใฆ 400 ใงๅฒใๅใใชใใชใ 1ใใใใงใชใใชใ 0 ใ่จญๅฎใใใฐใใใ
FORCE_NOTLEAPYEAR ใใใใฏใCTRL ใฌใธในใฟ (ใชใใปใใ 0x0c) ใฎ 8 ใใใ็ฎใงใใใ
RTC ใๆไฝใใใใญใฐใฉใ ใฎๅฎ่ฃ
ใใทใณ่ช
USR ้ขๆฐใฎ็ฌฌ2ๅผๆฐใ 0 ใฎใจใใฏใRTC ใฎ็ถๆ
ใๅๅพใใRTC ใ่ตทๅใใฆใใใฐๆๅปใ้
ๅใซๆ ผ็ดใใใ
0 ไปฅๅคใฎใจใใฏใ้
ๅใซๆ ผ็ดใใใฆใใๆๅปใ RTC ใซ่จญๅฎใใRTC ใ่ตทๅใใใ
RTC ใ่ตทๅใใฆใใใฐ 0 ใใ่ตทๅใใฆใใชใใใฐ 1 ใ่ฟใใ
้ ๅใฎ่กจ็พใจ RTC ใฎใฌใธในใฟใฎ่กจ็พใฎ้ใฎๅคๆใใใใใๅนดๅคๅฎใฎ่ฃๆญฃใ่กใใ
ORG #700
' ----- ใณใใณใใ็ขบ่ชใใ -----
R0 & R0
IF !0 GOTO @SET_RTC_VALUE
' ----- 0๏ผRTCใฎ็ถๆ
ใ่ชญใฟๅใ -----
R3 = [@RTC_ADDRESS]L
' RTCใๅไฝไธญใใ็ขบ่ชใใ
R0 = [R3 + 3]L
R0 = R0 >> 2
IF CS GOTO @RTC_RUNNING_IN_GET
' RTCใฏๅๆญขใใฆใใใฎใงใ1ใ่ฟใ
R0 = 1
RET
@RTC_RUNNING_IN_GET
' RTCใฎๆๅปใ่ชญใฟๅใ
R1 = [R3 + 7]L ' RTC_0
R2 = [R3 + 6]L ' RTC_1
R3 = @ARRAY_ADDRESS
R0 = R2 << 20
R0 = R0 >> 28
[R3 + 1]W = R0 ' MONTH
R0 = R2 << 27
R0 = R0 >> 27
[R3 + 2]W = R0 ' DAY
R0 = R1 << 11
R0 = R0 >> 27
[R3 + 3]W = R0 ' HOUR
R0 = R1 << 18
R0 = R0 >> 26
[R3 + 4]W = R0 ' MIN
R0 = R1 << 26
R0 = R0 >> 26
[R3 + 5]W = R0 ' SEC
' ใใใๅนด่ฃๆญฃใฎๅคๅฎใซ็จใใใใใๅนดใๆๅพใซๅๅพใใR0ใซ็ฝฎใ
R0 = R2 << 8
R0 = R0 >> 20
[R3]W = R0 ' YEAR
GOTO @ADJUST_LEAP_YEAR
@SET_RTC_VALUE
' ----- ้0๏ผRTCใฎๆๅปใ่จญๅฎใใๆๅนๅใใ -----
' ้
ๅใใๆๅปใ่ชญใฟๅใใ RTC็จใฎๅฝขๅผใซใใ
R3 = @ARRAY_ADDRESS
R0 = [R3]W ' YEAR
R0 = R0 << 20
R1 = R0 >> 8
R0 = [R3 + 1]W ' MONTH
R0 = R0 << 28
R0 = R0 >> 20
R1 |= R0
R0 = [R3 + 2]W ' DAY
R0 = R0 << 27
R0 = R0 >> 27
R1 |= R0
R0 = [R3 + 3]W ' HOUR
R0 = R0 << 27
R2 = R0 >> 11
R0 = [R3 + 4]W ' MIN
R0 = R0 << 26
R0 = R0 >> 18
R2 |= R0
R0 = [R3 + 5]W ' SEC
R0 = R0 << 26
R0 = R0 >> 26
R2 |= R0
' ๆๅปใRTCใฎใฌใธในใฟใซๆธใ่พผใ
R3 = [@RTC_ADDRESS]L
[R3 + 1]L = R1 ' SETUP_0
[R3 + 2]L = R2 ' SETUP_1
' RTCใๅๆญขไธญใงใใใฐใใฏใญใใฏใฎๅๅจๆฏใ่จญๅฎใใ
R0 = [R3 + 3]L
R0 = R0 >> 2
IF CS GOTO @RTC_RUNNING_IN_SET
' 46874 ใๆธใ่พผใ (ๅๅจๆฏ = 1 / 46875)
R0 = #B7
R0 = R0 << 8
R0 += #1A
[R3]L = R0
@RTC_RUNNING_IN_SET
R3 = [@RTC_SET_ADDRESS]L
' ๆๅปใRTCใซๅๆ ใใใ
R0 = `10000
[R3 + 3]L = R0
' RTCใๅไฝใใใ
R0 = 1
[R3 + 3]L = R0
' ใใใๅนด่ฃๆญฃใฎๅคๅฎ็จใซใๅนดใR0ใซ็ฝฎใ
R3 = @ARRAY_ADDRESS
R0 = [R3]W ' YEAR
R0 = R0 << 20
R0 = R0 >> 8
@ADJUST_LEAP_YEAR
' ----- ๅ
ฑ้๏ผใใใๅนดใฎ่ฃๆญฃๅฆ็ใ่กใ -----
' ใใใๅนดใฎๅฏ่ฝๆงใใชใใจไปฎ็ฝฎใใใ
R3 = [@RTC_SET_ADDRESS]L
' R1 = (R0 * 5) >> 11
R1 = 5
R1 *= R0
R1 = R1 >> 11
' R1 = 400 * R1
R2 = 200
R2 = R2 << 1
R1 *= R2
R0 = R0 - R1
' ๅนดใ400ใงๅฒใฃใไฝใใ 100, 200, 300 ใฎใใใใใใใใงใใฏใใ
R0 -= 100
IF 0 GOTO @NOT_LEAP_YEAR
R0 -= 100
IF 0 GOTO @NOT_LEAP_YEAR
R0 -= 100
IF 0 GOTO @NOT_LEAP_YEAR
' ใใใๅนดใฎๅฏ่ฝๆงใใใ
R3 = [@RTC_CLEAR_ADDRESS]L
@NOT_LEAP_YEAR
' ๅคๅฎ็ตๆใใฌใธในใฟใซๆธใ่พผใ
R0 = 1
R0 = R0 << 8
[R3 + 3]L = R0
' 0ใ่ฟใ (RTCใๅไฝไธญใงใใใใจใ็คบใ)
R0 = 0
RET
ALIGN 4,0,0
@RTC_ADDRESS
UDATAL #4005C000
@RTC_SET_ADDRESS
UDATAL #4005E000
@RTC_CLEAR_ADDRESS
UDATAL #4005F000
ORG #800
@ARRAY_ADDRESS
BASIC
ๆๅใซใใใทใณ่ชใฎใใญใฐใฉใ ใใญใฃใฉใฏใฟใผใใฟใผใณ้ ๅใซๆ ผ็ดใใใ
ๆฌกใซใ1ๅ็ถๆ
ใๅๅพใใฆ RTC ใๅไฝใใฆใใใใๅคๅฎใใๅไฝใใฆใใชใใใฐๆๅปใฎ่จญๅฎใจ RTC ใฎ่ตทๅใ่กใใ
ใใฎๅพใฏใๆๅปใฎใใผใชใณใฐใจ่กจ็คบใ่กใใ
ๅคๆฐ S ใ็จใใฆ่กจ็คบใใ็งใ็ฎก็ใใ็งใๅคใใฃใฆใใใ่กจ็คบใฎๆดๆฐใ่กใใ
ใใฎ้ใไธไฝใ 0 ใงใชใ็ถๆ
ใซใใฆๅใใใจใงใ0ๅใๆๅฎๆกๆฐ่กจ็คบใใใใฏใใใฏใ็จใใใ
10 ' IchigoJam P RTC
20 POKE#700,0,66,27,209,44,75,216,104,128,8,1,210,1,32,112,71,217,105,154,105,58,163,16,5,0,15,88,128,208,6,192,14,152,128,200,2,192,14,216,128,136,4,128,14,24,129,136,6,128,14,88,129,16,2,0,13
30 POKE#738,24,128,41,224,48,163,24,136,0,5,1,10,88,136,0,7,0,13,1,67,152,136,192,6,192,14,1,67,216,136,192,6,194,10,24,137,128,6,128,12,2,67,88,137,128,6,128,14,2,67,19,75,89,96,154,96,216,104
40 POKE#772,128,8,3,210,183,32,0,2,26,48,24,96,15,75,16,32,216,96,1,32,216,96,29,163,24,136,0,5,0,10,10,75,5,33,65,67,201,10,200,34,82,0,81,67,64,26,100,56,4,208,100,56,2,208,100,56,0,208,4,75,1,32
50 POKE#7B0,0,2,216,96,0,32,112,71,0,192,5,64,0,224,5,64,0,240,5,64
60 S=-1:IF USR(#700,0) INPUT"YEAR =",[0]:INPUT"MONTH=",[1]:INPUT"DAY =",[2]:INPUT"HOUR =",[3]:INPUT"MIN =",[4]:INPUT"SEC =",[5]:X=USR(#700,1)
70 CLS
80 X=USR(#700,0):IF [5]=S WAIT1 ELSE LOCATE6,11:?DEC$([0]+10000,4);"/";DEC$([1]+100,2);"/";DEC$([2]+100,2);" ";DEC$([3]+100,2);":";DEC$([4]+100,2);":";DEC$([5]+100,2):S=[5]
90 GOTO80
ๅฎ่ก็ตๆไพ
IchigoJam P ใใชใปใใใใฆๆๅใซใใฎใใญใฐใฉใ ใ่ตทๅใใใจใRTC ใๅไฝใใฆใใชใใฎใงใ่จญๅฎใใๆๅปใฎๅ
ฅๅใๆฑใใใ
ๆๅปใๅ
ฅๅใใใจใใใฎๆๅปใ RTC ใซ่จญๅฎใใฆ RTC ใ่ตทๅใใ็พๅจๆฅๆใฎ่กจ็คบใซ็งปใใ
2 ๅ็ฎไปฅ้ใซ่ตทๅใใใจใRTC ใๅไฝใใฆใใใฎใงใๆๅใใ็พๅจๆฅๆใฎ่กจ็คบใ่กใใ
ใใใใซ
IchigoJam P (RP2040) ใซๅ ่ตใใใฆใใ RTC ใฎไฝฟใๆนใ็ขบ่ชใใๅฎ้ใซๆๅปใฎ่จญๅฎใๅๅพใ่กใใใจใใงใใใ
ไปๅใฏใใใทใณ่ชใฎใใญใฐใฉใ ใง BASIC ใฎๅฎน้ใฎๅคง้จๅใๅใพใฃใฆใใพใใใใใ็จใใใใญใฐใฉใ ใจใใฆใฏๅคงใใๅฆ็ใใงใใฆใใชใใ
ใใใฏๅ็ดใชใจใณใณใผใใ็จใใฆใใใใใงใใใใใๅน็ใฎ่ฏใใจใณใณใผใใ็จใใใใใใทใณ่ชใใกใขใชใซๆ ผ็ดใใใใญใฐใฉใ ใจใใใ็จใใๅฆ็ใ่กใใใญใฐใฉใ ใๅใใใใใใใจใงๆนๅใงใใใใจใๆๅพ
ใงใใใ
ใจใฏใใใใใฎ RTC ใฏ IchigoJam P ใใชใปใใใใใ้ปๆบใๅใฃใใใใใจใชใปใใใใใฆใใพใใๆฌกใซไฝฟใ้ใซใฏๅ่จญๅฎใใชใใใฐใชใใชใใ
ใใฎใใใใใใใชใผใใใฏใขใใใซใใ้ฃ็ถๅไฝใๅฏ่ฝใชๅค้จใฎ RTC ใขใธใฅใผใซใฎๆนใไฝฟใๅๆใ่ฏใใใใใใชใใ
ใใใใฏใMixJuice ใชใฉใไฝฟ็จใใฆ่ชๅใงๅ่จญๅฎใ่กใใใจใใ้ธๆ่ขใใใใ ใใใ
ใใฎ่จไบใซๆฒ่ผใใใฝใผในใณใผใใฏใCC0 1.0 ใงใฉใคใปใณในใใใ




Comments
Let's comment your feelings that are more than good