Compare commits
2984 Commits
1.1.2
...
Marlin_RTO
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0bdea3f854 | ||
|
|
bef6b94b7e | ||
|
|
05fe47e59a | ||
|
|
a1fdfa56f5 | ||
|
|
4e3bad6dce | ||
|
|
5d5cd1332d | ||
|
|
53b8c3bd66 | ||
|
|
1b6bc19427 | ||
|
|
2ebfe90be9 | ||
|
|
69d0ed5791 | ||
|
|
d32c4efc77 | ||
|
|
bc1ba998b2 | ||
|
|
bad225dc04 | ||
|
|
0f7d82bab1 | ||
|
|
d783400330 | ||
|
|
72af8e0f02 | ||
|
|
7e8c073fba | ||
|
|
0c01099f17 | ||
|
|
eafd62308e | ||
|
|
e25d2ae4a2 | ||
|
|
f417408df1 | ||
|
|
3d7f2c1fde | ||
|
|
a9c98a0e47 | ||
|
|
9f85d3a9cb | ||
|
|
e2e7b1d705 | ||
|
|
67996c2b66 | ||
|
|
9c8d9d282f | ||
|
|
e3aac59637 | ||
|
|
f580247581 | ||
|
|
073857646b | ||
|
|
fe4fc2883b | ||
|
|
2a61c9a939 | ||
|
|
b3efbc6e6e | ||
|
|
3b2690ab02 | ||
|
|
679e4602fe | ||
|
|
beb51c2d58 | ||
|
|
d10f29ae2e | ||
|
|
dcfde2317f | ||
|
|
d5379ee9d6 | ||
|
|
8d5bea073b | ||
|
|
9651ceb36b | ||
|
|
b213a89ef5 | ||
|
|
86ee74731e | ||
|
|
ae1271b2ae | ||
|
|
650d4313c4 | ||
|
|
530a13ab6c | ||
|
|
12fded46c2 | ||
|
|
aefc2f7cf9 | ||
|
|
72fdb6bab3 | ||
|
|
8b837dc3ad | ||
|
|
d1ceaf5550 | ||
|
|
d62f4df0b7 | ||
|
|
fa772c31bf | ||
|
|
8e18e48d49 | ||
|
|
4668c71a75 | ||
|
|
59e76e5fdf | ||
|
|
509ee44611 | ||
|
|
f8abe12a9c | ||
|
|
7680b64aa6 | ||
|
|
8c11220042 | ||
|
|
d0c96ee83e | ||
|
|
49e107cea9 | ||
|
|
92069f1422 | ||
|
|
05dc79e78d | ||
|
|
18f1af2dca | ||
|
|
74a04aed55 | ||
|
|
509e1cf2bd | ||
|
|
e3debc796d | ||
|
|
d55f44edba | ||
|
|
6a3207391f | ||
|
|
77efcad1df | ||
|
|
e3fc9aa35f | ||
|
|
136860e8bb | ||
|
|
66de50f5f8 | ||
|
|
ada85d5585 | ||
|
|
607c1e58d9 | ||
|
|
3e81745e81 | ||
|
|
aa80e448e2 | ||
|
|
9953213513 | ||
|
|
0966bdcbc4 | ||
|
|
e40a3eef04 | ||
|
|
199613a416 | ||
|
|
32e38fee74 | ||
|
|
59cf217e77 | ||
|
|
2a2e8c314e | ||
|
|
7ecb8b4af5 | ||
|
|
409a0632af | ||
|
|
0f14977b5d | ||
|
|
6dc9553aa5 | ||
|
|
a15e570d3b | ||
|
|
66966dbd69 | ||
|
|
933d833ec8 | ||
|
|
d1c9517903 | ||
|
|
e2b8fc4f17 | ||
|
|
b71c2b8651 | ||
|
|
a317bb4991 | ||
|
|
acf5ae3083 | ||
|
|
ba1919c1eb | ||
|
|
0987ed2a18 | ||
|
|
6483285bc5 | ||
|
|
f8c52c9c29 | ||
|
|
3671c63cde | ||
|
|
593d5375ea | ||
|
|
f0dbe61692 | ||
|
|
2d3317a35b | ||
|
|
cd9868f442 | ||
|
|
97f6396b25 | ||
|
|
0e25f66c09 | ||
|
|
ad12b9b46b | ||
|
|
b5537dde7f | ||
|
|
8f0bbdcc9b | ||
|
|
d05b23941d | ||
|
|
a77f8c6dd5 | ||
|
|
0456caf0ad | ||
|
|
dfe18ac633 | ||
|
|
b0a8ce59bd | ||
|
|
62ce937540 | ||
|
|
a82be36d5d | ||
|
|
00d24a8219 | ||
|
|
56f1e17a25 | ||
|
|
0b2d686160 | ||
|
|
a98f21ec5e | ||
|
|
db30650731 | ||
|
|
aae4c67e5d | ||
|
|
9de730b2bf | ||
|
|
c2553f9888 | ||
|
|
e9de321ac0 | ||
|
|
952a1bc9d5 | ||
|
|
67613bf5bd | ||
|
|
bd6d032628 | ||
|
|
1561e61df7 | ||
|
|
b37bfeffeb | ||
|
|
5573ef62c6 | ||
|
|
846bd24eb9 | ||
|
|
834ea7fcea | ||
|
|
c64199941e | ||
|
|
5be2559eda | ||
|
|
6964e1a95a | ||
|
|
ccf65c5397 | ||
|
|
865ee5985f | ||
|
|
a4b0148365 | ||
|
|
cc0a60453f | ||
|
|
65c5227c29 | ||
|
|
577aeb4aa9 | ||
|
|
6a8b906318 | ||
|
|
66d2b48b59 | ||
|
|
60f1376798 | ||
|
|
fd15b1495a | ||
|
|
11b411a872 | ||
|
|
f1347f783d | ||
|
|
0bda22367b | ||
|
|
1b921b246b | ||
|
|
aa9d329560 | ||
|
|
c93538e9f3 | ||
|
|
0af22549a6 | ||
|
|
fc55f1da01 | ||
|
|
b328fb4dc9 | ||
|
|
42ffa58e35 | ||
|
|
72b086b90d | ||
|
|
a1a5367380 | ||
|
|
b7e15a65e3 | ||
|
|
f891416e70 | ||
|
|
e4ecade8d4 | ||
|
|
eee1b7c50c | ||
|
|
e85feb2545 | ||
|
|
79835590e3 | ||
|
|
131d216afa | ||
|
|
9c62c47579 | ||
|
|
9bae413901 | ||
|
|
f2224755ad | ||
|
|
aae02827c0 | ||
|
|
64c493ad82 | ||
|
|
b826bf4194 | ||
|
|
2cc950d67e | ||
|
|
16432376ab | ||
|
|
74900f7a70 | ||
|
|
6dafb90c01 | ||
|
|
5ce5ff8e9b | ||
|
|
15d68cb496 | ||
|
|
8a24ff94d1 | ||
|
|
094e6d81a5 | ||
|
|
244b9a8257 | ||
|
|
955a7f0ae9 | ||
|
|
aadcf08913 | ||
|
|
4237c3d9f8 | ||
|
|
624986d423 | ||
|
|
e2aa635e70 | ||
|
|
67b205fd45 | ||
|
|
d1c6687ecd | ||
|
|
048dbf6eca | ||
|
|
e05e95cf97 | ||
|
|
22ebbc091f | ||
|
|
32de09f5c5 | ||
|
|
9c2bfa2ab3 | ||
|
|
bd3ec66a78 | ||
|
|
4dfbae0e5c | ||
|
|
fbcdf5eaeb | ||
|
|
e5c0b490c8 | ||
|
|
fbdbe53290 | ||
|
|
14e2b11195 | ||
|
|
4685c7d59f | ||
|
|
62fa028155 | ||
|
|
09485f63e9 | ||
|
|
a35abce1ac | ||
|
|
76d4cfb064 | ||
|
|
4195757585 | ||
|
|
03b01e2500 | ||
|
|
db85ca93c4 | ||
|
|
9660996cc3 | ||
|
|
39c8aed8ba | ||
|
|
2106fa26b1 | ||
|
|
17ed0f815c | ||
|
|
6d2aff03bd | ||
|
|
63a146d424 | ||
|
|
665ac1e4d0 | ||
|
|
2243f72523 | ||
|
|
47d5fcbbcc | ||
|
|
c83109c0ae | ||
|
|
64f007580b | ||
|
|
aed1d17a2d | ||
|
|
8c40f0c6c7 | ||
|
|
b04e0c0cbb | ||
|
|
065e9c3d66 | ||
|
|
71df1f7f57 | ||
|
|
902167fa78 | ||
|
|
a26fdf6b68 | ||
|
|
be7d1dfb3c | ||
|
|
8f686aa449 | ||
|
|
f38c81cdde | ||
|
|
3b5dec4b13 | ||
|
|
c43793aa1e | ||
|
|
e486326910 | ||
|
|
e5ea9d200f | ||
|
|
8c57cadbe7 | ||
|
|
fed68f29af | ||
|
|
bf7d0ba859 | ||
|
|
12854f1909 | ||
|
|
25e2ca8896 | ||
|
|
fd8a76493b | ||
|
|
c8d24a6412 | ||
|
|
566d05006d | ||
|
|
6b521b6df2 | ||
|
|
20761b88e0 | ||
|
|
603e136e87 | ||
|
|
03fa05ab59 | ||
|
|
ed720194d2 | ||
|
|
d05e832f29 | ||
|
|
63f4c9bdb9 | ||
|
|
b143441251 | ||
|
|
dde009efdf | ||
|
|
2992112da0 | ||
|
|
1367df2875 | ||
|
|
d960d448fa | ||
|
|
68e6650df7 | ||
|
|
e7e896e7d7 | ||
|
|
55f4744e54 | ||
|
|
5abf5bc8a7 | ||
|
|
cbea385ed7 | ||
|
|
6837252fba | ||
|
|
5379c115c8 | ||
|
|
9c058091e9 | ||
|
|
c7ec6c68e7 | ||
|
|
480a3d3d0c | ||
|
|
47ee149dfd | ||
|
|
8c0ec81a19 | ||
|
|
48c1f32b3e | ||
|
|
568cfe7caa | ||
|
|
1a0f4dedad | ||
|
|
e0ab8acf19 | ||
|
|
4b2af6ab48 | ||
|
|
1ea222e6fc | ||
|
|
8299ac121d | ||
|
|
3de0c85d41 | ||
|
|
cedc158106 | ||
|
|
5616581eb1 | ||
|
|
8a8eae8d97 | ||
|
|
c51e27d11d | ||
|
|
90ba77ea0f | ||
|
|
2421f3a47d | ||
|
|
f9a090b2cf | ||
|
|
8eaac0dab3 | ||
|
|
444725ae9a | ||
|
|
8c9f90153e | ||
|
|
fc10101b06 | ||
|
|
05518d6add | ||
|
|
d4fde91222 | ||
|
|
a431013eb7 | ||
|
|
bd7f5848f1 | ||
|
|
fbf1c9b496 | ||
|
|
0fff79c24b | ||
|
|
c36efd3106 | ||
|
|
3349eb0020 | ||
|
|
a264030526 | ||
|
|
42f9921482 | ||
|
|
921685d12f | ||
|
|
1b8973eb1c | ||
|
|
aa4cd2e861 | ||
|
|
edb21f349a | ||
|
|
4d3a9930c5 | ||
|
|
053438a3aa | ||
|
|
3b3029c4bf | ||
|
|
d13f76b7da | ||
|
|
229b26b02c | ||
|
|
0ee34eb784 | ||
|
|
ffdbc1f42c | ||
|
|
8d8f257384 | ||
|
|
5b49fccf80 | ||
|
|
d86f25ab63 | ||
|
|
fb4e0b105b | ||
|
|
48a15d1c7e | ||
|
|
3fa9aeb5c7 | ||
|
|
7e802145cc | ||
|
|
3b7c5a31a3 | ||
|
|
50b6204079 | ||
|
|
99591dc20c | ||
|
|
a5c11bf578 | ||
|
|
1d7dd0edfd | ||
|
|
383129728a | ||
|
|
1239e8eda2 | ||
|
|
7a84b03796 | ||
|
|
a2a30ff0ac | ||
|
|
e366d55bc2 | ||
|
|
7406f04029 | ||
|
|
7c54c4ed27 | ||
|
|
a65d15c905 | ||
|
|
d4795e5b8e | ||
|
|
e23677a7b2 | ||
|
|
0312c42f9d | ||
|
|
c1269c2ec1 | ||
|
|
da94e0bd27 | ||
|
|
f88adcbfd5 | ||
|
|
fdd97e649d | ||
|
|
e2aeda61ed | ||
|
|
091f742432 | ||
|
|
19d4c7c1cd | ||
|
|
7e8d2d611d | ||
|
|
cce0523a95 | ||
|
|
4c8d6df13c | ||
|
|
81edbfa665 | ||
|
|
f3fed52348 | ||
|
|
a215725df6 | ||
|
|
0d79128c8d | ||
|
|
a9861a780e | ||
|
|
cf53e502a2 | ||
|
|
e0276d2f32 | ||
|
|
4dbec774b5 | ||
|
|
928e50e724 | ||
|
|
12689f2470 | ||
|
|
9b945c13a1 | ||
|
|
9d04f47d98 | ||
|
|
f2c3b0d476 | ||
|
|
4832be52d7 | ||
|
|
86170e6a66 | ||
|
|
2ddba201c0 | ||
|
|
43bdd0bfe4 | ||
|
|
b8f8dc72f0 | ||
|
|
2ba198a624 | ||
|
|
5590c8ffd0 | ||
|
|
3fd1f32b73 | ||
|
|
117fd007a9 | ||
|
|
ae07a3e4aa | ||
|
|
20a5db03bb | ||
|
|
a2f521d34b | ||
|
|
590ce1c33e | ||
|
|
968a5d2e63 | ||
|
|
4b90cd8ead | ||
|
|
f1cdfe3dfd | ||
|
|
6f14bcaa3e | ||
|
|
39a7e7720d | ||
|
|
ae15c5af88 | ||
|
|
99af086cea | ||
|
|
d90e8fcad9 | ||
|
|
bbf80440bf | ||
|
|
b64cc9329e | ||
|
|
8a376e6beb | ||
|
|
3701869e6c | ||
|
|
e970e429b6 | ||
|
|
d82704354f | ||
|
|
779d4a17a0 | ||
|
|
b9418439b9 | ||
|
|
88314b8910 | ||
|
|
334341c632 | ||
|
|
f74278b8b1 | ||
|
|
7ba5afff01 | ||
|
|
55aedf036b | ||
|
|
e7623b5788 | ||
|
|
a426986df8 | ||
|
|
d8b983f624 | ||
|
|
eb1026d438 | ||
|
|
a5b0bf86f1 | ||
|
|
c2bdbdffaa | ||
|
|
c9d1a620d4 | ||
|
|
d550da084f | ||
|
|
c16e41e9e6 | ||
|
|
c685c7b7dd | ||
|
|
85914423a1 | ||
|
|
2fd9ba56da | ||
|
|
ad8d3150aa | ||
|
|
61181b7f24 | ||
|
|
d3c02410a8 | ||
|
|
ae1be0fa53 | ||
|
|
2deff0d9b9 | ||
|
|
6885ca606c | ||
|
|
d87257f63c | ||
|
|
ae322e0c54 | ||
|
|
d259070980 | ||
|
|
21d812d502 | ||
|
|
d3c473002a | ||
|
|
b90f54b0fc | ||
|
|
3f2a062a57 | ||
|
|
b6cd8d9cc6 | ||
|
|
9713538427 | ||
|
|
c68b7b3913 | ||
|
|
cbcb284f4a | ||
|
|
f89f7c4a82 | ||
|
|
4299e5dc8b | ||
|
|
8f14ef855d | ||
|
|
6919e87656 | ||
|
|
16da5c62d0 | ||
|
|
853a9056ac | ||
|
|
a4f9c3373f | ||
|
|
9b9b62b218 | ||
|
|
1ce97f1f6d | ||
|
|
0ca9db7051 | ||
|
|
945139e328 | ||
|
|
9c235ef821 | ||
|
|
7b9f0302d4 | ||
|
|
2566342979 | ||
|
|
1b200f3312 | ||
|
|
22771dd2dd | ||
|
|
6775a16c97 | ||
|
|
05fc761929 | ||
|
|
2e139fe50f | ||
|
|
931ab4ec40 | ||
|
|
aaaf09bda2 | ||
|
|
cf7d5a642a | ||
|
|
1da2c4f1c1 | ||
|
|
498a328148 | ||
|
|
1c0ad8bbae | ||
|
|
01d37e00af | ||
|
|
6f330f397e | ||
|
|
235facd545 | ||
|
|
645df23eb0 | ||
|
|
d74e333c0f | ||
|
|
e2db509d58 | ||
|
|
7261f48872 | ||
|
|
50fa8e01c1 | ||
|
|
a94506ada0 | ||
|
|
336a022529 | ||
|
|
f28e366b77 | ||
|
|
8b44745bc7 | ||
|
|
9644d56b42 | ||
|
|
5f8591528e | ||
|
|
230ae6a143 | ||
|
|
3e3789da85 | ||
|
|
c89649b46e | ||
|
|
bbd09a99f1 | ||
|
|
ee333f6be2 | ||
|
|
d98bc71af7 | ||
|
|
22e0691a70 | ||
|
|
4b610b333e | ||
|
|
d2647c1f19 | ||
|
|
3bb950c69a | ||
|
|
1af98519cd | ||
|
|
0c3773d724 | ||
|
|
4118199ddd | ||
|
|
4b2f6e3b2b | ||
|
|
65a004564c | ||
|
|
435ecb6b67 | ||
|
|
6dfbb39f83 | ||
|
|
68d7fcec83 | ||
|
|
d557c84a71 | ||
|
|
16f92dca44 | ||
|
|
569df3fc0c | ||
|
|
a4af975873 | ||
|
|
e0ca627033 | ||
|
|
a11eb50a3e | ||
|
|
0566badcef | ||
|
|
c2fb2f54a1 | ||
|
|
206014a957 | ||
|
|
59f7861bcb | ||
|
|
228139eae6 | ||
|
|
7dc03ce721 | ||
|
|
65270d6a96 | ||
|
|
62e2987488 | ||
|
|
9ad42d6617 | ||
|
|
fe7aea7bf6 | ||
|
|
83d42f33e1 | ||
|
|
3c76bda2d8 | ||
|
|
8f18854d4d | ||
|
|
c173a31060 | ||
|
|
e1d9046efc | ||
|
|
9b64fdbc3a | ||
|
|
50270b53a0 | ||
|
|
06fd4d7b28 | ||
|
|
40d7e12827 | ||
|
|
b9079aa1b5 | ||
|
|
9a531da861 | ||
|
|
0755fe8ba2 | ||
|
|
43ddb29f9e | ||
|
|
0ea60d506a | ||
|
|
eb2eb72720 | ||
|
|
b7dfc79988 | ||
|
|
3f6073e23a | ||
|
|
7edf5bcb7b | ||
|
|
ba100e9548 | ||
|
|
fb608938f8 | ||
|
|
35258dd50b | ||
|
|
37b15fe4cf | ||
|
|
836b0bbeee | ||
|
|
ba4c32eec5 | ||
|
|
d9154ebdf6 | ||
|
|
f07260c33f | ||
|
|
883b0c9880 | ||
|
|
8f3d313086 | ||
|
|
08e36e264e | ||
|
|
083ec9963e | ||
|
|
99ecdf59af | ||
|
|
9d98a62699 | ||
|
|
8f8c6a9bc4 | ||
|
|
a1062eec5b | ||
|
|
f5aaa2d6c0 | ||
|
|
3614e6ce0f | ||
|
|
625035a9ce | ||
|
|
1b225a2809 | ||
|
|
306f0f2135 | ||
|
|
f2e3c9896e | ||
|
|
acacee80a2 | ||
|
|
d99f1b2245 | ||
|
|
8679f671ed | ||
|
|
7d78f3476b | ||
|
|
6671c064cd | ||
|
|
325bbbc8c2 | ||
|
|
c43235dd39 | ||
|
|
613a3be167 | ||
|
|
23a876b08d | ||
|
|
439e0cdd0f | ||
|
|
fe5c308872 | ||
|
|
265161ba30 | ||
|
|
57c2f8d2f6 | ||
|
|
b76344c080 | ||
|
|
473c6d3a91 | ||
|
|
44f3a6dc3b | ||
|
|
722aba77f3 | ||
|
|
a225d2e99e | ||
|
|
6d9ec1852a | ||
|
|
19f189b4e5 | ||
|
|
2cdaf76c40 | ||
|
|
4c663b0216 | ||
|
|
4d4bf7897d | ||
|
|
0436e16fb2 | ||
|
|
d1b619be52 | ||
|
|
ec05408453 | ||
|
|
55f1f8446b | ||
|
|
4e16e699c1 | ||
|
|
a1fab8336e | ||
|
|
e978e6e782 | ||
|
|
8c5bc77fb9 | ||
|
|
1f11b0f612 | ||
|
|
f30241bda5 | ||
|
|
840ff60952 | ||
|
|
71cd681473 | ||
|
|
62e7a9c671 | ||
|
|
bfe223e120 | ||
|
|
af1950a63e | ||
|
|
0c23792344 | ||
|
|
c2c02bdc67 | ||
|
|
b337698f96 | ||
|
|
0125e009d3 | ||
|
|
76da6cc544 | ||
|
|
d10cb46783 | ||
|
|
81b632c255 | ||
|
|
e911635fb1 | ||
|
|
00e86f1c2d | ||
|
|
410b023b50 | ||
|
|
fcc5baef52 | ||
|
|
b7e938a9fb | ||
|
|
a90d99c27c | ||
|
|
d7b699ec34 | ||
|
|
9312636ee4 | ||
|
|
05fca752d6 | ||
|
|
c87b0e21be | ||
|
|
2c1205d8b1 | ||
|
|
c8e4b7c8a6 | ||
|
|
05c33833e7 | ||
|
|
524cc392f4 | ||
|
|
1f92b9a4ed | ||
|
|
582dc7ef97 | ||
|
|
a73cece360 | ||
|
|
4dfc011d86 | ||
|
|
59fda986ea | ||
|
|
63e4afc910 | ||
|
|
616651ff23 | ||
|
|
9e0d99c0c6 | ||
|
|
3f68203324 | ||
|
|
1dab44213a | ||
|
|
cd08f01bb4 | ||
|
|
7546f87949 | ||
|
|
d470a1234f | ||
|
|
683dc24e0f | ||
|
|
8db7fb226a | ||
|
|
ed8d2bc225 | ||
|
|
c7305be4d2 | ||
|
|
f973ff49ae | ||
|
|
5ac226aa93 | ||
|
|
724e9f56c8 | ||
|
|
2e1939e85c | ||
|
|
a474a7e675 | ||
|
|
f790b4bc0a | ||
|
|
a51ba6e3f6 | ||
|
|
df6bc812b5 | ||
|
|
63e0b36f8b | ||
|
|
f83361a814 | ||
|
|
212e52e485 | ||
|
|
7b6e742436 | ||
|
|
58ca3be1ec | ||
|
|
00dfaae8df | ||
|
|
299c4fed42 | ||
|
|
456cf971af | ||
|
|
5b5e322356 | ||
|
|
0e450df6a2 | ||
|
|
2578996631 | ||
|
|
8cc31d1b2e | ||
|
|
2242b98248 | ||
|
|
eef0248a1c | ||
|
|
c1e5ebbc1e | ||
|
|
02a711c4d6 | ||
|
|
a3ce8a3fcd | ||
|
|
f06c3c38b9 | ||
|
|
c82dd5129f | ||
|
|
9789c1c719 | ||
|
|
0c428a66d9 | ||
|
|
f423e54f77 | ||
|
|
8177c4334e | ||
|
|
cb46cb8480 | ||
|
|
10a25f733e | ||
|
|
24d23ce49b | ||
|
|
73022d3119 | ||
|
|
ad58b626a3 | ||
|
|
9e07df5c1b | ||
|
|
1c3d49afe0 | ||
|
|
b6747c742a | ||
|
|
023385ca59 | ||
|
|
3396671011 | ||
|
|
d58450c82a | ||
|
|
11ab017dd0 | ||
|
|
594d6f9efd | ||
|
|
7dcd0a1cff | ||
|
|
2f4b4d6076 | ||
|
|
a90cbc6339 | ||
|
|
a0dac95d25 | ||
|
|
f0cbf3d432 | ||
|
|
d8a8eec6ea | ||
|
|
186d71b361 | ||
|
|
11ef432476 | ||
|
|
2be5fe5ddf | ||
|
|
80e29492c6 | ||
|
|
dea686cf55 | ||
|
|
65a6a86d19 | ||
|
|
3cf7bac129 | ||
|
|
78ea4871f9 | ||
|
|
6faa93d787 | ||
|
|
5cc7916e69 | ||
|
|
23635c2b64 | ||
|
|
f36ddef9a7 | ||
|
|
dde941cac8 | ||
|
|
8ca3c43d73 | ||
|
|
90765b1f72 | ||
|
|
184c077c58 | ||
|
|
627348b46c | ||
|
|
77bc653524 | ||
|
|
a51b61b38c | ||
|
|
9d06d9edc8 | ||
|
|
d81649b365 | ||
|
|
41839746a2 | ||
|
|
3f71e951f1 | ||
|
|
4f184ba5da | ||
|
|
ad6baa5c9d | ||
|
|
df2f24617b | ||
|
|
428c54f2ad | ||
|
|
744bcaee61 | ||
|
|
20772492aa | ||
|
|
f57a008c58 | ||
|
|
89b1580587 | ||
|
|
52c024e260 | ||
|
|
01b01f6dfd | ||
|
|
e4acd2c40e | ||
|
|
e05c825a05 | ||
|
|
d462be6de6 | ||
|
|
39c6f65ce7 | ||
|
|
0746aff595 | ||
|
|
3c826e5d05 | ||
|
|
5a064d0e94 | ||
|
|
0945674ba2 | ||
|
|
6cb83758d7 | ||
|
|
8f57e098de | ||
|
|
6c7a17dba6 | ||
|
|
c9aed73987 | ||
|
|
74f4eb8312 | ||
|
|
9f8a96fb8a | ||
|
|
93273a4c9e | ||
|
|
584735c994 | ||
|
|
29dda871cb | ||
|
|
36b97bde9f | ||
|
|
99282a46e9 | ||
|
|
21f13f9e57 | ||
|
|
6c535081ec | ||
|
|
3c5c6d478a | ||
|
|
0535ebc4d2 | ||
|
|
bb7064cc30 | ||
|
|
cc6d41e1d3 | ||
|
|
12785583d0 | ||
|
|
c96412a78f | ||
|
|
daa712455b | ||
|
|
4c8751727a | ||
|
|
3bc179a16f | ||
|
|
646aa20b43 | ||
|
|
ac2e0afb62 | ||
|
|
57a899a412 | ||
|
|
5676b187b4 | ||
|
|
44a03ecfc9 | ||
|
|
85014cd132 | ||
|
|
8669dba5e6 | ||
|
|
472ab0cc24 | ||
|
|
b94c8defee | ||
|
|
6f8e228880 | ||
|
|
2d9b0a66fe | ||
|
|
71d3523254 | ||
|
|
dcb1f1f452 | ||
|
|
8b8ad14178 | ||
|
|
82dafbba33 | ||
|
|
a731a723e8 | ||
|
|
26cc12eaa4 | ||
|
|
72c15a5cc9 | ||
|
|
dca69efc11 | ||
|
|
56486c5c0e | ||
|
|
a6485456df | ||
|
|
e02fc4f1d6 | ||
|
|
44a697ab04 | ||
|
|
cec6e19099 | ||
|
|
9ff4e9e1e6 | ||
|
|
cea398849e | ||
|
|
4382f2124d | ||
|
|
a29adde5c0 | ||
|
|
5932df7ea1 | ||
|
|
93524c1994 | ||
|
|
0e8242180d | ||
|
|
5b3bda1c16 | ||
|
|
acda4ecb20 | ||
|
|
ab715c70d1 | ||
|
|
4dc7e64789 | ||
|
|
0dccf9ea6a | ||
|
|
2efc072fdb | ||
|
|
6ce060cfe0 | ||
|
|
9356cf648f | ||
|
|
75037493fa | ||
|
|
e8e60263c8 | ||
|
|
051303ad42 | ||
|
|
386bc71d57 | ||
|
|
2fa0a73c2c | ||
|
|
d133ad61f3 | ||
|
|
4b25543633 | ||
|
|
902c885782 | ||
|
|
1c36606886 | ||
|
|
fe91514395 | ||
|
|
8bc93c6f2b | ||
|
|
21a47b50f4 | ||
|
|
e6042a7c52 | ||
|
|
f68b4265a6 | ||
|
|
a019eebdd6 | ||
|
|
656219d867 | ||
|
|
7cbbc2af7a | ||
|
|
4d1a61335c | ||
|
|
241996d5d6 | ||
|
|
4c79dc1093 | ||
|
|
93305a2d5e | ||
|
|
adcb87f0db | ||
|
|
e3bbd70664 | ||
|
|
4f0eafce8f | ||
|
|
4a23069de9 | ||
|
|
02f0f95d40 | ||
|
|
9ec2c03c5b | ||
|
|
49f384a2ab | ||
|
|
2672120a97 | ||
|
|
5acccbacc1 | ||
|
|
1a75165f35 | ||
|
|
d1734a089a | ||
|
|
a9f94f260a | ||
|
|
31df43212c | ||
|
|
7d8a46519f | ||
|
|
6098efcc59 | ||
|
|
f6d13e2295 | ||
|
|
889fd5f71f | ||
|
|
53f0c7522a | ||
|
|
ac7e97f4fe | ||
|
|
55e9b85ad6 | ||
|
|
b6a55f0891 | ||
|
|
b852781eba | ||
|
|
c1f58a238d | ||
|
|
1be955e52a | ||
|
|
9e4c037cef | ||
|
|
568ae094f4 | ||
|
|
8b7381b626 | ||
|
|
dbe2b6f7b0 | ||
|
|
d573a2cada | ||
|
|
f04be05a14 | ||
|
|
a97624dd81 | ||
|
|
7b8bb2519e | ||
|
|
aa20b3ef7c | ||
|
|
cbdc78ec0f | ||
|
|
9d2ea5d64b | ||
|
|
2bc7f416ee | ||
|
|
38378cd0e8 | ||
|
|
3007eee22e | ||
|
|
9656a82609 | ||
|
|
749f19e502 | ||
|
|
7dc256432f | ||
|
|
d1f14202a9 | ||
|
|
b287560258 | ||
|
|
436e5b7ea3 | ||
|
|
4d533b9baa | ||
|
|
78df07ac71 | ||
|
|
8934a2c49b | ||
|
|
328edea03a | ||
|
|
aa6dacbbdf | ||
|
|
8322a79bb9 | ||
|
|
9a24c0ae3f | ||
|
|
a891af2f7a | ||
|
|
75b381cd28 | ||
|
|
433e984d1f | ||
|
|
f7857ac8a8 | ||
|
|
b756a15aba | ||
|
|
50c81ebe0d | ||
|
|
3ac135cef3 | ||
|
|
8870f9b1da | ||
|
|
bb7236a750 | ||
|
|
81d68b2180 | ||
|
|
509227fd80 | ||
|
|
c3b23974bd | ||
|
|
ea1a83ce41 | ||
|
|
9da0797e29 | ||
|
|
daf643e1ce | ||
|
|
1628a9e864 | ||
|
|
b210bdf032 | ||
|
|
c5730cf711 | ||
|
|
1cb810ff1c | ||
|
|
97e8a6ebd9 | ||
|
|
c3c264978f | ||
|
|
9fd1016bb1 | ||
|
|
045ee28c50 | ||
|
|
987597532c | ||
|
|
ff304d3767 | ||
|
|
bc45fb6b13 | ||
|
|
c352954882 | ||
|
|
ae39fbd646 | ||
|
|
8dfaf1539e | ||
|
|
837ac2fdbd | ||
|
|
785dbfc72d | ||
|
|
7308ef7809 | ||
|
|
b5b39af531 | ||
|
|
a5c6d3c7b8 | ||
|
|
a46bac3100 | ||
|
|
cfc13ed7f3 | ||
|
|
c95450016b | ||
|
|
48d7036874 | ||
|
|
53362b81cc | ||
|
|
2f192dbcd6 | ||
|
|
dd2949922b | ||
|
|
1d22609473 | ||
|
|
eaefc1e410 | ||
|
|
72281c4ff9 | ||
|
|
9d99360912 | ||
|
|
bbfbf90797 | ||
|
|
772810fb24 | ||
|
|
978f342392 | ||
|
|
fbdc5ad962 | ||
|
|
c0d694d5d3 | ||
|
|
93af8aa157 | ||
|
|
883524056b | ||
|
|
73616d721a | ||
|
|
0543362b34 | ||
|
|
c6ff39cc14 | ||
|
|
9e9e29ddf8 | ||
|
|
c79b53d406 | ||
|
|
7f1afbfd60 | ||
|
|
23760d6c14 | ||
|
|
cbcd1ed42d | ||
|
|
6689884910 | ||
|
|
ab769590a1 | ||
|
|
d603e655d3 | ||
|
|
5f77816772 | ||
|
|
8922b56b58 | ||
|
|
a6feb58837 | ||
|
|
899b4df7a3 | ||
|
|
2e43438e0c | ||
|
|
2168d6ac25 | ||
|
|
1e946d681d | ||
|
|
63fc4a8521 | ||
|
|
e5157dc63d | ||
|
|
404fc94705 | ||
|
|
4aebe3d82e | ||
|
|
51bf3c9503 | ||
|
|
e6dcfa64b0 | ||
|
|
c24dbcbfe1 | ||
|
|
e7a61de8af | ||
|
|
f894209de2 | ||
|
|
f1327fd5f9 | ||
|
|
e7570f3195 | ||
|
|
374ea49be9 | ||
|
|
34f656decd | ||
|
|
07cf2cd9c4 | ||
|
|
4c3d7083c0 | ||
|
|
b858c638ad | ||
|
|
c4467da53a | ||
|
|
9aac0c7333 | ||
|
|
d194be8e8b | ||
|
|
65ce0303f8 | ||
|
|
36452b4d6e | ||
|
|
14c03cb6f4 | ||
|
|
5dec828abc | ||
|
|
468f34104b | ||
|
|
5b45aab262 | ||
|
|
18de11c1ea | ||
|
|
703c8ac0ef | ||
|
|
28f1276286 | ||
|
|
dd19e74476 | ||
|
|
d0ac0151b6 | ||
|
|
d385b9aac7 | ||
|
|
bae1cb859c | ||
|
|
51ebdf3b7d | ||
|
|
e27fd269c1 | ||
|
|
0d8c15c01f | ||
|
|
751785fc97 | ||
|
|
3c8781e2e9 | ||
|
|
a0211f5d6c | ||
|
|
f003173752 | ||
|
|
6747225e02 | ||
|
|
bf59a4a6df | ||
|
|
fd1d590726 | ||
|
|
f10c87b442 | ||
|
|
d6df0322c2 | ||
|
|
fbc41c0e98 | ||
|
|
239902f861 | ||
|
|
ddce486360 | ||
|
|
fc32db300d | ||
|
|
79e6d890d5 | ||
|
|
419d12ca1b | ||
|
|
3b4c89e4b5 | ||
|
|
2908e76151 | ||
|
|
26dc594ebb | ||
|
|
d8eadf3796 | ||
|
|
914bb80bde | ||
|
|
6d9ea7e184 | ||
|
|
646dd5554c | ||
|
|
161ff9ff35 | ||
|
|
49ca67202f | ||
|
|
cc59ac4603 | ||
|
|
16a8edc5f0 | ||
|
|
dfd5d2fe75 | ||
|
|
67a17446f2 | ||
|
|
3c58ca181c | ||
|
|
3707078ffc | ||
|
|
e297748b22 | ||
|
|
3c2bfa5e53 | ||
|
|
42608b1925 | ||
|
|
317673fec3 | ||
|
|
8d32fd997f | ||
|
|
1913c37a91 | ||
|
|
98d48fc731 | ||
|
|
03e3011332 | ||
|
|
6b4a928145 | ||
|
|
ca577c1638 | ||
|
|
d45f19d385 | ||
|
|
224688cc3b | ||
|
|
a1a88ebabc | ||
|
|
be0e100fed | ||
|
|
04dedc7ed8 | ||
|
|
0149680f54 | ||
|
|
9515e5aefb | ||
|
|
e5ec793f7e | ||
|
|
5b85464791 | ||
|
|
7e386c7e98 | ||
|
|
9e97c13c6f | ||
|
|
1d604be671 | ||
|
|
eb212ae073 | ||
|
|
ffbf63e6af | ||
|
|
94f5204629 | ||
|
|
22a017a856 | ||
|
|
920d92aa46 | ||
|
|
b198b49d15 | ||
|
|
2057177184 | ||
|
|
e28e3bb532 | ||
|
|
d7aed2fe4f | ||
|
|
ca0def766e | ||
|
|
8291ae34f2 | ||
|
|
b08ec22fe1 | ||
|
|
fd883c909a | ||
|
|
0dd1c4458d | ||
|
|
f9cafc4001 | ||
|
|
bf9fc8ac0e | ||
|
|
eb867817b5 | ||
|
|
36262a0479 | ||
|
|
930720bbbb | ||
|
|
025118da3e | ||
|
|
beeed580b8 | ||
|
|
07ae23fe14 | ||
|
|
881529a401 | ||
|
|
ed758de80d | ||
|
|
e74a5829c7 | ||
|
|
d1dc863962 | ||
|
|
f3914a432e | ||
|
|
6d7f4f84e2 | ||
|
|
649f375494 | ||
|
|
c37b3f995a | ||
|
|
a2a672449a | ||
|
|
4d0584a828 | ||
|
|
61620cbd15 | ||
|
|
b9303b5577 | ||
|
|
6e08ddce6e | ||
|
|
23a576faf7 | ||
|
|
461c8ef834 | ||
|
|
88b6a15b47 | ||
|
|
e2df286444 | ||
|
|
91db7930dc | ||
|
|
c1f4112bdc | ||
|
|
118899357d | ||
|
|
1746749361 | ||
|
|
a446433c87 | ||
|
|
2d1233b86c | ||
|
|
eb8b758226 | ||
|
|
8bffb26c23 | ||
|
|
8c03ce4d80 | ||
|
|
c471389afb | ||
|
|
c22f8dd660 | ||
|
|
24b9c1923f | ||
|
|
bd0967ad87 | ||
|
|
d9a98b5814 | ||
|
|
13940268a2 | ||
|
|
461cb22069 | ||
|
|
35ec67885a | ||
|
|
0bc4c216ac | ||
|
|
cd7dc49527 | ||
|
|
4817c78a65 | ||
|
|
eb079959fb | ||
|
|
7bdb98c946 | ||
|
|
02474a321a | ||
|
|
cfdcf91df5 | ||
|
|
ae1a2ff16f | ||
|
|
1c13cc9b48 | ||
|
|
306f44198e | ||
|
|
966d9af98a | ||
|
|
8d5a77001e | ||
|
|
2228dff3ea | ||
|
|
cb4cb86d80 | ||
|
|
f2c0ed193d | ||
|
|
0557ab5780 | ||
|
|
61688233c7 | ||
|
|
19ba91f77a | ||
|
|
f3dbe19669 | ||
|
|
0e0f17be30 | ||
|
|
f15d7bdbf2 | ||
|
|
54c65fc3cb | ||
|
|
4953fb1c88 | ||
|
|
078627f805 | ||
|
|
5684beae90 | ||
|
|
813f9f3082 | ||
|
|
3f89bbeab5 | ||
|
|
a01473d7a5 | ||
|
|
689bc99402 | ||
|
|
92c8efdc96 | ||
|
|
2024775e07 | ||
|
|
43ff15244d | ||
|
|
b8485528b2 | ||
|
|
4d588b2d6a | ||
|
|
e0227f2110 | ||
|
|
e65a853c59 | ||
|
|
07d7e8aa1b | ||
|
|
e749945317 | ||
|
|
17d984eab3 | ||
|
|
b2cf253a13 | ||
|
|
65519263f4 | ||
|
|
8f9262f3fe | ||
|
|
007c56f453 | ||
|
|
0542b03750 | ||
|
|
2bd252b501 | ||
|
|
90fa423737 | ||
|
|
a6b7e721cf | ||
|
|
2c9775313a | ||
|
|
9c9cd54ef3 | ||
|
|
3851ffce0f | ||
|
|
5f8b2c2ff0 | ||
|
|
b17982bde9 | ||
|
|
799e3b2b40 | ||
|
|
5968a3e60e | ||
|
|
93cc3a8492 | ||
|
|
13176dfe2f | ||
|
|
424b9a83cd | ||
|
|
e75ccfd727 | ||
|
|
556abc0888 | ||
|
|
532bb3aaa1 | ||
|
|
59c98d6fd5 | ||
|
|
8c1a82c327 | ||
|
|
72f63a4980 | ||
|
|
6c3162f9c6 | ||
|
|
4431f4deb8 | ||
|
|
e7f329edb2 | ||
|
|
e84a5545e1 | ||
|
|
343c17d5b3 | ||
|
|
63bc6ade4f | ||
|
|
d504bbbfa4 | ||
|
|
716a22498f | ||
|
|
7d8c6b3f3c | ||
|
|
1d7f5be0ff | ||
|
|
eb182c08af | ||
|
|
03b48df7bb | ||
|
|
9f0907d40c | ||
|
|
9d5968e8ec | ||
|
|
4303f2e377 | ||
|
|
12c5fdfdb5 | ||
|
|
a810e585db | ||
|
|
a823b801b8 | ||
|
|
47d529aac5 | ||
|
|
aada1e698f | ||
|
|
c7513eb032 | ||
|
|
73cd34b121 | ||
|
|
fc460fff94 | ||
|
|
c4ec01d59b | ||
|
|
d4e4fe40e0 | ||
|
|
25e3e62354 | ||
|
|
a11fcd46a2 | ||
|
|
b3deadd898 | ||
|
|
a74cece6d0 | ||
|
|
8733d5a296 | ||
|
|
d3ca82d8c2 | ||
|
|
0106c3e476 | ||
|
|
3d1692d1fd | ||
|
|
c241da32e8 | ||
|
|
3af988a7f3 | ||
|
|
ca55f2927a | ||
|
|
aef9e036bf | ||
|
|
79272f98fc | ||
|
|
24eb275b99 | ||
|
|
a6563df705 | ||
|
|
bab0e975c8 | ||
|
|
83d7e95de0 | ||
|
|
6589f654b0 | ||
|
|
8ffa0b24a4 | ||
|
|
9019ea0fce | ||
|
|
60fc372211 | ||
|
|
da7c51d820 | ||
|
|
e05673a379 | ||
|
|
7a381366aa | ||
|
|
7d093edc18 | ||
|
|
472229b974 | ||
|
|
f6cc89ec7c | ||
|
|
330437ad7c | ||
|
|
168af8bacb | ||
|
|
bf5df306e1 | ||
|
|
3021058e6d | ||
|
|
bd54ce830a | ||
|
|
ff90cb409e | ||
|
|
d7f82c8ddf | ||
|
|
1bf2b1e475 | ||
|
|
241e55ef3b | ||
|
|
1f8f8c9104 | ||
|
|
cff62042ee | ||
|
|
749bc42aa9 | ||
|
|
2d749d490b | ||
|
|
08d685c97a | ||
|
|
c49844df66 | ||
|
|
304e0f8945 | ||
|
|
6a70a4fbb3 | ||
|
|
4ea7e723fe | ||
|
|
349dafa728 | ||
|
|
21e60fd3ed | ||
|
|
d81e9ce7cb | ||
|
|
5d9e16ea49 | ||
|
|
c78e1c0f23 | ||
|
|
b648999528 | ||
|
|
8db67d1647 | ||
|
|
f05bd7f082 | ||
|
|
4880ac6533 | ||
|
|
3d74ff3c87 | ||
|
|
5dc04c5201 | ||
|
|
133b38b93b | ||
|
|
93c0198b2d | ||
|
|
f0debfd2fc | ||
|
|
67a4cc610b | ||
|
|
e7b50c89b0 | ||
|
|
8d71ad37cb | ||
|
|
272f132b82 | ||
|
|
5b70d3da1c | ||
|
|
2ec65051fd | ||
|
|
9a423e9a89 | ||
|
|
d741bcf8a9 | ||
|
|
f8912bb19f | ||
|
|
e6b8207b03 | ||
|
|
89165326b4 | ||
|
|
423bf9955e | ||
|
|
377108619b | ||
|
|
47e56afeeb | ||
|
|
378867d894 | ||
|
|
8e0c107545 | ||
|
|
03d790451f | ||
|
|
7a4029d1b1 | ||
|
|
451fb16f9b | ||
|
|
3e384b60ce | ||
|
|
33752de12d | ||
|
|
38c7d53bf7 | ||
|
|
e3043d7ac7 | ||
|
|
d3ddd5ffaa | ||
|
|
0749ce92b3 | ||
|
|
7280fa1e31 | ||
|
|
4311dd13ae | ||
|
|
4aff6c1c32 | ||
|
|
4fef36966b | ||
|
|
05aa75cecf | ||
|
|
5785bbb491 | ||
|
|
299606e4ae | ||
|
|
5990266724 | ||
|
|
d3fdb44ad8 | ||
|
|
3168f0e646 | ||
|
|
9be6aa3f79 | ||
|
|
c0dd9ef9f2 | ||
|
|
da693a636e | ||
|
|
cc9cef7f7a | ||
|
|
112917cfef | ||
|
|
c30a8067ab | ||
|
|
b7053156fe | ||
|
|
f64d300cfd | ||
|
|
5a70887467 | ||
|
|
545cd8fa60 | ||
|
|
e698998343 | ||
|
|
27faeafc1b | ||
|
|
2014d38e10 | ||
|
|
694d2ebec0 | ||
|
|
9854262334 | ||
|
|
b639f1ad4b | ||
|
|
1541224a81 | ||
|
|
b2f8b4ada5 | ||
|
|
93af0365e8 | ||
|
|
852468ead7 | ||
|
|
23240f7986 | ||
|
|
d42a87cb31 | ||
|
|
2538f019d0 | ||
|
|
d168ee9bed | ||
|
|
09c8807a36 | ||
|
|
704d33c374 | ||
|
|
e6c32b3a14 | ||
|
|
b3f115fa0a | ||
|
|
ca8fdff1af | ||
|
|
8558264514 | ||
|
|
b5e92f4f90 | ||
|
|
db1ace5e82 | ||
|
|
eecb0188c0 | ||
|
|
16739264d3 | ||
|
|
a8c4174a13 | ||
|
|
38d62494ef | ||
|
|
8a6feab1c4 | ||
|
|
766faa05a9 | ||
|
|
f27c89980a | ||
|
|
338dac258b | ||
|
|
4ddb6a3a1f | ||
|
|
03bfc0d7c8 | ||
|
|
e5ee0b6f6c | ||
|
|
b939a2e88c | ||
|
|
4925f60cff | ||
|
|
3a1225e438 | ||
|
|
2ea4e74ed3 | ||
|
|
aecf0c9bb9 | ||
|
|
0891b58c30 | ||
|
|
428f164d02 | ||
|
|
693843f1fa | ||
|
|
ac6bf7226a | ||
|
|
da3a0d619c | ||
|
|
786746404b | ||
|
|
5364b92c37 | ||
|
|
34624cf399 | ||
|
|
d08597c65a | ||
|
|
3d72fe0730 | ||
|
|
33ec599ca0 | ||
|
|
dbd2189945 | ||
|
|
c46de340b7 | ||
|
|
e1fd9c08b3 | ||
|
|
6ace57e1b0 | ||
|
|
9e13d1fad5 | ||
|
|
e6cdc438fd | ||
|
|
a8764ac5d5 | ||
|
|
374f2a5e16 | ||
|
|
a0570ff1eb | ||
|
|
b13099de3f | ||
|
|
9b9350e010 | ||
|
|
d6e29e9597 | ||
|
|
e1117a8492 | ||
|
|
ea9ad4e46d | ||
|
|
ca00fed827 | ||
|
|
79796b22ad | ||
|
|
434a2dcbf2 | ||
|
|
21179f8300 | ||
|
|
c251601916 | ||
|
|
eb18ae9003 | ||
|
|
f8227abf1c | ||
|
|
ea5f91737f | ||
|
|
5c69d45f5b | ||
|
|
34160806c0 | ||
|
|
f5cfdf6efe | ||
|
|
6339b506c0 | ||
|
|
6e3519abae | ||
|
|
51d080d2c1 | ||
|
|
7035471982 | ||
|
|
6d4bc9a1f8 | ||
|
|
5bd23db0ee | ||
|
|
c6e01ebd52 | ||
|
|
571ca72824 | ||
|
|
ab709ccac1 | ||
|
|
70e4f12d2f | ||
|
|
fc5c1a28d8 | ||
|
|
399bca316a | ||
|
|
80d3ded895 | ||
|
|
053b1371c7 | ||
|
|
608f8b10da | ||
|
|
2bea1bda56 | ||
|
|
58671e1bc1 | ||
|
|
45cfb16424 | ||
|
|
c19327f1bb | ||
|
|
1dcfe193ac | ||
|
|
9644fe1839 | ||
|
|
c9bda932fe | ||
|
|
4eb41031e9 | ||
|
|
e5ca60acf5 | ||
|
|
696f8eb4c6 | ||
|
|
3217da6fa5 | ||
|
|
db031d5d76 | ||
|
|
3db35ba9be | ||
|
|
62ecc74e76 | ||
|
|
f7f8569bbf | ||
|
|
2ebf52e57d | ||
|
|
adb2ac4747 | ||
|
|
205c5fa078 | ||
|
|
90d011cc48 | ||
|
|
51c7b5d46f | ||
|
|
a19656e7cb | ||
|
|
b1cd012aa6 | ||
|
|
266086670b | ||
|
|
a718f5bdf3 | ||
|
|
61bf8478a2 | ||
|
|
7a52dfad55 | ||
|
|
f875f49caa | ||
|
|
c63cffca7f | ||
|
|
7d6c009104 | ||
|
|
582d073de1 | ||
|
|
ab8a1a2a0d | ||
|
|
f9dbd4d9f4 | ||
|
|
348b454401 | ||
|
|
a440522f84 | ||
|
|
58ed9901d7 | ||
|
|
382a5e3318 | ||
|
|
441517bbe1 | ||
|
|
b46932f0c0 | ||
|
|
49bcb5ce2d | ||
|
|
07db5638e2 | ||
|
|
c68ce8667d | ||
|
|
8190fdb260 | ||
|
|
9b519864bf | ||
|
|
887664aa61 | ||
|
|
fb044b6a64 | ||
|
|
a8638aa20d | ||
|
|
2e2fd8fd79 | ||
|
|
750cc02b3a | ||
|
|
9de8c04945 | ||
|
|
57b61491d3 | ||
|
|
4a4d832344 | ||
|
|
44239b1062 | ||
|
|
4bc4351250 | ||
|
|
303d792b9f | ||
|
|
afec16e644 | ||
|
|
f2ea8a0529 | ||
|
|
5367a1f51f | ||
|
|
0c176c677e | ||
|
|
f2d09f27bb | ||
|
|
16eb966ee3 | ||
|
|
63fd23ab1c | ||
|
|
11e68541b0 | ||
|
|
429e6ba8a6 | ||
|
|
719cd53e09 | ||
|
|
0ea9cdf4f2 | ||
|
|
7c469c0712 | ||
|
|
bfd9728cf4 | ||
|
|
c371bdc499 | ||
|
|
7c18c2ea5f | ||
|
|
9d0cf02fef | ||
|
|
2af3541880 | ||
|
|
c7bad74d8f | ||
|
|
af9b32e3b9 | ||
|
|
acb1e31374 | ||
|
|
f5f1b069ad | ||
|
|
554d849827 | ||
|
|
6f1bf5d212 | ||
|
|
1e65562d55 | ||
|
|
9dacd54a50 | ||
|
|
d178d6e921 | ||
|
|
fa432508b0 | ||
|
|
72b7331f5f | ||
|
|
6856eccc77 | ||
|
|
d5bf9e74c4 | ||
|
|
4d2f277d43 | ||
|
|
43d3d024ac | ||
|
|
ad500b01e0 | ||
|
|
f4e4c7a7c8 | ||
|
|
d743d96886 | ||
|
|
2038722c52 | ||
|
|
f887719a40 | ||
|
|
9a2dd0bc5a | ||
|
|
2c18faf3e4 | ||
|
|
42933c804a | ||
|
|
a0246c5c96 | ||
|
|
a27fa80a7e | ||
|
|
1a3d2ad275 | ||
|
|
a408209d24 | ||
|
|
5f807e37c5 | ||
|
|
3ae41e5f7f | ||
|
|
02ff12d491 | ||
|
|
3b15c88225 | ||
|
|
e753d6298f | ||
|
|
77c2d810f9 | ||
|
|
3952070800 | ||
|
|
0cd397a3f8 | ||
|
|
344ebc3bd2 | ||
|
|
094e9b1dab | ||
|
|
c37d38886c | ||
|
|
4f5e087ff4 | ||
|
|
ac368f2788 | ||
|
|
5578dccaa0 | ||
|
|
6ba8cf8405 | ||
|
|
50c55b25f7 | ||
|
|
6667a916a4 | ||
|
|
be717b3c07 | ||
|
|
f37c64ee5b | ||
|
|
cfd989d7c5 | ||
|
|
da600e5fbe | ||
|
|
742cff5f3c | ||
|
|
84de428d30 | ||
|
|
e633ce06c7 | ||
|
|
e654ea1e1a | ||
|
|
06eb46b1d4 | ||
|
|
8ac246162e | ||
|
|
048486390e | ||
|
|
6a043eee55 | ||
|
|
2c2cf5e856 | ||
|
|
d7fd78cb91 | ||
|
|
a8c446c3bc | ||
|
|
f7efac57b7 | ||
|
|
dabb75034c | ||
|
|
cf654b9a1a | ||
|
|
6a50adb4d5 | ||
|
|
5c076a6d93 | ||
|
|
a94104dbb5 | ||
|
|
554e577676 | ||
|
|
2db666e99a | ||
|
|
7e000e6af4 | ||
|
|
6c0fae15f8 | ||
|
|
a994eec513 | ||
|
|
3a99dc7c5c | ||
|
|
5295b4713d | ||
|
|
cdc61ebf53 | ||
|
|
9d923c6c03 | ||
|
|
99516572b1 | ||
|
|
f26805e862 | ||
|
|
e180b7a460 | ||
|
|
14dcad6bbc | ||
|
|
60d07f20e7 | ||
|
|
86818c9a89 | ||
|
|
95065791b3 | ||
|
|
bbb8d4c802 | ||
|
|
2b5a9be49c | ||
|
|
082d161a75 | ||
|
|
cf2922f164 | ||
|
|
cf3fd21234 | ||
|
|
5fb6dd1424 | ||
|
|
760dbbb734 | ||
|
|
cb0e826c5d | ||
|
|
f72b0a7b04 | ||
|
|
702c8acdd5 | ||
|
|
013c911a82 | ||
|
|
e89f1453ab | ||
|
|
950be70a33 | ||
|
|
760c912ab9 | ||
|
|
b91ca168fb | ||
|
|
51e0f2bee3 | ||
|
|
878f54c27b | ||
|
|
3ea6745b36 | ||
|
|
3319765034 | ||
|
|
1c41de16d4 | ||
|
|
1746a7352e | ||
|
|
048d8a0158 | ||
|
|
3a4e107b6b | ||
|
|
a5dfe08a81 | ||
|
|
19e75ccf86 | ||
|
|
4fb60e1562 | ||
|
|
7541316bb4 | ||
|
|
81211da7b4 | ||
|
|
8704e533da | ||
|
|
455592eee8 | ||
|
|
a80f2eea23 | ||
|
|
190cd0a111 | ||
|
|
0e93506985 | ||
|
|
016e46a3c0 | ||
|
|
31582caa07 | ||
|
|
41246b45f1 | ||
|
|
4626d04067 | ||
|
|
4af3d436b2 | ||
|
|
f968b41f63 | ||
|
|
e5b71af8c9 | ||
|
|
724e3f33bc | ||
|
|
959a2d2527 | ||
|
|
e43f3ac989 | ||
|
|
fc67c64b8f | ||
|
|
8afc4f8d9d | ||
|
|
eca5cc8669 | ||
|
|
e9fc7bc69c | ||
|
|
448b0a0014 | ||
|
|
5574fad69c | ||
|
|
d190c702de | ||
|
|
5e01ee8adf | ||
|
|
adb9ecf3cc | ||
|
|
39e5fabfa9 | ||
|
|
ef911a2d12 | ||
|
|
d80c4f1a6e | ||
|
|
9312ee63b0 | ||
|
|
41dfb229ec | ||
|
|
3dd04736c0 | ||
|
|
2929c9e56f | ||
|
|
10edb469bb | ||
|
|
5294fd132f | ||
|
|
0b4a46fa6c | ||
|
|
7cc2193bce | ||
|
|
729a9f55fc | ||
|
|
2b1e6829b3 | ||
|
|
615146c069 | ||
|
|
9686ffedef | ||
|
|
6d94bbf618 | ||
|
|
9bfabc1f13 | ||
|
|
cba44128d5 | ||
|
|
427df8792d | ||
|
|
8274369522 | ||
|
|
2526ac6500 | ||
|
|
db32c185ae | ||
|
|
f8156d2d2c | ||
|
|
9ecdd1f4c7 | ||
|
|
a1ce6e8ff4 | ||
|
|
5effe1590c | ||
|
|
fb6966f2b5 | ||
|
|
f163eede78 | ||
|
|
2c4e03d2cf | ||
|
|
1a827d5b68 | ||
|
|
a142fab155 | ||
|
|
b259bb4670 | ||
|
|
4ef965cc40 | ||
|
|
95b82ae5e3 | ||
|
|
9e8008c49c | ||
|
|
026e301307 | ||
|
|
68438b0d4e | ||
|
|
f2731c9f93 | ||
|
|
4b49ea1e92 | ||
|
|
2925852244 | ||
|
|
c6354fa153 | ||
|
|
3b51f5c67e | ||
|
|
f704f405af | ||
|
|
f0a8a1a853 | ||
|
|
705ea98fd3 | ||
|
|
f218eb0ddf | ||
|
|
50366b00d5 | ||
|
|
28fc8741d6 | ||
|
|
723da1d7a5 | ||
|
|
1a948cbd93 | ||
|
|
869c89d83f | ||
|
|
737561c1b3 | ||
|
|
1cf1cf8759 | ||
|
|
ea1a8d1223 | ||
|
|
4a8fd8ae92 | ||
|
|
2d75b540e2 | ||
|
|
aa97cd6e9b | ||
|
|
2b0165e90c | ||
|
|
2917d1217d | ||
|
|
69a51a426c | ||
|
|
45e73b72a5 | ||
|
|
caa5093498 | ||
|
|
c694608450 | ||
|
|
ca145643bd | ||
|
|
97d509d4d2 | ||
|
|
5bc2acc072 | ||
|
|
33a6fc70e4 | ||
|
|
d8a4db72ac | ||
|
|
99b2fc2066 | ||
|
|
498ea7512a | ||
|
|
9aff55ed1f | ||
|
|
7447979110 | ||
|
|
b6f9c333d4 | ||
|
|
2ec4113cb2 | ||
|
|
913d9e9a59 | ||
|
|
3cde4c78b2 | ||
|
|
63cc34f632 | ||
|
|
fdc5e72720 | ||
|
|
5a0f9605e3 | ||
|
|
93a6a4e1a8 | ||
|
|
af1d6acb7e | ||
|
|
933f76fda3 | ||
|
|
31e33d2acd | ||
|
|
fc9ee1a4de | ||
|
|
de5ca96654 | ||
|
|
a891d8d738 | ||
|
|
029333a8eb | ||
|
|
097a26007f | ||
|
|
8df5955da4 | ||
|
|
957bbab57f | ||
|
|
f79026acc1 | ||
|
|
502258aa5f | ||
|
|
b055d8c39c | ||
|
|
2690ce7a96 | ||
|
|
1de7c75590 | ||
|
|
15d05748df | ||
|
|
9abbcc3ee0 | ||
|
|
20008b72a8 | ||
|
|
aed0cfa3d1 | ||
|
|
f9aa1daa0d | ||
|
|
674deaf223 | ||
|
|
5595098063 | ||
|
|
2b7db90340 | ||
|
|
8b12371e45 | ||
|
|
4782acf60e | ||
|
|
0cd1e91056 | ||
|
|
09d13f186f | ||
|
|
c5632bb91b | ||
|
|
0d531d9655 | ||
|
|
69efb87d19 | ||
|
|
368c124de8 | ||
|
|
21a7b4f26d | ||
|
|
cf2193c07f | ||
|
|
a641992c1d | ||
|
|
ac168a03c8 | ||
|
|
084f2434a7 | ||
|
|
7c7ae5ebef | ||
|
|
4feffca178 | ||
|
|
c555a214d2 | ||
|
|
d568e586b7 | ||
|
|
24f9bec6f4 | ||
|
|
6d0678d963 | ||
|
|
3255712343 | ||
|
|
3d796d8040 | ||
|
|
3db5303bfe | ||
|
|
a71d2f3f40 | ||
|
|
73e32925e4 | ||
|
|
125c572d97 | ||
|
|
a5150c83a2 | ||
|
|
204199e1ce | ||
|
|
f53e0702fc | ||
|
|
6686d937fb | ||
|
|
117fc872a7 | ||
|
|
7d2e850577 | ||
|
|
03ba79f144 | ||
|
|
11f9c253e0 | ||
|
|
5cf6a062e3 | ||
|
|
6149b82119 | ||
|
|
82ef6b5242 | ||
|
|
b8bc965414 | ||
|
|
69d49a2438 | ||
|
|
9b800b7fbe | ||
|
|
d576f5408e | ||
|
|
c40cb52342 | ||
|
|
a2ac452ef9 | ||
|
|
4fa65a5c25 | ||
|
|
b3daf6b5db | ||
|
|
f58eb391aa | ||
|
|
cffd052fee | ||
|
|
79c402b052 | ||
|
|
65d0f32f82 | ||
|
|
728acf521c | ||
|
|
206866ebb3 | ||
|
|
85c6ffbe0d | ||
|
|
4e891e9fb7 | ||
|
|
de3d3b9cb1 | ||
|
|
43ea265b78 | ||
|
|
9d65e61f39 | ||
|
|
ae663a4198 | ||
|
|
d7800e7975 | ||
|
|
542efda7db | ||
|
|
438c21ad5c | ||
|
|
3cd7659924 | ||
|
|
99fcf60977 | ||
|
|
81c0a918af | ||
|
|
f206b81cf7 | ||
|
|
60e7951312 | ||
|
|
9898b96992 | ||
|
|
840289e7cc | ||
|
|
d163c4b530 | ||
|
|
90cf6a06be | ||
|
|
cdfabbc507 | ||
|
|
c846388a65 | ||
|
|
2fde60da12 | ||
|
|
6040d4080e | ||
|
|
a4e1d83599 | ||
|
|
a3b098b4be | ||
|
|
466f2761cb | ||
|
|
a993c5227d | ||
|
|
5320906b0b | ||
|
|
aeb5c623c1 | ||
|
|
5fbb2f121e | ||
|
|
1da2b2dd74 | ||
|
|
c1184552ac | ||
|
|
9e3fbcf35c | ||
|
|
d8b444c144 | ||
|
|
a2372cfab5 | ||
|
|
4d3c3d0b73 | ||
|
|
3748c28924 | ||
|
|
772298257b | ||
|
|
b27bc67271 | ||
|
|
cb8b9950af | ||
|
|
b6ba32ce75 | ||
|
|
53694ebaa1 | ||
|
|
37fff608b0 | ||
|
|
02dd621ac7 | ||
|
|
4b612f590c | ||
|
|
91b63f6d69 | ||
|
|
cff886ba12 | ||
|
|
57fac33a74 | ||
|
|
3e2a515d27 | ||
|
|
bb23286383 | ||
|
|
f125ba7eb6 | ||
|
|
dd8febca1a | ||
|
|
fb44f8e50f | ||
|
|
4c5356f77a | ||
|
|
f5b4e1ef4f | ||
|
|
6e944a413c | ||
|
|
967522b95e | ||
|
|
f4b16a3bac | ||
|
|
f9327534f8 | ||
|
|
da9f140829 | ||
|
|
824980e70e | ||
|
|
3a97de52ef | ||
|
|
24437de591 | ||
|
|
4c5ffd2349 | ||
|
|
aa7efb96bf | ||
|
|
63a91cd37a | ||
|
|
8056120195 | ||
|
|
23557f8e77 | ||
|
|
05f8e98c4a | ||
|
|
48fb4e0932 | ||
|
|
0850b38b45 | ||
|
|
000b3b3117 | ||
|
|
046a1ad331 | ||
|
|
98aba6a534 | ||
|
|
b35c3b5eb8 | ||
|
|
45c2388a58 | ||
|
|
0154e3480c | ||
|
|
082ab8fcab | ||
|
|
d1f11e9c10 | ||
|
|
dd1b503f64 | ||
|
|
bd45d0363d | ||
|
|
91fb6231b2 | ||
|
|
94e6b2976e | ||
|
|
e3948d8582 | ||
|
|
dd3ce40826 | ||
|
|
ec6ca37ed3 | ||
|
|
a52fec6ac4 | ||
|
|
1f3ad461bc | ||
|
|
bee2b5eea4 | ||
|
|
e37dd64548 | ||
|
|
8f90642eea | ||
|
|
cf0f78336b | ||
|
|
23e45fa3c4 | ||
|
|
fd78446b2b | ||
|
|
7c61bcb058 | ||
|
|
ef2531558c | ||
|
|
ca80564a78 | ||
|
|
285b868e9b | ||
|
|
eede8679e7 | ||
|
|
1f2acc33bc | ||
|
|
7f88334aa3 | ||
|
|
a038c10f66 | ||
|
|
4f32786cf7 | ||
|
|
f5f72b2009 | ||
|
|
a8aa43ce2d | ||
|
|
4793c34c53 | ||
|
|
16baa48699 | ||
|
|
02aa93a6ad | ||
|
|
fadf9eb2d7 | ||
|
|
0880031e8e | ||
|
|
0786b61ce7 | ||
|
|
47099af3ec | ||
|
|
276271e72f | ||
|
|
94cb412e45 | ||
|
|
c8718aa111 | ||
|
|
a67cf78c6b | ||
|
|
f0dd4e3fa0 | ||
|
|
b634bfe1b1 | ||
|
|
7be4857ab9 | ||
|
|
7d8b66e207 | ||
|
|
59b32c25b5 | ||
|
|
f90c075d1f | ||
|
|
9b64be0bc5 | ||
|
|
25674da90c | ||
|
|
22b897e77d | ||
|
|
d06e29846d | ||
|
|
2f837ce9b7 | ||
|
|
e48fcad615 | ||
|
|
41ec449960 | ||
|
|
9badf5dc0d | ||
|
|
7576ad7fc2 | ||
|
|
27c5692b13 | ||
|
|
a9adc2c2f6 | ||
|
|
d18d40e1d6 | ||
|
|
65f365333f | ||
|
|
d3ed0f53cd | ||
|
|
8c69adba8b | ||
|
|
ba5ff1a838 | ||
|
|
be00e421a7 | ||
|
|
fc40d56131 | ||
|
|
d29cb646e3 | ||
|
|
7bb1721f35 | ||
|
|
5f9592a523 | ||
|
|
34eaaab5fb | ||
|
|
2ea779e560 | ||
|
|
d24b1190bd | ||
|
|
e34c6827ea | ||
|
|
a9ecb975b2 | ||
|
|
d95ee0f003 | ||
|
|
80ada58818 | ||
|
|
92a0dc552a | ||
|
|
a81df268fd | ||
|
|
b49acce035 | ||
|
|
1ef1052ae1 | ||
|
|
5926c9c97b | ||
|
|
ab03a31cc9 | ||
|
|
a766dfb3b1 | ||
|
|
fd13489a8a | ||
|
|
01e207213f | ||
|
|
ec04cf27d3 | ||
|
|
dc82babe8e | ||
|
|
4d517d169a | ||
|
|
c6b0c104bb | ||
|
|
5ce7f23afa | ||
|
|
c19eb33408 | ||
|
|
a03f93bab4 | ||
|
|
9e3c41f9e8 | ||
|
|
8602461da8 | ||
|
|
118ac61e59 | ||
|
|
c35d27f77c | ||
|
|
1685cd193b | ||
|
|
7533ccfa83 | ||
|
|
9406c87a97 | ||
|
|
fa577392b2 | ||
|
|
c2fc78c3a8 | ||
|
|
001ce7a2fd | ||
|
|
c613a1ed38 | ||
|
|
f011a32771 | ||
|
|
0c95262b9e | ||
|
|
9dad534f02 | ||
|
|
4371345cbe | ||
|
|
8d0a45f5d4 | ||
|
|
56c02b7f59 | ||
|
|
3994d3b935 | ||
|
|
617993d0ea | ||
|
|
3269d8dd62 | ||
|
|
cf2c5266ed | ||
|
|
bb1a6eea88 | ||
|
|
1ce0fb336b | ||
|
|
63e135732c | ||
|
|
a61127a421 | ||
|
|
5cfdb76186 | ||
|
|
e2724c68ab | ||
|
|
9770062309 | ||
|
|
586c1e4e73 | ||
|
|
37a8d0b809 | ||
|
|
3066655727 | ||
|
|
ba8bc7ea80 | ||
|
|
f409147116 | ||
|
|
a28ccabe2a | ||
|
|
5060195e8a | ||
|
|
33912fa7e8 | ||
|
|
5a52cf6a71 | ||
|
|
b9327a4d16 | ||
|
|
8836623e0f | ||
|
|
fe4f009fdd | ||
|
|
25af9decfe | ||
|
|
1d4571b88d | ||
|
|
550f1025f0 | ||
|
|
c0000a0cdc | ||
|
|
81bc428b48 | ||
|
|
3af7fc07e7 | ||
|
|
c14000775b | ||
|
|
60adc6ff02 | ||
|
|
6e533748eb | ||
|
|
485abb023b | ||
|
|
ca6d408549 | ||
|
|
3bba7d60f3 | ||
|
|
32512332df | ||
|
|
7dacc999b9 | ||
|
|
9729528d13 | ||
|
|
d48cb6bf41 | ||
|
|
50a5bb77d2 | ||
|
|
bd8bcf06e7 | ||
|
|
1502b6ad8a | ||
|
|
7eea000f4b | ||
|
|
a7ff4f5799 | ||
|
|
b2dda096fe | ||
|
|
1e8afb66b7 | ||
|
|
50f09cc029 | ||
|
|
63257dc083 | ||
|
|
166dbada91 | ||
|
|
0918dae66e | ||
|
|
24057270a3 | ||
|
|
5079a02c90 | ||
|
|
9c3761047e | ||
|
|
1c7b9f6d5d | ||
|
|
e0d367f1fb | ||
|
|
9f8b4c5ee8 | ||
|
|
2c8c30437e | ||
|
|
6131533157 | ||
|
|
e70b44dc0b | ||
|
|
54774841ba | ||
|
|
009e3a7aa7 | ||
|
|
0c7a17a312 | ||
|
|
6d6c3b1e97 | ||
|
|
d8199b5db9 | ||
|
|
3f0a982b8c | ||
|
|
b76e173205 | ||
|
|
705801880b | ||
|
|
14ebedca27 | ||
|
|
b7feb53e8a | ||
|
|
1b6c25a5e6 | ||
|
|
202a9b06d9 | ||
|
|
91baca6abb | ||
|
|
98efc18f2c | ||
|
|
2f73dec077 | ||
|
|
04abd8d459 | ||
|
|
c009a990e4 | ||
|
|
e8e92f8969 | ||
|
|
f5d210c35c | ||
|
|
faaae7a1b2 | ||
|
|
e1e68e4c95 | ||
|
|
06ee6584fd | ||
|
|
c938273bd5 | ||
|
|
98c1265e3b | ||
|
|
68f2d95f76 | ||
|
|
d4a1154c25 | ||
|
|
36426af564 | ||
|
|
c0fe6cc34d | ||
|
|
1ed86adf9c | ||
|
|
75a58ee4b8 | ||
|
|
e334efb2a7 | ||
|
|
a886e98967 | ||
|
|
b6415dc169 | ||
|
|
60153b0e3b | ||
|
|
0efa66be0b | ||
|
|
cba9c1cf9e | ||
|
|
600c85226e | ||
|
|
81b91b3f9d | ||
|
|
2f9848ede3 | ||
|
|
450c5f0814 | ||
|
|
006dad4b52 | ||
|
|
00514857e9 | ||
|
|
c66696c507 | ||
|
|
02e91ffa02 | ||
|
|
22e18fe832 | ||
|
|
0cfb936dd1 | ||
|
|
f34c3597dc | ||
|
|
10896b9431 | ||
|
|
d47fbf791b | ||
|
|
95ea43bde4 | ||
|
|
b0b4a20930 | ||
|
|
8805e24cc7 | ||
|
|
24437fbb13 | ||
|
|
5a88e9bc4b | ||
|
|
7c274d249b | ||
|
|
c388dce2b5 | ||
|
|
09b05c9d79 | ||
|
|
1e555dfcc2 | ||
|
|
e6788bb6ae | ||
|
|
967104e1ce | ||
|
|
8875885a15 | ||
|
|
1c6e83c137 | ||
|
|
004fc55eaf | ||
|
|
82f45c3e6a | ||
|
|
6f70e5618e | ||
|
|
064e6fe60e | ||
|
|
29fb48799d | ||
|
|
0483a7df91 | ||
|
|
a34b5a2bfa | ||
|
|
96c9d715f3 | ||
|
|
ed62c621d7 | ||
|
|
efa8f20b2f | ||
|
|
8fea26aa9d | ||
|
|
2c099fd4c2 | ||
|
|
a6160916b0 | ||
|
|
776cb52629 | ||
|
|
17ef0a513b | ||
|
|
b4bf8928aa | ||
|
|
e54881c408 | ||
|
|
73ca5345e1 | ||
|
|
714d2b9bbc | ||
|
|
83555933aa | ||
|
|
85a62bbf46 | ||
|
|
e6aba99f16 | ||
|
|
6718579ccf | ||
|
|
e9b1944a67 | ||
|
|
6324b09934 | ||
|
|
172c36f517 | ||
|
|
cc4d28b73c | ||
|
|
94c7205d64 | ||
|
|
2246316605 | ||
|
|
4efaef7039 | ||
|
|
c8dfa26bc8 | ||
|
|
185dec800b | ||
|
|
297666ea14 | ||
|
|
c5d95d318b | ||
|
|
7e2fee9d56 | ||
|
|
59c558d612 | ||
|
|
be73d5cc08 | ||
|
|
2e33c3bdc2 | ||
|
|
9e93b7ccbd | ||
|
|
b91a822d7a | ||
|
|
d295f984e3 | ||
|
|
7de8a66780 | ||
|
|
1b40e9c464 | ||
|
|
1b42fba39b | ||
|
|
a22434508f | ||
|
|
c07bbd4154 | ||
|
|
d6aa127c76 | ||
|
|
79772219ae | ||
|
|
47e0ee8eff | ||
|
|
ca7d36d9ed | ||
|
|
52aec32f3a | ||
|
|
ca21367dde | ||
|
|
e0a6ee8da5 | ||
|
|
46c0b73578 | ||
|
|
dac1f6fe74 | ||
|
|
4df024d7b9 | ||
|
|
601ccded89 | ||
|
|
944b67b0b8 | ||
|
|
f8393a0908 | ||
|
|
d83a9a53e8 | ||
|
|
93ba72ea83 | ||
|
|
b561ee2738 | ||
|
|
7e43dd1d23 | ||
|
|
f606ebf8ee | ||
|
|
ca0e4b4e96 | ||
|
|
84b93d941f | ||
|
|
70be4d206e | ||
|
|
f3deb37bdf | ||
|
|
31f112cf58 | ||
|
|
2f9e42feb9 | ||
|
|
e5ae545647 | ||
|
|
6827e243a0 | ||
|
|
8735ae984b | ||
|
|
3749a746f1 | ||
|
|
c72a0610b4 | ||
|
|
13d839795c | ||
|
|
676a564610 | ||
|
|
eb13b8d985 | ||
|
|
063e957fc4 | ||
|
|
f7133e53fd | ||
|
|
fd8f433cc2 | ||
|
|
32a9db3e93 | ||
|
|
0108d5181f | ||
|
|
3a81646c9a | ||
|
|
34745b2183 | ||
|
|
9cc1d8e312 | ||
|
|
03e5369411 | ||
|
|
f1edf83720 | ||
|
|
b2bd77c40a | ||
|
|
571ced712d | ||
|
|
778e4e4c23 | ||
|
|
cae8703e0d | ||
|
|
a516856df9 | ||
|
|
727a403ba1 | ||
|
|
577659cacf | ||
|
|
0b02f9cc33 | ||
|
|
1f38761da2 | ||
|
|
04c0d9f3c3 | ||
|
|
9f89b5d876 | ||
|
|
2cdde08339 | ||
|
|
34be5d33c0 | ||
|
|
6e5f13a5c2 | ||
|
|
b7a66742dd | ||
|
|
f505a04043 | ||
|
|
bbc2e66634 | ||
|
|
31e96935f7 | ||
|
|
c94dce6b32 | ||
|
|
ce1c9c0808 | ||
|
|
12458cefc4 | ||
|
|
9a4cf11835 | ||
|
|
8949c8c0a5 | ||
|
|
817175613a | ||
|
|
233ddf80da | ||
|
|
723f2a77f6 | ||
|
|
7465ede058 | ||
|
|
e04425281d | ||
|
|
edff2c917b | ||
|
|
3e8754a38a | ||
|
|
b2a48f1a04 | ||
|
|
10a1f07684 | ||
|
|
b232f39341 | ||
|
|
9d4cfd2013 | ||
|
|
eae0aea1e0 | ||
|
|
a1a4fc277e | ||
|
|
325233b454 | ||
|
|
50b4f9cbf7 | ||
|
|
630677bec6 | ||
|
|
6b1d1a818b | ||
|
|
c1c3ca6f8a | ||
|
|
ba8dc678f5 | ||
|
|
8d9c3cc2b7 | ||
|
|
c9bbef6380 | ||
|
|
203f2923a1 | ||
|
|
55653dce63 | ||
|
|
dcfc2503c2 | ||
|
|
b338cafc65 | ||
|
|
ada90f7335 | ||
|
|
7fad26549b | ||
|
|
33f379fe88 | ||
|
|
daeff5a11a | ||
|
|
0ceec1f166 | ||
|
|
eb02f8c719 | ||
|
|
3f827758d7 | ||
|
|
bd78ca0ee3 | ||
|
|
636c3bbc4e | ||
|
|
ce5f0ec85a | ||
|
|
46e9eae159 | ||
|
|
c45514f811 | ||
|
|
cc72db2636 | ||
|
|
229a27a1c7 | ||
|
|
3f5f39576b | ||
|
|
9e699811d2 | ||
|
|
3ac581eac9 | ||
|
|
e4266d0fde | ||
|
|
49f8c8fd7b | ||
|
|
da2dc2bfa4 | ||
|
|
7b3098bbd5 | ||
|
|
e00ed10c4c | ||
|
|
10a5e4d80f | ||
|
|
6b1eddda06 | ||
|
|
ee9b8bf0f1 | ||
|
|
f65fc7ffab | ||
|
|
070cd34fe8 | ||
|
|
7f55d82fd1 | ||
|
|
90a14b4f5b | ||
|
|
51fafccc16 | ||
|
|
580b6e9089 | ||
|
|
4e2baeb3e1 | ||
|
|
60af705e6d | ||
|
|
46aae4c6e7 | ||
|
|
3356d5a72d | ||
|
|
5f87324536 | ||
|
|
272f9f65dc | ||
|
|
8181220bfd | ||
|
|
6296ab2173 | ||
|
|
72156a2029 | ||
|
|
adf168e68f | ||
|
|
0cb423b5b3 | ||
|
|
8c78f8f790 | ||
|
|
1fbb307aaf | ||
|
|
3d2b2eb1ca | ||
|
|
783ddf9691 | ||
|
|
5439358281 | ||
|
|
9e5cbf0198 | ||
|
|
348e5e3109 | ||
|
|
3986a84f77 | ||
|
|
572cf0ec95 | ||
|
|
67cc29cd3c | ||
|
|
9736c962fe | ||
|
|
6cb26c98c8 | ||
|
|
3b7b0492f8 | ||
|
|
26531f2715 | ||
|
|
02f2979760 | ||
|
|
ce48403a0b | ||
|
|
eeb4611606 | ||
|
|
3e7b24278f | ||
|
|
bacea22a26 | ||
|
|
c46189e429 | ||
|
|
a12ab611ae | ||
|
|
5c4f3e0107 | ||
|
|
014a83fe09 | ||
|
|
bc7df0188e | ||
|
|
34a261416f | ||
|
|
af2397d581 | ||
|
|
e587f0893c | ||
|
|
fd128b3c93 | ||
|
|
799360c576 | ||
|
|
d3e5a22a5d | ||
|
|
b206f70693 | ||
|
|
ec69e97bda | ||
|
|
91e28edda6 | ||
|
|
3c8a3a02ba | ||
|
|
4586acad8c | ||
|
|
497f86453e | ||
|
|
85b2e7e764 | ||
|
|
c0dddd4233 | ||
|
|
ca66574062 | ||
|
|
1344ca4b2f | ||
|
|
8dd08425fd | ||
|
|
3e3911fb81 | ||
|
|
32c607ffe2 | ||
|
|
ca1e47375c | ||
|
|
9a930ebec2 | ||
|
|
58abc66c1d | ||
|
|
72ef508d55 | ||
|
|
1adb5a6a48 | ||
|
|
3619a4cbea | ||
|
|
12d212d1b4 | ||
|
|
cc01a36363 | ||
|
|
4764710b11 | ||
|
|
4e3ee845b9 | ||
|
|
0e260c6c1d | ||
|
|
e9cf9ad3f3 | ||
|
|
26bfae58d4 | ||
|
|
1f5c432e29 | ||
|
|
732e87e83c | ||
|
|
f8e8fcb978 | ||
|
|
10124f39d9 | ||
|
|
a11e6a1022 | ||
|
|
b30b55307c | ||
|
|
1d04197f2f | ||
|
|
1f05f10346 | ||
|
|
9b0ee53b12 | ||
|
|
442669d23c | ||
|
|
5ad8f5c306 | ||
|
|
20ebe218c8 | ||
|
|
09fa34a9e1 | ||
|
|
560d366b80 | ||
|
|
e9bcb9d048 | ||
|
|
03f4891fb9 | ||
|
|
e31385ecf6 | ||
|
|
546f02c6f4 | ||
|
|
eb96d37da0 | ||
|
|
deeea98d22 | ||
|
|
a058638d11 | ||
|
|
ae1a18d0a1 | ||
|
|
12aa1b999a | ||
|
|
9d0e4ea3d5 | ||
|
|
f63e546b3e | ||
|
|
8315a8a716 | ||
|
|
4b36a542e0 | ||
|
|
81a1e69a4a | ||
|
|
12730c1303 | ||
|
|
7fb3343bda | ||
|
|
8998f31ee1 | ||
|
|
2aa22c5a5e | ||
|
|
db8ded90c2 | ||
|
|
f99d1dedae | ||
|
|
de84f57a9c | ||
|
|
ef90b49fff | ||
|
|
67a7dd9792 | ||
|
|
030c266811 | ||
|
|
b220bc7521 | ||
|
|
9fe7f53216 | ||
|
|
c0382cd8cd | ||
|
|
c81843a414 | ||
|
|
72693a7e87 | ||
|
|
aa51a02b8f | ||
|
|
46b2773e13 | ||
|
|
7258218f89 | ||
|
|
bf596fb039 | ||
|
|
ab4943e24c | ||
|
|
ca3c9baf1b | ||
|
|
a8b8d4e85e | ||
|
|
6ea2cc0293 | ||
|
|
e472a7569b | ||
|
|
200f971ef7 | ||
|
|
1ae208395c | ||
|
|
508d764d63 | ||
|
|
af15383578 | ||
|
|
33c4d45f2f | ||
|
|
f3677e077c | ||
|
|
a03e70d46c | ||
|
|
2d41c59320 | ||
|
|
5ae390e240 | ||
|
|
90af1fe5ee | ||
|
|
965b0ab53e | ||
|
|
ac41eb5871 | ||
|
|
c0b365fdb4 | ||
|
|
26d4c01660 | ||
|
|
ae2173cd52 | ||
|
|
0cb00f52d9 | ||
|
|
f0d34ca4f5 | ||
|
|
1beaef0452 | ||
|
|
6904561fd5 | ||
|
|
92389e4236 | ||
|
|
f1b6b4bdaa | ||
|
|
020ce176c4 | ||
|
|
de05b2b309 | ||
|
|
62054af6eb | ||
|
|
17dddda024 | ||
|
|
bea3ec2724 | ||
|
|
8c622a59cf | ||
|
|
c47e2abefb | ||
|
|
56c05a7015 | ||
|
|
2ee4eef25c | ||
|
|
ffed785656 | ||
|
|
88f9194168 | ||
|
|
604b804125 | ||
|
|
c869dc9745 | ||
|
|
e9acb63290 | ||
|
|
baf0bd2b24 | ||
|
|
c2b1d51f16 | ||
|
|
c272f2c84e | ||
|
|
dff2904c0f | ||
|
|
9dd5390d7d | ||
|
|
599f2ad983 | ||
|
|
358656acc3 | ||
|
|
0cb4d25431 | ||
|
|
f582f1bf4e | ||
|
|
10c1b442ca | ||
|
|
5a3a53379f | ||
|
|
afe77bd138 | ||
|
|
fdf1b8a7b8 | ||
|
|
b93a55e15f | ||
|
|
ce1638e32f | ||
|
|
49c693c85b | ||
|
|
46709ed7e0 | ||
|
|
2b112143fa | ||
|
|
7cd5eb6d42 | ||
|
|
981a610f75 | ||
|
|
4c5be9bb05 | ||
|
|
494b0eba2d | ||
|
|
2281154025 | ||
|
|
92dbf5f148 | ||
|
|
37eb6d1732 | ||
|
|
7a29f802d0 | ||
|
|
5972251b17 | ||
|
|
7239ab231c | ||
|
|
c508e9adec | ||
|
|
c4e4a0688c | ||
|
|
88407727ec | ||
|
|
6d5fcac54a | ||
|
|
1ab679b1d2 | ||
|
|
f58ba3a64e | ||
|
|
8089f73549 | ||
|
|
71d63fcafb | ||
|
|
6da97ebdd1 | ||
|
|
1587962547 | ||
|
|
bfd1e75c04 | ||
|
|
ff1f211eb4 | ||
|
|
ddbd4b73e0 | ||
|
|
9a03f758cd | ||
|
|
00b1b33816 | ||
|
|
f37ed314e0 | ||
|
|
06a02dd200 | ||
|
|
2f14eaf6a3 | ||
|
|
f9ef446fb5 | ||
|
|
64dfb46461 | ||
|
|
2e20c53c9d | ||
|
|
a10451ceed | ||
|
|
6f92ab7eed | ||
|
|
07cf75883f | ||
|
|
927524af6b | ||
|
|
1a37ebc76d | ||
|
|
8ca0b2fd68 | ||
|
|
59608086e6 | ||
|
|
6e0503eab2 | ||
|
|
2e89685154 | ||
|
|
19dde5be03 | ||
|
|
1b0acbff72 | ||
|
|
75cf17d816 | ||
|
|
7ba2ab4fb3 | ||
|
|
a90c7dbf64 | ||
|
|
aab5489962 | ||
|
|
1fe25271e4 | ||
|
|
0589884d26 | ||
|
|
4a220a8b79 | ||
|
|
9be8cb0ac9 | ||
|
|
828405cac8 | ||
|
|
8584f7e390 | ||
|
|
ebb9bd5419 | ||
|
|
d4aaa0f1c8 | ||
|
|
609c4eea32 | ||
|
|
4f14849675 | ||
|
|
6ed5252884 | ||
|
|
d4d3d92f8a | ||
|
|
3e761696a0 | ||
|
|
0e319104c2 | ||
|
|
234de3547c | ||
|
|
6c7bad8bc3 | ||
|
|
f5877aa93e | ||
|
|
33861d4e04 | ||
|
|
7aca9fe2f7 | ||
|
|
b3822b9242 | ||
|
|
5e63efc1d9 | ||
|
|
92c15f5578 | ||
|
|
eef4a54778 | ||
|
|
379f16558e | ||
|
|
811c32b85a | ||
|
|
1d2061c935 | ||
|
|
81b8fbf4d6 | ||
|
|
5d2681a105 | ||
|
|
beb346e49f | ||
|
|
381b17e6a9 | ||
|
|
a911215b0e | ||
|
|
4b9d1b9f26 | ||
|
|
0c7ba52451 | ||
|
|
cbf40f7ee9 | ||
|
|
b464887ea1 | ||
|
|
14a5d2a273 | ||
|
|
06f3c8029e | ||
|
|
a831977dee | ||
|
|
7479ff98b7 | ||
|
|
5b3e49babd | ||
|
|
df0432c7c8 | ||
|
|
df031ab100 | ||
|
|
99c4b9050a | ||
|
|
a41130f854 | ||
|
|
2c1eda9e00 | ||
|
|
fc52fc72ac | ||
|
|
be8d913484 | ||
|
|
10fab24e50 | ||
|
|
69b664b6fe | ||
|
|
a442c34a1a | ||
|
|
be0e4a4ad0 | ||
|
|
adca4a9b79 | ||
|
|
33e00b6cd6 | ||
|
|
04583d46af | ||
|
|
04376975ce | ||
|
|
931aa79d85 | ||
|
|
84ddae56a8 | ||
|
|
b8adae0785 | ||
|
|
9db5d21837 | ||
|
|
13136376ee | ||
|
|
a1ee1628e5 | ||
|
|
9b4aa5ea8b | ||
|
|
94d9def81c | ||
|
|
56f4a43535 | ||
|
|
760f29a88e | ||
|
|
4007cbfe9e | ||
|
|
27f7e3fe6f | ||
|
|
9c21191f74 | ||
|
|
51f195e698 | ||
|
|
4f1eadf41f | ||
|
|
d5fe0fb02b | ||
|
|
551752eac7 | ||
|
|
71aefc2e22 | ||
|
|
63228fc453 | ||
|
|
bf7af95db3 | ||
|
|
8dc2838d98 | ||
|
|
8fbb833de9 | ||
|
|
a98e9874db | ||
|
|
722786966a | ||
|
|
4231faf779 | ||
|
|
e0a189a481 | ||
|
|
bca67a5b79 | ||
|
|
142d8aae56 | ||
|
|
a1e2b5da70 | ||
|
|
038f82cc38 | ||
|
|
42e2dd9251 | ||
|
|
614a86a380 | ||
|
|
82fff87e16 | ||
|
|
3d8a0ab4b2 | ||
|
|
0fcec02db5 | ||
|
|
7dd0a46732 | ||
|
|
4a82e95c3e | ||
|
|
d7ee81202f | ||
|
|
34101224c4 | ||
|
|
f52a31a275 | ||
|
|
479652073b | ||
|
|
54326fb06a | ||
|
|
65996e4235 | ||
|
|
7e42c7563c | ||
|
|
b66d65f865 | ||
|
|
0b9a88d6ce | ||
|
|
2b3b7d5d7f | ||
|
|
0c9231fd04 | ||
|
|
efa578d6b0 | ||
|
|
cc92e544a5 | ||
|
|
5be07b5db2 | ||
|
|
9ea2ff950a | ||
|
|
4e4d16c92e | ||
|
|
fa5f9c2aec | ||
|
|
f536c4dccb | ||
|
|
48351fd6d5 | ||
|
|
27cbb939b2 | ||
|
|
b29b66feda | ||
|
|
8afe13b1a2 | ||
|
|
b908e38d08 | ||
|
|
a037ddbf7b | ||
|
|
2af62a5d8d | ||
|
|
fa9ff6be6e | ||
|
|
18f97c4013 | ||
|
|
01fb45b4f8 | ||
|
|
94dd39b3b7 | ||
|
|
8587c4e1ec | ||
|
|
7342d5c07a | ||
|
|
97444391e0 | ||
|
|
859fa35287 | ||
|
|
622b80974c | ||
|
|
d80877d570 | ||
|
|
9a950e3a5a | ||
|
|
105324b85b | ||
|
|
d5e5735679 | ||
|
|
8f5a576b08 | ||
|
|
419e575808 | ||
|
|
69704b93f2 | ||
|
|
61c0a10efe | ||
|
|
a5cf3a190c | ||
|
|
76da81c1de | ||
|
|
84a11cfedc | ||
|
|
32e759c928 | ||
|
|
4183a249b6 | ||
|
|
b55295ad33 | ||
|
|
d2fb3215da | ||
|
|
c66d1ac651 | ||
|
|
a31e32969f | ||
|
|
bcd050f33b | ||
|
|
44b0c186a6 | ||
|
|
f3e562e46e | ||
|
|
cfef925559 | ||
|
|
4b16fa3272 | ||
|
|
fb04dfcda8 | ||
|
|
e4fcf460e7 | ||
|
|
367e1b54ba | ||
|
|
41e4de62b3 | ||
|
|
8a184a526a | ||
|
|
353c23b16e | ||
|
|
898f48e331 | ||
|
|
5851c2d36f | ||
|
|
52073f21c5 | ||
|
|
321f98f867 | ||
|
|
9721c77fb9 | ||
|
|
36771e9492 | ||
|
|
3f0b38ed5d | ||
|
|
ca9734805c | ||
|
|
0067bb2840 | ||
|
|
2b12093589 | ||
|
|
ddfe527ff2 | ||
|
|
54d48130f3 | ||
|
|
86c024ce98 | ||
|
|
c7b07d20f2 | ||
|
|
356af7dcb0 | ||
|
|
11a724d8fc | ||
|
|
d29bf49b66 | ||
|
|
e337df2e98 | ||
|
|
c0409b85e7 | ||
|
|
e82e9073d6 | ||
|
|
69d1052010 | ||
|
|
6127154af3 | ||
|
|
b94a1c6b9f | ||
|
|
405a2132f3 | ||
|
|
869d7f3703 | ||
|
|
101ba70517 | ||
|
|
5e14bb61de | ||
|
|
4817b39d98 | ||
|
|
6772e33ef6 | ||
|
|
385f1bb9e5 | ||
|
|
2a31c9f2ce | ||
|
|
5fa61c0ad3 | ||
|
|
b3f59ec945 | ||
|
|
b33739d493 | ||
|
|
a1878cd1c0 | ||
|
|
0a18fb735e | ||
|
|
30887feae3 | ||
|
|
257b693ab0 | ||
|
|
ab2ac1af71 | ||
|
|
f1843211e6 | ||
|
|
be5ca34215 | ||
|
|
06541ec885 | ||
|
|
e9c72978c7 | ||
|
|
96ae53cf41 | ||
|
|
6172f150c2 | ||
|
|
3be9c19f12 | ||
|
|
8fd58cd6dc | ||
|
|
75e6f72c89 | ||
|
|
ac76101ec3 | ||
|
|
75e6ead5fd | ||
|
|
6bd63d27b5 | ||
|
|
f54e0fc90f | ||
|
|
0938c62b48 | ||
|
|
9d95b1b4df | ||
|
|
35d5a7bdff | ||
|
|
419c8969a7 | ||
|
|
25a11cd485 | ||
|
|
7f3406d47b | ||
|
|
6440904c1c | ||
|
|
97c21e9007 | ||
|
|
82cfdd4d8f | ||
|
|
b2822a59f9 | ||
|
|
a7e5c1bf19 | ||
|
|
dd66d21749 | ||
|
|
b370906031 | ||
|
|
804818b4d9 | ||
|
|
dd841a3675 | ||
|
|
0fd2923a9f | ||
|
|
8b97da0e3d | ||
|
|
db188934d1 | ||
|
|
24af9e1bf4 | ||
|
|
8443872d10 | ||
|
|
6827a162bb | ||
|
|
43d298a324 | ||
|
|
3497153cf1 | ||
|
|
16f8c4865a | ||
|
|
50bfcf4c3e | ||
|
|
622048ffb0 | ||
|
|
65a36948c0 | ||
|
|
c6509076c4 | ||
|
|
2cbdc0ebb6 | ||
|
|
650e5274c4 | ||
|
|
ce65c13a97 | ||
|
|
6ef71c3d5f | ||
|
|
936dfb965c | ||
|
|
ffe3013bb5 | ||
|
|
7ef0650504 | ||
|
|
e948f77cf9 | ||
|
|
08b0456d91 | ||
|
|
850e404838 | ||
|
|
936d00dda8 | ||
|
|
29eef360d0 | ||
|
|
894608f8a3 | ||
|
|
ff06e1a030 | ||
|
|
15e009b6ca | ||
|
|
8b0bd44b1e | ||
|
|
bfd396c13a | ||
|
|
48c5f3dddf | ||
|
|
be7a9a07c5 | ||
|
|
dfe670247d | ||
|
|
af83c512b8 | ||
|
|
4eff18854b | ||
|
|
14482d2f2a | ||
|
|
9fc72422e4 | ||
|
|
fee696db5d | ||
|
|
423b0f3a1e | ||
|
|
283d15a8d0 | ||
|
|
e52c1a0882 | ||
|
|
5b69d67da9 | ||
|
|
51864fd365 | ||
|
|
dc7c95e07b | ||
|
|
a972c060d7 | ||
|
|
42aa10d263 | ||
|
|
4718c09c48 | ||
|
|
21591352d7 | ||
|
|
890e7a16a9 | ||
|
|
a059e95463 | ||
|
|
d6d6043548 | ||
|
|
03989824fa | ||
|
|
851f9f5399 | ||
|
|
b7a16e4468 | ||
|
|
f38b8c5bf8 | ||
|
|
60cb2bd4e7 | ||
|
|
8a3bc6be4d | ||
|
|
b0173ccdb9 | ||
|
|
7afafb05b8 | ||
|
|
c45798694f | ||
|
|
72de280c1e | ||
|
|
4d98e3f0a7 | ||
|
|
e530c67349 | ||
|
|
2ad3ca5d8a | ||
|
|
37a6833d7e | ||
|
|
a519b093b9 | ||
|
|
b9809ea86c | ||
|
|
0873c667fa | ||
|
|
8c2907d10f | ||
|
|
9af67e2446 | ||
|
|
e5904c4df8 | ||
|
|
76e90b93b7 | ||
|
|
f63f1ff12c | ||
|
|
00e4ced58e | ||
|
|
1066b17457 | ||
|
|
e927941c06 | ||
|
|
68aea9c01d | ||
|
|
aaacef9441 | ||
|
|
4bc79ec877 | ||
|
|
186580b55f | ||
|
|
6be369f3ea | ||
|
|
7fc31a7940 | ||
|
|
11e376e920 | ||
|
|
a3aa798f6d | ||
|
|
2065591daf | ||
|
|
61be28133d | ||
|
|
9248a90a4c | ||
|
|
ce834bb78e | ||
|
|
5ef1e5ef60 | ||
|
|
c7732db99d | ||
|
|
f713f25fa5 | ||
|
|
2cb308fb53 | ||
|
|
fc9ce65095 | ||
|
|
504d26341a | ||
|
|
c6d430670a | ||
|
|
11c589c3ec | ||
|
|
678914be25 | ||
|
|
ef94ddf53c | ||
|
|
3efe4aeef8 | ||
|
|
28deff01b8 | ||
|
|
cca1cca3a5 | ||
|
|
a2babb532d | ||
|
|
8c34233452 | ||
|
|
b8066fb36f | ||
|
|
20f6676d63 | ||
|
|
c28749a567 | ||
|
|
df87278fce | ||
|
|
4be8d7720e | ||
|
|
760bf49a00 | ||
|
|
567941e341 | ||
|
|
57fff2e95e | ||
|
|
94c965fad6 | ||
|
|
6a3967ee33 | ||
|
|
534bffa7a9 | ||
|
|
e1e1a0c344 | ||
|
|
ab79933d1f | ||
|
|
69297b2d7b | ||
|
|
015839fc50 | ||
|
|
d609489b22 | ||
|
|
167169e1bf | ||
|
|
395a9f59ac | ||
|
|
14663efe0d | ||
|
|
ae5923a3d0 | ||
|
|
859248433f | ||
|
|
09c90c2f6c | ||
|
|
41e0955c27 | ||
|
|
232a10410d | ||
|
|
76c92a1fab | ||
|
|
312f63dbe8 | ||
|
|
cf96109056 | ||
|
|
dcec7178d1 | ||
|
|
3e78a01262 | ||
|
|
2ff967f3e6 | ||
|
|
1ff7d10c80 | ||
|
|
4cb45c10dd | ||
|
|
abd6ba62b4 | ||
|
|
f17bae1f70 | ||
|
|
8e0f3b7eba | ||
|
|
009a6104c5 | ||
|
|
fcceed5be6 | ||
|
|
457489d7ac | ||
|
|
30b327d24c | ||
|
|
6c97c5595c | ||
|
|
553d5ca283 | ||
|
|
e6e3132f79 | ||
|
|
cd2ac3b759 | ||
|
|
bfbf5f8200 | ||
|
|
814925d692 | ||
|
|
406ef69702 | ||
|
|
379926961c | ||
|
|
5b03f23fa2 | ||
|
|
e3cedfa0ec | ||
|
|
bb0508b6cf | ||
|
|
5c1888467f | ||
|
|
85777a56c6 | ||
|
|
d1e8d4cd9d | ||
|
|
797d6a97e7 | ||
|
|
b492e0878d | ||
|
|
98d362c2da | ||
|
|
80abc872f3 | ||
|
|
e90cbf5c16 | ||
|
|
ada836db29 | ||
|
|
fc140c4962 | ||
|
|
f4246dc8ff | ||
|
|
66faedb2b8 | ||
|
|
bd776df8c1 | ||
|
|
05449cf6ee | ||
|
|
12f092c812 | ||
|
|
941943c167 | ||
|
|
5b11b33854 | ||
|
|
a4a587a897 | ||
|
|
ba1706a265 | ||
|
|
c2c8aafda2 | ||
|
|
627afb29df | ||
|
|
61d00d8990 | ||
|
|
f0f9fb7465 | ||
|
|
99592c8458 | ||
|
|
31514f453a | ||
|
|
134116b874 | ||
|
|
89c6e92b66 | ||
|
|
e80958b631 | ||
|
|
fe7e890b09 | ||
|
|
a1632cfa0a | ||
|
|
e687782875 | ||
|
|
1446b5f01d | ||
|
|
efc6a9c1b8 | ||
|
|
b3c36c98fd | ||
|
|
3c7bfe798d | ||
|
|
9651d01e1a | ||
|
|
eb314373bb | ||
|
|
6c45fa7dcc | ||
|
|
ece89bcf7a | ||
|
|
afbc6e3e2f | ||
|
|
1e47c17b46 | ||
|
|
ebe6719e12 | ||
|
|
80a232419d | ||
|
|
5fb0d401eb | ||
|
|
ed04d0b6be | ||
|
|
786cdea124 | ||
|
|
ee7163fd3a | ||
|
|
a9f8e518bf | ||
|
|
a18324bc8d | ||
|
|
254a11b083 | ||
|
|
aeb6d465a4 | ||
|
|
325f09ea6c | ||
|
|
d26c8cc5c8 | ||
|
|
c7f04fbcc7 | ||
|
|
4171520729 | ||
|
|
41bfff14e2 | ||
|
|
424d0bae8b | ||
|
|
5c59ee4e93 | ||
|
|
37bc0fce62 | ||
|
|
d5368461f9 | ||
|
|
e907654d6a | ||
|
|
6c45d0fd81 | ||
|
|
8a51e2960c | ||
|
|
725d9d9a56 | ||
|
|
499bb85a95 | ||
|
|
90f5f82926 | ||
|
|
0c616700f3 | ||
|
|
6dcf42f1a7 | ||
|
|
a1c65fd3d5 | ||
|
|
7b79f443ef | ||
|
|
907cafcbfd | ||
|
|
17f69f8ca2 | ||
|
|
cfcd069501 | ||
|
|
b8b7ef1902 | ||
|
|
42f7f9e013 | ||
|
|
0b49bddec2 | ||
|
|
7e028ec429 | ||
|
|
2e26a7c752 | ||
|
|
2e1b7d3a22 | ||
|
|
4c3dc8bf07 | ||
|
|
4857a3ba48 | ||
|
|
3d24c329af | ||
|
|
311f6aff72 | ||
|
|
8fb30aaed6 | ||
|
|
6cb9bb27fe | ||
|
|
43a95ae5ad | ||
|
|
dd1a84b23f | ||
|
|
d4270f15a9 | ||
|
|
c61c0a9aeb | ||
|
|
062131554f | ||
|
|
3d043976f7 | ||
|
|
93da4e83f7 | ||
|
|
43c96eb31f | ||
|
|
7c95f762f2 | ||
|
|
92eb55f246 | ||
|
|
428be27893 | ||
|
|
8d5a37fb3d | ||
|
|
7769a22064 | ||
|
|
d9da126776 | ||
|
|
499d5c3b24 | ||
|
|
7164fd499e | ||
|
|
c10d763d98 | ||
|
|
4ebff8eaa5 | ||
|
|
09bc34f4dc | ||
|
|
4414825e0d | ||
|
|
50c2702ba5 | ||
|
|
9dda022705 | ||
|
|
b3338ccb01 | ||
|
|
40bb0cbf7a | ||
|
|
26d20ebcfc | ||
|
|
824f71d503 | ||
|
|
445227c807 | ||
|
|
699aa35df6 | ||
|
|
570722a0fe | ||
|
|
0bc66bf22c | ||
|
|
896dfa0577 | ||
|
|
e47029199e | ||
|
|
8326c1c279 | ||
|
|
979a6a6459 | ||
|
|
07f8da36d2 | ||
|
|
dce665a083 | ||
|
|
7b09ab6bda | ||
|
|
5bdb4bbc5e | ||
|
|
634b7fa7d4 | ||
|
|
772275ab0c | ||
|
|
11e28f389e | ||
|
|
21217d53df | ||
|
|
da8e946efb | ||
|
|
dde8bb7c8b | ||
|
|
83263076dc | ||
|
|
ec61b07836 | ||
|
|
57a51fd5db | ||
|
|
fc89de6d8b | ||
|
|
6c9b5ab8e8 | ||
|
|
92011e3d8c | ||
|
|
7864b133a8 | ||
|
|
0b6b7c9c7e | ||
|
|
f17a3c2474 | ||
|
|
5a72b6818e | ||
|
|
4cc5444144 | ||
|
|
51bc50214a | ||
|
|
748bf32388 | ||
|
|
5426fc1735 | ||
|
|
87d8223251 | ||
|
|
b378deaf89 | ||
|
|
f4b76b1ee7 | ||
|
|
e94f79ccea | ||
|
|
d91710e9aa | ||
|
|
761df686bd | ||
|
|
897bc2ac1f | ||
|
|
1c107b3949 | ||
|
|
5b270417ed | ||
|
|
2f55870edb | ||
|
|
f7dacd1f50 | ||
|
|
28d72f48f1 | ||
|
|
76a610cf81 | ||
|
|
8d1d9040b6 | ||
|
|
a17ffe1ece | ||
|
|
731c8e6372 | ||
|
|
abb6b8ad54 | ||
|
|
c2eff60d3f | ||
|
|
1419126721 | ||
|
|
a453be7357 | ||
|
|
1d615e0a67 | ||
|
|
707707d71a | ||
|
|
e556ab1dff | ||
|
|
a27b08e6af | ||
|
|
dac29e0f75 | ||
|
|
9128d9ab45 | ||
|
|
6bb05c4543 | ||
|
|
b7dc4d9973 | ||
|
|
c9e3caf928 | ||
|
|
4134a6b526 | ||
|
|
36cc03a9b4 | ||
|
|
2a41f0ff84 | ||
|
|
e6d10f6ddd | ||
|
|
97e13a30ba | ||
|
|
45c74406cf | ||
|
|
e1c5a43247 | ||
|
|
efc198f952 | ||
|
|
7f0945d2b1 | ||
|
|
4406fba994 | ||
|
|
19b62c14f0 | ||
|
|
d28f5d8a78 | ||
|
|
5d5ff36446 | ||
|
|
b88957e0d4 | ||
|
|
dd071a4a65 | ||
|
|
8db1197c9b | ||
|
|
82e662fc69 | ||
|
|
2c2b991b59 | ||
|
|
0dd0033b33 | ||
|
|
ba0bd33c38 | ||
|
|
04b07a6ecc | ||
|
|
eb8af486d2 | ||
|
|
bfe7fbe5c0 | ||
|
|
6411d65c48 | ||
|
|
46752588b9 | ||
|
|
5938dae200 | ||
|
|
c5e0f08e35 | ||
|
|
1e2ccca063 | ||
|
|
e4937b0285 | ||
|
|
1aab9906e6 | ||
|
|
663ff7f92a | ||
|
|
9f295581f0 | ||
|
|
c34d7a29a6 | ||
|
|
862def2ef4 | ||
|
|
6a5d3b580d | ||
|
|
d336e413aa | ||
|
|
789b2928a8 | ||
|
|
fc7d7f87b4 | ||
|
|
0282452cea | ||
|
|
9a305a467b | ||
|
|
90ccac4bcf | ||
|
|
fff50d3958 | ||
|
|
2130f10de8 | ||
|
|
ebda4663c3 | ||
|
|
e2c3695e11 | ||
|
|
911079104e | ||
|
|
65a0212866 | ||
|
|
147d9d76fc | ||
|
|
9118e135f9 | ||
|
|
4288c4fb4f | ||
|
|
1919cb0d1e | ||
|
|
e800743268 | ||
|
|
61db0fd102 | ||
|
|
9a9bbfc57c | ||
|
|
a32f7b329c | ||
|
|
ac33a378c0 | ||
|
|
445865ea03 | ||
|
|
4296a8b74e | ||
|
|
4a96433b7e | ||
|
|
8d69394ae1 | ||
|
|
c74d4dede6 | ||
|
|
155aa62fb0 | ||
|
|
a5fa586642 | ||
|
|
4ecd41ef90 | ||
|
|
1b41e1f645 | ||
|
|
65bd4c8c94 | ||
|
|
7ed0761e09 | ||
|
|
9657e7d3ee | ||
|
|
8206bb9bb9 | ||
|
|
df91346188 | ||
|
|
6354b40231 | ||
|
|
7236109f2a |
293
.circleci/config.yml
Normal file
293
.circleci/config.yml
Normal file
@@ -0,0 +1,293 @@
|
||||
# Python CircleCI 2.0 configuration file
|
||||
#
|
||||
# Check https://circleci.com/docs/2.0/language-python/ for more details
|
||||
#
|
||||
version: 2
|
||||
jobs:
|
||||
build:
|
||||
docker:
|
||||
# specify the version you desire here
|
||||
# use `-browsers` prefix for selenium tests, e.g. `3.6.1-browsers`
|
||||
- image: circleci/python:2.7.13
|
||||
|
||||
# Specify service dependencies here if necessary
|
||||
# CircleCI maintains a library of pre-built images
|
||||
# documented at https://circleci.com/docs/2.0/circleci-images/
|
||||
# - image: circleci/postgres:9.4
|
||||
environment:
|
||||
TEST_PLATFORM: "-e megaatmega2560"
|
||||
|
||||
working_directory: ~/Marlin
|
||||
|
||||
steps:
|
||||
- checkout
|
||||
|
||||
- restore_cache:
|
||||
paths:
|
||||
- ~/.platformio
|
||||
- ~/Marlin/.piolibdeps
|
||||
keys:
|
||||
- v1-dependencies-{{ checksum "~/Marlin/platformio.ini" }}
|
||||
# fallback to using the latest cache if no exact match is found
|
||||
- v1-dependencies-
|
||||
|
||||
- run:
|
||||
name: install dependencies
|
||||
command: |
|
||||
sudo pip install -U platformio
|
||||
|
||||
# run tests!
|
||||
- run:
|
||||
name: run tests
|
||||
command: |
|
||||
#
|
||||
#
|
||||
# Fetch the tag information for the current branch
|
||||
ls -la
|
||||
git fetch origin --tags
|
||||
#
|
||||
# Publish the buildroot script folder
|
||||
chmod +x buildroot/bin/*
|
||||
export PATH=`pwd`/buildroot/bin/:${PATH}
|
||||
|
||||
# Generate custom version include
|
||||
generate_version ./Marlin/src/inc
|
||||
cat ./Marlin/src/inc/_Version.h
|
||||
#
|
||||
# Backup pins_RAMPS.h
|
||||
#
|
||||
cp Marlin/src/pins/pins_RAMPS.h Marlin/src/pins/pins_RAMPS.h.backup
|
||||
#
|
||||
|
||||
env_backup
|
||||
|
||||
#################################
|
||||
# Build all sample configurations
|
||||
#################################
|
||||
|
||||
echo testing megaatmega2560 targets...
|
||||
export TEST_PLATFORM="-e megaatmega2560"
|
||||
restore_configs
|
||||
echo use_example_configs adafruit/ST7565
|
||||
use_example_configs adafruit/ST7565
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs BQ/Hephestos
|
||||
use_example_configs BQ/Hephestos
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs BQ/Hephestos_2
|
||||
use_example_configs BQ/Hephestos_2
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs BQ/WITBOX
|
||||
use_example_configs BQ/WITBOX
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs AliExpress/CL-260
|
||||
use_example_configs AliExpress/CL-260
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Cartesio
|
||||
use_example_configs Cartesio
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs delta/FLSUN/auto_calibrate
|
||||
use_example_configs delta/FLSUN/auto_calibrate
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs delta/FLSUN/kossel_mini
|
||||
use_example_configs delta/FLSUN/kossel_mini
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs delta/generic
|
||||
use_example_configs delta/generic
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs delta/kossel_mini
|
||||
use_example_configs delta/kossel_mini
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs delta/kossel_xl
|
||||
use_example_configs delta/kossel_xl
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Felix
|
||||
use_example_configs Felix
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Felix/DUAL
|
||||
use_example_configs Felix/DUAL
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs gCreate/gMax1.5+
|
||||
use_example_configs gCreate/gMax1.5+
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Geeetech/GT2560
|
||||
use_example_configs Geeetech/GT2560
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Geeetech/I3_Pro_X-GT2560
|
||||
use_example_configs Geeetech/I3_Pro_X-GT2560
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Infitary/i3-M508
|
||||
use_example_configs Infitary/i3-M508
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
#
|
||||
# Disabled due to compile failure on E0_AUTO_FAN_PIN PB8
|
||||
#
|
||||
# use_example_configs Malyan/M200
|
||||
# build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
# restore_configs
|
||||
echo use_example_configs Micromake/C1/basic
|
||||
use_example_configs Micromake/C1/basic
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Micromake/C1/enhanced
|
||||
use_example_configs Micromake/C1/enhanced
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs RepRapWorld/Megatronics
|
||||
use_example_configs RepRapWorld/Megatronics
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs RigidBot
|
||||
use_example_configs RigidBot
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs SCARA
|
||||
use_example_configs SCARA
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Velleman/K8200
|
||||
use_example_configs Velleman/K8200
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Velleman/K8400/Dual-head
|
||||
use_example_configs Velleman/K8400/Dual-head
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Velleman/K8400
|
||||
use_example_configs Velleman/K8400
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Wanhao/Duplicator6
|
||||
use_example_configs Wanhao/Duplicator6
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
#
|
||||
# Disabled due to compile failure on https://github.com/stawel/SlowSoftI2CMaster
|
||||
#
|
||||
# - Requires https://github.com/stawel/SlowSoftI2CMaster
|
||||
# restore_configs
|
||||
# use_example_configs wt150
|
||||
# build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
|
||||
|
||||
echo testing anet10 targets...
|
||||
export TEST_PLATFORM="-e anet10"
|
||||
restore_configs
|
||||
echo use_example_configs Anet/A6
|
||||
use_example_configs Anet/A6
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Anet/A8
|
||||
use_example_configs Anet/A8
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Creality/CR-10
|
||||
use_example_configs Creality/CR-10
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Malyan/M150
|
||||
use_example_configs Malyan/M150
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Sanguinololu
|
||||
use_example_configs Sanguinololu
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs TinyBoy2
|
||||
use_example_configs TinyBoy2
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
|
||||
|
||||
echo testing rambo targets...
|
||||
export TEST_PLATFORM="-e rambo"
|
||||
restore_configs
|
||||
echo use_example_configs AlephObjects/TAZ4
|
||||
use_example_configs AlephObjects/TAZ4
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
|
||||
|
||||
echo testing teensy20 targets...
|
||||
export TEST_PLATFORM="-e teensy20"
|
||||
#
|
||||
# Disabled due to Z_MIN_PIN related compile failure
|
||||
#
|
||||
# restore_configs
|
||||
# use_example_configs delta/kossel_pro
|
||||
# build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs makibox
|
||||
use_example_configs makibox
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
|
||||
|
||||
echo testing sanguino_atmega644p targets...
|
||||
export TEST_PLATFORM="-e sanguino_atmega644p"
|
||||
restore_configs
|
||||
echo use_example_configs tvrrug/Round2
|
||||
use_example_configs tvrrug/Round2
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
|
||||
|
||||
echo testing LPC1768 targets...
|
||||
export TEST_PLATFORM="-e LPC1768"
|
||||
restore_configs
|
||||
echo use_example_configs FolgerTech/i3-2020
|
||||
use_example_configs FolgerTech/i3-2020
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
restore_configs
|
||||
echo use_example_configs Mks/Sbase
|
||||
use_example_configs Mks/Sbase
|
||||
build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
|
||||
#
|
||||
# Disabled due to numerous compile failures
|
||||
#
|
||||
# echo testing STM32F1 targets...
|
||||
# export TEST_PLATFORM="-e STM32F1"
|
||||
# restore_configs
|
||||
# use_example_configs STM32F10
|
||||
# build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
# restore_configs
|
||||
# use_example_configs stm32f103ret6
|
||||
# build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
|
||||
|
||||
#
|
||||
# Disabled due do pin related compile failures
|
||||
#
|
||||
# echo testing DUE targets...
|
||||
# export TEST_PLATFORM="-e DUE"
|
||||
# restore_configs
|
||||
# use_example_configs UltiMachine/Archim2
|
||||
# build_marlin_pio ./ ${TEST_PLATFORM}
|
||||
|
||||
#
|
||||
# Remove temp files from dependencies tree prior to caching
|
||||
rm -rf ~/Marlin/.piolibdeps/_tmp_*
|
||||
|
||||
#
|
||||
# Restore the environment
|
||||
#
|
||||
env_restore
|
||||
|
||||
- save_cache:
|
||||
paths:
|
||||
- ~/.platformio
|
||||
- ~/Marlin/.piolibdeps
|
||||
key: v1-dependencies-{{ checksum "~/Marlin/platformio.ini" }}
|
||||
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -17,4 +17,3 @@
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
*.fon binary
|
||||
|
||||
|
||||
46
.github/code_of_conduct.md
vendored
Normal file
46
.github/code_of_conduct.md
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [marlinfirmware@github.com](mailto:marlinfirmware@github.com). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version]
|
||||
|
||||
[homepage]: https://contributor-covenant.org
|
||||
[version]: https://contributor-covenant.org/version/1/4/
|
||||
144
.github/contributing.md
vendored
Normal file
144
.github/contributing.md
vendored
Normal file
@@ -0,0 +1,144 @@
|
||||
# Contributing to Marlin
|
||||
|
||||
Thanks for your interest in contributing to Marlin Firmware!
|
||||
|
||||
The following is a set of guidelines for contributing to Marlin, hosted by the [MarlinFirmware Organization](https://github.com/MarlinFirmware) on GitHub. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a Pull Request.
|
||||
|
||||
#### Table Of Contents
|
||||
|
||||
[Code of Conduct](#code-of-conduct)
|
||||
|
||||
[I don't want to read this whole thing, I just have a question!!!](#i-dont-want-to-read-this-whole-thing-i-just-have-a-question)
|
||||
|
||||
[How Can I Contribute?](#how-can-i-contribute)
|
||||
* [Reporting Bugs](#reporting-bugs)
|
||||
* [Suggesting Features or Changes](#suggesting-features-or-changes)
|
||||
* [Your First Code Contribution](#your-first-code-contribution)
|
||||
* [Pull Requests](#pull-requests)
|
||||
|
||||
[Styleguides](#styleguides)
|
||||
* [Git Commit Messages](#git-commit-messages)
|
||||
* [C++ Coding Standards](#c++-coding-standards)
|
||||
* [Documentation Styleguide](#documentation)
|
||||
|
||||
[Additional Notes](#additional-notes)
|
||||
* [Issue and Pull Request Labels](#issue-and-pull-request-labels)
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
This project and everyone participating in it is governed by the [Marlin Code of Conduct](code_of_conduct.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [marlinfirmware@github.com](mailto:marlinfirmware@github.com).
|
||||
|
||||
## I don't want to read this whole thing I just have a question!!!
|
||||
|
||||
> **Note:** Please don't file an issue to ask a question. You'll get faster results by using the resources below.
|
||||
|
||||
We have a Message Board and a Facebook group where our knowledgable user community can provide helpful advice if you have questions.
|
||||
|
||||
* [Marlin RepRap forum](http://forums.reprap.org/list.php?415)
|
||||
* [MarlinFirmware on Facebook](https://www.facebook.com/groups/1049718498464482/)
|
||||
|
||||
If chat is more your speed, you can join the MarlinFirmware Slack team:
|
||||
|
||||
* Join the Marlin Slack Team
|
||||
* To obtain group access, please [send a request](http://www.thinkyhead.com/contact/9) to @thinkyhead.
|
||||
* Even though Slack is a chat service, sometimes it takes several hours for community members to respond — please be patient!
|
||||
* Use the `#general` channel for general questions or discussion about Marlin.
|
||||
* Other channels exist for certain topics. Check the channel list.
|
||||
|
||||
## How Can I Contribute?
|
||||
|
||||
### Reporting Bugs
|
||||
|
||||
This section guides you through submitting a Bug Report for Marlin. Following these guidelines helps maintainers and the community understand your report, reproduce the behavior, and find related reports.
|
||||
|
||||
Before creating a Bug Report, please test the "nightly" development branch, as you might find out that you don't need to create one. When you are creating a Bug Report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out [the required template](issue_template.md), the information it asks for helps us resolve issues faster.
|
||||
|
||||
> **Note:** Regressions can happen. If you find a **Closed** issue that seems like your issue, go ahead and open a new issue and include a link to the original issue in the body of your new one. All you need to create a link is the issue number, preceded by #. For example, #8888.
|
||||
|
||||
#### How Do I Submit A (Good) Bug Report?
|
||||
|
||||
Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). Use the New Issue button to create an issue and provide the following information by filling in [the template](issue_template.md).
|
||||
|
||||
Explain the problem and include additional details to help maintainers reproduce the problem:
|
||||
|
||||
* **Use a clear and descriptive title** for the issue to identify the problem.
|
||||
* **Describe the exact steps which reproduce the problem** in as many details as possible. For example, start by explaining how you started Marlin, e.g. which command exactly you used in the terminal, or how you started Marlin otherwise. When listing steps, **don't just say what you did, but explain how you did it**. For example, if you moved the cursor to the end of a line, explain if you used the mouse, or a keyboard shortcut or an Marlin command, and if so which one?
|
||||
* **Provide specific examples to demonstrate the steps**. Include links to files or GitHub projects, or copy/pasteable snippets, which you use in those examples. If you're providing snippets or log output in the issue, use [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines).
|
||||
* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior.
|
||||
* **Explain which behavior you expected to see instead and why.**
|
||||
* **Include detailed log output** especially for probing and leveling. See below for usage of `DEBUG_LEVELING_FEATURE`.
|
||||
* **Include screenshots, links to videos, etc.** which clearly demonstrate the problem.
|
||||
* **Include G-code** (if relevant) that reliably causes the problem to show itself.
|
||||
* **If the problem wasn't triggered by a specific action**, describe what you were doing before the problem happened and share more information using the guidelines below.
|
||||
|
||||
Provide more context:
|
||||
|
||||
* **Can you reproduce the problem with a minimum of options enabled?**
|
||||
* **Did the problem start happening recently** (e.g. after updating to a new version of Marlin) or was this always a problem?
|
||||
* If the problem started happening recently, **can you reproduce the problem in an older version of Marlin?** What's the most recent version in which the problem doesn't happen? You can download older versions of Marlin from [the releases page](https://github.com/MarlinFirmware/Marlin/releases).
|
||||
* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens.
|
||||
|
||||
Include details about your configuration and environment:
|
||||
|
||||
* **Which version of Marlin are you using?** Marlin's exact version and build date can be seen in the startup message when a host connects to Marlin, or in the LCD Info menu (if enabled).
|
||||
* **What kind of 3D Printer and electronics are you using**?
|
||||
* **What kind of add-ons (probe, filament sensor) do you have**?
|
||||
* **Include your Configuration files.** Make a ZIP file containing `Configuration.h` and `Configuration_adv.h` and drop it on your reply.
|
||||
|
||||
### Suggesting Features or Changes
|
||||
|
||||
This section guides you through submitting a suggestion for Marlin, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion and find related suggestions.
|
||||
|
||||
Before creating a suggestion, please check [this list](#before-submitting-a-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in [the template](issue_template.md), including the steps that you imagine you would take if the feature you're requesting existed.
|
||||
|
||||
#### Before Submitting a Feature Request
|
||||
|
||||
* **Check the [Marlin website](http://marlinfw.org/)** for tips — you might discover that the feature is already included. Most importantly, check if you're using [the latest version of Marlin](https://github.com/MarlinFirmware/Marlin/releases) and if you can get the desired behavior by changing [Marlin's config settings](http://marlinfw.org/docs/configuration/configuration.html).
|
||||
* **Perform a [cursory search](https://github.com/MarlinFirmware/Marlin/issues?q=is%3Aissue)** to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.
|
||||
|
||||
#### How Do I Submit A (Good) Feature Request?
|
||||
|
||||
Feature Requests are tracked as [GitHub issues](https://guides.github.com/features/issues/). Please follow these guidelines in your request:
|
||||
|
||||
* **Use a clear and descriptive title** for the issue to identify the suggestion.
|
||||
* **Provide a step-by-step description of the requested feature** in as much detail as possible.
|
||||
* **Provide specific examples to demonstrate the steps**.
|
||||
* **Describe the current behavior** and **explain which behavior you expected to see instead** and why.
|
||||
* **Include screenshots and links to videos** which demonstrate the feature or point out the part of Marlin to which the request is related.
|
||||
* **Explain why this feature would be useful** to most Marlin users.
|
||||
* **Name other firmwares that have this feature, if any.**
|
||||
|
||||
### Your First Code Contribution
|
||||
|
||||
Unsure where to begin contributing to Marlin? You can start by looking through these `good-first-issue` and `help-wanted` issues:
|
||||
|
||||
* [Beginner issues][good-first-issue] - issues which should only require a few lines of code, and a test or two.
|
||||
* [Help Wanted issues][help-wanted] - issues which should be a bit more involved than `beginner` issues.
|
||||
|
||||
### Pull Requests
|
||||
|
||||
Pull Requests should always be targeted to working branches (e.g., `bugfix-1.1.x` and/or `bugfix-2.0.x`) and never to release branches (e.g., `1.1.x`). If this is your first Pull Request, please read our [Guide to Pull Requests](http://marlinfw.org/docs/development/getting_started_pull_requests.html) and Github's [Pull Request](https://help.github.com/articles/creating-a-pull-request/) documentation.
|
||||
|
||||
* Fill in [the required template](pull_request_template.md).
|
||||
* Don't include issue numbers in the PR title.
|
||||
* Include pictures, diagrams, and links to videos in your Pull Request to demonstrate your changes, if needed.
|
||||
* Follow the [Coding Standards](http://marlinfw.org/docs/development/coding_standards.html) posted on our website.
|
||||
* Document new code with clear and concise comments.
|
||||
* End all files with a newline.
|
||||
|
||||
## Styleguides
|
||||
|
||||
### Git Commit Messages
|
||||
|
||||
* Use the present tense ("Add feature" not "Added feature").
|
||||
* Use the imperative mood ("Move cursor to..." not "Moves cursor to...").
|
||||
* Limit the first line to 72 characters or fewer.
|
||||
* Reference issues and Pull Requests liberally after the first line.
|
||||
|
||||
### C++ Coding Standards
|
||||
|
||||
* Please read and follow the [Coding Standards](http://marlinfw.org/docs/development/coding_standards.html) posted on our website. Failure to follow these guidelines will delay evaluation and acceptance of Pull Requests.
|
||||
|
||||
### Documentation
|
||||
|
||||
* Guidelines for documentation are still under development. In-general, be clear, concise, and to-the-point.
|
||||
31
.github/issue_template.md
vendored
Normal file
31
.github/issue_template.md
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
<!--
|
||||
|
||||
Have you read Marlin's Code of Conduct? By filing an Issue, you are expected to comply with it, including treating everyone with respect: https://github.com/MarlinFirmware/Marlin/blob/master/.github/code_of_conduct.md
|
||||
|
||||
Do you want to ask a question? Are you looking for support? Please don't post here. Instead please use the Marlin Firmware forum at http://forums.reprap.org/list.php?415 or the Marlin Facebook Group https://www.facebook.com/groups/1049718498464482/.
|
||||
|
||||
Before filing an issue be sure to test the 1.1 and/or 2.0 "bugfix" branches to see whether the issue is already addressed.
|
||||
|
||||
-->
|
||||
|
||||
### Description
|
||||
|
||||
<!-- Description of the bug or requested feature -->
|
||||
|
||||
### Steps to Reproduce
|
||||
|
||||
<!-- If this is a Bug Report, please describe the steps needed to reproduce the issue -->
|
||||
|
||||
1. [First Step]
|
||||
2. [Second Step]
|
||||
3. [and so on...]
|
||||
|
||||
**Expected behavior:** [What you expect to happen]
|
||||
|
||||
**Actual behavior:** [What actually happens]
|
||||
|
||||
#### Additional Information
|
||||
|
||||
* Include a ZIP file containing your `Configuration.h` and `Configuration_adv.h` files.
|
||||
* Provide pictures or links to videos that clearly demonstrate the issue.
|
||||
* See [How Can I Contribute](#how-can-i-contribute) for additional guidelines.
|
||||
19
.github/pull_request_template.md
vendored
Normal file
19
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
### Requirements
|
||||
|
||||
* Filling out this template is required. Pull Requests without a clear description may be closed at the maintainers' discretion.
|
||||
|
||||
### Description
|
||||
|
||||
<!--
|
||||
|
||||
We must be able to understand your proposed change from this description. If we can't understand what the code will do from this description, the Pull Request may be closed at the maintainers' discretion. Keep in mind that the maintainer reviewing this PR may not be familiar with or have worked with the code recently, so please walk us through the concepts.
|
||||
|
||||
-->
|
||||
|
||||
### Benefits
|
||||
|
||||
<!-- What does this fix or improve? -->
|
||||
|
||||
### Related Issues
|
||||
|
||||
<!-- Whether this fixes a bug or fulfills a feature request, please list any related Issues here. -->
|
||||
49
.gitignore
vendored
49
.gitignore
vendored
@@ -29,7 +29,6 @@ _Version.h
|
||||
applet/
|
||||
*.DS_Store
|
||||
|
||||
|
||||
#
|
||||
# Misc
|
||||
#
|
||||
@@ -118,20 +117,56 @@ tags
|
||||
|
||||
# PlatformIO files/dirs
|
||||
.pio*
|
||||
lib/readme.txt
|
||||
.pioenvs
|
||||
.piolibdeps
|
||||
.clang_complete
|
||||
.gcc-flags.json
|
||||
/lib/
|
||||
|
||||
# Workaround for Deviot+platformio quirks
|
||||
Marlin/lib
|
||||
Marlin/platformio.ini
|
||||
Marlin/*/platformio.ini
|
||||
Marlin/*/*/platformio.ini
|
||||
Marlin/*/*/*/platformio.ini
|
||||
Marlin/*/*/*/*/platformio.ini
|
||||
Marlin/.travis.yml
|
||||
Marlin/*/.travis.yml
|
||||
Marlin/*/*/.travis.yml
|
||||
Marlin/*/*/*/.travis.yml
|
||||
Marlin/*/*/*/*/.travis.yml
|
||||
Marlin/.gitignore
|
||||
Marlin/*/.gitignore
|
||||
Marlin/*/*/.gitignore
|
||||
Marlin/*/*/*/.gitignore
|
||||
Marlin/*/*/*/*/.gitignore
|
||||
Marlin/readme.txt
|
||||
Marlin/*/readme.txt
|
||||
Marlin/*/*/readme.txt
|
||||
Marlin/*/*/*/readme.txt
|
||||
Marlin/*/*/*/*/readme.txt
|
||||
|
||||
#Visual Studio
|
||||
*.sln
|
||||
*.vcxproj
|
||||
*.vcxproj.user
|
||||
*.vcxproj.filters
|
||||
Marlin/Release/
|
||||
Marlin/Debug/
|
||||
Marlin/__vm/
|
||||
Marlin/.vs/
|
||||
Release/
|
||||
Debug/
|
||||
__vm/
|
||||
.vs/
|
||||
vc-fileutils.settings
|
||||
|
||||
#Visual Studio Code
|
||||
.vscode
|
||||
.vscode/.browse.c_cpp.db*
|
||||
.vscode/c_cpp_properties.json
|
||||
.vscode/launch.json
|
||||
.vscode/*.db
|
||||
|
||||
#cmake
|
||||
CMakeLists.txt
|
||||
Marlin/CMakeLists.txt
|
||||
src/CMakeLists.txt
|
||||
CMakeListsPrivate.txt
|
||||
|
||||
#CLion
|
||||
|
||||
441
.travis.yml
441
.travis.yml
@@ -1,9 +1,27 @@
|
||||
---
|
||||
language: c
|
||||
#
|
||||
dist: trusty
|
||||
sudo: false
|
||||
|
||||
language: python
|
||||
python:
|
||||
- "2.7"
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
#
|
||||
|
||||
# Cache PlatformIO packages using Travis CI container-based infrastructure
|
||||
sudo: false
|
||||
cache:
|
||||
pip: true
|
||||
directories:
|
||||
- "~/.platformio"
|
||||
|
||||
env:
|
||||
- TEST_PLATFORM="megaatmega2560"
|
||||
- TEST_PLATFORM="LPC1768"
|
||||
- TEST_PLATFORM="DUE"
|
||||
- TEST_PLATFORM="STM32F1"
|
||||
- TEST_PLATFORM="teensy35"
|
||||
|
||||
before_install:
|
||||
#
|
||||
# Fetch the tag information for the current branch
|
||||
@@ -11,415 +29,24 @@ before_install:
|
||||
#
|
||||
# Publish the buildroot script folder
|
||||
- chmod +x ${TRAVIS_BUILD_DIR}/buildroot/bin/*
|
||||
- ln -s ${TRAVIS_BUILD_DIR}/buildroot/bin/ ~/bin
|
||||
#
|
||||
# Start fb X server
|
||||
- "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_1.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :1 -ac -screen 0 1280x1024x16"
|
||||
- sleep 3
|
||||
- export DISPLAY=:1.0
|
||||
#
|
||||
- export PATH=${TRAVIS_BUILD_DIR}/buildroot/bin/:${PATH}
|
||||
- chmod +x ${TRAVIS_BUILD_DIR}/buildroot/share/tests/*
|
||||
- export PATH=${TRAVIS_BUILD_DIR}/buildroot/share/tests/:${PATH}
|
||||
|
||||
install:
|
||||
#
|
||||
# Install arduino 1.6.10
|
||||
- wget http://downloads-02.arduino.cc/arduino-1.6.10-linux64.tar.xz
|
||||
- tar xf arduino-1.6.10-linux64.tar.xz
|
||||
- sudo mv arduino-1.6.10 /usr/local/share/arduino
|
||||
- ln -s /usr/local/share/arduino/arduino ${TRAVIS_BUILD_DIR}/buildroot/bin/arduino
|
||||
#
|
||||
# Install: LiquidCrystal_I2C library
|
||||
- git clone https://github.com/kiyoshigawa/LiquidCrystal_I2C.git
|
||||
- mv LiquidCrystal_I2C/LiquidCrystal_I2C /usr/local/share/arduino/libraries/LiquidCrystal_I2C
|
||||
#
|
||||
# Install: LiquidTWI2 library
|
||||
- git clone https://github.com/lincomatic/LiquidTWI2.git
|
||||
- sudo mv LiquidTWI2 /usr/local/share/arduino/libraries/LiquidTWI2
|
||||
#
|
||||
# Install: Monochrome Graphics Library for LCDs and OLEDs
|
||||
- git clone https://github.com/olikraus/U8glib_Arduino.git
|
||||
- sudo mv U8glib_Arduino /usr/local/share/arduino/libraries/U8glib
|
||||
#
|
||||
# Install: L6470 Stepper Motor Driver library
|
||||
# - git clone https://github.com/ameyer/Arduino-L6470.git
|
||||
# - sudo mv Arduino-L6470/L6470 /usr/local/share/arduino/libraries/L6470
|
||||
#
|
||||
# Install: TMC26X Stepper Motor Controller library
|
||||
# - git clone https://github.com/trinamic/TMC26XStepper.git
|
||||
# - sudo mv TMC26XStepper /usr/local/share/arduino/libraries/TMC26XStepper
|
||||
#
|
||||
# Install: TMC2130 Stepper Motor Controller library
|
||||
- git clone https://github.com/teemuatlut/TMC2130Stepper.git
|
||||
- sudo mv TMC2130Stepper /usr/local/share/arduino/libraries/TMC2130Stepper
|
||||
#
|
||||
#- pip install -U platformio
|
||||
- pip install -U https://github.com/platformio/platformio-core/archive/develop.zip
|
||||
|
||||
before_script:
|
||||
# Update PlatformIO packages
|
||||
- platformio update
|
||||
#
|
||||
# Change current working directory to the build dir
|
||||
- cd ${TRAVIS_BUILD_DIR}
|
||||
#
|
||||
# Generate custom version include
|
||||
- generate_version_header_for_marlin ${TRAVIS_BUILD_DIR}/Marlin
|
||||
- cat ${TRAVIS_BUILD_DIR}/Marlin/_Version.h
|
||||
- generate_version ${TRAVIS_BUILD_DIR}/Marlin/src/inc
|
||||
- cat ${TRAVIS_BUILD_DIR}/Marlin/src/inc/_Version.h
|
||||
#
|
||||
script:
|
||||
#
|
||||
# Backup Configuration.h, Configuration_adv.h, and pins_RAMPS.h
|
||||
#
|
||||
- cp Marlin/Configuration.h Marlin/Configuration.h.backup
|
||||
- cp Marlin/Configuration_adv.h Marlin/Configuration_adv.h.backup
|
||||
- cp Marlin/pins_RAMPS.h Marlin/pins_RAMPS.h.backup
|
||||
#
|
||||
# Build with the default configurations
|
||||
#
|
||||
- build_marlin
|
||||
#
|
||||
# Test heated bed temperature sensor
|
||||
#
|
||||
- opt_set TEMP_SENSOR_BED 1
|
||||
- build_marlin
|
||||
#
|
||||
# Test 2 extruders on basic RAMPS 1.4
|
||||
#
|
||||
- opt_set MOTHERBOARD BOARD_RAMPS_14_EEB
|
||||
- opt_set EXTRUDERS 2
|
||||
- opt_set TEMP_SENSOR_1 1
|
||||
- build_marlin
|
||||
#
|
||||
# Test 5 extruders on AZTEEG_X3_PRO (can use any board with >=5 extruders defined)
|
||||
# Include a test for LIN_ADVANCE here also
|
||||
#
|
||||
- opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
|
||||
- opt_set EXTRUDERS 5
|
||||
- opt_set TEMP_SENSOR_1 1
|
||||
- opt_set TEMP_SENSOR_2 5
|
||||
- opt_set TEMP_SENSOR_3 20
|
||||
- opt_set TEMP_SENSOR_4 999
|
||||
- opt_set TEMP_SENSOR_BED 1
|
||||
- opt_enable_adv LIN_ADVANCE
|
||||
- build_marlin
|
||||
#
|
||||
# Test PIDTEMPBED
|
||||
#
|
||||
- restore_configs
|
||||
- opt_set TEMP_SENSOR_BED 1
|
||||
- opt_enable PIDTEMPBED
|
||||
- build_marlin
|
||||
#
|
||||
# Test MAX6675
|
||||
#
|
||||
- restore_configs
|
||||
- opt_set TEMP_SENSOR_0 -2
|
||||
- build_marlin
|
||||
#
|
||||
# Test a "Fix Mounted" Probe along with Safe Homing
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable FIX_MOUNTED_PROBE Z_SAFE_HOMING
|
||||
- build_marlin
|
||||
#
|
||||
# ...with AUTO_BED_LEVELING_LINEAR, Z_MIN_PROBE_REPEATABILITY_TEST, and DEBUG_LEVELING_FEATURE
|
||||
#
|
||||
- opt_enable AUTO_BED_LEVELING_LINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE
|
||||
- opt_set ABL_GRID_POINTS_X 16
|
||||
- opt_set ABL_GRID_POINTS_Y 16
|
||||
- build_marlin
|
||||
#
|
||||
# Test a simple build of AUTO_BED_LEVELING_UBL
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable AUTO_BED_LEVELING_UBL UBL_G26_MESH_EDITING ENABLE_LEVELING_FADE_HEIGHT FIX_MOUNTED_PROBE EEPROM_SETTINGS G3D_PANEL
|
||||
- opt_enable_adv CUSTOM_USER_MENUS
|
||||
- build_marlin
|
||||
#
|
||||
# Test a Sled Z Probe
|
||||
# ...with AUTO_BED_LEVELING_LINEAR, DEBUG_LEVELING_FEATURE, EEPROM_SETTINGS, and EEPROM_CHITCHAT
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable Z_PROBE_SLED AUTO_BED_LEVELING_LINEAR DEBUG_LEVELING_FEATURE EEPROM_SETTINGS EEPROM_CHITCHAT
|
||||
- build_marlin
|
||||
#
|
||||
# Test a Servo Probe
|
||||
# ...with AUTO_BED_LEVELING_3POINT, DEBUG_LEVELING_FEATURE, EEPROM_SETTINGS, EEPROM_CHITCHAT, EXTENDED_CAPABILITIES_REPORT, and AUTO_REPORT_TEMPERATURES
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable NUM_SERVOS Z_ENDSTOP_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
- opt_enable AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS EEPROM_CHITCHAT
|
||||
- opt_enable_adv EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP
|
||||
- build_marlin
|
||||
#
|
||||
# Test MESH_BED_LEVELING feature, with LCD
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable MESH_BED_LEVELING MESH_G28_REST_ORIGIN LCD_BED_LEVELING ULTIMAKERCONTROLLER
|
||||
- build_marlin
|
||||
#
|
||||
# Test PROBE_MANUALLY feature, with LCD support
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable PROBE_MANUALLY AUTO_BED_LEVELING_BILINEAR LCD_BED_LEVELING ULTIMAKERCONTROLLER
|
||||
- build_marlin
|
||||
#
|
||||
# Test EEPROM_SETTINGS, EEPROM_CHITCHAT, M100_FREE_MEMORY_WATCHER,
|
||||
# INCH_MODE_SUPPORT, TEMPERATURE_UNITS_SUPPORT
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT M100_FREE_MEMORY_WATCHER M100_FREE_MEMORY_DUMPER M100_FREE_MEMORY_CORRUPTOR INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT
|
||||
- build_marlin
|
||||
#
|
||||
# Mixing Extruder with 5 steppers
|
||||
#
|
||||
- restore_configs
|
||||
- opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
|
||||
- opt_enable MIXING_EXTRUDER
|
||||
- opt_set MIXING_STEPPERS 5
|
||||
- build_marlin
|
||||
#
|
||||
# Test DUAL_X_CARRIAGE
|
||||
#
|
||||
- restore_configs
|
||||
- opt_set MOTHERBOARD BOARD_RUMBA
|
||||
- opt_set EXTRUDERS 2
|
||||
- opt_set TEMP_SENSOR_1 1
|
||||
- opt_enable USE_XMAX_PLUG
|
||||
- opt_enable_adv DUAL_X_CARRIAGE
|
||||
- build_marlin
|
||||
#
|
||||
# Test SPEAKER with BOARD_BQ_ZUM_MEGA_3D and BQ_LCD_SMART_CONTROLLER
|
||||
#
|
||||
- restore_configs
|
||||
- opt_set MOTHERBOARD BOARD_BQ_ZUM_MEGA_3D
|
||||
- opt_set LCD_FEEDBACK_FREQUENCY_DURATION_MS 10
|
||||
- opt_set LCD_FEEDBACK_FREQUENCY_HZ 100
|
||||
- opt_enable BQ_LCD_SMART_CONTROLLER SPEAKER
|
||||
#
|
||||
# Test SWITCHING_EXTRUDER
|
||||
#
|
||||
- restore_configs
|
||||
- opt_set MOTHERBOARD BOARD_RUMBA
|
||||
- opt_set EXTRUDERS 2
|
||||
- opt_enable NUM_SERVOS
|
||||
- opt_set NUM_SERVOS 1
|
||||
- opt_set TEMP_SENSOR_1 1
|
||||
- opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER
|
||||
- build_marlin
|
||||
#
|
||||
# Test MINIRAMBO for PWM_MOTOR_CURRENT
|
||||
#
|
||||
- restore_configs
|
||||
- opt_set MOTHERBOARD BOARD_MINIRAMBO
|
||||
- build_marlin
|
||||
#
|
||||
# Test FILAMENT_CHANGE_FEATURE, PARK_HEAD_ON_PAUSE, and LCD_INFO_MENU
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable ULTIMAKERCONTROLLER
|
||||
- opt_enable_adv FILAMENT_CHANGE_FEATURE PARK_HEAD_ON_PAUSE LCD_INFO_MENU
|
||||
- build_marlin
|
||||
#
|
||||
# Enable filament sensor
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable FILAMENT_WIDTH_SENSOR
|
||||
- build_marlin
|
||||
#
|
||||
# Enable filament sensor with LCD display
|
||||
#
|
||||
- opt_enable ULTIMAKERCONTROLLER FILAMENT_LCD_DISPLAY
|
||||
- build_marlin
|
||||
#
|
||||
# Enable BEZIER_CURVE_SUPPORT, EXPERIMENTAL_I2CBUS, and I2C_SLAVE_ADDRESS
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable_adv BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS
|
||||
- opt_set_adv I2C_SLAVE_ADDRESS 63
|
||||
- build_marlin
|
||||
#
|
||||
# Enable COREXY
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable COREXY
|
||||
- build_marlin
|
||||
#
|
||||
# Enable COREYX (swapped)
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable COREYX
|
||||
- build_marlin
|
||||
#
|
||||
# Enable Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable_adv Z_DUAL_STEPPER_DRIVERS Z_DUAL_ENDSTOPS
|
||||
- pins_set RAMPS X_MAX_PIN -1
|
||||
- opt_set_adv Z2_MAX_PIN 2
|
||||
- build_marlin
|
||||
#
|
||||
# Test PRINTCOUNTER
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable PRINTCOUNTER
|
||||
- build_marlin
|
||||
#
|
||||
# Test NOZZLE_PARK_FEATURE
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable NOZZLE_PARK_FEATURE
|
||||
- build_marlin
|
||||
#
|
||||
# Test NOZZLE_CLEAN_FEATURE
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable NOZZLE_CLEAN_FEATURE
|
||||
- build_marlin
|
||||
#
|
||||
#
|
||||
######## STANDARD LCD/PANELS ##############
|
||||
#
|
||||
# ULTRA_LCD
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable ULTRA_LCD
|
||||
- build_marlin
|
||||
#
|
||||
# DOGLCD
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable DOGLCD
|
||||
- build_marlin
|
||||
#
|
||||
# ULTIMAKERCONTROLLER
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable ULTIMAKERCONTROLLER
|
||||
- build_marlin
|
||||
#
|
||||
# MAKRPANEL
|
||||
# Needs to use Melzi and Sanguino hardware
|
||||
#
|
||||
#- restore_configs
|
||||
#- opt_enable MAKRPANEL
|
||||
#- build_marlin
|
||||
#
|
||||
# REPRAP_DISCOUNT_SMART_CONTROLLER, SDSUPPORT, and BABYSTEPPING
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT BABYSTEPPING
|
||||
- build_marlin
|
||||
#
|
||||
# G3D_PANEL
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable G3D_PANEL SDSUPPORT
|
||||
- build_marlin
|
||||
#
|
||||
# Add SDCARD_SORT_ALPHA, test G3D_PANEL again
|
||||
#
|
||||
- opt_enable_adv SDCARD_SORT_ALPHA
|
||||
- opt_set_adv SDSORT_GCODE true
|
||||
- opt_set_adv SDSORT_USES_RAM true
|
||||
- opt_set_adv SDSORT_USES_STACK true
|
||||
- opt_set_adv SDSORT_CACHE_NAMES true
|
||||
- build_marlin
|
||||
#
|
||||
# REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT
|
||||
- build_marlin
|
||||
#
|
||||
# REPRAPWORLD_KEYPAD
|
||||
#
|
||||
# Cant find configuration details to get it to compile
|
||||
#- restore_configs
|
||||
#- opt_enable ULTRA_LCD REPRAPWORLD_KEYPAD REPRAPWORLD_KEYPAD_MOVE_STEP
|
||||
#- build_marlin
|
||||
#
|
||||
# RA_CONTROL_PANEL
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable RA_CONTROL_PANEL PINS_DEBUGGING
|
||||
- build_marlin
|
||||
#
|
||||
######## I2C LCD/PANELS ##############
|
||||
#
|
||||
# !!!ATTENTION!!!
|
||||
# Most I2C configurations are failing at the moment because they require
|
||||
# a different Liquid Crystal library "LiquidTWI2".
|
||||
#
|
||||
# LCD_I2C_SAINSMART_YWROBOT
|
||||
#
|
||||
#- restore_configs
|
||||
#- opt_enable LCD_I2C_SAINSMART_YWROBOT
|
||||
#- build_marlin
|
||||
#
|
||||
# LCD_I2C_PANELOLU2
|
||||
#
|
||||
#- restore_configs
|
||||
#- opt_enable LCD_I2C_PANELOLU2
|
||||
#- build_marlin
|
||||
#
|
||||
# LCD_I2C_VIKI
|
||||
#
|
||||
#- restore_configs
|
||||
#- opt_enable LCD_I2C_VIKI
|
||||
#- build_marlin
|
||||
#
|
||||
# LCM1602
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable LCM1602
|
||||
- build_marlin
|
||||
#
|
||||
#
|
||||
######## Example Configurations ##############
|
||||
#
|
||||
# BQ Hephestos 2
|
||||
- restore_configs
|
||||
- use_example_configs Hephestos_2
|
||||
- build_marlin
|
||||
#
|
||||
# Delta Config (generic) + ABL bilinear + PROBE_MANUALLY
|
||||
- restore_configs
|
||||
- use_example_configs delta/generic
|
||||
- opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER DELTA_CALIBRATION_MENU AUTO_BED_LEVELING_BILINEAR PROBE_MANUALLY
|
||||
- build_marlin
|
||||
#
|
||||
# Delta Config (generic) + UBL + ALLEN_KEY + OLED_PANEL_TINYBOY2 + EEPROM_SETTINGS
|
||||
#
|
||||
- use_example_configs delta/generic
|
||||
- opt_disable DISABLE_MIN_ENDSTOPS
|
||||
- opt_enable AUTO_BED_LEVELING_UBL Z_PROBE_ALLEN_KEY EEPROM_SETTINGS EEPROM_CHITCHAT OLED_PANEL_TINYBOY2
|
||||
- build_marlin
|
||||
#
|
||||
# Delta Config (FLSUN AC because it's complex)
|
||||
#
|
||||
- use_example_configs delta/FLSUN/auto_calibrate
|
||||
- build_marlin
|
||||
#
|
||||
# Makibox Config need to check board type for Teensy++ 2.0
|
||||
#
|
||||
#- use_example_configs makibox
|
||||
#- build_marlin
|
||||
#
|
||||
# SCARA Config
|
||||
#
|
||||
- use_example_configs SCARA
|
||||
- opt_enable AUTO_BED_LEVELING_BILINEAR FIX_MOUNTED_PROBE USE_ZMIN_PLUG EEPROM_SETTINGS EEPROM_CHITCHAT ULTIMAKERCONTROLLER
|
||||
- build_marlin
|
||||
#
|
||||
# TMC2130 Config
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable_adv HAVE_TMC2130 X_IS_TMC2130 Y_IS_TMC2130 Z_IS_TMC2130
|
||||
- build_marlin
|
||||
- opt_enable_adv AUTOMATIC_CURRENT_CONTROL STEALTHCHOP HYBRID_THRESHOLD SENSORLESS_HOMING
|
||||
- build_marlin
|
||||
#
|
||||
# tvrrug Config need to check board type for sanguino atmega644p
|
||||
#
|
||||
#- use_example_configs tvrrug/Round2
|
||||
#- build_marlin
|
||||
#
|
||||
#
|
||||
######## Board Types #############
|
||||
#
|
||||
# To be added in nightly test branch
|
||||
#
|
||||
- start_tests ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
|
||||
|
||||
@@ -1,400 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Conditionals_LCD.h
|
||||
* Conditionals that need to be set before Configuration_adv.h or pins.h
|
||||
*/
|
||||
|
||||
#ifndef CONDITIONALS_LCD_H // Get the LCD defines which are needed first
|
||||
#define CONDITIONALS_LCD_H
|
||||
|
||||
#define LCD_HAS_DIRECTIONAL_BUTTONS (BUTTON_EXISTS(UP) || BUTTON_EXISTS(DWN) || BUTTON_EXISTS(LFT) || BUTTON_EXISTS(RT))
|
||||
|
||||
#if ENABLED(CARTESIO_UI)
|
||||
#define DOGLCD
|
||||
#define ULTIPANEL
|
||||
#define NEWPANEL
|
||||
#define DEFAULT_LCD_CONTRAST 90
|
||||
#define LCD_CONTRAST_MIN 60
|
||||
#define LCD_CONTRAST_MAX 140
|
||||
#endif
|
||||
|
||||
#if ENABLED(MAKRPANEL) || ENABLED(MINIPANEL)
|
||||
#define DOGLCD
|
||||
#define ULTIPANEL
|
||||
#define NEWPANEL
|
||||
#define DEFAULT_LCD_CONTRAST 17
|
||||
#endif
|
||||
|
||||
#if ENABLED(miniVIKI) || ENABLED(VIKI2) || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
|
||||
#define ULTRA_LCD //general LCD support, also 16x2
|
||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
|
||||
#if ENABLED(miniVIKI)
|
||||
#define LCD_CONTRAST_MIN 75
|
||||
#define LCD_CONTRAST_MAX 115
|
||||
#define DEFAULT_LCD_CONTRAST 95
|
||||
#elif ENABLED(VIKI2)
|
||||
#define DEFAULT_LCD_CONTRAST 40
|
||||
#elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
|
||||
#define LCD_CONTRAST_MIN 90
|
||||
#define LCD_CONTRAST_MAX 130
|
||||
#define DEFAULT_LCD_CONTRAST 110
|
||||
#define U8GLIB_LM6059_AF
|
||||
#define SD_DETECT_INVERTED
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if ENABLED(OLED_PANEL_TINYBOY2)
|
||||
#define U8GLIB_SSD1306
|
||||
#define ULTIPANEL
|
||||
#define NEWPANEL
|
||||
#define REVERSE_ENCODER_DIRECTION
|
||||
#define REVERSE_MENU_DIRECTION
|
||||
#endif
|
||||
|
||||
// Generic support for SSD1306 / SH1106 OLED based LCDs.
|
||||
#if ENABLED(U8GLIB_SSD1306) || ENABLED(U8GLIB_SH1106)
|
||||
#define ULTRA_LCD //general LCD support, also 16x2
|
||||
#define DOGLCD // Support for I2C LCD 128x64 (Controller SSD1306 / SH1106 graphic Display Family)
|
||||
#endif
|
||||
|
||||
#if ENABLED(PANEL_ONE) || ENABLED(U8GLIB_SH1106)
|
||||
#define ULTIMAKERCONTROLLER
|
||||
#endif
|
||||
|
||||
#if ENABLED(BQ_LCD_SMART_CONTROLLER)
|
||||
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
|
||||
#ifndef LONG_FILENAME_HOST_SUPPORT
|
||||
#define LONG_FILENAME_HOST_SUPPORT
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||
#define DOGLCD
|
||||
#define U8GLIB_ST7920
|
||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
#endif
|
||||
|
||||
#if ENABLED(ULTIMAKERCONTROLLER) \
|
||||
|| ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) \
|
||||
|| ENABLED(G3D_PANEL) \
|
||||
|| ENABLED(RIGIDBOT_PANEL) \
|
||||
|| ENABLED(REPRAPWORLD_KEYPAD)
|
||||
#define ULTIPANEL
|
||||
#define NEWPANEL
|
||||
#endif
|
||||
|
||||
#if ENABLED(RA_CONTROL_PANEL)
|
||||
#define LCD_I2C_TYPE_PCA8574
|
||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
||||
#define ULTIPANEL
|
||||
#define NEWPANEL
|
||||
#endif
|
||||
|
||||
#if ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
|
||||
#define DOGLCD
|
||||
#define U8GLIB_ST7920
|
||||
#define ULTIPANEL
|
||||
#define NEWPANEL
|
||||
#endif
|
||||
|
||||
/**
|
||||
* I2C PANELS
|
||||
*/
|
||||
|
||||
#if ENABLED(LCD_I2C_SAINSMART_YWROBOT)
|
||||
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
||||
// Make sure it is placed in the Arduino libraries directory.
|
||||
#define LCD_I2C_TYPE_PCF8575
|
||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
||||
#define ULTIPANEL
|
||||
#define NEWPANEL
|
||||
#endif
|
||||
|
||||
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||
#if ENABLED(LCD_I2C_PANELOLU2)
|
||||
#define LCD_I2C_TYPE_MCP23017
|
||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
||||
#define ULTIPANEL
|
||||
#define NEWPANEL
|
||||
#endif
|
||||
|
||||
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||
#if ENABLED(LCD_I2C_VIKI)
|
||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
||||
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
||||
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
||||
#define LCD_I2C_TYPE_MCP23017
|
||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
||||
#define ULTIPANEL
|
||||
#define NEWPANEL
|
||||
|
||||
#define ENCODER_FEEDRATE_DEADZONE 4
|
||||
|
||||
#ifndef ENCODER_PULSES_PER_STEP
|
||||
#define ENCODER_PULSES_PER_STEP 1
|
||||
#endif
|
||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
||||
#define ENCODER_STEPS_PER_MENU_ITEM 2
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Set encoder detents for well-known controllers
|
||||
#if ENABLED(miniVIKI) || ENABLED(VIKI2) || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) || ENABLED(OLED_PANEL_TINYBOY2) \
|
||||
|| ENABLED(BQ_LCD_SMART_CONTROLLER) || ENABLED(LCD_I2C_PANELOLU2) || ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER)
|
||||
#ifndef ENCODER_PULSES_PER_STEP
|
||||
#define ENCODER_PULSES_PER_STEP 4
|
||||
#endif
|
||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Shift register panels
|
||||
// ---------------------
|
||||
// 2 wire Non-latching LCD SR from:
|
||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||
|
||||
#if ENABLED(SAV_3DLCD)
|
||||
#define SR_LCD_2W_NL // Non latching 2 wire shift register
|
||||
#define ULTIPANEL
|
||||
#define NEWPANEL
|
||||
#endif
|
||||
|
||||
#if ENABLED(DOGLCD) // Change number of lines to match the DOG graphic display
|
||||
#ifndef LCD_WIDTH
|
||||
#define LCD_WIDTH 22
|
||||
#endif
|
||||
#ifndef LCD_HEIGHT
|
||||
#define LCD_HEIGHT 5
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(ULTIPANEL)
|
||||
#define NEWPANEL //enable this if you have a click-encoder panel
|
||||
#define ULTRA_LCD
|
||||
#ifndef LCD_WIDTH
|
||||
#define LCD_WIDTH 20
|
||||
#endif
|
||||
#ifndef LCD_HEIGHT
|
||||
#define LCD_HEIGHT 4
|
||||
#endif
|
||||
#else // no panel but just LCD
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
#ifndef LCD_WIDTH
|
||||
#define LCD_WIDTH 16
|
||||
#endif
|
||||
#ifndef LCD_HEIGHT
|
||||
#define LCD_HEIGHT 2
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(DOGLCD)
|
||||
/* Custom characters defined in font dogm_font_data_Marlin_symbols.h / Marlin_symbols.fon */
|
||||
// \x00 intentionally skipped to avoid problems in strings
|
||||
#define LCD_STR_REFRESH "\x01"
|
||||
#define LCD_STR_FOLDER "\x02"
|
||||
#define LCD_STR_ARROW_RIGHT "\x03"
|
||||
#define LCD_STR_UPLEVEL "\x04"
|
||||
#define LCD_STR_CLOCK "\x05"
|
||||
#define LCD_STR_FEEDRATE "\x06"
|
||||
#define LCD_STR_BEDTEMP "\x07"
|
||||
#define LCD_STR_THERMOMETER "\x08"
|
||||
#define LCD_STR_DEGREE "\x09"
|
||||
|
||||
#define LCD_STR_SPECIAL_MAX '\x09'
|
||||
// Maximum here is 0x1F because 0x20 is ' ' (space) and the normal charsets begin.
|
||||
// Better stay below 0x10 because DISPLAY_CHARSET_HD44780_WESTERN begins here.
|
||||
|
||||
// Symbol characters
|
||||
#define LCD_STR_FILAM_DIA "\xf8"
|
||||
#define LCD_STR_FILAM_MUL "\xa4"
|
||||
#else
|
||||
/* Custom characters defined in the first 8 characters of the LCD */
|
||||
#define LCD_STR_BEDTEMP "\x00" // Print only as a char. This will have 'unexpected' results when used in a string!
|
||||
#define LCD_STR_DEGREE "\x01"
|
||||
#define LCD_STR_THERMOMETER "\x02"
|
||||
#define LCD_STR_UPLEVEL "\x03"
|
||||
#define LCD_STR_REFRESH "\x04"
|
||||
#define LCD_STR_FOLDER "\x05"
|
||||
#define LCD_STR_FEEDRATE "\x06"
|
||||
#define LCD_STR_CLOCK "\x07"
|
||||
#define LCD_STR_ARROW_RIGHT ">" /* from the default character set */
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Default LCD contrast for dogm-like LCD displays
|
||||
*/
|
||||
#if ENABLED(DOGLCD)
|
||||
|
||||
#define HAS_LCD_CONTRAST ( \
|
||||
ENABLED(MAKRPANEL) \
|
||||
|| ENABLED(CARTESIO_UI) \
|
||||
|| ENABLED(VIKI2) \
|
||||
|| ENABLED(miniVIKI) \
|
||||
|| ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) \
|
||||
)
|
||||
|
||||
#if HAS_LCD_CONTRAST
|
||||
#ifndef LCD_CONTRAST_MIN
|
||||
#define LCD_CONTRAST_MIN 0
|
||||
#endif
|
||||
#ifndef LCD_CONTRAST_MAX
|
||||
#define LCD_CONTRAST_MAX 63
|
||||
#endif
|
||||
#ifndef DEFAULT_LCD_CONTRAST
|
||||
#define DEFAULT_LCD_CONTRAST 32
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef BOOTSCREEN_TIMEOUT
|
||||
#define BOOTSCREEN_TIMEOUT 2500
|
||||
#endif
|
||||
|
||||
#define HAS_DEBUG_MENU ENABLED(LCD_PROGRESS_BAR_TEST)
|
||||
|
||||
/**
|
||||
* Extruders have some combination of stepper motors and hotends
|
||||
* so we separate these concepts into the defines:
|
||||
*
|
||||
* EXTRUDERS - Number of Selectable Tools
|
||||
* HOTENDS - Number of hotends, whether connected or separate
|
||||
* E_STEPPERS - Number of actual E stepper motors
|
||||
* TOOL_E_INDEX - Index to use when getting/setting the tool state
|
||||
*
|
||||
*/
|
||||
#if ENABLED(SINGLENOZZLE) || ENABLED(MIXING_EXTRUDER) // One hotend, one thermistor, no XY offset
|
||||
#define HOTENDS 1
|
||||
#undef TEMP_SENSOR_1_AS_REDUNDANT
|
||||
#undef HOTEND_OFFSET_X
|
||||
#undef HOTEND_OFFSET_Y
|
||||
#else // Two hotends
|
||||
#define HOTENDS EXTRUDERS
|
||||
#if ENABLED(SWITCHING_NOZZLE) && !defined(HOTEND_OFFSET_Z)
|
||||
#define HOTEND_OFFSET_Z { 0 }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(SWITCHING_EXTRUDER) || ENABLED(MIXING_EXTRUDER) // Unified E axis
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
#define E_STEPPERS MIXING_STEPPERS
|
||||
#else
|
||||
#define E_STEPPERS 1 // One E stepper
|
||||
#endif
|
||||
#define E_MANUAL 1
|
||||
#define TOOL_E_INDEX 0
|
||||
#else
|
||||
#define E_STEPPERS EXTRUDERS
|
||||
#define E_MANUAL EXTRUDERS
|
||||
#define TOOL_E_INDEX current_block->active_extruder
|
||||
#endif
|
||||
|
||||
/**
|
||||
* DISTINCT_E_FACTORS affects how some E factors are accessed
|
||||
*/
|
||||
#if ENABLED(DISTINCT_E_FACTORS) && E_STEPPERS > 1
|
||||
#define XYZE_N (XYZ + E_STEPPERS)
|
||||
#define E_AXIS_N (E_AXIS + extruder)
|
||||
#else
|
||||
#undef DISTINCT_E_FACTORS
|
||||
#define XYZE_N XYZE
|
||||
#define E_AXIS_N E_AXIS
|
||||
#endif
|
||||
|
||||
/**
|
||||
* The BLTouch Probe emulates a servo probe
|
||||
* and uses "special" angles for its state.
|
||||
*/
|
||||
#if ENABLED(BLTOUCH)
|
||||
#ifndef Z_ENDSTOP_SERVO_NR
|
||||
#define Z_ENDSTOP_SERVO_NR 0
|
||||
#endif
|
||||
#ifndef NUM_SERVOS
|
||||
#define NUM_SERVOS (Z_ENDSTOP_SERVO_NR + 1)
|
||||
#endif
|
||||
#undef DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
#undef SERVO_DELAY
|
||||
#define SERVO_DELAY 50
|
||||
#ifndef BLTOUCH_DELAY
|
||||
#define BLTOUCH_DELAY 375
|
||||
#endif
|
||||
#undef Z_SERVO_ANGLES
|
||||
#define Z_SERVO_ANGLES { BLTOUCH_DEPLOY, BLTOUCH_STOW }
|
||||
|
||||
#define BLTOUCH_DEPLOY 10
|
||||
#define BLTOUCH_STOW 90
|
||||
#define BLTOUCH_SELFTEST 120
|
||||
#define BLTOUCH_RESET 160
|
||||
#define _TEST_BLTOUCH(P) (READ(P##_PIN) != P##_ENDSTOP_INVERTING)
|
||||
|
||||
// Always disable probe pin inverting for BLTouch
|
||||
#undef Z_MIN_PROBE_ENDSTOP_INVERTING
|
||||
#define Z_MIN_PROBE_ENDSTOP_INVERTING false
|
||||
|
||||
#if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
|
||||
#undef Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z_MIN_ENDSTOP_INVERTING false
|
||||
#define TEST_BLTOUCH() _TEST_BLTOUCH(Z_MIN)
|
||||
#else
|
||||
#define TEST_BLTOUCH() _TEST_BLTOUCH(Z_MIN_PROBE)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Set a flag for a servo probe
|
||||
*/
|
||||
#define HAS_Z_SERVO_ENDSTOP (defined(Z_ENDSTOP_SERVO_NR) && Z_ENDSTOP_SERVO_NR >= 0)
|
||||
|
||||
/**
|
||||
* UBL has its own manual probing, so this just causes trouble.
|
||||
*/
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||
#undef PROBE_MANUALLY
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Set a flag for any enabled probe
|
||||
*/
|
||||
#define PROBE_SELECTED (ENABLED(PROBE_MANUALLY) || ENABLED(FIX_MOUNTED_PROBE) || ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED) || ENABLED(SOLENOID_PROBE))
|
||||
|
||||
/**
|
||||
* Clear probe pin settings when no probe is selected
|
||||
*/
|
||||
#if !PROBE_SELECTED || ENABLED(PROBE_MANUALLY)
|
||||
#undef Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
|
||||
#undef Z_MIN_PROBE_ENDSTOP
|
||||
#endif
|
||||
|
||||
#define HAS_SOFTWARE_ENDSTOPS (ENABLED(MIN_SOFTWARE_ENDSTOPS) || ENABLED(MAX_SOFTWARE_ENDSTOPS))
|
||||
#define HAS_RESUME_CONTINUE (ENABLED(NEWPANEL) || ENABLED(EMERGENCY_PARSER))
|
||||
#define HAS_COLOR_LEDS (ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED))
|
||||
|
||||
#endif // CONDITIONALS_LCD_H
|
||||
@@ -1,850 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Conditionals_post.h
|
||||
* Defines that depend on configuration but are not editable.
|
||||
*/
|
||||
|
||||
#ifndef CONDITIONALS_POST_H
|
||||
#define CONDITIONALS_POST_H
|
||||
|
||||
/**
|
||||
* Axis lengths and center
|
||||
*/
|
||||
#define X_MAX_LENGTH (X_MAX_POS - (X_MIN_POS))
|
||||
#define Y_MAX_LENGTH (Y_MAX_POS - (Y_MIN_POS))
|
||||
#define Z_MAX_LENGTH (Z_MAX_POS - (Z_MIN_POS))
|
||||
#define X_CENTER float((X_MIN_POS + X_MAX_POS) * 0.5)
|
||||
#define Y_CENTER float((Y_MIN_POS + Y_MAX_POS) * 0.5)
|
||||
#define Z_CENTER float((Z_MIN_POS + Z_MAX_POS) * 0.5)
|
||||
|
||||
/**
|
||||
* CoreXY, CoreXZ, and CoreYZ - and their reverse
|
||||
*/
|
||||
#define CORE_IS_XY (ENABLED(COREXY) || ENABLED(COREYX))
|
||||
#define CORE_IS_XZ (ENABLED(COREXZ) || ENABLED(COREZX))
|
||||
#define CORE_IS_YZ (ENABLED(COREYZ) || ENABLED(COREZY))
|
||||
#define IS_CORE (CORE_IS_XY || CORE_IS_XZ || CORE_IS_YZ)
|
||||
#if IS_CORE
|
||||
#if CORE_IS_XY
|
||||
#define CORE_AXIS_1 A_AXIS
|
||||
#define CORE_AXIS_2 B_AXIS
|
||||
#define NORMAL_AXIS Z_AXIS
|
||||
#elif CORE_IS_XZ
|
||||
#define CORE_AXIS_1 A_AXIS
|
||||
#define NORMAL_AXIS Y_AXIS
|
||||
#define CORE_AXIS_2 C_AXIS
|
||||
#elif CORE_IS_YZ
|
||||
#define NORMAL_AXIS X_AXIS
|
||||
#define CORE_AXIS_1 B_AXIS
|
||||
#define CORE_AXIS_2 C_AXIS
|
||||
#endif
|
||||
#if (ENABLED(COREYX) || ENABLED(COREZX) || ENABLED(COREZY))
|
||||
#define CORESIGN(n) (-(n))
|
||||
#else
|
||||
#define CORESIGN(n) (n)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define IS_SCARA (ENABLED(MORGAN_SCARA) || ENABLED(MAKERARM_SCARA))
|
||||
#define IS_KINEMATIC (ENABLED(DELTA) || IS_SCARA)
|
||||
#define IS_CARTESIAN !IS_KINEMATIC
|
||||
|
||||
/**
|
||||
* SCARA cannot use SLOWDOWN and requires QUICKHOME
|
||||
*/
|
||||
#if IS_SCARA
|
||||
#undef SLOWDOWN
|
||||
#define QUICK_HOME
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Set the home position based on settings or manual overrides
|
||||
*/
|
||||
#ifdef MANUAL_X_HOME_POS
|
||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
||||
#elif ENABLED(BED_CENTER_AT_0_0)
|
||||
#if ENABLED(DELTA)
|
||||
#define X_HOME_POS 0
|
||||
#else
|
||||
#define X_HOME_POS ((X_MAX_LENGTH) * (X_HOME_DIR) * 0.5)
|
||||
#endif
|
||||
#else
|
||||
#if ENABLED(DELTA)
|
||||
#define X_HOME_POS (X_MIN_POS + (X_MAX_LENGTH) * 0.5)
|
||||
#else
|
||||
#define X_HOME_POS (X_HOME_DIR < 0 ? X_MIN_POS : X_MAX_POS)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MANUAL_Y_HOME_POS
|
||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
||||
#elif ENABLED(BED_CENTER_AT_0_0)
|
||||
#if ENABLED(DELTA)
|
||||
#define Y_HOME_POS 0
|
||||
#else
|
||||
#define Y_HOME_POS ((Y_MAX_LENGTH) * (Y_HOME_DIR) * 0.5)
|
||||
#endif
|
||||
#else
|
||||
#if ENABLED(DELTA)
|
||||
#define Y_HOME_POS (Y_MIN_POS + (Y_MAX_LENGTH) * 0.5)
|
||||
#else
|
||||
#define Y_HOME_POS (Y_HOME_DIR < 0 ? Y_MIN_POS : Y_MAX_POS)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MANUAL_Z_HOME_POS
|
||||
#define Z_HOME_POS MANUAL_Z_HOME_POS
|
||||
#else
|
||||
#define Z_HOME_POS (Z_HOME_DIR < 0 ? Z_MIN_POS : Z_MAX_POS)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* If DELTA_HEIGHT isn't defined use the old setting
|
||||
*/
|
||||
#if ENABLED(DELTA) && !defined(DELTA_HEIGHT)
|
||||
#define DELTA_HEIGHT Z_HOME_POS
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Auto Bed Leveling and Z Probe Repeatability Test
|
||||
*/
|
||||
#define HOMING_Z_WITH_PROBE (HAS_BED_PROBE && Z_HOME_DIR < 0 && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN))
|
||||
|
||||
/**
|
||||
* Z Sled Probe requires Z_SAFE_HOMING
|
||||
*/
|
||||
#if ENABLED(Z_PROBE_SLED)
|
||||
#define Z_SAFE_HOMING
|
||||
#endif
|
||||
|
||||
/**
|
||||
* DELTA should ignore Z_SAFE_HOMING and SLOWDOWN
|
||||
*/
|
||||
#if ENABLED(DELTA)
|
||||
#undef Z_SAFE_HOMING
|
||||
#undef SLOWDOWN
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Safe Homing Options
|
||||
*/
|
||||
#if ENABLED(Z_SAFE_HOMING)
|
||||
#ifndef Z_SAFE_HOMING_X_POINT
|
||||
#define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2)
|
||||
#endif
|
||||
#ifndef Z_SAFE_HOMING_Y_POINT
|
||||
#define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)
|
||||
#endif
|
||||
#define X_TILT_FULCRUM Z_SAFE_HOMING_X_POINT
|
||||
#define Y_TILT_FULCRUM Z_SAFE_HOMING_Y_POINT
|
||||
#else
|
||||
#define X_TILT_FULCRUM X_HOME_POS
|
||||
#define Y_TILT_FULCRUM Y_HOME_POS
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Host keep alive
|
||||
*/
|
||||
#ifndef DEFAULT_KEEPALIVE_INTERVAL
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2
|
||||
#endif
|
||||
|
||||
/**
|
||||
* MAX_STEP_FREQUENCY differs for TOSHIBA
|
||||
*/
|
||||
#if ENABLED(CONFIG_STEPPERS_TOSHIBA)
|
||||
#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers
|
||||
#else
|
||||
#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step)
|
||||
#endif
|
||||
|
||||
// MS1 MS2 Stepper Driver Microstepping mode table
|
||||
#define MICROSTEP1 LOW,LOW
|
||||
#define MICROSTEP2 HIGH,LOW
|
||||
#define MICROSTEP4 LOW,HIGH
|
||||
#define MICROSTEP8 HIGH,HIGH
|
||||
#define MICROSTEP16 HIGH,HIGH
|
||||
|
||||
/**
|
||||
* Advance calculated values
|
||||
*/
|
||||
#if ENABLED(ADVANCE)
|
||||
#define EXTRUSION_AREA (0.25 * (D_FILAMENT) * (D_FILAMENT) * M_PI)
|
||||
#define STEPS_PER_CUBIC_MM_E (axis_steps_per_mm[E_AXIS_N] / (EXTRUSION_AREA))
|
||||
#endif
|
||||
|
||||
#if ENABLED(ULTIPANEL) && DISABLED(ELB_FULL_GRAPHIC_CONTROLLER)
|
||||
#undef SD_DETECT_INVERTED
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Set defaults for missing (newer) options
|
||||
*/
|
||||
#ifndef DISABLE_INACTIVE_X
|
||||
#define DISABLE_INACTIVE_X DISABLE_X
|
||||
#endif
|
||||
#ifndef DISABLE_INACTIVE_Y
|
||||
#define DISABLE_INACTIVE_Y DISABLE_Y
|
||||
#endif
|
||||
#ifndef DISABLE_INACTIVE_Z
|
||||
#define DISABLE_INACTIVE_Z DISABLE_Z
|
||||
#endif
|
||||
#ifndef DISABLE_INACTIVE_E
|
||||
#define DISABLE_INACTIVE_E DISABLE_E
|
||||
#endif
|
||||
|
||||
// Power Signal Control Definitions
|
||||
// By default use ATX definition
|
||||
#ifndef POWER_SUPPLY
|
||||
#define POWER_SUPPLY 1
|
||||
#endif
|
||||
#if (POWER_SUPPLY == 1) // 1 = ATX
|
||||
#define PS_ON_AWAKE LOW
|
||||
#define PS_ON_ASLEEP HIGH
|
||||
#elif (POWER_SUPPLY == 2) // 2 = X-Box 360 203W
|
||||
#define PS_ON_AWAKE HIGH
|
||||
#define PS_ON_ASLEEP LOW
|
||||
#endif
|
||||
#define HAS_POWER_SWITCH (POWER_SUPPLY > 0 && PIN_EXISTS(PS_ON))
|
||||
|
||||
/**
|
||||
* Temp Sensor defines
|
||||
*/
|
||||
#if TEMP_SENSOR_0 == -3
|
||||
#define HEATER_0_USES_MAX6675
|
||||
#define MAX6675_IS_MAX31855
|
||||
#define MAX6675_TMIN -270
|
||||
#define MAX6675_TMAX 1800
|
||||
#elif TEMP_SENSOR_0 == -2
|
||||
#define HEATER_0_USES_MAX6675
|
||||
#define MAX6675_TMIN 0
|
||||
#define MAX6675_TMAX 1024
|
||||
#elif TEMP_SENSOR_0 == -1
|
||||
#define HEATER_0_USES_AD595
|
||||
#elif TEMP_SENSOR_0 == 0
|
||||
#undef HEATER_0_MINTEMP
|
||||
#undef HEATER_0_MAXTEMP
|
||||
#elif TEMP_SENSOR_0 > 0
|
||||
#define THERMISTORHEATER_0 TEMP_SENSOR_0
|
||||
#define HEATER_0_USES_THERMISTOR
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_1 <= -2
|
||||
#error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_1"
|
||||
#elif TEMP_SENSOR_1 == -1
|
||||
#define HEATER_1_USES_AD595
|
||||
#elif TEMP_SENSOR_1 == 0
|
||||
#undef HEATER_1_MINTEMP
|
||||
#undef HEATER_1_MAXTEMP
|
||||
#elif TEMP_SENSOR_1 > 0
|
||||
#define THERMISTORHEATER_1 TEMP_SENSOR_1
|
||||
#define HEATER_1_USES_THERMISTOR
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_2 <= -2
|
||||
#error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_2"
|
||||
#elif TEMP_SENSOR_2 == -1
|
||||
#define HEATER_2_USES_AD595
|
||||
#elif TEMP_SENSOR_2 == 0
|
||||
#undef HEATER_2_MINTEMP
|
||||
#undef HEATER_2_MAXTEMP
|
||||
#elif TEMP_SENSOR_2 > 0
|
||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
||||
#define HEATER_2_USES_THERMISTOR
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_3 <= -2
|
||||
#error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_3"
|
||||
#elif TEMP_SENSOR_3 == -1
|
||||
#define HEATER_3_USES_AD595
|
||||
#elif TEMP_SENSOR_3 == 0
|
||||
#undef HEATER_3_MINTEMP
|
||||
#undef HEATER_3_MAXTEMP
|
||||
#elif TEMP_SENSOR_3 > 0
|
||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
||||
#define HEATER_3_USES_THERMISTOR
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_4 <= -2
|
||||
#error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_4"
|
||||
#elif TEMP_SENSOR_4 == -1
|
||||
#define HEATER_4_USES_AD595
|
||||
#elif TEMP_SENSOR_4 == 0
|
||||
#undef HEATER_4_MINTEMP
|
||||
#undef HEATER_4_MAXTEMP
|
||||
#elif TEMP_SENSOR_4 > 0
|
||||
#define THERMISTORHEATER_4 TEMP_SENSOR_4
|
||||
#define HEATER_4_USES_THERMISTOR
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_BED <= -2
|
||||
#error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_BED"
|
||||
#elif TEMP_SENSOR_BED == -1
|
||||
#define BED_USES_AD595
|
||||
#elif TEMP_SENSOR_BED == 0
|
||||
#undef BED_MINTEMP
|
||||
#undef BED_MAXTEMP
|
||||
#elif TEMP_SENSOR_BED > 0
|
||||
#define THERMISTORBED TEMP_SENSOR_BED
|
||||
#define BED_USES_THERMISTOR
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Flags for PID handling
|
||||
*/
|
||||
#define HAS_PID_HEATING (ENABLED(PIDTEMP) || ENABLED(PIDTEMPBED))
|
||||
#define HAS_PID_FOR_BOTH (ENABLED(PIDTEMP) && ENABLED(PIDTEMPBED))
|
||||
|
||||
/**
|
||||
* Default hotend offsets, if not defined
|
||||
*/
|
||||
#if HOTENDS > 1
|
||||
#ifndef HOTEND_OFFSET_X
|
||||
#define HOTEND_OFFSET_X { 0 } // X offsets for each extruder
|
||||
#endif
|
||||
#ifndef HOTEND_OFFSET_Y
|
||||
#define HOTEND_OFFSET_Y { 0 } // Y offsets for each extruder
|
||||
#endif
|
||||
#if !defined(HOTEND_OFFSET_Z) && (ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE))
|
||||
#define HOTEND_OFFSET_Z { 0 }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* ARRAY_BY_EXTRUDERS based on EXTRUDERS
|
||||
*/
|
||||
#define ARRAY_BY_EXTRUDERS(...) ARRAY_N(EXTRUDERS, __VA_ARGS__)
|
||||
#define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1, v1, v1)
|
||||
|
||||
/**
|
||||
* ARRAY_BY_HOTENDS based on HOTENDS
|
||||
*/
|
||||
#define ARRAY_BY_HOTENDS(...) ARRAY_N(HOTENDS, __VA_ARGS__)
|
||||
#define ARRAY_BY_HOTENDS1(v1) ARRAY_BY_HOTENDS(v1, v1, v1, v1, v1, v1)
|
||||
|
||||
/**
|
||||
* Z_DUAL_ENDSTOPS endstop reassignment
|
||||
*/
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define _XMIN_ 100
|
||||
#define _YMIN_ 200
|
||||
#define _ZMIN_ 300
|
||||
#define _XMAX_ 101
|
||||
#define _YMAX_ 201
|
||||
#define _ZMAX_ 301
|
||||
#if Z2_USE_ENDSTOP == _XMIN_
|
||||
#define USE_XMIN_PLUG
|
||||
#elif Z2_USE_ENDSTOP == _XMAX_
|
||||
#define USE_XMAX_PLUG
|
||||
#elif Z2_USE_ENDSTOP == _YMIN_
|
||||
#define USE_YMIN_PLUG
|
||||
#elif Z2_USE_ENDSTOP == _YMAX_
|
||||
#define USE_YMAX_PLUG
|
||||
#elif Z2_USE_ENDSTOP == _ZMIN_
|
||||
#define USE_ZMIN_PLUG
|
||||
#elif Z2_USE_ENDSTOP == _ZMAX_
|
||||
#define USE_ZMAX_PLUG
|
||||
#endif
|
||||
#if Z_HOME_DIR > 0
|
||||
#if Z2_USE_ENDSTOP == _XMIN_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN X_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _XMAX_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN X_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YMIN_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN Y_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YMAX_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN Y_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZMIN_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN Z_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZMAX_
|
||||
#define Z2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN Z_MAX_PIN
|
||||
#else
|
||||
#define Z2_MAX_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#else
|
||||
#if Z2_USE_ENDSTOP == _XMIN_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_PIN X_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _XMAX_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_PIN X_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YMIN_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_PIN Y_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _YMAX_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_PIN Y_MAX_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZMIN_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_PIN Z_MIN_PIN
|
||||
#elif Z2_USE_ENDSTOP == _ZMAX_
|
||||
#define Z2_MIN_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MIN_PIN Z_MAX_PIN
|
||||
#else
|
||||
#define Z2_MIN_ENDSTOP_INVERTING false
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Is an endstop plug used for the Z2 endstop or the bed probe?
|
||||
#define IS_Z2_OR_PROBE(A,M) ( \
|
||||
(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP == _##A##M##_) \
|
||||
|| (ENABLED(Z_MIN_PROBE_ENDSTOP) && Z_MIN_PROBE_PIN == A##_##M##_PIN ) )
|
||||
|
||||
/**
|
||||
* Set ENDSTOPPULLUPS for active endstop switches
|
||||
*/
|
||||
#if ENABLED(ENDSTOPPULLUPS)
|
||||
#if ENABLED(USE_XMAX_PLUG)
|
||||
#define ENDSTOPPULLUP_XMAX
|
||||
#endif
|
||||
#if ENABLED(USE_YMAX_PLUG)
|
||||
#define ENDSTOPPULLUP_YMAX
|
||||
#endif
|
||||
#if ENABLED(USE_ZMAX_PLUG)
|
||||
#define ENDSTOPPULLUP_ZMAX
|
||||
#endif
|
||||
#if ENABLED(USE_XMIN_PLUG)
|
||||
#define ENDSTOPPULLUP_XMIN
|
||||
#endif
|
||||
#if ENABLED(USE_YMIN_PLUG)
|
||||
#define ENDSTOPPULLUP_YMIN
|
||||
#endif
|
||||
#if ENABLED(USE_ZMIN_PLUG)
|
||||
#define ENDSTOPPULLUP_ZMIN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Shorthand for pin tests, used wherever needed
|
||||
*/
|
||||
|
||||
// Steppers
|
||||
#define HAS_X_ENABLE (PIN_EXISTS(X_ENABLE))
|
||||
#define HAS_X_DIR (PIN_EXISTS(X_DIR))
|
||||
#define HAS_X_STEP (PIN_EXISTS(X_STEP))
|
||||
#define HAS_X_MICROSTEPS (PIN_EXISTS(X_MS1))
|
||||
|
||||
#define HAS_X2_ENABLE (PIN_EXISTS(X2_ENABLE))
|
||||
#define HAS_X2_DIR (PIN_EXISTS(X2_DIR))
|
||||
#define HAS_X2_STEP (PIN_EXISTS(X2_STEP))
|
||||
#define HAS_Y_MICROSTEPS (PIN_EXISTS(Y_MS1))
|
||||
|
||||
#define HAS_Y_ENABLE (PIN_EXISTS(Y_ENABLE))
|
||||
#define HAS_Y_DIR (PIN_EXISTS(Y_DIR))
|
||||
#define HAS_Y_STEP (PIN_EXISTS(Y_STEP))
|
||||
#define HAS_Z_MICROSTEPS (PIN_EXISTS(Z_MS1))
|
||||
|
||||
#define HAS_Y2_ENABLE (PIN_EXISTS(Y2_ENABLE))
|
||||
#define HAS_Y2_DIR (PIN_EXISTS(Y2_DIR))
|
||||
#define HAS_Y2_STEP (PIN_EXISTS(Y2_STEP))
|
||||
|
||||
#define HAS_Z_ENABLE (PIN_EXISTS(Z_ENABLE))
|
||||
#define HAS_Z_DIR (PIN_EXISTS(Z_DIR))
|
||||
#define HAS_Z_STEP (PIN_EXISTS(Z_STEP))
|
||||
|
||||
#define HAS_Z2_ENABLE (PIN_EXISTS(Z2_ENABLE))
|
||||
#define HAS_Z2_DIR (PIN_EXISTS(Z2_DIR))
|
||||
#define HAS_Z2_STEP (PIN_EXISTS(Z2_STEP))
|
||||
|
||||
// Extruder steppers and solenoids
|
||||
#define HAS_E0_ENABLE (PIN_EXISTS(E0_ENABLE))
|
||||
#define HAS_E0_DIR (PIN_EXISTS(E0_DIR))
|
||||
#define HAS_E0_STEP (PIN_EXISTS(E0_STEP))
|
||||
#define HAS_E0_MICROSTEPS (PIN_EXISTS(E0_MS1))
|
||||
#define HAS_SOLENOID_0 (PIN_EXISTS(SOL0))
|
||||
|
||||
#define HAS_E1_ENABLE (PIN_EXISTS(E1_ENABLE))
|
||||
#define HAS_E1_DIR (PIN_EXISTS(E1_DIR))
|
||||
#define HAS_E1_STEP (PIN_EXISTS(E1_STEP))
|
||||
#define HAS_E1_MICROSTEPS (PIN_EXISTS(E1_MS1))
|
||||
#define HAS_SOLENOID_1 (PIN_EXISTS(SOL1))
|
||||
|
||||
#define HAS_E2_ENABLE (PIN_EXISTS(E2_ENABLE))
|
||||
#define HAS_E2_DIR (PIN_EXISTS(E2_DIR))
|
||||
#define HAS_E2_STEP (PIN_EXISTS(E2_STEP))
|
||||
#define HAS_E2_MICROSTEPS (PIN_EXISTS(E2_MS1))
|
||||
#define HAS_SOLENOID_2 (PIN_EXISTS(SOL2))
|
||||
|
||||
#define HAS_E3_ENABLE (PIN_EXISTS(E3_ENABLE))
|
||||
#define HAS_E3_DIR (PIN_EXISTS(E3_DIR))
|
||||
#define HAS_E3_STEP (PIN_EXISTS(E3_STEP))
|
||||
#define HAS_E3_MICROSTEPS (PIN_EXISTS(E3_MS1))
|
||||
#define HAS_SOLENOID_3 (PIN_EXISTS(SOL3))
|
||||
|
||||
#define HAS_E4_ENABLE (PIN_EXISTS(E4_ENABLE))
|
||||
#define HAS_E4_DIR (PIN_EXISTS(E4_DIR))
|
||||
#define HAS_E4_STEP (PIN_EXISTS(E4_STEP))
|
||||
#define HAS_E4_MICROSTEPS (PIN_EXISTS(E4_MS1))
|
||||
#define HAS_SOLENOID_4 (PIN_EXISTS(SOL4))
|
||||
|
||||
// Endstops and bed probe
|
||||
#define HAS_X_MIN (PIN_EXISTS(X_MIN) && !IS_Z2_OR_PROBE(X,MIN))
|
||||
#define HAS_X_MAX (PIN_EXISTS(X_MAX) && !IS_Z2_OR_PROBE(X,MAX))
|
||||
#define HAS_Y_MIN (PIN_EXISTS(Y_MIN) && !IS_Z2_OR_PROBE(Y,MIN))
|
||||
#define HAS_Y_MAX (PIN_EXISTS(Y_MAX) && !IS_Z2_OR_PROBE(Y,MAX))
|
||||
#define HAS_Z_MIN (PIN_EXISTS(Z_MIN) && !IS_Z2_OR_PROBE(Z,MIN))
|
||||
#define HAS_Z_MAX (PIN_EXISTS(Z_MAX) && !IS_Z2_OR_PROBE(Z,MAX))
|
||||
#define HAS_Z2_MIN (PIN_EXISTS(Z2_MIN))
|
||||
#define HAS_Z2_MAX (PIN_EXISTS(Z2_MAX))
|
||||
#define HAS_Z_MIN_PROBE_PIN (PIN_EXISTS(Z_MIN_PROBE))
|
||||
|
||||
// Thermistors
|
||||
#define HAS_TEMP_0 (PIN_EXISTS(TEMP_0) && TEMP_SENSOR_0 != 0 && TEMP_SENSOR_0 > -2)
|
||||
#define HAS_TEMP_1 (PIN_EXISTS(TEMP_1) && TEMP_SENSOR_1 != 0 && TEMP_SENSOR_1 > -2)
|
||||
#define HAS_TEMP_2 (PIN_EXISTS(TEMP_2) && TEMP_SENSOR_2 != 0 && TEMP_SENSOR_2 > -2)
|
||||
#define HAS_TEMP_3 (PIN_EXISTS(TEMP_3) && TEMP_SENSOR_3 != 0 && TEMP_SENSOR_3 > -2)
|
||||
#define HAS_TEMP_4 (PIN_EXISTS(TEMP_4) && TEMP_SENSOR_4 != 0 && TEMP_SENSOR_4 > -2)
|
||||
#define HAS_TEMP_HOTEND (HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675))
|
||||
#define HAS_TEMP_BED (PIN_EXISTS(TEMP_BED) && TEMP_SENSOR_BED != 0 && TEMP_SENSOR_BED > -2)
|
||||
|
||||
// Heaters
|
||||
#define HAS_HEATER_0 (PIN_EXISTS(HEATER_0))
|
||||
#define HAS_HEATER_1 (PIN_EXISTS(HEATER_1))
|
||||
#define HAS_HEATER_2 (PIN_EXISTS(HEATER_2))
|
||||
#define HAS_HEATER_3 (PIN_EXISTS(HEATER_3))
|
||||
#define HAS_HEATER_4 (PIN_EXISTS(HEATER_4))
|
||||
#define HAS_HEATER_BED (PIN_EXISTS(HEATER_BED))
|
||||
|
||||
// Thermal protection
|
||||
#define HAS_THERMALLY_PROTECTED_BED (ENABLED(THERMAL_PROTECTION_BED) && HAS_TEMP_BED && HAS_HEATER_BED)
|
||||
#define WATCH_HOTENDS (ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0)
|
||||
#define WATCH_THE_BED (HAS_THERMALLY_PROTECTED_BED && WATCH_BED_TEMP_PERIOD > 0)
|
||||
|
||||
// Auto fans
|
||||
#define HAS_AUTO_FAN_0 (PIN_EXISTS(E0_AUTO_FAN))
|
||||
#define HAS_AUTO_FAN_1 (HOTENDS > 1 && PIN_EXISTS(E1_AUTO_FAN))
|
||||
#define HAS_AUTO_FAN_2 (HOTENDS > 2 && PIN_EXISTS(E2_AUTO_FAN))
|
||||
#define HAS_AUTO_FAN_3 (HOTENDS > 3 && PIN_EXISTS(E3_AUTO_FAN))
|
||||
#define HAS_AUTO_FAN_4 (HOTENDS > 4 && PIN_EXISTS(E4_AUTO_FAN))
|
||||
#define HAS_AUTO_FAN (HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3)
|
||||
#define AUTO_1_IS_0 (E1_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
|
||||
#define AUTO_2_IS_0 (E2_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
|
||||
#define AUTO_2_IS_1 (E2_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
|
||||
#define AUTO_3_IS_0 (E3_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
|
||||
#define AUTO_3_IS_1 (E3_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
|
||||
#define AUTO_3_IS_2 (E3_AUTO_FAN_PIN == E2_AUTO_FAN_PIN)
|
||||
#define AUTO_4_IS_0 (E4_AUTO_FAN_PIN == E0_AUTO_FAN_PIN)
|
||||
#define AUTO_4_IS_1 (E4_AUTO_FAN_PIN == E1_AUTO_FAN_PIN)
|
||||
#define AUTO_4_IS_2 (E4_AUTO_FAN_PIN == E2_AUTO_FAN_PIN)
|
||||
#define AUTO_4_IS_3 (E4_AUTO_FAN_PIN == E3_AUTO_FAN_PIN)
|
||||
|
||||
// Other fans
|
||||
#define HAS_FAN0 (PIN_EXISTS(FAN))
|
||||
#define HAS_FAN1 (PIN_EXISTS(FAN1) && CONTROLLER_FAN_PIN != FAN1_PIN && E0_AUTO_FAN_PIN != FAN1_PIN && E1_AUTO_FAN_PIN != FAN1_PIN && E2_AUTO_FAN_PIN != FAN1_PIN && E3_AUTO_FAN_PIN != FAN1_PIN)
|
||||
#define HAS_FAN2 (PIN_EXISTS(FAN2) && CONTROLLER_FAN_PIN != FAN2_PIN && E0_AUTO_FAN_PIN != FAN2_PIN && E1_AUTO_FAN_PIN != FAN2_PIN && E2_AUTO_FAN_PIN != FAN2_PIN && E3_AUTO_FAN_PIN != FAN2_PIN)
|
||||
#define HAS_CONTROLLER_FAN (PIN_EXISTS(CONTROLLER_FAN))
|
||||
|
||||
// Servos
|
||||
#define HAS_SERVOS (defined(NUM_SERVOS) && NUM_SERVOS > 0)
|
||||
#define HAS_SERVO_0 (PIN_EXISTS(SERVO0))
|
||||
#define HAS_SERVO_1 (PIN_EXISTS(SERVO1))
|
||||
#define HAS_SERVO_2 (PIN_EXISTS(SERVO2))
|
||||
#define HAS_SERVO_3 (PIN_EXISTS(SERVO3))
|
||||
|
||||
// Sensors
|
||||
#define HAS_FILAMENT_WIDTH_SENSOR (PIN_EXISTS(FILWIDTH))
|
||||
#define HAS_FIL_RUNOUT (PIN_EXISTS(FIL_RUNOUT))
|
||||
|
||||
// User Interface
|
||||
#define HAS_HOME (PIN_EXISTS(HOME))
|
||||
#define HAS_KILL (PIN_EXISTS(KILL))
|
||||
#define HAS_SUICIDE (PIN_EXISTS(SUICIDE))
|
||||
#define HAS_PHOTOGRAPH (PIN_EXISTS(PHOTOGRAPH))
|
||||
#define HAS_BUZZER (PIN_EXISTS(BEEPER) || ENABLED(LCD_USE_I2C_BUZZER))
|
||||
#define HAS_CASE_LIGHT (PIN_EXISTS(CASE_LIGHT) && ENABLED(CASE_LIGHT_ENABLE))
|
||||
|
||||
// Digital control
|
||||
#define HAS_MICROSTEPS (HAS_X_MICROSTEPS || HAS_Y_MICROSTEPS || HAS_Z_MICROSTEPS || HAS_E0_MICROSTEPS || HAS_E1_MICROSTEPS || HAS_E2_MICROSTEPS || HAS_E3_MICROSTEPS || HAS_E4_MICROSTEPS)
|
||||
#define HAS_STEPPER_RESET (PIN_EXISTS(STEPPER_RESET))
|
||||
#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS))
|
||||
#define HAS_MOTOR_CURRENT_PWM (PIN_EXISTS(MOTOR_CURRENT_PWM_XY) || PIN_EXISTS(MOTOR_CURRENT_PWM_Z) || PIN_EXISTS(MOTOR_CURRENT_PWM_E))
|
||||
|
||||
/**
|
||||
* This setting is also used by M109 when trying to calculate
|
||||
* a ballpark safe margin to prevent wait-forever situation.
|
||||
*/
|
||||
#ifndef EXTRUDE_MINTEMP
|
||||
#define EXTRUDE_MINTEMP 170
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Helper Macros for heaters and extruder fan
|
||||
*/
|
||||
#define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, v)
|
||||
#if HOTENDS > 1 || ENABLED(HEATERS_PARALLEL)
|
||||
#define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, v)
|
||||
#if HOTENDS > 2
|
||||
#define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, v)
|
||||
#if HOTENDS > 3
|
||||
#define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, v)
|
||||
#if HOTENDS > 4
|
||||
#define WRITE_HEATER_4(v) WRITE(HEATER_4_PIN, v)
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
#endif // HOTENDS > 1
|
||||
#if ENABLED(HEATERS_PARALLEL)
|
||||
#define WRITE_HEATER_0(v) { WRITE_HEATER_0P(v); WRITE_HEATER_1(v); }
|
||||
#else
|
||||
#define WRITE_HEATER_0(v) WRITE_HEATER_0P(v)
|
||||
#endif
|
||||
#if HAS_HEATER_BED
|
||||
#define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, v)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Up to 3 PWM fans
|
||||
*/
|
||||
#if HAS_FAN2
|
||||
#define FAN_COUNT 3
|
||||
#elif HAS_FAN1
|
||||
#define FAN_COUNT 2
|
||||
#elif HAS_FAN0
|
||||
#define FAN_COUNT 1
|
||||
#else
|
||||
#define FAN_COUNT 0
|
||||
#endif
|
||||
|
||||
#if HAS_FAN0
|
||||
#define WRITE_FAN(v) WRITE(FAN_PIN, v)
|
||||
#define WRITE_FAN0(v) WRITE_FAN(v)
|
||||
#endif
|
||||
#if HAS_FAN1
|
||||
#define WRITE_FAN1(v) WRITE(FAN1_PIN, v)
|
||||
#endif
|
||||
#if HAS_FAN2
|
||||
#define WRITE_FAN2(v) WRITE(FAN2_PIN, v)
|
||||
#endif
|
||||
#define WRITE_FAN_N(n, v) WRITE_FAN##n(v)
|
||||
|
||||
|
||||
/**
|
||||
* Heater & Fan Pausing
|
||||
*/
|
||||
#if FAN_COUNT == 0
|
||||
#undef PROBING_FANS_OFF
|
||||
#endif
|
||||
#define QUIET_PROBING (HAS_BED_PROBE && (ENABLED(PROBING_HEATERS_OFF) || ENABLED(PROBING_FANS_OFF)))
|
||||
|
||||
/**
|
||||
* Servos and probes
|
||||
*/
|
||||
|
||||
#if HAS_SERVOS
|
||||
#ifndef Z_ENDSTOP_SERVO_NR
|
||||
#define Z_ENDSTOP_SERVO_NR -1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define PROBE_PIN_CONFIGURED (HAS_Z_MIN_PROBE_PIN || (HAS_Z_MIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)))
|
||||
|
||||
#define HAS_BED_PROBE (PROBE_SELECTED && PROBE_PIN_CONFIGURED && DISABLED(PROBE_MANUALLY))
|
||||
|
||||
#if ENABLED(Z_PROBE_ALLEN_KEY)
|
||||
#define PROBE_IS_TRIGGERED_WHEN_STOWED_TEST
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Bed Probe dependencies
|
||||
*/
|
||||
#if HAS_BED_PROBE
|
||||
#if ENABLED(ENDSTOPPULLUPS) && HAS_Z_MIN_PROBE_PIN
|
||||
#define ENDSTOPPULLUP_ZMIN_PROBE
|
||||
#endif
|
||||
#ifndef Z_PROBE_OFFSET_RANGE_MIN
|
||||
#define Z_PROBE_OFFSET_RANGE_MIN -20
|
||||
#endif
|
||||
#ifndef Z_PROBE_OFFSET_RANGE_MAX
|
||||
#define Z_PROBE_OFFSET_RANGE_MAX 20
|
||||
#endif
|
||||
#ifndef XY_PROBE_SPEED
|
||||
#ifdef HOMING_FEEDRATE_XY
|
||||
#define XY_PROBE_SPEED HOMING_FEEDRATE_XY
|
||||
#else
|
||||
#define XY_PROBE_SPEED 4000
|
||||
#endif
|
||||
#endif
|
||||
#if Z_CLEARANCE_BETWEEN_PROBES > Z_CLEARANCE_DEPLOY_PROBE
|
||||
#define _Z_CLEARANCE_DEPLOY_PROBE Z_CLEARANCE_BETWEEN_PROBES
|
||||
#else
|
||||
#define _Z_CLEARANCE_DEPLOY_PROBE Z_CLEARANCE_DEPLOY_PROBE
|
||||
#endif
|
||||
#else
|
||||
#undef X_PROBE_OFFSET_FROM_EXTRUDER
|
||||
#undef Y_PROBE_OFFSET_FROM_EXTRUDER
|
||||
#undef Z_PROBE_OFFSET_FROM_EXTRUDER
|
||||
#define X_PROBE_OFFSET_FROM_EXTRUDER 0
|
||||
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0
|
||||
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Delta radius/rod trimmers/angle trimmers
|
||||
*/
|
||||
#if ENABLED(DELTA)
|
||||
#ifndef DELTA_CALIBRATION_RADIUS
|
||||
#define DELTA_CALIBRATION_RADIUS DELTA_PRINTABLE_RADIUS - 10
|
||||
#endif
|
||||
#ifndef DELTA_ENDSTOP_ADJ
|
||||
#define DELTA_ENDSTOP_ADJ { 0, 0, 0 }
|
||||
#endif
|
||||
#ifndef DELTA_TOWER_ANGLE_TRIM
|
||||
#define DELTA_TOWER_ANGLE_TRIM {0, 0, 0}
|
||||
#endif
|
||||
#ifndef DELTA_RADIUS_TRIM_TOWER
|
||||
#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
|
||||
#endif
|
||||
#ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER
|
||||
#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Set granular options based on the specific type of leveling
|
||||
*/
|
||||
|
||||
#define UBL_DELTA (ENABLED(AUTO_BED_LEVELING_UBL) && (ENABLED(DELTA) || ENABLED(UBL_GRANULAR_SEGMENTATION_FOR_CARTESIAN)))
|
||||
#define ABL_PLANAR (ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_3POINT))
|
||||
#define ABL_GRID (ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR))
|
||||
#define HAS_ABL (ABL_PLANAR || ABL_GRID || ENABLED(AUTO_BED_LEVELING_UBL))
|
||||
#define HAS_LEVELING (HAS_ABL || ENABLED(MESH_BED_LEVELING))
|
||||
#define PLANNER_LEVELING (ABL_PLANAR || ABL_GRID || ENABLED(MESH_BED_LEVELING) || UBL_DELTA)
|
||||
#define HAS_PROBING_PROCEDURE (HAS_ABL || ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST))
|
||||
#if HAS_PROBING_PROCEDURE
|
||||
#define PROBE_BED_WIDTH abs(RIGHT_PROBE_BED_POSITION - (LEFT_PROBE_BED_POSITION))
|
||||
#define PROBE_BED_HEIGHT abs(BACK_PROBE_BED_POSITION - (FRONT_PROBE_BED_POSITION))
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Buzzer/Speaker
|
||||
*/
|
||||
#if ENABLED(LCD_USE_I2C_BUZZER)
|
||||
#ifndef LCD_FEEDBACK_FREQUENCY_HZ
|
||||
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
||||
#endif
|
||||
#ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS
|
||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
||||
#endif
|
||||
#else
|
||||
#ifndef LCD_FEEDBACK_FREQUENCY_HZ
|
||||
#define LCD_FEEDBACK_FREQUENCY_HZ 5000
|
||||
#endif
|
||||
#ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS
|
||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Z_HOMING_HEIGHT / Z_CLEARANCE_BETWEEN_PROBES
|
||||
*/
|
||||
#ifndef Z_HOMING_HEIGHT
|
||||
#ifndef Z_CLEARANCE_BETWEEN_PROBES
|
||||
#define Z_HOMING_HEIGHT 0
|
||||
#else
|
||||
#define Z_HOMING_HEIGHT Z_CLEARANCE_BETWEEN_PROBES
|
||||
#endif
|
||||
#endif
|
||||
#ifndef Z_CLEARANCE_BETWEEN_PROBES
|
||||
#define Z_CLEARANCE_BETWEEN_PROBES Z_HOMING_HEIGHT
|
||||
#endif
|
||||
#if Z_CLEARANCE_BETWEEN_PROBES > Z_HOMING_HEIGHT
|
||||
#define MANUAL_PROBE_HEIGHT Z_CLEARANCE_BETWEEN_PROBES
|
||||
#else
|
||||
#define MANUAL_PROBE_HEIGHT Z_HOMING_HEIGHT
|
||||
#endif
|
||||
|
||||
#if ENABLED(DELTA)
|
||||
// These will be further constrained in code, but UBL_PROBE_PT values
|
||||
// cannot be compile-time verified within the radius.
|
||||
#define MIN_PROBE_X (-DELTA_PRINTABLE_RADIUS)
|
||||
#define MAX_PROBE_X ( DELTA_PRINTABLE_RADIUS)
|
||||
#define MIN_PROBE_Y (-DELTA_PRINTABLE_RADIUS)
|
||||
#define MAX_PROBE_Y ( DELTA_PRINTABLE_RADIUS)
|
||||
#elif IS_SCARA
|
||||
#define SCARA_PRINTABLE_RADIUS (SCARA_LINKAGE_1 + SCARA_LINKAGE_2)
|
||||
#define MIN_PROBE_X (-SCARA_PRINTABLE_RADIUS)
|
||||
#define MAX_PROBE_X ( SCARA_PRINTABLE_RADIUS)
|
||||
#define MIN_PROBE_Y (-SCARA_PRINTABLE_RADIUS)
|
||||
#define MAX_PROBE_Y ( SCARA_PRINTABLE_RADIUS)
|
||||
#else
|
||||
// Boundaries for probing based on set limits
|
||||
#define MIN_PROBE_X (max(X_MIN_POS, X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER))
|
||||
#define MAX_PROBE_X (min(X_MAX_POS, X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER))
|
||||
#define MIN_PROBE_Y (max(Y_MIN_POS, Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER))
|
||||
#define MAX_PROBE_Y (min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER))
|
||||
#endif
|
||||
|
||||
// Stepper pulse duration, in cycles
|
||||
#define STEP_PULSE_CYCLES ((MINIMUM_STEPPER_PULSE) * CYCLES_PER_MICROSECOND)
|
||||
|
||||
#if ENABLED(SDCARD_SORT_ALPHA)
|
||||
#define HAS_FOLDER_SORTING (FOLDER_SORTING || ENABLED(SDSORT_GCODE))
|
||||
#endif
|
||||
|
||||
// Updated G92 behavior shifts the workspace
|
||||
#define HAS_POSITION_SHIFT DISABLED(NO_WORKSPACE_OFFSETS)
|
||||
// The home offset also shifts the coordinate space
|
||||
#define HAS_HOME_OFFSET (DISABLED(NO_WORKSPACE_OFFSETS) || ENABLED(DELTA))
|
||||
// Either offset yields extra calculations on all moves
|
||||
#define HAS_WORKSPACE_OFFSET (HAS_POSITION_SHIFT || HAS_HOME_OFFSET)
|
||||
// M206 doesn't apply to DELTA
|
||||
#define HAS_M206_COMMAND (HAS_HOME_OFFSET && DISABLED(DELTA))
|
||||
|
||||
// LCD timeout to status screen default is 15s
|
||||
#ifndef LCD_TIMEOUT_TO_STATUS
|
||||
#define LCD_TIMEOUT_TO_STATUS 15000
|
||||
#endif
|
||||
|
||||
/**
|
||||
* DELTA_SEGMENT_MIN_LENGTH and DELTA_PROBEABLE_RADIUS for UBL_DELTA
|
||||
*/
|
||||
#if UBL_DELTA
|
||||
#ifndef DELTA_SEGMENT_MIN_LENGTH
|
||||
#if IS_SCARA
|
||||
#define DELTA_SEGMENT_MIN_LENGTH 0.25 // SCARA minimum segment size is 0.25mm
|
||||
#elif ENABLED(DELTA)
|
||||
#define DELTA_SEGMENT_MIN_LENGTH 0.10 // mm (still subject to DELTA_SEGMENTS_PER_SECOND)
|
||||
#else // CARTESIAN
|
||||
#define DELTA_SEGMENT_MIN_LENGTH 1.00 // mm (similar to G2/G3 arc segmentation)
|
||||
#endif
|
||||
#endif
|
||||
#ifndef DELTA_PROBEABLE_RADIUS
|
||||
#define DELTA_PROBEABLE_RADIUS DELTA_PRINTABLE_RADIUS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Shorthand
|
||||
#define GRID_MAX_POINTS ((GRID_MAX_POINTS_X) * (GRID_MAX_POINTS_Y))
|
||||
|
||||
// Add commands that need sub-codes to this list
|
||||
#define USE_GCODE_SUBCODES ENABLED(G38_PROBE_TARGET)
|
||||
|
||||
#endif // CONDITIONALS_POST_H
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,843 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Marlin Firmware -- G26 - Mesh Validation Tool
|
||||
*/
|
||||
|
||||
#include "MarlinConfig.h"
|
||||
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL) && ENABLED(UBL_G26_MESH_VALIDATION)
|
||||
|
||||
#include "ubl.h"
|
||||
#include "Marlin.h"
|
||||
#include "planner.h"
|
||||
#include "stepper.h"
|
||||
#include "temperature.h"
|
||||
#include "ultralcd.h"
|
||||
#include "gcode.h"
|
||||
|
||||
#define EXTRUSION_MULTIPLIER 1.0
|
||||
#define RETRACTION_MULTIPLIER 1.0
|
||||
#define NOZZLE 0.4
|
||||
#define FILAMENT 1.75
|
||||
#define LAYER_HEIGHT 0.2
|
||||
#define PRIME_LENGTH 10.0
|
||||
#define BED_TEMP 60.0
|
||||
#define HOTEND_TEMP 205.0
|
||||
#define OOZE_AMOUNT 0.3
|
||||
|
||||
#define SIZE_OF_INTERSECTION_CIRCLES 5
|
||||
#define SIZE_OF_CROSSHAIRS 3
|
||||
|
||||
#if SIZE_OF_CROSSHAIRS >= SIZE_OF_INTERSECTION_CIRCLES
|
||||
#error "SIZE_OF_CROSSHAIRS must be less than SIZE_OF_INTERSECTION_CIRCLES."
|
||||
#endif
|
||||
|
||||
/**
|
||||
* G26 Mesh Validation Tool
|
||||
*
|
||||
* G26 is a Mesh Validation Tool intended to provide support for the Marlin Unified Bed Leveling System.
|
||||
* In order to fully utilize and benefit from the Marlin Unified Bed Leveling System an accurate Mesh must
|
||||
* be defined. G29 is designed to allow the user to quickly validate the correctness of her Mesh. It will
|
||||
* first heat the bed and nozzle. It will then print lines and circles along the Mesh Cell boundaries and
|
||||
* the intersections of those lines (respectively).
|
||||
*
|
||||
* This action allows the user to immediately see where the Mesh is properly defined and where it needs to
|
||||
* be edited. The command will generate the Mesh lines closest to the nozzle's starting position. Alternatively
|
||||
* the user can specify the X and Y position of interest with command parameters. This allows the user to
|
||||
* focus on a particular area of the Mesh where attention is needed.
|
||||
*
|
||||
* B # Bed Set the Bed Temperature. If not specified, a default of 60 C. will be assumed.
|
||||
*
|
||||
* C Current When searching for Mesh Intersection points to draw, use the current nozzle location
|
||||
* as the base for any distance comparison.
|
||||
*
|
||||
* D Disable Disable the Unified Bed Leveling System. In the normal case the user is invoking this
|
||||
* command to see how well a Mesh as been adjusted to match a print surface. In order to do
|
||||
* this the Unified Bed Leveling System is turned on by the G26 command. The D parameter
|
||||
* alters the command's normal behaviour and disables the Unified Bed Leveling System even if
|
||||
* it is on.
|
||||
*
|
||||
* H # Hotend Set the Nozzle Temperature. If not specified, a default of 205 C. will be assumed.
|
||||
*
|
||||
* F # Filament Used to specify the diameter of the filament being used. If not specified
|
||||
* 1.75mm filament is assumed. If you are not getting acceptable results by using the
|
||||
* 'correct' numbers, you can scale this number up or down a little bit to change the amount
|
||||
* of filament that is being extruded during the printing of the various lines on the bed.
|
||||
*
|
||||
* K Keep-On Keep the heaters turned on at the end of the command.
|
||||
*
|
||||
* L # Layer Layer height. (Height of nozzle above bed) If not specified .20mm will be used.
|
||||
*
|
||||
* O # Ooooze How much your nozzle will Ooooze filament while getting in position to print. This
|
||||
* is over kill, but using this parameter will let you get the very first 'circle' perfect
|
||||
* so you have a trophy to peel off of the bed and hang up to show how perfectly you have your
|
||||
* Mesh calibrated. If not specified, a filament length of .3mm is assumed.
|
||||
*
|
||||
* P # Prime Prime the nozzle with specified length of filament. If this parameter is not
|
||||
* given, no prime action will take place. If the parameter specifies an amount, that much
|
||||
* will be purged before continuing. If no amount is specified the command will start
|
||||
* purging filament until the user provides an LCD Click and then it will continue with
|
||||
* printing the Mesh. You can carefully remove the spent filament with a needle nose
|
||||
* pliers while holding the LCD Click wheel in a depressed state.
|
||||
*
|
||||
* Q # Multiplier Retraction Multiplier. Normally not needed. Retraction defaults to 1.0mm and
|
||||
* un-retraction is at 1.2mm These numbers will be scaled by the specified amount
|
||||
*
|
||||
* R # Repeat Prints the number of patterns given as a parameter, starting at the current location.
|
||||
* If a parameter isn't given, every point will be printed unless G26 is interrupted.
|
||||
* This works the same way that the UBL G29 P4 R parameter works.
|
||||
*
|
||||
* S # Nozzle Used to control the size of nozzle diameter. If not specified, a .4mm nozzle is assumed.
|
||||
*
|
||||
* U # Random Randomize the order that the circles are drawn on the bed. The search for the closest
|
||||
* undrawn cicle is still done. But the distance to the location for each circle has a
|
||||
* random number of the size specified added to it. Specifying S50 will give an interesting
|
||||
* deviation from the normal behaviour on a 10 x 10 Mesh.
|
||||
*
|
||||
* X # X Coord. Specify the starting location of the drawing activity.
|
||||
*
|
||||
* Y # Y Coord. Specify the starting location of the drawing activity.
|
||||
*/
|
||||
|
||||
// External references
|
||||
|
||||
extern float feedrate_mm_s; // must set before calling prepare_move_to_destination
|
||||
extern Planner planner;
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
extern char lcd_status_message[];
|
||||
#endif
|
||||
extern float destination[XYZE];
|
||||
void set_destination_to_current();
|
||||
void set_current_to_destination();
|
||||
void prepare_move_to_destination();
|
||||
void lcd_setstatusPGM(const char* const message, const int8_t level);
|
||||
void sync_plan_position_e();
|
||||
void chirp_at_user();
|
||||
|
||||
// Private functions
|
||||
|
||||
static uint16_t circle_flags[16], horizontal_mesh_line_flags[16], vertical_mesh_line_flags[16];
|
||||
float g26_e_axis_feedrate = 0.020,
|
||||
random_deviation = 0.0;
|
||||
|
||||
static bool g26_retracted = false; // Track the retracted state of the nozzle so mismatched
|
||||
// retracts/recovers won't result in a bad state.
|
||||
|
||||
float valid_trig_angle(float);
|
||||
|
||||
float unified_bed_leveling::g26_extrusion_multiplier,
|
||||
unified_bed_leveling::g26_retraction_multiplier,
|
||||
unified_bed_leveling::g26_nozzle,
|
||||
unified_bed_leveling::g26_filament_diameter,
|
||||
unified_bed_leveling::g26_layer_height,
|
||||
unified_bed_leveling::g26_prime_length,
|
||||
unified_bed_leveling::g26_x_pos,
|
||||
unified_bed_leveling::g26_y_pos,
|
||||
unified_bed_leveling::g26_ooze_amount;
|
||||
|
||||
int16_t unified_bed_leveling::g26_bed_temp,
|
||||
unified_bed_leveling::g26_hotend_temp;
|
||||
|
||||
int8_t unified_bed_leveling::g26_prime_flag;
|
||||
|
||||
bool unified_bed_leveling::g26_continue_with_closest,
|
||||
unified_bed_leveling::g26_keep_heaters_on;
|
||||
|
||||
int16_t unified_bed_leveling::g26_repeats;
|
||||
|
||||
void unified_bed_leveling::G26_line_to_destination(const float &feed_rate) {
|
||||
const float save_feedrate = feedrate_mm_s;
|
||||
feedrate_mm_s = feed_rate; // use specified feed rate
|
||||
prepare_move_to_destination(); // will ultimately call ubl.line_to_destination_cartesian or ubl.prepare_linear_move_to for UBL_DELTA
|
||||
feedrate_mm_s = save_feedrate; // restore global feed rate
|
||||
}
|
||||
|
||||
/**
|
||||
* Detect ubl_lcd_clicked, debounce it, and return true for cancel
|
||||
*/
|
||||
bool user_canceled() {
|
||||
if (!ubl_lcd_clicked()) return false;
|
||||
safe_delay(10); // Wait for click to settle
|
||||
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
lcd_setstatusPGM(PSTR("Mesh Validation Stopped."), 99);
|
||||
lcd_quick_feedback();
|
||||
#endif
|
||||
|
||||
while (!ubl_lcd_clicked()) idle(); // Wait for button release
|
||||
|
||||
// If the button is suddenly pressed again,
|
||||
// ask the user to resolve the issue
|
||||
lcd_setstatusPGM(PSTR("Release button"), 99); // will never appear...
|
||||
while (ubl_lcd_clicked()) idle(); // unless this loop happens
|
||||
lcd_reset_status();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* G26: Mesh Validation Pattern generation.
|
||||
*
|
||||
* Used to interactively edit UBL's Mesh by placing the
|
||||
* nozzle in a problem area and doing a G29 P4 R command.
|
||||
*/
|
||||
void unified_bed_leveling::G26() {
|
||||
SERIAL_ECHOLNPGM("G26 command started. Waiting for heater(s).");
|
||||
float tmp, start_angle, end_angle;
|
||||
int i, xi, yi;
|
||||
mesh_index_pair location;
|
||||
|
||||
// Don't allow Mesh Validation without homing first,
|
||||
// or if the parameter parsing did not go OK, abort
|
||||
if (axis_unhomed_error() || parse_G26_parameters()) return;
|
||||
|
||||
if (current_position[Z_AXIS] < Z_CLEARANCE_BETWEEN_PROBES) {
|
||||
do_blocking_move_to_z(Z_CLEARANCE_BETWEEN_PROBES);
|
||||
stepper.synchronize();
|
||||
set_current_to_destination();
|
||||
}
|
||||
|
||||
if (turn_on_heaters()) goto LEAVE;
|
||||
|
||||
current_position[E_AXIS] = 0.0;
|
||||
sync_plan_position_e();
|
||||
|
||||
if (g26_prime_flag && prime_nozzle()) goto LEAVE;
|
||||
|
||||
/**
|
||||
* Bed is preheated
|
||||
*
|
||||
* Nozzle is at temperature
|
||||
*
|
||||
* Filament is primed!
|
||||
*
|
||||
* It's "Show Time" !!!
|
||||
*/
|
||||
|
||||
ZERO(circle_flags);
|
||||
ZERO(horizontal_mesh_line_flags);
|
||||
ZERO(vertical_mesh_line_flags);
|
||||
|
||||
// Move nozzle to the specified height for the first layer
|
||||
set_destination_to_current();
|
||||
destination[Z_AXIS] = g26_layer_height;
|
||||
move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], 0.0);
|
||||
move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], g26_ooze_amount);
|
||||
|
||||
has_control_of_lcd_panel = true;
|
||||
//debug_current_and_destination(PSTR("Starting G26 Mesh Validation Pattern."));
|
||||
|
||||
/**
|
||||
* Declare and generate a sin() & cos() table to be used during the circle drawing. This will lighten
|
||||
* the CPU load and make the arc drawing faster and more smooth
|
||||
*/
|
||||
float sin_table[360 / 30 + 1], cos_table[360 / 30 + 1];
|
||||
for (i = 0; i <= 360 / 30; i++) {
|
||||
cos_table[i] = SIZE_OF_INTERSECTION_CIRCLES * cos(RADIANS(valid_trig_angle(i * 30.0)));
|
||||
sin_table[i] = SIZE_OF_INTERSECTION_CIRCLES * sin(RADIANS(valid_trig_angle(i * 30.0)));
|
||||
}
|
||||
|
||||
do {
|
||||
location = g26_continue_with_closest
|
||||
? find_closest_circle_to_print(current_position[X_AXIS], current_position[Y_AXIS])
|
||||
: find_closest_circle_to_print(g26_x_pos, g26_y_pos); // Find the closest Mesh Intersection to where we are now.
|
||||
|
||||
if (location.x_index >= 0 && location.y_index >= 0) {
|
||||
const float circle_x = mesh_index_to_xpos(location.x_index),
|
||||
circle_y = mesh_index_to_ypos(location.y_index);
|
||||
|
||||
// If this mesh location is outside the printable_radius, skip it.
|
||||
|
||||
if (!position_is_reachable_raw_xy(circle_x, circle_y)) continue;
|
||||
|
||||
xi = location.x_index; // Just to shrink the next few lines and make them easier to understand
|
||||
yi = location.y_index;
|
||||
|
||||
if (g26_debug_flag) {
|
||||
SERIAL_ECHOPAIR(" Doing circle at: (xi=", xi);
|
||||
SERIAL_ECHOPAIR(", yi=", yi);
|
||||
SERIAL_CHAR(')');
|
||||
SERIAL_EOL;
|
||||
}
|
||||
|
||||
start_angle = 0.0; // assume it is going to be a full circle
|
||||
end_angle = 360.0;
|
||||
if (xi == 0) { // Check for bottom edge
|
||||
start_angle = -90.0;
|
||||
end_angle = 90.0;
|
||||
if (yi == 0) // it is an edge, check for the two left corners
|
||||
start_angle = 0.0;
|
||||
else if (yi == GRID_MAX_POINTS_Y - 1)
|
||||
end_angle = 0.0;
|
||||
}
|
||||
else if (xi == GRID_MAX_POINTS_X - 1) { // Check for top edge
|
||||
start_angle = 90.0;
|
||||
end_angle = 270.0;
|
||||
if (yi == 0) // it is an edge, check for the two right corners
|
||||
end_angle = 180.0;
|
||||
else if (yi == GRID_MAX_POINTS_Y - 1)
|
||||
start_angle = 180.0;
|
||||
}
|
||||
else if (yi == 0) {
|
||||
start_angle = 0.0; // only do the top side of the cirlce
|
||||
end_angle = 180.0;
|
||||
}
|
||||
else if (yi == GRID_MAX_POINTS_Y - 1) {
|
||||
start_angle = 180.0; // only do the bottom side of the cirlce
|
||||
end_angle = 360.0;
|
||||
}
|
||||
|
||||
for (tmp = start_angle; tmp < end_angle - 0.1; tmp += 30.0) {
|
||||
|
||||
if (user_canceled()) goto LEAVE; // Check if the user wants to stop the Mesh Validation
|
||||
|
||||
int tmp_div_30 = tmp / 30.0;
|
||||
if (tmp_div_30 < 0) tmp_div_30 += 360 / 30;
|
||||
if (tmp_div_30 > 11) tmp_div_30 -= 360 / 30;
|
||||
|
||||
float x = circle_x + cos_table[tmp_div_30], // for speed, these are now a lookup table entry
|
||||
y = circle_y + sin_table[tmp_div_30],
|
||||
xe = circle_x + cos_table[tmp_div_30 + 1],
|
||||
ye = circle_y + sin_table[tmp_div_30 + 1];
|
||||
#if IS_KINEMATIC
|
||||
// Check to make sure this segment is entirely on the bed, skip if not.
|
||||
if (!position_is_reachable_raw_xy(x, y) || !position_is_reachable_raw_xy(xe, ye)) continue;
|
||||
#else // not, we need to skip
|
||||
x = constrain(x, X_MIN_POS + 1, X_MAX_POS - 1); // This keeps us from bumping the endstops
|
||||
y = constrain(y, Y_MIN_POS + 1, Y_MAX_POS - 1);
|
||||
xe = constrain(xe, X_MIN_POS + 1, X_MAX_POS - 1);
|
||||
ye = constrain(ye, Y_MIN_POS + 1, Y_MAX_POS - 1);
|
||||
#endif
|
||||
|
||||
//if (g26_debug_flag) {
|
||||
// char ccc, *cptr, seg_msg[50], seg_num[10];
|
||||
// strcpy(seg_msg, " segment: ");
|
||||
// strcpy(seg_num, " \n");
|
||||
// cptr = (char*) "01234567890ABCDEF????????";
|
||||
// ccc = cptr[tmp_div_30];
|
||||
// seg_num[1] = ccc;
|
||||
// strcat(seg_msg, seg_num);
|
||||
// debug_current_and_destination(seg_msg);
|
||||
//}
|
||||
|
||||
print_line_from_here_to_there(LOGICAL_X_POSITION(x), LOGICAL_Y_POSITION(y), g26_layer_height, LOGICAL_X_POSITION(xe), LOGICAL_Y_POSITION(ye), g26_layer_height);
|
||||
|
||||
}
|
||||
if (look_for_lines_to_connect())
|
||||
goto LEAVE;
|
||||
}
|
||||
} while (--g26_repeats && location.x_index >= 0 && location.y_index >= 0);
|
||||
|
||||
LEAVE:
|
||||
lcd_setstatusPGM(PSTR("Leaving G26"), -1);
|
||||
|
||||
retract_filament(destination);
|
||||
destination[Z_AXIS] = Z_CLEARANCE_BETWEEN_PROBES;
|
||||
|
||||
//debug_current_and_destination(PSTR("ready to do Z-Raise."));
|
||||
move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], 0); // Raise the nozzle
|
||||
//debug_current_and_destination(PSTR("done doing Z-Raise."));
|
||||
|
||||
destination[X_AXIS] = g26_x_pos; // Move back to the starting position
|
||||
destination[Y_AXIS] = g26_y_pos;
|
||||
//destination[Z_AXIS] = Z_CLEARANCE_BETWEEN_PROBES; // Keep the nozzle where it is
|
||||
|
||||
move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], 0); // Move back to the starting position
|
||||
//debug_current_and_destination(PSTR("done doing X/Y move."));
|
||||
|
||||
has_control_of_lcd_panel = false; // Give back control of the LCD Panel!
|
||||
|
||||
if (!g26_keep_heaters_on) {
|
||||
#if HAS_TEMP_BED
|
||||
thermalManager.setTargetBed(0);
|
||||
#endif
|
||||
thermalManager.setTargetHotend(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
float valid_trig_angle(float d) {
|
||||
while (d > 360.0) d -= 360.0;
|
||||
while (d < 0.0) d += 360.0;
|
||||
return d;
|
||||
}
|
||||
|
||||
mesh_index_pair unified_bed_leveling::find_closest_circle_to_print(const float &X, const float &Y) {
|
||||
float closest = 99999.99;
|
||||
mesh_index_pair return_val;
|
||||
|
||||
return_val.x_index = return_val.y_index = -1;
|
||||
|
||||
for (uint8_t i = 0; i < GRID_MAX_POINTS_X; i++) {
|
||||
for (uint8_t j = 0; j < GRID_MAX_POINTS_Y; j++) {
|
||||
if (!is_bit_set(circle_flags, i, j)) {
|
||||
const float mx = mesh_index_to_xpos(i), // We found a circle that needs to be printed
|
||||
my = mesh_index_to_ypos(j);
|
||||
|
||||
// Get the distance to this intersection
|
||||
float f = HYPOT(X - mx, Y - my);
|
||||
|
||||
// It is possible that we are being called with the values
|
||||
// to let us find the closest circle to the start position.
|
||||
// But if this is not the case, add a small weighting to the
|
||||
// distance calculation to help it choose a better place to continue.
|
||||
f += HYPOT(g26_x_pos - mx, g26_y_pos - my) / 15.0;
|
||||
|
||||
// Add in the specified amount of Random Noise to our search
|
||||
if (random_deviation > 1.0)
|
||||
f += random(0.0, random_deviation);
|
||||
|
||||
if (f < closest) {
|
||||
closest = f; // We found a closer location that is still
|
||||
return_val.x_index = i; // un-printed --- save the data for it
|
||||
return_val.y_index = j;
|
||||
return_val.distance = closest;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
bit_set(circle_flags, return_val.x_index, return_val.y_index); // Mark this location as done.
|
||||
return return_val;
|
||||
}
|
||||
|
||||
bool unified_bed_leveling::look_for_lines_to_connect() {
|
||||
float sx, sy, ex, ey;
|
||||
|
||||
for (uint8_t i = 0; i < GRID_MAX_POINTS_X; i++) {
|
||||
for (uint8_t j = 0; j < GRID_MAX_POINTS_Y; j++) {
|
||||
|
||||
if (user_canceled()) return true; // Check if the user wants to stop the Mesh Validation
|
||||
|
||||
if (i < GRID_MAX_POINTS_X) { // We can't connect to anything to the right than GRID_MAX_POINTS_X.
|
||||
// This is already a half circle because we are at the edge of the bed.
|
||||
|
||||
if (is_bit_set(circle_flags, i, j) && is_bit_set(circle_flags, i + 1, j)) { // check if we can do a line to the left
|
||||
if (!is_bit_set(horizontal_mesh_line_flags, i, j)) {
|
||||
|
||||
//
|
||||
// We found two circles that need a horizontal line to connect them
|
||||
// Print it!
|
||||
//
|
||||
sx = mesh_index_to_xpos( i ) + (SIZE_OF_INTERSECTION_CIRCLES - (SIZE_OF_CROSSHAIRS)); // right edge
|
||||
ex = mesh_index_to_xpos(i + 1) - (SIZE_OF_INTERSECTION_CIRCLES - (SIZE_OF_CROSSHAIRS)); // left edge
|
||||
|
||||
sx = constrain(sx, X_MIN_POS + 1, X_MAX_POS - 1);
|
||||
sy = ey = constrain(mesh_index_to_ypos(j), Y_MIN_POS + 1, Y_MAX_POS - 1);
|
||||
ex = constrain(ex, X_MIN_POS + 1, X_MAX_POS - 1);
|
||||
|
||||
if (position_is_reachable_raw_xy(sx, sy) && position_is_reachable_raw_xy(ex, ey)) {
|
||||
|
||||
if (g26_debug_flag) {
|
||||
SERIAL_ECHOPAIR(" Connecting with horizontal line (sx=", sx);
|
||||
SERIAL_ECHOPAIR(", sy=", sy);
|
||||
SERIAL_ECHOPAIR(") -> (ex=", ex);
|
||||
SERIAL_ECHOPAIR(", ey=", ey);
|
||||
SERIAL_CHAR(')');
|
||||
SERIAL_EOL;
|
||||
//debug_current_and_destination(PSTR("Connecting horizontal line."));
|
||||
}
|
||||
|
||||
print_line_from_here_to_there(LOGICAL_X_POSITION(sx), LOGICAL_Y_POSITION(sy), g26_layer_height, LOGICAL_X_POSITION(ex), LOGICAL_Y_POSITION(ey), g26_layer_height);
|
||||
}
|
||||
bit_set(horizontal_mesh_line_flags, i, j); // Mark it as done so we don't do it again, even if we skipped it
|
||||
}
|
||||
}
|
||||
|
||||
if (j < GRID_MAX_POINTS_Y) { // We can't connect to anything further back than GRID_MAX_POINTS_Y.
|
||||
// This is already a half circle because we are at the edge of the bed.
|
||||
|
||||
if (is_bit_set(circle_flags, i, j) && is_bit_set(circle_flags, i, j + 1)) { // check if we can do a line straight down
|
||||
if (!is_bit_set( vertical_mesh_line_flags, i, j)) {
|
||||
//
|
||||
// We found two circles that need a vertical line to connect them
|
||||
// Print it!
|
||||
//
|
||||
sy = mesh_index_to_ypos( j ) + (SIZE_OF_INTERSECTION_CIRCLES - (SIZE_OF_CROSSHAIRS)); // top edge
|
||||
ey = mesh_index_to_ypos(j + 1) - (SIZE_OF_INTERSECTION_CIRCLES - (SIZE_OF_CROSSHAIRS)); // bottom edge
|
||||
|
||||
sx = ex = constrain(mesh_index_to_xpos(i), X_MIN_POS + 1, X_MAX_POS - 1);
|
||||
sy = constrain(sy, Y_MIN_POS + 1, Y_MAX_POS - 1);
|
||||
ey = constrain(ey, Y_MIN_POS + 1, Y_MAX_POS - 1);
|
||||
|
||||
if (position_is_reachable_raw_xy(sx, sy) && position_is_reachable_raw_xy(ex, ey)) {
|
||||
|
||||
if (g26_debug_flag) {
|
||||
SERIAL_ECHOPAIR(" Connecting with vertical line (sx=", sx);
|
||||
SERIAL_ECHOPAIR(", sy=", sy);
|
||||
SERIAL_ECHOPAIR(") -> (ex=", ex);
|
||||
SERIAL_ECHOPAIR(", ey=", ey);
|
||||
SERIAL_CHAR(')');
|
||||
SERIAL_EOL;
|
||||
debug_current_and_destination(PSTR("Connecting vertical line."));
|
||||
}
|
||||
print_line_from_here_to_there(LOGICAL_X_POSITION(sx), LOGICAL_Y_POSITION(sy), g26_layer_height, LOGICAL_X_POSITION(ex), LOGICAL_Y_POSITION(ey), g26_layer_height);
|
||||
}
|
||||
bit_set(vertical_mesh_line_flags, i, j); // Mark it as done so we don't do it again, even if skipped
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void unified_bed_leveling::move_to(const float &x, const float &y, const float &z, const float &e_delta) {
|
||||
float feed_value;
|
||||
static float last_z = -999.99;
|
||||
|
||||
bool has_xy_component = (x != current_position[X_AXIS] || y != current_position[Y_AXIS]); // Check if X or Y is involved in the movement.
|
||||
|
||||
if (z != last_z) {
|
||||
last_z = z;
|
||||
feed_value = planner.max_feedrate_mm_s[Z_AXIS]/(3.0); // Base the feed rate off of the configured Z_AXIS feed rate
|
||||
|
||||
destination[X_AXIS] = current_position[X_AXIS];
|
||||
destination[Y_AXIS] = current_position[Y_AXIS];
|
||||
destination[Z_AXIS] = z; // We know the last_z==z or we wouldn't be in this block of code.
|
||||
destination[E_AXIS] = current_position[E_AXIS];
|
||||
|
||||
G26_line_to_destination(feed_value);
|
||||
|
||||
stepper.synchronize();
|
||||
set_destination_to_current();
|
||||
}
|
||||
|
||||
// Check if X or Y is involved in the movement.
|
||||
// Yes: a 'normal' movement. No: a retract() or recover()
|
||||
feed_value = has_xy_component ? PLANNER_XY_FEEDRATE() / 10.0 : planner.max_feedrate_mm_s[E_AXIS] / 1.5;
|
||||
|
||||
if (g26_debug_flag) SERIAL_ECHOLNPAIR("in move_to() feed_value for XY:", feed_value);
|
||||
|
||||
destination[X_AXIS] = x;
|
||||
destination[Y_AXIS] = y;
|
||||
destination[E_AXIS] += e_delta;
|
||||
|
||||
G26_line_to_destination(feed_value);
|
||||
|
||||
stepper.synchronize();
|
||||
set_destination_to_current();
|
||||
|
||||
}
|
||||
|
||||
void unified_bed_leveling::retract_filament(float where[XYZE]) {
|
||||
if (!g26_retracted) { // Only retract if we are not already retracted!
|
||||
g26_retracted = true;
|
||||
move_to(where[X_AXIS], where[Y_AXIS], where[Z_AXIS], -1.0 * g26_retraction_multiplier);
|
||||
}
|
||||
}
|
||||
|
||||
void unified_bed_leveling::recover_filament(float where[XYZE]) {
|
||||
if (g26_retracted) { // Only un-retract if we are retracted.
|
||||
move_to(where[X_AXIS], where[Y_AXIS], where[Z_AXIS], 1.2 * g26_retraction_multiplier);
|
||||
g26_retracted = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* print_line_from_here_to_there() takes two cartesian coordinates and draws a line from one
|
||||
* to the other. But there are really three sets of coordinates involved. The first coordinate
|
||||
* is the present location of the nozzle. We don't necessarily want to print from this location.
|
||||
* We first need to move the nozzle to the start of line segment where we want to print. Once
|
||||
* there, we can use the two coordinates supplied to draw the line.
|
||||
*
|
||||
* Note: Although we assume the first set of coordinates is the start of the line and the second
|
||||
* set of coordinates is the end of the line, it does not always work out that way. This function
|
||||
* optimizes the movement to minimize the travel distance before it can start printing. This saves
|
||||
* a lot of time and eleminates a lot of non-sensical movement of the nozzle. However, it does
|
||||
* cause a lot of very little short retracement of th nozzle when it draws the very first line
|
||||
* segment of a 'circle'. The time this requires is very short and is easily saved by the other
|
||||
* cases where the optimization comes into play.
|
||||
*/
|
||||
void unified_bed_leveling::print_line_from_here_to_there(const float &sx, const float &sy, const float &sz, const float &ex, const float &ey, const float &ez) {
|
||||
const float dx_s = current_position[X_AXIS] - sx, // find our distance from the start of the actual line segment
|
||||
dy_s = current_position[Y_AXIS] - sy,
|
||||
dist_start = HYPOT2(dx_s, dy_s), // We don't need to do a sqrt(), we can compare the distance^2
|
||||
// to save computation time
|
||||
dx_e = current_position[X_AXIS] - ex, // find our distance from the end of the actual line segment
|
||||
dy_e = current_position[Y_AXIS] - ey,
|
||||
dist_end = HYPOT2(dx_e, dy_e),
|
||||
|
||||
line_length = HYPOT(ex - sx, ey - sy);
|
||||
|
||||
// If the end point of the line is closer to the nozzle, flip the direction,
|
||||
// moving from the end to the start. On very small lines the optimization isn't worth it.
|
||||
if (dist_end < dist_start && (SIZE_OF_INTERSECTION_CIRCLES) < abs(line_length)) {
|
||||
return print_line_from_here_to_there(ex, ey, ez, sx, sy, sz);
|
||||
}
|
||||
|
||||
// Decide whether to retract & bump
|
||||
|
||||
if (dist_start > 2.0) {
|
||||
retract_filament(destination);
|
||||
//todo: parameterize the bump height with a define
|
||||
move_to(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS] + 0.500, 0.0); // Z bump to minimize scraping
|
||||
move_to(sx, sy, sz + 0.500, 0.0); // Get to the starting point with no extrusion while bumped
|
||||
}
|
||||
|
||||
move_to(sx, sy, sz, 0.0); // Get to the starting point with no extrusion / un-Z bump
|
||||
|
||||
const float e_pos_delta = line_length * g26_e_axis_feedrate * g26_extrusion_multiplier;
|
||||
|
||||
recover_filament(destination);
|
||||
move_to(ex, ey, ez, e_pos_delta); // Get to the ending point with an appropriate amount of extrusion
|
||||
}
|
||||
|
||||
/**
|
||||
* This function used to be inline code in G26. But there are so many
|
||||
* parameters it made sense to turn them into static globals and get
|
||||
* this code out of sight of the main routine.
|
||||
*/
|
||||
bool unified_bed_leveling::parse_G26_parameters() {
|
||||
|
||||
g26_extrusion_multiplier = EXTRUSION_MULTIPLIER;
|
||||
g26_retraction_multiplier = RETRACTION_MULTIPLIER;
|
||||
g26_nozzle = NOZZLE;
|
||||
g26_filament_diameter = FILAMENT;
|
||||
g26_layer_height = LAYER_HEIGHT;
|
||||
g26_prime_length = PRIME_LENGTH;
|
||||
g26_bed_temp = BED_TEMP;
|
||||
g26_hotend_temp = HOTEND_TEMP;
|
||||
g26_prime_flag = 0;
|
||||
|
||||
g26_ooze_amount = parser.seen('O') && parser.has_value() ? parser.value_linear_units() : OOZE_AMOUNT;
|
||||
g26_keep_heaters_on = parser.seen('K') && parser.value_bool();
|
||||
g26_continue_with_closest = parser.seen('C') && parser.value_bool();
|
||||
|
||||
if (parser.seen('B')) {
|
||||
g26_bed_temp = parser.value_celsius();
|
||||
if (!WITHIN(g26_bed_temp, 15, 140)) {
|
||||
SERIAL_PROTOCOLLNPGM("?Specified bed temperature not plausible.");
|
||||
return UBL_ERR;
|
||||
}
|
||||
}
|
||||
|
||||
if (parser.seen('L')) {
|
||||
g26_layer_height = parser.value_linear_units();
|
||||
if (!WITHIN(g26_layer_height, 0.0, 2.0)) {
|
||||
SERIAL_PROTOCOLLNPGM("?Specified layer height not plausible.");
|
||||
return UBL_ERR;
|
||||
}
|
||||
}
|
||||
|
||||
if (parser.seen('Q')) {
|
||||
if (parser.has_value()) {
|
||||
g26_retraction_multiplier = parser.value_float();
|
||||
if (!WITHIN(g26_retraction_multiplier, 0.05, 15.0)) {
|
||||
SERIAL_PROTOCOLLNPGM("?Specified Retraction Multiplier not plausible.");
|
||||
return UBL_ERR;
|
||||
}
|
||||
}
|
||||
else {
|
||||
SERIAL_PROTOCOLLNPGM("?Retraction Multiplier must be specified.");
|
||||
return UBL_ERR;
|
||||
}
|
||||
}
|
||||
|
||||
if (parser.seen('S')) {
|
||||
g26_nozzle = parser.value_float();
|
||||
if (!WITHIN(g26_nozzle, 0.1, 1.0)) {
|
||||
SERIAL_PROTOCOLLNPGM("?Specified nozzle size not plausible.");
|
||||
return UBL_ERR;
|
||||
}
|
||||
}
|
||||
|
||||
if (parser.seen('P')) {
|
||||
if (!parser.has_value())
|
||||
g26_prime_flag = -1;
|
||||
else {
|
||||
g26_prime_flag++;
|
||||
g26_prime_length = parser.value_linear_units();
|
||||
if (!WITHIN(g26_prime_length, 0.0, 25.0)) {
|
||||
SERIAL_PROTOCOLLNPGM("?Specified prime length not plausible.");
|
||||
return UBL_ERR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (parser.seen('F')) {
|
||||
g26_filament_diameter = parser.value_linear_units();
|
||||
if (!WITHIN(g26_filament_diameter, 1.0, 4.0)) {
|
||||
SERIAL_PROTOCOLLNPGM("?Specified filament size not plausible.");
|
||||
return UBL_ERR;
|
||||
}
|
||||
}
|
||||
g26_extrusion_multiplier *= sq(1.75) / sq(g26_filament_diameter); // If we aren't using 1.75mm filament, we need to
|
||||
// scale up or down the length needed to get the
|
||||
// same volume of filament
|
||||
|
||||
g26_extrusion_multiplier *= g26_filament_diameter * sq(g26_nozzle) / sq(0.3); // Scale up by nozzle size
|
||||
|
||||
if (parser.seen('H')) {
|
||||
g26_hotend_temp = parser.value_celsius();
|
||||
if (!WITHIN(g26_hotend_temp, 165, 280)) {
|
||||
SERIAL_PROTOCOLLNPGM("?Specified nozzle temperature not plausible.");
|
||||
return UBL_ERR;
|
||||
}
|
||||
}
|
||||
|
||||
if (parser.seen('U')) {
|
||||
randomSeed(millis());
|
||||
// This setting will persist for the next G26
|
||||
random_deviation = parser.has_value() ? parser.value_float() : 50.0;
|
||||
}
|
||||
|
||||
g26_repeats = parser.seen('R') ? (parser.has_value() ? parser.value_int() : GRID_MAX_POINTS + 1) : GRID_MAX_POINTS + 1;
|
||||
if (g26_repeats < 1) {
|
||||
SERIAL_PROTOCOLLNPGM("?(R)epeat value not plausible; must be at least 1.");
|
||||
return UBL_ERR;
|
||||
}
|
||||
|
||||
g26_x_pos = parser.seen('X') ? parser.value_linear_units() : current_position[X_AXIS];
|
||||
g26_y_pos = parser.seen('Y') ? parser.value_linear_units() : current_position[Y_AXIS];
|
||||
if (!position_is_reachable_xy(g26_x_pos, g26_y_pos)) {
|
||||
SERIAL_PROTOCOLLNPGM("?Specified X,Y coordinate out of bounds.");
|
||||
return UBL_ERR;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wait until all parameters are verified before altering the state!
|
||||
*/
|
||||
state.active = !parser.seen('D');
|
||||
|
||||
return UBL_OK;
|
||||
}
|
||||
|
||||
bool unified_bed_leveling::exit_from_g26() {
|
||||
lcd_setstatusPGM(PSTR("Leaving G26"), -1);
|
||||
while (ubl_lcd_clicked()) idle();
|
||||
return UBL_ERR;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turn on the bed and nozzle heat and
|
||||
* wait for them to get up to temperature.
|
||||
*/
|
||||
bool unified_bed_leveling::turn_on_heaters() {
|
||||
millis_t next;
|
||||
#if HAS_TEMP_BED
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
if (g26_bed_temp > 25) {
|
||||
lcd_setstatusPGM(PSTR("G26 Heating Bed."), 99);
|
||||
lcd_quick_feedback();
|
||||
#endif
|
||||
has_control_of_lcd_panel = true;
|
||||
thermalManager.setTargetBed(g26_bed_temp);
|
||||
next = millis() + 5000UL;
|
||||
while (abs(thermalManager.degBed() - g26_bed_temp) > 3) {
|
||||
if (ubl_lcd_clicked()) return exit_from_g26();
|
||||
if (PENDING(millis(), next)) {
|
||||
next = millis() + 5000UL;
|
||||
print_heaterstates();
|
||||
}
|
||||
idle();
|
||||
}
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
}
|
||||
lcd_setstatusPGM(PSTR("G26 Heating Nozzle."), 99);
|
||||
lcd_quick_feedback();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Start heating the nozzle and wait for it to reach temperature.
|
||||
thermalManager.setTargetHotend(g26_hotend_temp, 0);
|
||||
while (abs(thermalManager.degHotend(0) - g26_hotend_temp) > 3) {
|
||||
if (ubl_lcd_clicked()) return exit_from_g26();
|
||||
if (PENDING(millis(), next)) {
|
||||
next = millis() + 5000UL;
|
||||
print_heaterstates();
|
||||
}
|
||||
idle();
|
||||
}
|
||||
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
lcd_reset_status();
|
||||
lcd_quick_feedback();
|
||||
#endif
|
||||
|
||||
return UBL_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prime the nozzle if needed. Return true on error.
|
||||
*/
|
||||
bool unified_bed_leveling::prime_nozzle() {
|
||||
float Total_Prime = 0.0;
|
||||
|
||||
if (g26_prime_flag == -1) { // The user wants to control how much filament gets purged
|
||||
|
||||
has_control_of_lcd_panel = true;
|
||||
|
||||
lcd_setstatusPGM(PSTR("User-Controlled Prime"), 99);
|
||||
chirp_at_user();
|
||||
|
||||
set_destination_to_current();
|
||||
|
||||
recover_filament(destination); // Make sure G26 doesn't think the filament is retracted().
|
||||
|
||||
while (!ubl_lcd_clicked()) {
|
||||
chirp_at_user();
|
||||
destination[E_AXIS] += 0.25;
|
||||
#ifdef PREVENT_LENGTHY_EXTRUDE
|
||||
Total_Prime += 0.25;
|
||||
if (Total_Prime >= EXTRUDE_MAXLENGTH) return UBL_ERR;
|
||||
#endif
|
||||
G26_line_to_destination(planner.max_feedrate_mm_s[E_AXIS] / 15.0);
|
||||
|
||||
stepper.synchronize(); // Without this synchronize, the purge is more consistent,
|
||||
// but because the planner has a buffer, we won't be able
|
||||
// to stop as quickly. So we put up with the less smooth
|
||||
// action to give the user a more responsive 'Stop'.
|
||||
set_destination_to_current();
|
||||
idle();
|
||||
}
|
||||
|
||||
while (ubl_lcd_clicked()) idle(); // Debounce Encoder Wheel
|
||||
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
strcpy_P(lcd_status_message, PSTR("Done Priming")); // We can't do lcd_setstatusPGM() without having it continue;
|
||||
// So... We cheat to get a message up.
|
||||
lcd_setstatusPGM(PSTR("Done Priming"), 99);
|
||||
lcd_quick_feedback();
|
||||
#endif
|
||||
|
||||
has_control_of_lcd_panel = false;
|
||||
|
||||
}
|
||||
else {
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
lcd_setstatusPGM(PSTR("Fixed Length Prime."), 99);
|
||||
lcd_quick_feedback();
|
||||
#endif
|
||||
set_destination_to_current();
|
||||
destination[E_AXIS] += g26_prime_length;
|
||||
G26_line_to_destination(planner.max_feedrate_mm_s[E_AXIS] / 15.0);
|
||||
stepper.synchronize();
|
||||
set_destination_to_current();
|
||||
retract_filament(destination);
|
||||
}
|
||||
|
||||
return UBL_OK;
|
||||
}
|
||||
|
||||
#endif // AUTO_BED_LEVELING_UBL && UBL_G26_MESH_VALIDATION
|
||||
565
Marlin/Makefile
565
Marlin/Makefile
@@ -1,9 +1,10 @@
|
||||
# Sprinter Arduino Project Makefile
|
||||
# Marlin Firmware Arduino Project Makefile
|
||||
#
|
||||
# Makefile Based on:
|
||||
# Arduino 0011 Makefile
|
||||
# Arduino adaptation by mellis, eighthave, oli.keller
|
||||
# Marlin adaption by Daid
|
||||
# Marlin 2.0 support and RELOC_WORKAROUND by @marcio-ao
|
||||
#
|
||||
# This has been tested with Arduino 0022.
|
||||
#
|
||||
@@ -63,6 +64,9 @@ HARDWARE_MOTHERBOARD ?= 11
|
||||
ARDUINO_INSTALL_DIR ?= ${HOME}/Arduino
|
||||
ARDUINO_VERSION ?= 106
|
||||
|
||||
# The installed Libraries are in the User folder
|
||||
ARDUINO_USER_DIR ?= ${HOME}/Arduino
|
||||
|
||||
# You can optionally set a path to the avr-gcc tools. Requires a trailing slash. (ex: /usr/local/avr-gcc/bin)
|
||||
AVR_TOOLS_PATH ?=
|
||||
|
||||
@@ -82,6 +86,26 @@ LIQUID_TWI2 ?= 0
|
||||
# this defines if Wire is needed
|
||||
WIRE ?= 0
|
||||
|
||||
# this defines if U8GLIB is needed (may require RELOC_WORKAROUND)
|
||||
U8GLIB ?= 1
|
||||
|
||||
# this defines whether to include the Trinamic TMC2630Stepper
|
||||
TMC2630 ?= 1
|
||||
|
||||
############
|
||||
# Try to automatically determine whether RELOC_WORKAROUND is needed based
|
||||
# on GCC versions:
|
||||
# http://www.avrfreaks.net/comment/1789106#comment-1789106
|
||||
|
||||
CC_MAJ:=$(shell $(CC) -dM -E - < /dev/null | grep __GNUC__ | cut -f3 -d\ )
|
||||
CC_MIN:=$(shell $(CC) -dM -E - < /dev/null | grep __GNUC_MINOR__ | cut -f3 -d\ )
|
||||
CC_PATCHLEVEL:=$(shell $(CC) -dM -E - < /dev/null | grep __GNUC_PATCHLEVEL__ | cut -f3 -d\ )
|
||||
CC_VER:=$(shell echo $$(( $(CC_MAJ) * 10000 + $(CC_MIN) * 100 + $(CC_PATCHLEVEL) )))
|
||||
ifeq ($(shell test $(CC_VER) -lt 40901 && echo 1),1)
|
||||
@echo This version of GCC is likely broken. Enabling relocation workaround.
|
||||
RELOC_WORKAROUND = 1
|
||||
endif
|
||||
|
||||
############################################################################
|
||||
# Below here nothing should be changed...
|
||||
|
||||
@@ -89,152 +113,296 @@ WIRE ?= 0
|
||||
# HARDWARE_VARIANT = "arduino", "Sanguino", "Gen7", ...
|
||||
# MCU = "atmega1280", "Mega2560", "atmega2560", "atmega644p", ...
|
||||
|
||||
#Gen7
|
||||
ifeq ($(HARDWARE_MOTHERBOARD),10)
|
||||
ifeq ($(HARDWARE_MOTHERBOARD),0)
|
||||
|
||||
# No motherboard selected
|
||||
|
||||
#
|
||||
# RAMPS 1.3 / 1.4 - ATmega1280, ATmega2560
|
||||
#
|
||||
|
||||
# MEGA/RAMPS up to 1.2
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),3)
|
||||
|
||||
# RAMPS 1.3 (Power outputs: Hotend, Fan, Bed)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),33)
|
||||
# RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Bed)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),34)
|
||||
# RAMPS 1.3 (Power outputs: Hotend, Fan0, Fan1)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),35)
|
||||
# RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Fan)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),36)
|
||||
# RAMPS 1.3 (Power outputs: Spindle, Controller Fan)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),38)
|
||||
|
||||
# RAMPS 1.4 (Power outputs: Hotend, Fan, Bed)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),43)
|
||||
# RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Bed)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),44)
|
||||
# RAMPS 1.4 (Power outputs: Hotend, Fan0, Fan1)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),45)
|
||||
# RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Fan)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),46)
|
||||
# RAMPS 1.4 (Power outputs: Spindle, Controller Fan)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),48)
|
||||
|
||||
# RAMPS Plus 3DYMY (Power outputs: Hotend, Fan, Bed)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),143)
|
||||
# RAMPS Plus 3DYMY (Power outputs: Hotend0, Hotend1, Bed)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),144)
|
||||
# RAMPS Plus 3DYMY (Power outputs: Hotend, Fan0, Fan1)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),145)
|
||||
# RAMPS Plus 3DYMY (Power outputs: Hotend0, Hotend1, Fan)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),146)
|
||||
# RAMPS Plus 3DYMY (Power outputs: Spindle, Controller Fan)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),148)
|
||||
|
||||
#
|
||||
# RAMPS Derivatives - ATmega1280, ATmega2560
|
||||
#
|
||||
|
||||
# 3Drag Controller
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),77)
|
||||
# Velleman K8200 Controller (derived from 3Drag Controller)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),78)
|
||||
# Velleman K8400 Controller (derived from 3Drag Controller)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),79)
|
||||
# 2PrintBeta BAM&DICE with STK drivers
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),401)
|
||||
# 2PrintBeta BAM&DICE Due with STK drivers
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),402)
|
||||
# MKS BASE v1.0
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),40)
|
||||
# MKS v1.5 with Allegro A4982 stepper drivers
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),405)
|
||||
# MKS BASE 1.0 with Heroic HR4982 stepper drivers
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),41)
|
||||
# MKS GEN v1.3 or 1.4
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),47)
|
||||
# MKS GEN L
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),53)
|
||||
# zrib V2.0 control board (Chinese knock off RAMPS replica)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),504)
|
||||
# Felix 2.0+ Electronics Board (RAMPS like)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),37)
|
||||
# Invent-A-Part RigidBoard
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),42)
|
||||
# Invent-A-Part RigidBoard V2
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),52)
|
||||
# Sainsmart 2-in-1 board
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),49)
|
||||
# Ultimaker
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),7)
|
||||
# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),71)
|
||||
MCU ?= atmega1280
|
||||
# Azteeg X3
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),67)
|
||||
# Azteeg X3 Pro
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),68)
|
||||
# Ultimainboard 2.x (Uses TEMP_SENSOR 20)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),72)
|
||||
# Rumba
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),80)
|
||||
# bq ZUM Mega 3D
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),503)
|
||||
# MakeBoard Mini v2.1.2 is a control board sold by MicroMake
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),431)
|
||||
# TriGorilla Anycubic version 1.3 based on RAMPS EFB
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),343)
|
||||
# TriGorilla Anycubic version 1.4 based on RAMPS EFB
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),443)
|
||||
# Creality: Ender-4, CR-8
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),243)
|
||||
|
||||
#
|
||||
# Other ATmega1280, ATmega2560
|
||||
#
|
||||
|
||||
# Cartesio CN Controls V11
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),111)
|
||||
# Cartesio CN Controls V12
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),112)
|
||||
# Cheaptronic v1.0
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),2)
|
||||
# Cheaptronic v2.0
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),21)
|
||||
# Makerbot Mightyboard Revision E
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),200)
|
||||
# Megatronics
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),70)
|
||||
# Megatronics v2.0
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),701)
|
||||
# Megatronics v3.0
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),703)
|
||||
# Megatronics v3.1
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),704)
|
||||
# Rambo
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),301)
|
||||
# Mini-Rambo
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),302)
|
||||
# Mini-Rambo 1.0a
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),303)
|
||||
# Einsy Rambo
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),304)
|
||||
# Einsy Retro
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),305)
|
||||
# Elefu Ra Board (v3)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),21)
|
||||
# Leapfrog
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),999)
|
||||
# Mega controller
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),310)
|
||||
# abee Scoovo X9H
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),321)
|
||||
# Geeetech GT2560 Rev. A
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),74)
|
||||
# Geeetech GT2560 Rev. A+ (with auto level probe)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),75)
|
||||
|
||||
#
|
||||
# ATmega1281, ATmega2561
|
||||
#
|
||||
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),702)
|
||||
MCU ?= atmega1281
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),25)
|
||||
MCU ?= atmega1281
|
||||
|
||||
#
|
||||
# Sanguinololu and Derivatives - ATmega644P, ATmega1284P
|
||||
#
|
||||
|
||||
# Sanguinololu < 1.2
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),6)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
# Sanguinololu 1.2 and above
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),62)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
# Melzi
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),63)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
# Melzi with ATmega1284 (MaKr3d version)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),66)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
# Melzi Creality3D board (for CR-10 etc)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),89)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
# Melzi Malyan M150 board
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),92)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
# Tronxy X5S
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),505)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
# STB V1.1
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),64)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
# Azteeg X1
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),65)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
# Anet 1.0 (Melzi clone)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),69)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
|
||||
#
|
||||
# Other ATmega644P, ATmega644, ATmega1284P
|
||||
#
|
||||
|
||||
# Gen3 Monolithic Electronics
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),22)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
# Gen3+
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),9)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
# Gen6
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),5)
|
||||
HARDWARE_VARIANT ?= Gen6
|
||||
MCU ?= atmega644p
|
||||
# Gen6 deluxe
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),51)
|
||||
HARDWARE_VARIANT ?= Gen6
|
||||
MCU ?= atmega644p
|
||||
# Gen7 custom (Alfons3 Version)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),10)
|
||||
HARDWARE_VARIANT ?= Gen7
|
||||
MCU ?= atmega644
|
||||
F_CPU ?= 20000000
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),11)
|
||||
# Gen7 v1.1, v1.2
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),11)
|
||||
HARDWARE_VARIANT ?= Gen7
|
||||
MCU ?= atmega644p
|
||||
F_CPU ?= 20000000
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),12)
|
||||
# Gen7 v1.3
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),12)
|
||||
HARDWARE_VARIANT ?= Gen7
|
||||
MCU ?= atmega644p
|
||||
F_CPU ?= 20000000
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),13)
|
||||
# Gen7 v1.4
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),13)
|
||||
HARDWARE_VARIANT ?= Gen7
|
||||
MCU ?= atmega1284p
|
||||
F_CPU ?= 20000000
|
||||
|
||||
#RAMPS
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),3)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),33)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),34)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),35)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),36)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),38)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),43)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),44)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),45)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),46)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),48)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
|
||||
#Gen6
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),5)
|
||||
HARDWARE_VARIANT ?= Gen6
|
||||
MCU ?= atmega644p
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),51)
|
||||
HARDWARE_VARIANT ?= Gen6
|
||||
MCU ?= atmega644p
|
||||
|
||||
#Sanguinololu
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),6)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),62)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),63)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),65)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),66)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),69)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
|
||||
#Ultimaker
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),7)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),71)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega1280
|
||||
|
||||
#Teensylu
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),8)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb1286
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),81)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb1286
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),811)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb1286
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),82)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb646
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),83)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb1286
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),84)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb1286
|
||||
|
||||
#Gen3+
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),9)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
|
||||
#Gen3 Monolithic Electronics
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),22)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
|
||||
#Megatronics
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),70)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
|
||||
#Alpha OMCA board
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),90)
|
||||
# Alpha OMCA board
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),90)
|
||||
HARDWARE_VARIANT ?= SanguinoA
|
||||
MCU ?= atmega644
|
||||
|
||||
#Final OMCA board
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),91)
|
||||
# Final OMCA board
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),91)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
# Sethi 3D_1
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),20)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
|
||||
#Rambo
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),301)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
#
|
||||
# Teensyduino - AT90USB1286, AT90USB1286P
|
||||
#
|
||||
|
||||
# Azteeg
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),67)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),68)
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
# Teensylu
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),8)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb1286
|
||||
# Printrboard (AT90USB1286)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),81)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb1286
|
||||
# Printrboard Revision F (AT90USB1286)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),811)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb1286
|
||||
# Brainwave (AT90USB646)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),82)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb646
|
||||
# Brainwave Pro (AT90USB1286)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),83)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb1286
|
||||
# SAV Mk-I (AT90USB1286)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),84)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb1286
|
||||
# Teensy++2.0 (AT90USB1286)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),85)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb1286
|
||||
# 5DPrint D8 Driver Board
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),88)
|
||||
HARDWARE_VARIANT ?= Teensy
|
||||
MCU ?= at90usb1286
|
||||
|
||||
endif
|
||||
|
||||
@@ -243,6 +411,10 @@ endif
|
||||
# Set to 16Mhz if not yet set.
|
||||
F_CPU ?= 16000000
|
||||
|
||||
# Set to arduino, ATmega2560 if not yet set.
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
MCU ?= atmega2560
|
||||
|
||||
# Arduino contained the main source code for the Arduino
|
||||
# Libraries, the "hardware variant" are for boards
|
||||
# that derives from that, and their source are present in
|
||||
@@ -254,8 +426,23 @@ TARGET = $(notdir $(CURDIR))
|
||||
# there is no need to specify explicit pathnames as long as the
|
||||
# directory is added here
|
||||
|
||||
# The Makefile for previous versions of Marlin used VPATH for all
|
||||
# source files, but for Marlin 2.0, we use VPATH only for arduino
|
||||
# library files.
|
||||
|
||||
VPATH = .
|
||||
VPATH += $(BUILD_DIR)
|
||||
VPATH += $(HARDWARE_SRC)
|
||||
|
||||
# U8glib
|
||||
VPATH += $(ARDUINO_USER_DIR)/libraries/U8glib
|
||||
VPATH += $(ARDUINO_USER_DIR)/libraries/U8glib/clib
|
||||
|
||||
ifeq ($(HARDWARE_VARIANT), $(filter $(HARDWARE_VARIANT),arduino Teensy Sanguino))
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/marlin/avr/libraries/LiquidCrystal/src
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/marlin/avr/libraries/SPI
|
||||
endif
|
||||
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino
|
||||
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI
|
||||
@@ -270,50 +457,76 @@ ifeq ($(WIRE), 1)
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire/utility
|
||||
endif
|
||||
ifeq ($(NEOPIXEL), 1)
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Adafruit_NeoPixel
|
||||
endif
|
||||
ifeq ($(U8GLIB), 1)
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib/clib
|
||||
endif
|
||||
ifeq ($(TMC2630), 1)
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/TMC2130Stepper/src
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/TMC2130Stepper/src/source
|
||||
endif
|
||||
|
||||
ifeq ($(HARDWARE_VARIANT), arduino)
|
||||
HARDWARE_SUB_VARIANT ?= mega
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/variants/$(HARDWARE_SUB_VARIANT)
|
||||
else
|
||||
ifeq ($(HARDWARE_VARIANT), Sanguino)
|
||||
VPATH += $(HARDWARE_DIR)/marlin/avr/variants/sanguino
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/marlin/avr/variants/sanguino
|
||||
else
|
||||
HARDWARE_SUB_VARIANT ?= standard
|
||||
VPATH += $(HARDWARE_DIR)/$(HARDWARE_VARIANT)/variants/$(HARDWARE_SUB_VARIANT)
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/$(HARDWARE_VARIANT)/variants/$(HARDWARE_SUB_VARIANT)
|
||||
endif
|
||||
endif
|
||||
SRC = wiring.c \
|
||||
LIB_SRC = wiring.c \
|
||||
wiring_analog.c wiring_digital.c \
|
||||
wiring_pulse.c \
|
||||
wiring_shift.c WInterrupts.c hooks.c
|
||||
|
||||
ifeq ($(HARDWARE_VARIANT), Teensy)
|
||||
SRC = wiring.c
|
||||
LIB_SRC = wiring.c
|
||||
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/teensy/cores/teensy
|
||||
endif
|
||||
CXXSRC = WMath.cpp WString.cpp Print.cpp Marlin_main.cpp \
|
||||
MarlinSerial.cpp Sd2Card.cpp SdBaseFile.cpp SdFatUtil.cpp \
|
||||
SdFile.cpp SdVolume.cpp planner.cpp stepper.cpp \
|
||||
temperature.cpp cardreader.cpp configuration_store.cpp \
|
||||
watchdog.cpp SPI.cpp servo.cpp Tone.cpp ultralcd.cpp digipot_mcp4451.cpp \
|
||||
dac_mcp4728.cpp vector_3.cpp qr_solve.cpp endstops.cpp stopwatch.cpp utility.cpp \
|
||||
printcounter.cpp nozzle.cpp serial.cpp
|
||||
|
||||
LIB_CXXSRC = WMath.cpp WString.cpp Print.cpp SPI.cpp Tone.cpp
|
||||
|
||||
ifeq ($(NEOPIXEL), 1)
|
||||
LIB_CXXSRC += Adafruit_NeoPixel.cpp
|
||||
endif
|
||||
|
||||
ifeq ($(LIQUID_TWI2), 0)
|
||||
CXXSRC += LiquidCrystal.cpp
|
||||
LIB_CXXSRC += LiquidCrystal.cpp
|
||||
else
|
||||
SRC += twi.c
|
||||
CXXSRC += Wire.cpp LiquidTWI2.cpp
|
||||
LIB_SRC += twi.c
|
||||
LIB_CXXSRC += Wire.cpp LiquidTWI2.cpp
|
||||
endif
|
||||
|
||||
ifeq ($(WIRE), 1)
|
||||
SRC += twi.c
|
||||
CXXSRC += Wire.cpp
|
||||
LIB_SRC += twi.c
|
||||
LIB_CXXSRC += Wire.cpp
|
||||
endif
|
||||
|
||||
ifeq ($(U8GLIB), 1)
|
||||
LIB_CXXSRC += U8glib.cpp
|
||||
LIB_SRC += u8g_ll_api.c u8g_bitmap.c u8g_clip.c u8g_com_null.c u8g_delay.c u8g_page.c u8g_pb.c u8g_pb16h1.c u8g_rect.c u8g_state.c u8g_font.c u8g_font_data.c
|
||||
endif
|
||||
|
||||
ifeq ($(TMC2630), 1)
|
||||
LIB_CXXSRC += TMC2130Stepper.cpp TMC2130Stepper_COOLCONF.cpp TMC2130Stepper_DRV_STATUS.cpp TMC2130Stepper_IHOLD_IRUN.cpp TMC2130Stepper_CHOPCONF.cpp TMC2130Stepper_GCONF.cpp TMC2130Stepper_PWMCONF.cpp SW_SPI.cpp
|
||||
endif
|
||||
|
||||
ifeq ($(RELOC_WORKAROUND), 1)
|
||||
LD_PREFIX=-nodefaultlibs
|
||||
LD_SUFFIX=-lm -lgcc -lc -lgcc
|
||||
endif
|
||||
|
||||
#Check for Arduino 1.0.0 or higher and use the correct source files for that version
|
||||
ifeq ($(shell [ $(ARDUINO_VERSION) -ge 100 ] && echo true), true)
|
||||
CXXSRC += main.cpp
|
||||
LIB_CXXSRC += main.cpp
|
||||
else
|
||||
SRC += pins_arduino.c main.c
|
||||
LIB_SRC += pins_arduino.c main.c
|
||||
endif
|
||||
|
||||
FORMAT = ihex
|
||||
@@ -348,8 +561,8 @@ CXXDEFS = $(CDEFS)
|
||||
|
||||
ifeq ($(HARDWARE_VARIANT), Teensy)
|
||||
CDEFS += -DUSB_SERIAL
|
||||
SRC += usb.c pins_teensy.c
|
||||
CXXSRC += usb_api.cpp
|
||||
LIB_SRC += usb.c pins_teensy.c
|
||||
LIB_CXXSRC += usb_api.cpp
|
||||
endif
|
||||
|
||||
# Add all the source directories as include directories too
|
||||
@@ -361,9 +574,8 @@ CSTANDARD = -std=gnu99
|
||||
CXXSTANDARD = -std=gnu++11
|
||||
CDEBUG = -g$(DEBUG)
|
||||
CWARN = -Wall -Wstrict-prototypes
|
||||
CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct \
|
||||
-fshort-enums -w -ffunction-sections -fdata-sections \
|
||||
-flto \
|
||||
CTUNING = -w -fsigned-char -funsigned-bitfields -fpack-struct \
|
||||
-fshort-enums -ffunction-sections -fdata-sections -flto \
|
||||
-DARDUINO=$(ARDUINO_VERSION)
|
||||
ifneq ($(HARDWARE_MOTHERBOARD),)
|
||||
CTUNING += -DMOTHERBOARD=${HARDWARE_MOTHERBOARD}
|
||||
@@ -389,13 +601,21 @@ AVRDUDE_FLAGS = -D -C$(AVRDUDE_CONF) \
|
||||
-p$(MCU) -P$(AVRDUDE_PORT) -c$(AVRDUDE_PROGRAMMER) \
|
||||
-b$(UPLOAD_RATE)
|
||||
|
||||
# Since Marlin 2.0, the source files may be distributed into several
|
||||
# different directories, so it is necessary to find them recursively
|
||||
|
||||
SRC = $(shell find src -name '*.c' -type f)
|
||||
CXXSRC = $(shell find src -name '*.cpp' -type f)
|
||||
|
||||
# Define all object files.
|
||||
OBJ = ${patsubst %.c, $(BUILD_DIR)/%.o, ${SRC}}
|
||||
OBJ = ${patsubst %.c, $(BUILD_DIR)/arduino/%.o, ${LIB_SRC}}
|
||||
OBJ += ${patsubst %.cpp, $(BUILD_DIR)/arduino/%.o, ${LIB_CXXSRC}}
|
||||
OBJ += ${patsubst %.S, $(BUILD_DIR)/arduino/%.o, ${LIB_ASRC}}
|
||||
OBJ += ${patsubst %.c, $(BUILD_DIR)/%.o, ${SRC}}
|
||||
OBJ += ${patsubst %.cpp, $(BUILD_DIR)/%.o, ${CXXSRC}}
|
||||
OBJ += ${patsubst %.S, $(BUILD_DIR)/%.o, ${ASRC}}
|
||||
|
||||
# Define all listing files.
|
||||
LST = $(ASRC:.S=.lst) $(CXXSRC:.cpp=.lst) $(SRC:.c=.lst)
|
||||
LST = $(LIB_ASRC:.S=.lst) $(LIB_CXXSRC:.cpp=.lst) $(LIB_SRC:.c=.lst)
|
||||
|
||||
# Combine all necessary flags and optional flags.
|
||||
# Add target processor to flags.
|
||||
@@ -412,14 +632,14 @@ else
|
||||
P=
|
||||
endif
|
||||
|
||||
# Create required build hierarchy if it does not exist
|
||||
|
||||
$(shell mkdir -p $(dir $(OBJ)))
|
||||
|
||||
# Default target.
|
||||
all: sizeafter
|
||||
|
||||
build: $(BUILD_DIR) elf hex
|
||||
|
||||
# Creates the object directory
|
||||
$(BUILD_DIR):
|
||||
$P mkdir -p $(BUILD_DIR)
|
||||
build: elf hex
|
||||
|
||||
elf: $(BUILD_DIR)/$(TARGET).elf
|
||||
hex: $(BUILD_DIR)/$(TARGET).hex
|
||||
@@ -485,29 +705,34 @@ extcoff: $(TARGET).elf
|
||||
$(NM) -n $< > $@
|
||||
|
||||
# Link: create ELF output file from library.
|
||||
|
||||
$(BUILD_DIR)/$(TARGET).elf: $(OBJ) Configuration.h
|
||||
$(Pecho) " CXX $@"
|
||||
$P $(CC) $(ALL_CXXFLAGS) -Wl,--gc-sections,--relax -o $@ -L. $(OBJ) $(LDFLAGS)
|
||||
$P $(CC) $(LD_PREFIX) $(ALL_CXXFLAGS) -Wl,--gc-sections,--relax -o $@ -L. $(OBJ) $(LDFLAGS) $(LD_SUFFIX)
|
||||
|
||||
# Object files that were found in "src" will be stored in $(BUILD_DIR)
|
||||
# in directories that mirror the structure of "src"
|
||||
|
||||
$(BUILD_DIR)/%.o: %.c Configuration.h Configuration_adv.h $(MAKEFILE)
|
||||
$(Pecho) " CC $<"
|
||||
$P $(CC) -MMD -c $(ALL_CFLAGS) $< -o $@
|
||||
|
||||
$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.cpp Configuration.h Configuration_adv.h $(MAKEFILE)
|
||||
$(Pecho) " CXX $<"
|
||||
$P $(CXX) -MMD -c $(ALL_CXXFLAGS) $< -o $@
|
||||
|
||||
$(BUILD_DIR)/%.o: %.cpp Configuration.h Configuration_adv.h $(MAKEFILE)
|
||||
$(Pecho) " CXX $<"
|
||||
$P $(CXX) -MMD -c $(ALL_CXXFLAGS) $< -o $@
|
||||
|
||||
# Object files for Arduino libs will be created in $(BUILD_DIR)/arduino
|
||||
|
||||
$(BUILD_DIR)/arduino/%.o: %.c Configuration.h Configuration_adv.h $(MAKEFILE)
|
||||
$(Pecho) " CC $<"
|
||||
$P $(CC) -MMD -c $(ALL_CFLAGS) $< -o $@
|
||||
|
||||
$(BUILD_DIR)/arduino/%.o: %.cpp Configuration.h Configuration_adv.h $(MAKEFILE)
|
||||
$(Pecho) " CXX $<"
|
||||
$P $(CXX) -MMD -c $(ALL_CXXFLAGS) $< -o $@
|
||||
|
||||
# Target: clean project.
|
||||
clean:
|
||||
$(Pecho) " RM $(BUILD_DIR)/*"
|
||||
$P $(REMOVE) $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep $(BUILD_DIR)/$(TARGET).cof $(BUILD_DIR)/$(TARGET).elf \
|
||||
$(BUILD_DIR)/$(TARGET).map $(BUILD_DIR)/$(TARGET).sym $(BUILD_DIR)/$(TARGET).lss $(BUILD_DIR)/$(TARGET).cpp \
|
||||
$(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d) $(CXXSRC:.cpp=.s) $(CXXSRC:.cpp=.d)
|
||||
$(Pecho) " RMDIR $(BUILD_DIR)/"
|
||||
$P rm -rf $(BUILD_DIR)
|
||||
|
||||
@@ -515,4 +740,4 @@ clean:
|
||||
.PHONY: all build elf hex eep lss sym program coff extcoff clean depend sizebefore sizeafter
|
||||
|
||||
# Automaticaly include the dependency files created by gcc
|
||||
-include ${wildcard $(BUILD_DIR)/*.d}
|
||||
-include ${patsubst %.o, %.d, ${OBJ}}
|
||||
|
||||
479
Marlin/Marlin.h
479
Marlin/Marlin.h
@@ -1,479 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#ifndef MARLIN_H
|
||||
#define MARLIN_H
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
#include <util/delay.h>
|
||||
#include <avr/pgmspace.h>
|
||||
#include <avr/eeprom.h>
|
||||
#include <avr/interrupt.h>
|
||||
|
||||
#include "MarlinConfig.h"
|
||||
|
||||
#include "enum.h"
|
||||
#include "types.h"
|
||||
#include "fastio.h"
|
||||
#include "utility.h"
|
||||
#include "serial.h"
|
||||
|
||||
#if ENABLED(PRINTCOUNTER)
|
||||
#include "printcounter.h"
|
||||
#else
|
||||
#include "stopwatch.h"
|
||||
#endif
|
||||
|
||||
void idle(
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
bool no_stepper_sleep = false // pass true to keep steppers from disabling on timeout
|
||||
#endif
|
||||
);
|
||||
|
||||
void manage_inactivity(bool ignore_stepper_queue = false);
|
||||
|
||||
#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
|
||||
extern bool extruder_duplication_enabled;
|
||||
#endif
|
||||
|
||||
#if HAS_X2_ENABLE
|
||||
#define enable_X() do{ X_ENABLE_WRITE( X_ENABLE_ON); X2_ENABLE_WRITE( X_ENABLE_ON); }while(0)
|
||||
#define disable_X() do{ X_ENABLE_WRITE(!X_ENABLE_ON); X2_ENABLE_WRITE(!X_ENABLE_ON); axis_known_position[X_AXIS] = false; }while(0)
|
||||
#elif HAS_X_ENABLE
|
||||
#define enable_X() X_ENABLE_WRITE( X_ENABLE_ON)
|
||||
#define disable_X() do{ X_ENABLE_WRITE(!X_ENABLE_ON); axis_known_position[X_AXIS] = false; }while(0)
|
||||
#else
|
||||
#define enable_X() NOOP
|
||||
#define disable_X() NOOP
|
||||
#endif
|
||||
|
||||
#if HAS_Y2_ENABLE
|
||||
#define enable_Y() do{ Y_ENABLE_WRITE( Y_ENABLE_ON); Y2_ENABLE_WRITE(Y_ENABLE_ON); }while(0)
|
||||
#define disable_Y() do{ Y_ENABLE_WRITE(!Y_ENABLE_ON); Y2_ENABLE_WRITE(!Y_ENABLE_ON); axis_known_position[Y_AXIS] = false; }while(0)
|
||||
#elif HAS_Y_ENABLE
|
||||
#define enable_Y() Y_ENABLE_WRITE( Y_ENABLE_ON)
|
||||
#define disable_Y() do{ Y_ENABLE_WRITE(!Y_ENABLE_ON); axis_known_position[Y_AXIS] = false; }while(0)
|
||||
#else
|
||||
#define enable_Y() NOOP
|
||||
#define disable_Y() NOOP
|
||||
#endif
|
||||
|
||||
#if HAS_Z2_ENABLE
|
||||
#define enable_Z() do{ Z_ENABLE_WRITE( Z_ENABLE_ON); Z2_ENABLE_WRITE(Z_ENABLE_ON); }while(0)
|
||||
#define disable_Z() do{ Z_ENABLE_WRITE(!Z_ENABLE_ON); Z2_ENABLE_WRITE(!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }while(0)
|
||||
#elif HAS_Z_ENABLE
|
||||
#define enable_Z() Z_ENABLE_WRITE( Z_ENABLE_ON)
|
||||
#define disable_Z() do{ Z_ENABLE_WRITE(!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }while(0)
|
||||
#else
|
||||
#define enable_Z() NOOP
|
||||
#define disable_Z() NOOP
|
||||
#endif
|
||||
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
|
||||
/**
|
||||
* Mixing steppers synchronize their enable (and direction) together
|
||||
*/
|
||||
#if MIXING_STEPPERS > 3
|
||||
#define enable_E0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); E2_ENABLE_WRITE( E_ENABLE_ON); E3_ENABLE_WRITE( E_ENABLE_ON); }
|
||||
#define disable_E0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); E2_ENABLE_WRITE(!E_ENABLE_ON); E3_ENABLE_WRITE(!E_ENABLE_ON); }
|
||||
#elif MIXING_STEPPERS > 2
|
||||
#define enable_E0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); E2_ENABLE_WRITE( E_ENABLE_ON); }
|
||||
#define disable_E0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); E2_ENABLE_WRITE(!E_ENABLE_ON); }
|
||||
#else
|
||||
#define enable_E0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); }
|
||||
#define disable_E0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); }
|
||||
#endif
|
||||
#define enable_E1() NOOP
|
||||
#define disable_E1() NOOP
|
||||
#define enable_E2() NOOP
|
||||
#define disable_E2() NOOP
|
||||
#define enable_E3() NOOP
|
||||
#define disable_E3() NOOP
|
||||
#define enable_E4() NOOP
|
||||
#define disable_E4() NOOP
|
||||
|
||||
#else // !MIXING_EXTRUDER
|
||||
|
||||
#if HAS_E0_ENABLE
|
||||
#define enable_E0() E0_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define disable_E0() E0_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define enable_E0() NOOP
|
||||
#define disable_E0() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 1 && HAS_E1_ENABLE
|
||||
#define enable_E1() E1_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define disable_E1() E1_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define enable_E1() NOOP
|
||||
#define disable_E1() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 2 && HAS_E2_ENABLE
|
||||
#define enable_E2() E2_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define disable_E2() E2_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define enable_E2() NOOP
|
||||
#define disable_E2() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 3 && HAS_E3_ENABLE
|
||||
#define enable_E3() E3_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define disable_E3() E3_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define enable_E3() NOOP
|
||||
#define disable_E3() NOOP
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS > 4 && HAS_E4_ENABLE
|
||||
#define enable_E4() E4_ENABLE_WRITE( E_ENABLE_ON)
|
||||
#define disable_E4() E4_ENABLE_WRITE(!E_ENABLE_ON)
|
||||
#else
|
||||
#define enable_E4() NOOP
|
||||
#define disable_E4() NOOP
|
||||
#endif
|
||||
|
||||
#endif // !MIXING_EXTRUDER
|
||||
|
||||
#if ENABLED(G38_PROBE_TARGET)
|
||||
extern bool G38_move, // flag to tell the interrupt handler that a G38 command is being run
|
||||
G38_endstop_hit; // flag from the interrupt handler to indicate if the endstop went active
|
||||
#endif
|
||||
|
||||
/**
|
||||
* The axis order in all axis related arrays is X, Y, Z, E
|
||||
*/
|
||||
#define _AXIS(AXIS) AXIS ##_AXIS
|
||||
|
||||
void enable_all_steppers();
|
||||
void disable_e_steppers();
|
||||
void disable_all_steppers();
|
||||
|
||||
void FlushSerialRequestResend();
|
||||
void ok_to_send();
|
||||
|
||||
void kill(const char*);
|
||||
|
||||
void quickstop_stepper();
|
||||
|
||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||
void handle_filament_runout();
|
||||
#endif
|
||||
|
||||
extern uint8_t marlin_debug_flags;
|
||||
#define DEBUGGING(F) (marlin_debug_flags & (DEBUG_## F))
|
||||
|
||||
extern bool Running;
|
||||
inline bool IsRunning() { return Running; }
|
||||
inline bool IsStopped() { return !Running; }
|
||||
|
||||
bool enqueue_and_echo_command(const char* cmd, bool say_ok=false); // Add a single command to the end of the buffer. Return false on failure.
|
||||
void enqueue_and_echo_commands_P(const char * const cmd); // Set one or more commands to be prioritized over the next Serial/SD command.
|
||||
void clear_command_queue();
|
||||
|
||||
extern millis_t previous_cmd_ms;
|
||||
inline void refresh_cmd_timeout() { previous_cmd_ms = millis(); }
|
||||
|
||||
#if ENABLED(FAST_PWM_FAN)
|
||||
void setPwmFrequency(uint8_t pin, int val);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Feedrate scaling and conversion
|
||||
*/
|
||||
extern int feedrate_percentage;
|
||||
|
||||
#define MMM_TO_MMS(MM_M) ((MM_M)/60.0)
|
||||
#define MMS_TO_MMM(MM_S) ((MM_S)*60.0)
|
||||
#define MMS_SCALED(MM_S) ((MM_S)*feedrate_percentage*0.01)
|
||||
|
||||
extern bool axis_relative_modes[];
|
||||
extern bool volumetric_enabled;
|
||||
extern int flow_percentage[EXTRUDERS]; // Extrusion factor for each extruder
|
||||
extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
|
||||
extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
|
||||
extern bool axis_known_position[XYZ];
|
||||
extern bool axis_homed[XYZ];
|
||||
extern volatile bool wait_for_heatup;
|
||||
|
||||
#if HAS_RESUME_CONTINUE
|
||||
extern volatile bool wait_for_user;
|
||||
#endif
|
||||
|
||||
extern float current_position[NUM_AXIS];
|
||||
|
||||
// Workspace offsets
|
||||
#if HAS_WORKSPACE_OFFSET
|
||||
#if HAS_HOME_OFFSET
|
||||
extern float home_offset[XYZ];
|
||||
#endif
|
||||
#if HAS_POSITION_SHIFT
|
||||
extern float position_shift[XYZ];
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_HOME_OFFSET && HAS_POSITION_SHIFT
|
||||
extern float workspace_offset[XYZ];
|
||||
#define WORKSPACE_OFFSET(AXIS) workspace_offset[AXIS]
|
||||
#elif HAS_HOME_OFFSET
|
||||
#define WORKSPACE_OFFSET(AXIS) home_offset[AXIS]
|
||||
#elif HAS_POSITION_SHIFT
|
||||
#define WORKSPACE_OFFSET(AXIS) position_shift[AXIS]
|
||||
#else
|
||||
#define WORKSPACE_OFFSET(AXIS) 0
|
||||
#endif
|
||||
|
||||
#define LOGICAL_POSITION(POS, AXIS) ((POS) + WORKSPACE_OFFSET(AXIS))
|
||||
#define RAW_POSITION(POS, AXIS) ((POS) - WORKSPACE_OFFSET(AXIS))
|
||||
|
||||
#if HAS_POSITION_SHIFT || DISABLED(DELTA)
|
||||
#define LOGICAL_X_POSITION(POS) LOGICAL_POSITION(POS, X_AXIS)
|
||||
#define LOGICAL_Y_POSITION(POS) LOGICAL_POSITION(POS, Y_AXIS)
|
||||
#define RAW_X_POSITION(POS) RAW_POSITION(POS, X_AXIS)
|
||||
#define RAW_Y_POSITION(POS) RAW_POSITION(POS, Y_AXIS)
|
||||
#else
|
||||
#define LOGICAL_X_POSITION(POS) (POS)
|
||||
#define LOGICAL_Y_POSITION(POS) (POS)
|
||||
#define RAW_X_POSITION(POS) (POS)
|
||||
#define RAW_Y_POSITION(POS) (POS)
|
||||
#endif
|
||||
|
||||
#define LOGICAL_Z_POSITION(POS) LOGICAL_POSITION(POS, Z_AXIS)
|
||||
#define RAW_Z_POSITION(POS) RAW_POSITION(POS, Z_AXIS)
|
||||
#define RAW_CURRENT_POSITION(A) RAW_##A##_POSITION(current_position[A##_AXIS])
|
||||
|
||||
// Hotend Offsets
|
||||
#if HOTENDS > 1
|
||||
extern float hotend_offset[XYZ][HOTENDS];
|
||||
#endif
|
||||
|
||||
// Software Endstops
|
||||
extern float soft_endstop_min[XYZ], soft_endstop_max[XYZ];
|
||||
|
||||
#if HAS_SOFTWARE_ENDSTOPS
|
||||
extern bool soft_endstops_enabled;
|
||||
void clamp_to_software_endstops(float target[XYZ]);
|
||||
#else
|
||||
#define soft_endstops_enabled false
|
||||
#define clamp_to_software_endstops(x) NOOP
|
||||
#endif
|
||||
|
||||
#if HAS_WORKSPACE_OFFSET || ENABLED(DUAL_X_CARRIAGE)
|
||||
void update_software_endstops(const AxisEnum axis);
|
||||
#endif
|
||||
|
||||
#if IS_KINEMATIC
|
||||
extern float delta[ABC];
|
||||
void inverse_kinematics(const float logical[XYZ]);
|
||||
#endif
|
||||
|
||||
#if ENABLED(DELTA)
|
||||
extern float endstop_adj[ABC],
|
||||
delta_radius,
|
||||
delta_diagonal_rod,
|
||||
delta_calibration_radius,
|
||||
delta_segments_per_second,
|
||||
delta_tower_angle_trim[2],
|
||||
delta_clip_start_height;
|
||||
void recalc_delta_settings(float radius, float diagonal_rod);
|
||||
#elif IS_SCARA
|
||||
void forward_kinematics_SCARA(const float &a, const float &b);
|
||||
#endif
|
||||
|
||||
#if ENABLED(AUTO_BED_LEVELING_BILINEAR)
|
||||
extern int bilinear_grid_spacing[2], bilinear_start[2];
|
||||
extern float bilinear_grid_factor[2],
|
||||
z_values[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y];
|
||||
float bilinear_z_offset(const float logical[XYZ]);
|
||||
#endif
|
||||
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||
typedef struct { double A, B, D; } linear_fit;
|
||||
linear_fit* lsf_linear_fit(double x[], double y[], double z[], const int);
|
||||
#endif
|
||||
|
||||
#if HAS_LEVELING
|
||||
bool leveling_is_valid();
|
||||
bool leveling_is_active();
|
||||
void set_bed_leveling_enabled(const bool enable=true);
|
||||
void reset_bed_level();
|
||||
#endif
|
||||
|
||||
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
||||
void set_z_fade_height(const float zfh);
|
||||
#endif
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
extern float z_endstop_adj;
|
||||
#endif
|
||||
|
||||
#if HAS_BED_PROBE
|
||||
extern float zprobe_zoffset;
|
||||
void refresh_zprobe_zoffset(const bool no_babystep=false);
|
||||
#define DEPLOY_PROBE() set_probe_deployed(true)
|
||||
#define STOW_PROBE() set_probe_deployed(false)
|
||||
#else
|
||||
#define DEPLOY_PROBE()
|
||||
#define STOW_PROBE()
|
||||
#endif
|
||||
|
||||
#if ENABLED(HOST_KEEPALIVE_FEATURE)
|
||||
extern MarlinBusyState busy_state;
|
||||
#define KEEPALIVE_STATE(n) do{ busy_state = n; }while(0)
|
||||
#else
|
||||
#define KEEPALIVE_STATE(n) NOOP
|
||||
#endif
|
||||
|
||||
#if FAN_COUNT > 0
|
||||
extern int16_t fanSpeeds[FAN_COUNT];
|
||||
#if ENABLED(PROBING_FANS_OFF)
|
||||
extern bool fans_paused;
|
||||
extern int16_t paused_fanSpeeds[FAN_COUNT];
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(BARICUDA)
|
||||
extern int baricuda_valve_pressure;
|
||||
extern int baricuda_e_to_p_pressure;
|
||||
#endif
|
||||
|
||||
#if ENABLED(FILAMENT_WIDTH_SENSOR)
|
||||
extern bool filament_sensor; // Flag that filament sensor readings should control extrusion
|
||||
extern float filament_width_nominal, // Theoretical filament diameter i.e., 3.00 or 1.75
|
||||
filament_width_meas; // Measured filament diameter
|
||||
extern int8_t measurement_delay[]; // Ring buffer to delay measurement
|
||||
extern int filwidth_delay_index[2]; // Ring buffer indexes. Used by planner, temperature, and main code
|
||||
extern int meas_delay_cm; // Delay distance
|
||||
#endif
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
extern AdvancedPauseMenuResponse advanced_pause_menu_response;
|
||||
#endif
|
||||
|
||||
#if ENABLED(PID_EXTRUSION_SCALING)
|
||||
extern int lpq_len;
|
||||
#endif
|
||||
|
||||
#if ENABLED(FWRETRACT)
|
||||
extern bool autoretract_enabled;
|
||||
extern bool retracted[EXTRUDERS]; // extruder[n].retracted
|
||||
extern float retract_length, retract_length_swap, retract_feedrate_mm_s, retract_zlift;
|
||||
extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate_mm_s;
|
||||
#endif
|
||||
|
||||
// Print job timer
|
||||
#if ENABLED(PRINTCOUNTER)
|
||||
extern PrintCounter print_job_timer;
|
||||
#else
|
||||
extern Stopwatch print_job_timer;
|
||||
#endif
|
||||
|
||||
// Handling multiple extruders pins
|
||||
extern uint8_t active_extruder;
|
||||
|
||||
#if HAS_TEMP_HOTEND || HAS_TEMP_BED
|
||||
void print_heaterstates();
|
||||
#endif
|
||||
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
extern float mixing_factor[MIXING_STEPPERS];
|
||||
#endif
|
||||
|
||||
void calculate_volumetric_multipliers();
|
||||
|
||||
/**
|
||||
* Blocking movement and shorthand functions
|
||||
*/
|
||||
void do_blocking_move_to(const float &x, const float &y, const float &z, const float &fr_mm_s=0.0);
|
||||
void do_blocking_move_to_x(const float &x, const float &fr_mm_s=0.0);
|
||||
void do_blocking_move_to_z(const float &z, const float &fr_mm_s=0.0);
|
||||
void do_blocking_move_to_xy(const float &x, const float &y, const float &fr_mm_s=0.0);
|
||||
|
||||
#if ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED) || HAS_PROBING_PROCEDURE || HOTENDS > 1 || ENABLED(NOZZLE_CLEAN_FEATURE) || ENABLED(NOZZLE_PARK_FEATURE)
|
||||
bool axis_unhomed_error(const bool x=true, const bool y=true, const bool z=true);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* position_is_reachable family of functions
|
||||
*/
|
||||
|
||||
#if IS_KINEMATIC // (DELTA or SCARA)
|
||||
|
||||
#if IS_SCARA
|
||||
extern const float L1, L2;
|
||||
#endif
|
||||
|
||||
inline bool position_is_reachable_raw_xy(const float &rx, const float &ry) {
|
||||
#if ENABLED(DELTA)
|
||||
return HYPOT2(rx, ry) <= sq(DELTA_PRINTABLE_RADIUS);
|
||||
#elif IS_SCARA
|
||||
#if MIDDLE_DEAD_ZONE_R > 0
|
||||
const float R2 = HYPOT2(rx - SCARA_OFFSET_X, ry - SCARA_OFFSET_Y);
|
||||
return R2 >= sq(float(MIDDLE_DEAD_ZONE_R)) && R2 <= sq(L1 + L2);
|
||||
#else
|
||||
return HYPOT2(rx - SCARA_OFFSET_X, ry - SCARA_OFFSET_Y) <= sq(L1 + L2);
|
||||
#endif
|
||||
#else // CARTESIAN
|
||||
// To be migrated from MakerArm branch in future
|
||||
#endif
|
||||
}
|
||||
|
||||
inline bool position_is_reachable_by_probe_raw_xy(const float &rx, const float &ry) {
|
||||
|
||||
// Both the nozzle and the probe must be able to reach the point.
|
||||
// This won't work on SCARA since the probe offset rotates with the arm.
|
||||
|
||||
return position_is_reachable_raw_xy(rx, ry)
|
||||
&& position_is_reachable_raw_xy(rx - X_PROBE_OFFSET_FROM_EXTRUDER, ry - Y_PROBE_OFFSET_FROM_EXTRUDER);
|
||||
}
|
||||
|
||||
#else // CARTESIAN
|
||||
|
||||
inline bool position_is_reachable_raw_xy(const float &rx, const float &ry) {
|
||||
// Add 0.001 margin to deal with float imprecision
|
||||
return WITHIN(rx, X_MIN_POS - 0.001, X_MAX_POS + 0.001)
|
||||
&& WITHIN(ry, Y_MIN_POS - 0.001, Y_MAX_POS + 0.001);
|
||||
}
|
||||
|
||||
inline bool position_is_reachable_by_probe_raw_xy(const float &rx, const float &ry) {
|
||||
// Add 0.001 margin to deal with float imprecision
|
||||
return WITHIN(rx, MIN_PROBE_X - 0.001, MAX_PROBE_X + 0.001)
|
||||
&& WITHIN(ry, MIN_PROBE_Y - 0.001, MAX_PROBE_Y + 0.001);
|
||||
}
|
||||
|
||||
#endif // CARTESIAN
|
||||
|
||||
FORCE_INLINE bool position_is_reachable_by_probe_xy(const float &lx, const float &ly) {
|
||||
return position_is_reachable_by_probe_raw_xy(RAW_X_POSITION(lx), RAW_Y_POSITION(ly));
|
||||
}
|
||||
|
||||
FORCE_INLINE bool position_is_reachable_xy(const float &lx, const float &ly) {
|
||||
return position_is_reachable_raw_xy(RAW_X_POSITION(lx), RAW_Y_POSITION(ly));
|
||||
}
|
||||
|
||||
#endif // MARLIN_H
|
||||
@@ -1,72 +1,53 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
/*
|
||||
================================================================================
|
||||
|
||||
/**
|
||||
* About Marlin
|
||||
*
|
||||
* This firmware is a mashup between Sprinter and grbl.
|
||||
* - https://github.com/kliment/Sprinter
|
||||
* - https://github.com/simen/grbl/tree
|
||||
*/
|
||||
Marlin Firmware
|
||||
|
||||
#include "MarlinConfig.h"
|
||||
(c) 2011-2018 MarlinFirmware
|
||||
Portions of Marlin are (c) by their respective authors.
|
||||
All code complies with GPLv2 and/or GPLv3
|
||||
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
#if ENABLED(LCD_I2C_TYPE_PCF8575)
|
||||
#include <Wire.h>
|
||||
#include <LiquidCrystal_I2C.h>
|
||||
#elif ENABLED(LCD_I2C_TYPE_MCP23017) || ENABLED(LCD_I2C_TYPE_MCP23008)
|
||||
#include <Wire.h>
|
||||
#include <LiquidTWI2.h>
|
||||
#elif ENABLED(LCM1602)
|
||||
#include <Wire.h>
|
||||
#include <LCD.h>
|
||||
#include <LiquidCrystal_I2C.h>
|
||||
#elif ENABLED(DOGLCD)
|
||||
#include <U8glib.h> // library for graphics LCD by Oli Kraus (https://github.com/olikraus/U8glib_Arduino)
|
||||
#else
|
||||
#include <LiquidCrystal.h> // library for character LCD
|
||||
#endif
|
||||
#endif
|
||||
================================================================================
|
||||
|
||||
#if HAS_DIGIPOTSS
|
||||
#include <SPI.h>
|
||||
#endif
|
||||
Greetings! Thank you for choosing Marlin 2 as your 3D printer firmware.
|
||||
|
||||
#if ENABLED(DIGIPOT_I2C)
|
||||
#include <Wire.h>
|
||||
#endif
|
||||
To configure Marlin you must edit Configuration.h and Configuration_adv.h
|
||||
located in the root 'Marlin' folder. Check the config/examples folder to see if
|
||||
there's a more suitable starting-point for your specific hardware.
|
||||
|
||||
#if ENABLED(HAVE_TMCDRIVER)
|
||||
#include <SPI.h>
|
||||
#include <TMC26XStepper.h>
|
||||
#endif
|
||||
Before diving in, we recommend the following essential links:
|
||||
|
||||
#if ENABLED(HAVE_TMC2130)
|
||||
#include <SPI.h>
|
||||
#include <TMC2130Stepper.h>
|
||||
#endif
|
||||
Marlin Firmware Official Website
|
||||
|
||||
#if ENABLED(HAVE_L6470DRIVER)
|
||||
#include <SPI.h>
|
||||
#include <L6470.h>
|
||||
#endif
|
||||
- http://marlinfw.org/
|
||||
The official Marlin Firmware website contains the most up-to-date
|
||||
documentation. Contributions are always welcome!
|
||||
|
||||
Configuration
|
||||
|
||||
- https://www.youtube.com/watch?v=3gwWVFtdg-4
|
||||
A good 20-minute overview of Marlin configuration by Tom Sanladerer.
|
||||
(Applies to Marlin 1.0.x, so Jerk and Acceleration should be halved.)
|
||||
Also... https://www.google.com/search?tbs=vid%3A1&q=configure+marlin
|
||||
|
||||
- http://marlinfw.org/docs/configuration/configuration.html
|
||||
Marlin's configuration options are explained in more detail here.
|
||||
|
||||
Getting Help
|
||||
|
||||
- http://forums.reprap.org/list.php?415
|
||||
The Marlin Discussion Forum is a great place to get help from other Marlin
|
||||
users who may have experienced similar issues to your own.
|
||||
|
||||
- https://github.com/MarlinFirmware/Marlin/issues
|
||||
With a free GitHub account you can provide us with feedback, bug reports,
|
||||
and feature requests via the Marlin Issue Queue.
|
||||
|
||||
Contributing
|
||||
|
||||
- http://marlinfw.org/docs/development/contributing.html
|
||||
If you'd like to contribute to Marlin, read this first!
|
||||
|
||||
- http://marlinfw.org/docs/development/coding_standards.html
|
||||
Before submitting code get to know the Coding Standards.
|
||||
*/
|
||||
|
||||
@@ -1,516 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* MarlinSerial.cpp - Hardware serial library for Wiring
|
||||
* Copyright (c) 2006 Nicholas Zambetti. All right reserved.
|
||||
*
|
||||
* Modified 23 November 2006 by David A. Mellis
|
||||
* Modified 28 September 2010 by Mark Sproul
|
||||
* Modified 14 February 2016 by Andreas Hardtung (added tx buffer)
|
||||
*/
|
||||
|
||||
#include "MarlinSerial.h"
|
||||
#include "Marlin.h"
|
||||
|
||||
// Disable HardwareSerial.cpp to support chips without a UART (Attiny, etc.)
|
||||
|
||||
#if !defined(USBCON) && (defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H))
|
||||
|
||||
#if UART_PRESENT(SERIAL_PORT)
|
||||
ring_buffer_r rx_buffer = { { 0 }, 0, 0 };
|
||||
#if TX_BUFFER_SIZE > 0
|
||||
ring_buffer_t tx_buffer = { { 0 }, 0, 0 };
|
||||
static bool _written;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(EMERGENCY_PARSER)
|
||||
|
||||
#include "stepper.h"
|
||||
#include "language.h"
|
||||
|
||||
// Currently looking for: M108, M112, M410
|
||||
// If you alter the parser please don't forget to update the capabilities in Conditionals_post.h
|
||||
|
||||
FORCE_INLINE void emergency_parser(const unsigned char c) {
|
||||
|
||||
static e_parser_state state = state_RESET;
|
||||
|
||||
switch (state) {
|
||||
case state_RESET:
|
||||
switch (c) {
|
||||
case ' ': break;
|
||||
case 'N': state = state_N; break;
|
||||
case 'M': state = state_M; break;
|
||||
default: state = state_IGNORE;
|
||||
}
|
||||
break;
|
||||
|
||||
case state_N:
|
||||
switch (c) {
|
||||
case '0': case '1': case '2':
|
||||
case '3': case '4': case '5':
|
||||
case '6': case '7': case '8':
|
||||
case '9': case '-': case ' ': break;
|
||||
case 'M': state = state_M; break;
|
||||
default: state = state_IGNORE;
|
||||
}
|
||||
break;
|
||||
|
||||
case state_M:
|
||||
switch (c) {
|
||||
case ' ': break;
|
||||
case '1': state = state_M1; break;
|
||||
case '4': state = state_M4; break;
|
||||
default: state = state_IGNORE;
|
||||
}
|
||||
break;
|
||||
|
||||
case state_M1:
|
||||
switch (c) {
|
||||
case '0': state = state_M10; break;
|
||||
case '1': state = state_M11; break;
|
||||
default: state = state_IGNORE;
|
||||
}
|
||||
break;
|
||||
|
||||
case state_M10:
|
||||
state = (c == '8') ? state_M108 : state_IGNORE;
|
||||
break;
|
||||
|
||||
case state_M11:
|
||||
state = (c == '2') ? state_M112 : state_IGNORE;
|
||||
break;
|
||||
|
||||
case state_M4:
|
||||
state = (c == '1') ? state_M41 : state_IGNORE;
|
||||
break;
|
||||
|
||||
case state_M41:
|
||||
state = (c == '0') ? state_M410 : state_IGNORE;
|
||||
break;
|
||||
|
||||
case state_IGNORE:
|
||||
if (c == '\n') state = state_RESET;
|
||||
break;
|
||||
|
||||
default:
|
||||
if (c == '\n') {
|
||||
switch (state) {
|
||||
case state_M108:
|
||||
wait_for_user = wait_for_heatup = false;
|
||||
break;
|
||||
case state_M112:
|
||||
kill(PSTR(MSG_KILLED));
|
||||
break;
|
||||
case state_M410:
|
||||
quickstop_stepper();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
state = state_RESET;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif // EMERGENCY_PARSER
|
||||
|
||||
FORCE_INLINE void store_char(unsigned char c) {
|
||||
CRITICAL_SECTION_START;
|
||||
const uint8_t h = rx_buffer.head,
|
||||
i = (uint8_t)(h + 1) & (RX_BUFFER_SIZE - 1);
|
||||
|
||||
// if we should be storing the received character into the location
|
||||
// just before the tail (meaning that the head would advance to the
|
||||
// current location of the tail), we're about to overflow the buffer
|
||||
// and so we don't write the character or advance the head.
|
||||
if (i != rx_buffer.tail) {
|
||||
rx_buffer.buffer[h] = c;
|
||||
rx_buffer.head = i;
|
||||
}
|
||||
CRITICAL_SECTION_END;
|
||||
|
||||
#if ENABLED(EMERGENCY_PARSER)
|
||||
emergency_parser(c);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if TX_BUFFER_SIZE > 0
|
||||
|
||||
FORCE_INLINE void _tx_udr_empty_irq(void) {
|
||||
// If interrupts are enabled, there must be more data in the output
|
||||
// buffer. Send the next byte
|
||||
const uint8_t t = tx_buffer.tail,
|
||||
c = tx_buffer.buffer[t];
|
||||
tx_buffer.tail = (t + 1) & (TX_BUFFER_SIZE - 1);
|
||||
|
||||
M_UDRx = c;
|
||||
|
||||
// clear the TXC bit -- "can be cleared by writing a one to its bit
|
||||
// location". This makes sure flush() won't return until the bytes
|
||||
// actually got written
|
||||
SBI(M_UCSRxA, M_TXCx);
|
||||
|
||||
if (tx_buffer.head == tx_buffer.tail) {
|
||||
// Buffer empty, so disable interrupts
|
||||
CBI(M_UCSRxB, M_UDRIEx);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef M_USARTx_UDRE_vect
|
||||
ISR(M_USARTx_UDRE_vect) {
|
||||
_tx_udr_empty_irq();
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // TX_BUFFER_SIZE
|
||||
|
||||
#ifdef M_USARTx_RX_vect
|
||||
ISR(M_USARTx_RX_vect) {
|
||||
const unsigned char c = M_UDRx;
|
||||
store_char(c);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Public Methods
|
||||
|
||||
void MarlinSerial::begin(const long baud) {
|
||||
uint16_t baud_setting;
|
||||
bool useU2X = true;
|
||||
|
||||
#if F_CPU == 16000000UL && SERIAL_PORT == 0
|
||||
// hard-coded exception for compatibility with the bootloader shipped
|
||||
// with the Duemilanove and previous boards and the firmware on the 8U2
|
||||
// on the Uno and Mega 2560.
|
||||
if (baud == 57600) useU2X = false;
|
||||
#endif
|
||||
|
||||
if (useU2X) {
|
||||
M_UCSRxA = _BV(M_U2Xx);
|
||||
baud_setting = (F_CPU / 4 / baud - 1) / 2;
|
||||
}
|
||||
else {
|
||||
M_UCSRxA = 0;
|
||||
baud_setting = (F_CPU / 8 / baud - 1) / 2;
|
||||
}
|
||||
|
||||
// assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register)
|
||||
M_UBRRxH = baud_setting >> 8;
|
||||
M_UBRRxL = baud_setting;
|
||||
|
||||
SBI(M_UCSRxB, M_RXENx);
|
||||
SBI(M_UCSRxB, M_TXENx);
|
||||
SBI(M_UCSRxB, M_RXCIEx);
|
||||
#if TX_BUFFER_SIZE > 0
|
||||
CBI(M_UCSRxB, M_UDRIEx);
|
||||
_written = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
void MarlinSerial::end() {
|
||||
CBI(M_UCSRxB, M_RXENx);
|
||||
CBI(M_UCSRxB, M_TXENx);
|
||||
CBI(M_UCSRxB, M_RXCIEx);
|
||||
CBI(M_UCSRxB, M_UDRIEx);
|
||||
}
|
||||
|
||||
void MarlinSerial::checkRx(void) {
|
||||
if (TEST(M_UCSRxA, M_RXCx)) {
|
||||
const uint8_t c = M_UDRx;
|
||||
store_char(c);
|
||||
}
|
||||
}
|
||||
|
||||
int MarlinSerial::peek(void) {
|
||||
CRITICAL_SECTION_START;
|
||||
const int v = rx_buffer.head == rx_buffer.tail ? -1 : rx_buffer.buffer[rx_buffer.tail];
|
||||
CRITICAL_SECTION_END;
|
||||
return v;
|
||||
}
|
||||
|
||||
int MarlinSerial::read(void) {
|
||||
int v;
|
||||
CRITICAL_SECTION_START;
|
||||
const uint8_t t = rx_buffer.tail;
|
||||
if (rx_buffer.head == t)
|
||||
v = -1;
|
||||
else {
|
||||
v = rx_buffer.buffer[t];
|
||||
rx_buffer.tail = (uint8_t)(t + 1) & (RX_BUFFER_SIZE - 1);
|
||||
}
|
||||
CRITICAL_SECTION_END;
|
||||
return v;
|
||||
}
|
||||
|
||||
uint8_t MarlinSerial::available(void) {
|
||||
CRITICAL_SECTION_START;
|
||||
const uint8_t h = rx_buffer.head,
|
||||
t = rx_buffer.tail;
|
||||
CRITICAL_SECTION_END;
|
||||
return (uint8_t)(RX_BUFFER_SIZE + h - t) & (RX_BUFFER_SIZE - 1);
|
||||
}
|
||||
|
||||
void MarlinSerial::flush(void) {
|
||||
// RX
|
||||
// don't reverse this or there may be problems if the RX interrupt
|
||||
// occurs after reading the value of rx_buffer_head but before writing
|
||||
// the value to rx_buffer_tail; the previous value of rx_buffer_head
|
||||
// may be written to rx_buffer_tail, making it appear as if the buffer
|
||||
// were full, not empty.
|
||||
CRITICAL_SECTION_START;
|
||||
rx_buffer.head = rx_buffer.tail;
|
||||
CRITICAL_SECTION_END;
|
||||
}
|
||||
|
||||
#if TX_BUFFER_SIZE > 0
|
||||
uint8_t MarlinSerial::availableForWrite(void) {
|
||||
CRITICAL_SECTION_START;
|
||||
const uint8_t h = tx_buffer.head,
|
||||
t = tx_buffer.tail;
|
||||
CRITICAL_SECTION_END;
|
||||
return (uint8_t)(TX_BUFFER_SIZE + h - t) & (TX_BUFFER_SIZE - 1);
|
||||
}
|
||||
|
||||
void MarlinSerial::write(const uint8_t c) {
|
||||
_written = true;
|
||||
CRITICAL_SECTION_START;
|
||||
bool emty = (tx_buffer.head == tx_buffer.tail);
|
||||
CRITICAL_SECTION_END;
|
||||
// If the buffer and the data register is empty, just write the byte
|
||||
// to the data register and be done. This shortcut helps
|
||||
// significantly improve the effective datarate at high (>
|
||||
// 500kbit/s) bitrates, where interrupt overhead becomes a slowdown.
|
||||
if (emty && TEST(M_UCSRxA, M_UDREx)) {
|
||||
CRITICAL_SECTION_START;
|
||||
M_UDRx = c;
|
||||
SBI(M_UCSRxA, M_TXCx);
|
||||
CRITICAL_SECTION_END;
|
||||
return;
|
||||
}
|
||||
const uint8_t i = (tx_buffer.head + 1) & (TX_BUFFER_SIZE - 1);
|
||||
|
||||
// If the output buffer is full, there's nothing for it other than to
|
||||
// wait for the interrupt handler to empty it a bit
|
||||
while (i == tx_buffer.tail) {
|
||||
if (!TEST(SREG, SREG_I)) {
|
||||
// Interrupts are disabled, so we'll have to poll the data
|
||||
// register empty flag ourselves. If it is set, pretend an
|
||||
// interrupt has happened and call the handler to free up
|
||||
// space for us.
|
||||
if (TEST(M_UCSRxA, M_UDREx))
|
||||
_tx_udr_empty_irq();
|
||||
} else {
|
||||
// nop, the interrupt handler will free up space for us
|
||||
}
|
||||
}
|
||||
|
||||
tx_buffer.buffer[tx_buffer.head] = c;
|
||||
{ CRITICAL_SECTION_START;
|
||||
tx_buffer.head = i;
|
||||
SBI(M_UCSRxB, M_UDRIEx);
|
||||
CRITICAL_SECTION_END;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
void MarlinSerial::flushTX(void) {
|
||||
// TX
|
||||
// If we have never written a byte, no need to flush. This special
|
||||
// case is needed since there is no way to force the TXC (transmit
|
||||
// complete) bit to 1 during initialization
|
||||
if (!_written)
|
||||
return;
|
||||
|
||||
while (TEST(M_UCSRxB, M_UDRIEx) || !TEST(M_UCSRxA, M_TXCx)) {
|
||||
if (!TEST(SREG, SREG_I) && TEST(M_UCSRxB, M_UDRIEx))
|
||||
// Interrupts are globally disabled, but the DR empty
|
||||
// interrupt should be enabled, so poll the DR empty flag to
|
||||
// prevent deadlock
|
||||
if (TEST(M_UCSRxA, M_UDREx))
|
||||
_tx_udr_empty_irq();
|
||||
}
|
||||
// If we get here, nothing is queued anymore (DRIE is disabled) and
|
||||
// the hardware finished tranmission (TXC is set).
|
||||
}
|
||||
|
||||
#else
|
||||
void MarlinSerial::write(uint8_t c) {
|
||||
while (!TEST(M_UCSRxA, M_UDREx))
|
||||
;
|
||||
M_UDRx = c;
|
||||
}
|
||||
#endif
|
||||
|
||||
// end NEW
|
||||
|
||||
/// imports from print.h
|
||||
|
||||
|
||||
void MarlinSerial::print(char c, int base) {
|
||||
print((long)c, base);
|
||||
}
|
||||
|
||||
void MarlinSerial::print(unsigned char b, int base) {
|
||||
print((unsigned long)b, base);
|
||||
}
|
||||
|
||||
void MarlinSerial::print(int n, int base) {
|
||||
print((long)n, base);
|
||||
}
|
||||
|
||||
void MarlinSerial::print(unsigned int n, int base) {
|
||||
print((unsigned long)n, base);
|
||||
}
|
||||
|
||||
void MarlinSerial::print(long n, int base) {
|
||||
if (base == 0)
|
||||
write(n);
|
||||
else if (base == 10) {
|
||||
if (n < 0) {
|
||||
print('-');
|
||||
n = -n;
|
||||
}
|
||||
printNumber(n, 10);
|
||||
}
|
||||
else
|
||||
printNumber(n, base);
|
||||
}
|
||||
|
||||
void MarlinSerial::print(unsigned long n, int base) {
|
||||
if (base == 0) write(n);
|
||||
else printNumber(n, base);
|
||||
}
|
||||
|
||||
void MarlinSerial::print(double n, int digits) {
|
||||
printFloat(n, digits);
|
||||
}
|
||||
|
||||
void MarlinSerial::println(void) {
|
||||
print('\r');
|
||||
print('\n');
|
||||
}
|
||||
|
||||
void MarlinSerial::println(const String& s) {
|
||||
print(s);
|
||||
println();
|
||||
}
|
||||
|
||||
void MarlinSerial::println(const char c[]) {
|
||||
print(c);
|
||||
println();
|
||||
}
|
||||
|
||||
void MarlinSerial::println(char c, int base) {
|
||||
print(c, base);
|
||||
println();
|
||||
}
|
||||
|
||||
void MarlinSerial::println(unsigned char b, int base) {
|
||||
print(b, base);
|
||||
println();
|
||||
}
|
||||
|
||||
void MarlinSerial::println(int n, int base) {
|
||||
print(n, base);
|
||||
println();
|
||||
}
|
||||
|
||||
void MarlinSerial::println(unsigned int n, int base) {
|
||||
print(n, base);
|
||||
println();
|
||||
}
|
||||
|
||||
void MarlinSerial::println(long n, int base) {
|
||||
print(n, base);
|
||||
println();
|
||||
}
|
||||
|
||||
void MarlinSerial::println(unsigned long n, int base) {
|
||||
print(n, base);
|
||||
println();
|
||||
}
|
||||
|
||||
void MarlinSerial::println(double n, int digits) {
|
||||
print(n, digits);
|
||||
println();
|
||||
}
|
||||
|
||||
// Private Methods
|
||||
|
||||
void MarlinSerial::printNumber(unsigned long n, uint8_t base) {
|
||||
if (n) {
|
||||
unsigned char buf[8 * sizeof(long)]; // Enough space for base 2
|
||||
int8_t i = 0;
|
||||
while (n) {
|
||||
buf[i++] = n % base;
|
||||
n /= base;
|
||||
}
|
||||
while (i--)
|
||||
print((char)(buf[i] + (buf[i] < 10 ? '0' : 'A' - 10)));
|
||||
}
|
||||
else
|
||||
print('0');
|
||||
}
|
||||
|
||||
void MarlinSerial::printFloat(double number, uint8_t digits) {
|
||||
// Handle negative numbers
|
||||
if (number < 0.0) {
|
||||
print('-');
|
||||
number = -number;
|
||||
}
|
||||
|
||||
// Round correctly so that print(1.999, 2) prints as "2.00"
|
||||
double rounding = 0.5;
|
||||
for (uint8_t i = 0; i < digits; ++i)
|
||||
rounding *= 0.1;
|
||||
|
||||
number += rounding;
|
||||
|
||||
// Extract the integer part of the number and print it
|
||||
unsigned long int_part = (unsigned long)number;
|
||||
double remainder = number - (double)int_part;
|
||||
print(int_part);
|
||||
|
||||
// Print the decimal point, but only if there are digits beyond
|
||||
if (digits) {
|
||||
print('.');
|
||||
// Extract digits from the remainder one at a time
|
||||
while (digits--) {
|
||||
remainder *= 10.0;
|
||||
int toPrint = int(remainder);
|
||||
print(toPrint);
|
||||
remainder -= toPrint;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Preinstantiate
|
||||
MarlinSerial customizedSerial;
|
||||
|
||||
#endif // !USBCON && (UBRRH || UBRR0H || UBRR1H || UBRR2H || UBRR3H)
|
||||
|
||||
// For AT90USB targets use the UART for BT interfacing
|
||||
#if defined(USBCON) && ENABLED(BLUETOOTH)
|
||||
HardwareSerial bluetoothSerial;
|
||||
#endif
|
||||
12613
Marlin/Marlin_main.cpp
12613
Marlin/Marlin_main.cpp
File diff suppressed because it is too large
Load Diff
1238
Marlin/SanityCheck.h
1238
Marlin/SanityCheck.h
File diff suppressed because it is too large
Load Diff
@@ -1,729 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Arduino Sd2Card Library
|
||||
* Copyright (C) 2009 by William Greiman
|
||||
*
|
||||
* This file is part of the Arduino Sd2Card Library
|
||||
*/
|
||||
#include "Marlin.h"
|
||||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
#include "Sd2Card.h"
|
||||
|
||||
#if ENABLED(USE_WATCHDOG)
|
||||
#include "watchdog.h"
|
||||
#endif
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
#if DISABLED(SOFTWARE_SPI)
|
||||
// functions for hardware SPI
|
||||
//------------------------------------------------------------------------------
|
||||
// make sure SPCR rate is in expected bits
|
||||
#if (SPR0 != 0 || SPR1 != 1)
|
||||
#error "unexpected SPCR bits"
|
||||
#endif
|
||||
/**
|
||||
* Initialize hardware SPI
|
||||
* Set SCK rate to F_CPU/pow(2, 1 + spiRate) for spiRate [0,6]
|
||||
*/
|
||||
static void spiInit(uint8_t spiRate) {
|
||||
// See avr processor documentation
|
||||
SPCR = _BV(SPE) | _BV(MSTR) | (spiRate >> 1);
|
||||
SPSR = spiRate & 1 || spiRate == 6 ? 0 : _BV(SPI2X);
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** SPI receive a byte */
|
||||
static uint8_t spiRec() {
|
||||
SPDR = 0XFF;
|
||||
while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
|
||||
return SPDR;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** SPI read data - only one call so force inline */
|
||||
static inline __attribute__((always_inline))
|
||||
void spiRead(uint8_t* buf, uint16_t nbyte) {
|
||||
if (nbyte-- == 0) return;
|
||||
SPDR = 0XFF;
|
||||
for (uint16_t i = 0; i < nbyte; i++) {
|
||||
while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
|
||||
buf[i] = SPDR;
|
||||
SPDR = 0XFF;
|
||||
}
|
||||
while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
|
||||
buf[nbyte] = SPDR;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** SPI send a byte */
|
||||
static void spiSend(uint8_t b) {
|
||||
SPDR = b;
|
||||
while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** SPI send block - only one call so force inline */
|
||||
static inline __attribute__((always_inline))
|
||||
void spiSendBlock(uint8_t token, const uint8_t* buf) {
|
||||
SPDR = token;
|
||||
for (uint16_t i = 0; i < 512; i += 2) {
|
||||
while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
|
||||
SPDR = buf[i];
|
||||
while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
|
||||
SPDR = buf[i + 1];
|
||||
}
|
||||
while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
#else // SOFTWARE_SPI
|
||||
//------------------------------------------------------------------------------
|
||||
/** nop to tune soft SPI timing */
|
||||
#define nop asm volatile ("nop\n\t")
|
||||
//------------------------------------------------------------------------------
|
||||
/** Soft SPI receive byte */
|
||||
static uint8_t spiRec() {
|
||||
uint8_t data = 0;
|
||||
// no interrupts during byte receive - about 8 us
|
||||
cli();
|
||||
// output pin high - like sending 0XFF
|
||||
WRITE(SPI_MOSI_PIN, HIGH);
|
||||
|
||||
for (uint8_t i = 0; i < 8; i++) {
|
||||
WRITE(SPI_SCK_PIN, HIGH);
|
||||
|
||||
// adjust so SCK is nice
|
||||
nop;
|
||||
nop;
|
||||
|
||||
data <<= 1;
|
||||
|
||||
if (READ(SPI_MISO_PIN)) data |= 1;
|
||||
|
||||
WRITE(SPI_SCK_PIN, LOW);
|
||||
}
|
||||
// enable interrupts
|
||||
sei();
|
||||
return data;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** Soft SPI read data */
|
||||
static void spiRead(uint8_t* buf, uint16_t nbyte) {
|
||||
for (uint16_t i = 0; i < nbyte; i++)
|
||||
buf[i] = spiRec();
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** Soft SPI send byte */
|
||||
static void spiSend(uint8_t data) {
|
||||
// no interrupts during byte send - about 8 us
|
||||
cli();
|
||||
for (uint8_t i = 0; i < 8; i++) {
|
||||
WRITE(SPI_SCK_PIN, LOW);
|
||||
|
||||
WRITE(SPI_MOSI_PIN, data & 0X80);
|
||||
|
||||
data <<= 1;
|
||||
|
||||
WRITE(SPI_SCK_PIN, HIGH);
|
||||
}
|
||||
// hold SCK high for a few ns
|
||||
nop;
|
||||
nop;
|
||||
nop;
|
||||
nop;
|
||||
|
||||
WRITE(SPI_SCK_PIN, LOW);
|
||||
// enable interrupts
|
||||
sei();
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** Soft SPI send block */
|
||||
void spiSendBlock(uint8_t token, const uint8_t* buf) {
|
||||
spiSend(token);
|
||||
for (uint16_t i = 0; i < 512; i++)
|
||||
spiSend(buf[i]);
|
||||
}
|
||||
#endif // SOFTWARE_SPI
|
||||
//------------------------------------------------------------------------------
|
||||
// send command and return error code. Return zero for OK
|
||||
uint8_t Sd2Card::cardCommand(uint8_t cmd, uint32_t arg) {
|
||||
// select card
|
||||
chipSelectLow();
|
||||
|
||||
// wait up to 300 ms if busy
|
||||
waitNotBusy(300);
|
||||
|
||||
// send command
|
||||
spiSend(cmd | 0x40);
|
||||
|
||||
// send argument
|
||||
for (int8_t s = 24; s >= 0; s -= 8) spiSend(arg >> s);
|
||||
|
||||
// send CRC
|
||||
uint8_t crc = 0XFF;
|
||||
if (cmd == CMD0) crc = 0X95; // correct crc for CMD0 with arg 0
|
||||
if (cmd == CMD8) crc = 0X87; // correct crc for CMD8 with arg 0X1AA
|
||||
spiSend(crc);
|
||||
|
||||
// skip stuff byte for stop read
|
||||
if (cmd == CMD12) spiRec();
|
||||
|
||||
// wait for response
|
||||
for (uint8_t i = 0; ((status_ = spiRec()) & 0X80) && i != 0XFF; i++) { /* Intentionally left empty */ }
|
||||
return status_;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* Determine the size of an SD flash memory card.
|
||||
*
|
||||
* \return The number of 512 byte data blocks in the card
|
||||
* or zero if an error occurs.
|
||||
*/
|
||||
uint32_t Sd2Card::cardSize() {
|
||||
csd_t csd;
|
||||
if (!readCSD(&csd)) return 0;
|
||||
if (csd.v1.csd_ver == 0) {
|
||||
uint8_t read_bl_len = csd.v1.read_bl_len;
|
||||
uint16_t c_size = (csd.v1.c_size_high << 10)
|
||||
| (csd.v1.c_size_mid << 2) | csd.v1.c_size_low;
|
||||
uint8_t c_size_mult = (csd.v1.c_size_mult_high << 1)
|
||||
| csd.v1.c_size_mult_low;
|
||||
return (uint32_t)(c_size + 1) << (c_size_mult + read_bl_len - 7);
|
||||
}
|
||||
else if (csd.v2.csd_ver == 1) {
|
||||
uint32_t c_size = ((uint32_t)csd.v2.c_size_high << 16)
|
||||
| (csd.v2.c_size_mid << 8) | csd.v2.c_size_low;
|
||||
return (c_size + 1) << 10;
|
||||
}
|
||||
else {
|
||||
error(SD_CARD_ERROR_BAD_CSD);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void Sd2Card::chipSelectHigh() {
|
||||
digitalWrite(chipSelectPin_, HIGH);
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void Sd2Card::chipSelectLow() {
|
||||
#if DISABLED(SOFTWARE_SPI)
|
||||
spiInit(spiRate_);
|
||||
#endif // SOFTWARE_SPI
|
||||
digitalWrite(chipSelectPin_, LOW);
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** Erase a range of blocks.
|
||||
*
|
||||
* \param[in] firstBlock The address of the first block in the range.
|
||||
* \param[in] lastBlock The address of the last block in the range.
|
||||
*
|
||||
* \note This function requests the SD card to do a flash erase for a
|
||||
* range of blocks. The data on the card after an erase operation is
|
||||
* either 0 or 1, depends on the card vendor. The card must support
|
||||
* single block erase.
|
||||
*
|
||||
* \return The value one, true, is returned for success and
|
||||
* the value zero, false, is returned for failure.
|
||||
*/
|
||||
bool Sd2Card::erase(uint32_t firstBlock, uint32_t lastBlock) {
|
||||
csd_t csd;
|
||||
if (!readCSD(&csd)) goto fail;
|
||||
// check for single block erase
|
||||
if (!csd.v1.erase_blk_en) {
|
||||
// erase size mask
|
||||
uint8_t m = (csd.v1.sector_size_high << 1) | csd.v1.sector_size_low;
|
||||
if ((firstBlock & m) != 0 || ((lastBlock + 1) & m) != 0) {
|
||||
// error card can't erase specified area
|
||||
error(SD_CARD_ERROR_ERASE_SINGLE_BLOCK);
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
if (type_ != SD_CARD_TYPE_SDHC) {
|
||||
firstBlock <<= 9;
|
||||
lastBlock <<= 9;
|
||||
}
|
||||
if (cardCommand(CMD32, firstBlock)
|
||||
|| cardCommand(CMD33, lastBlock)
|
||||
|| cardCommand(CMD38, 0)) {
|
||||
error(SD_CARD_ERROR_ERASE);
|
||||
goto fail;
|
||||
}
|
||||
if (!waitNotBusy(SD_ERASE_TIMEOUT)) {
|
||||
error(SD_CARD_ERROR_ERASE_TIMEOUT);
|
||||
goto fail;
|
||||
}
|
||||
chipSelectHigh();
|
||||
return true;
|
||||
fail:
|
||||
chipSelectHigh();
|
||||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** Determine if card supports single block erase.
|
||||
*
|
||||
* \return The value one, true, is returned if single block erase is supported.
|
||||
* The value zero, false, is returned if single block erase is not supported.
|
||||
*/
|
||||
bool Sd2Card::eraseSingleBlockEnable() {
|
||||
csd_t csd;
|
||||
return readCSD(&csd) ? csd.v1.erase_blk_en : false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* Initialize an SD flash memory card.
|
||||
*
|
||||
* \param[in] sckRateID SPI clock rate selector. See setSckRate().
|
||||
* \param[in] chipSelectPin SD chip select pin number.
|
||||
*
|
||||
* \return The value one, true, is returned for success and
|
||||
* the value zero, false, is returned for failure. The reason for failure
|
||||
* can be determined by calling errorCode() and errorData().
|
||||
*/
|
||||
bool Sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin) {
|
||||
errorCode_ = type_ = 0;
|
||||
chipSelectPin_ = chipSelectPin;
|
||||
// 16-bit init start time allows over a minute
|
||||
uint16_t t0 = (uint16_t)millis();
|
||||
uint32_t arg;
|
||||
|
||||
// If init takes more than 4s it could trigger
|
||||
// watchdog leading to a reboot loop.
|
||||
#if ENABLED(USE_WATCHDOG)
|
||||
watchdog_reset();
|
||||
#endif
|
||||
|
||||
// set pin modes
|
||||
pinMode(chipSelectPin_, OUTPUT);
|
||||
chipSelectHigh();
|
||||
SET_INPUT(SPI_MISO_PIN);
|
||||
SET_OUTPUT(SPI_MOSI_PIN);
|
||||
SET_OUTPUT(SPI_SCK_PIN);
|
||||
|
||||
#if DISABLED(SOFTWARE_SPI)
|
||||
// SS must be in output mode even it is not chip select
|
||||
SET_OUTPUT(SS_PIN);
|
||||
// set SS high - may be chip select for another SPI device
|
||||
#if SET_SPI_SS_HIGH
|
||||
WRITE(SS_PIN, HIGH);
|
||||
#endif // SET_SPI_SS_HIGH
|
||||
// set SCK rate for initialization commands
|
||||
spiRate_ = SPI_SD_INIT_RATE;
|
||||
spiInit(spiRate_);
|
||||
#endif // SOFTWARE_SPI
|
||||
|
||||
// must supply min of 74 clock cycles with CS high.
|
||||
for (uint8_t i = 0; i < 10; i++) spiSend(0XFF);
|
||||
|
||||
// command to go idle in SPI mode
|
||||
while ((status_ = cardCommand(CMD0, 0)) != R1_IDLE_STATE) {
|
||||
if (((uint16_t)millis() - t0) > SD_INIT_TIMEOUT) {
|
||||
error(SD_CARD_ERROR_CMD0);
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
// check SD version
|
||||
if ((cardCommand(CMD8, 0x1AA) & R1_ILLEGAL_COMMAND)) {
|
||||
type(SD_CARD_TYPE_SD1);
|
||||
}
|
||||
else {
|
||||
// only need last byte of r7 response
|
||||
for (uint8_t i = 0; i < 4; i++) status_ = spiRec();
|
||||
if (status_ != 0XAA) {
|
||||
error(SD_CARD_ERROR_CMD8);
|
||||
goto fail;
|
||||
}
|
||||
type(SD_CARD_TYPE_SD2);
|
||||
}
|
||||
// initialize card and send host supports SDHC if SD2
|
||||
arg = type() == SD_CARD_TYPE_SD2 ? 0X40000000 : 0;
|
||||
|
||||
while ((status_ = cardAcmd(ACMD41, arg)) != R1_READY_STATE) {
|
||||
// check for timeout
|
||||
if (((uint16_t)millis() - t0) > SD_INIT_TIMEOUT) {
|
||||
error(SD_CARD_ERROR_ACMD41);
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
// if SD2 read OCR register to check for SDHC card
|
||||
if (type() == SD_CARD_TYPE_SD2) {
|
||||
if (cardCommand(CMD58, 0)) {
|
||||
error(SD_CARD_ERROR_CMD58);
|
||||
goto fail;
|
||||
}
|
||||
if ((spiRec() & 0XC0) == 0XC0) type(SD_CARD_TYPE_SDHC);
|
||||
// discard rest of ocr - contains allowed voltage range
|
||||
for (uint8_t i = 0; i < 3; i++) spiRec();
|
||||
}
|
||||
chipSelectHigh();
|
||||
|
||||
#if DISABLED(SOFTWARE_SPI)
|
||||
return setSckRate(sckRateID);
|
||||
#else // SOFTWARE_SPI
|
||||
UNUSED(sckRateID);
|
||||
return true;
|
||||
#endif // SOFTWARE_SPI
|
||||
|
||||
fail:
|
||||
chipSelectHigh();
|
||||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* Read a 512 byte block from an SD card.
|
||||
*
|
||||
* \param[in] blockNumber Logical block to be read.
|
||||
* \param[out] dst Pointer to the location that will receive the data.
|
||||
* \return The value one, true, is returned for success and
|
||||
* the value zero, false, is returned for failure.
|
||||
*/
|
||||
bool Sd2Card::readBlock(uint32_t blockNumber, uint8_t* dst) {
|
||||
// use address if not SDHC card
|
||||
if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9;
|
||||
|
||||
#if ENABLED(SD_CHECK_AND_RETRY)
|
||||
uint8_t retryCnt = 3;
|
||||
do {
|
||||
if (!cardCommand(CMD17, blockNumber)) {
|
||||
if (readData(dst, 512)) return true;
|
||||
}
|
||||
else
|
||||
error(SD_CARD_ERROR_CMD17);
|
||||
|
||||
if (!--retryCnt) break;
|
||||
|
||||
chipSelectHigh();
|
||||
cardCommand(CMD12, 0); // Try sending a stop command, ignore the result.
|
||||
errorCode_ = 0;
|
||||
} while (true);
|
||||
#else
|
||||
if (cardCommand(CMD17, blockNumber))
|
||||
error(SD_CARD_ERROR_CMD17);
|
||||
else
|
||||
return readData(dst, 512);
|
||||
#endif
|
||||
|
||||
chipSelectHigh();
|
||||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** Read one data block in a multiple block read sequence
|
||||
*
|
||||
* \param[in] dst Pointer to the location for the data to be read.
|
||||
*
|
||||
* \return The value one, true, is returned for success and
|
||||
* the value zero, false, is returned for failure.
|
||||
*/
|
||||
bool Sd2Card::readData(uint8_t* dst) {
|
||||
chipSelectLow();
|
||||
return readData(dst, 512);
|
||||
}
|
||||
|
||||
#if ENABLED(SD_CHECK_AND_RETRY)
|
||||
static const uint16_t crctab[] PROGMEM = {
|
||||
0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
|
||||
0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
|
||||
0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
|
||||
0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
|
||||
0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
|
||||
0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
|
||||
0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
|
||||
0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
|
||||
0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
|
||||
0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
|
||||
0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
|
||||
0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
|
||||
0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
|
||||
0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
|
||||
0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
|
||||
0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
|
||||
0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
|
||||
0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
|
||||
0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
|
||||
0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
|
||||
0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
|
||||
0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
|
||||
0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
|
||||
0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
|
||||
0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
|
||||
0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
|
||||
0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
|
||||
0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
|
||||
0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
|
||||
0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
|
||||
0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
|
||||
0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
|
||||
};
|
||||
static uint16_t CRC_CCITT(const uint8_t* data, size_t n) {
|
||||
uint16_t crc = 0;
|
||||
for (size_t i = 0; i < n; i++) {
|
||||
crc = pgm_read_word(&crctab[(crc >> 8 ^ data[i]) & 0XFF]) ^ (crc << 8);
|
||||
}
|
||||
return crc;
|
||||
}
|
||||
#endif
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
bool Sd2Card::readData(uint8_t* dst, uint16_t count) {
|
||||
// wait for start block token
|
||||
uint16_t t0 = millis();
|
||||
while ((status_ = spiRec()) == 0XFF) {
|
||||
if (((uint16_t)millis() - t0) > SD_READ_TIMEOUT) {
|
||||
error(SD_CARD_ERROR_READ_TIMEOUT);
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
if (status_ != DATA_START_BLOCK) {
|
||||
error(SD_CARD_ERROR_READ);
|
||||
goto fail;
|
||||
}
|
||||
// transfer data
|
||||
spiRead(dst, count);
|
||||
|
||||
#if ENABLED(SD_CHECK_AND_RETRY)
|
||||
{
|
||||
uint16_t calcCrc = CRC_CCITT(dst, count);
|
||||
uint16_t recvCrc = spiRec() << 8;
|
||||
recvCrc |= spiRec();
|
||||
if (calcCrc != recvCrc) {
|
||||
error(SD_CARD_ERROR_CRC);
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
#else
|
||||
// discard CRC
|
||||
spiRec();
|
||||
spiRec();
|
||||
#endif
|
||||
chipSelectHigh();
|
||||
// Send an additional dummy byte, required by Toshiba Flash Air SD Card
|
||||
spiSend(0XFF);
|
||||
return true;
|
||||
fail:
|
||||
chipSelectHigh();
|
||||
// Send an additional dummy byte, required by Toshiba Flash Air SD Card
|
||||
spiSend(0XFF);
|
||||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** read CID or CSR register */
|
||||
bool Sd2Card::readRegister(uint8_t cmd, void* buf) {
|
||||
uint8_t* dst = reinterpret_cast<uint8_t*>(buf);
|
||||
if (cardCommand(cmd, 0)) {
|
||||
error(SD_CARD_ERROR_READ_REG);
|
||||
goto fail;
|
||||
}
|
||||
return readData(dst, 16);
|
||||
fail:
|
||||
chipSelectHigh();
|
||||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** Start a read multiple blocks sequence.
|
||||
*
|
||||
* \param[in] blockNumber Address of first block in sequence.
|
||||
*
|
||||
* \note This function is used with readData() and readStop() for optimized
|
||||
* multiple block reads. SPI chipSelect must be low for the entire sequence.
|
||||
*
|
||||
* \return The value one, true, is returned for success and
|
||||
* the value zero, false, is returned for failure.
|
||||
*/
|
||||
bool Sd2Card::readStart(uint32_t blockNumber) {
|
||||
if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9;
|
||||
if (cardCommand(CMD18, blockNumber)) {
|
||||
error(SD_CARD_ERROR_CMD18);
|
||||
goto fail;
|
||||
}
|
||||
chipSelectHigh();
|
||||
return true;
|
||||
fail:
|
||||
chipSelectHigh();
|
||||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** End a read multiple blocks sequence.
|
||||
*
|
||||
* \return The value one, true, is returned for success and
|
||||
* the value zero, false, is returned for failure.
|
||||
*/
|
||||
bool Sd2Card::readStop() {
|
||||
chipSelectLow();
|
||||
if (cardCommand(CMD12, 0)) {
|
||||
error(SD_CARD_ERROR_CMD12);
|
||||
goto fail;
|
||||
}
|
||||
chipSelectHigh();
|
||||
return true;
|
||||
fail:
|
||||
chipSelectHigh();
|
||||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* Set the SPI clock rate.
|
||||
*
|
||||
* \param[in] sckRateID A value in the range [0, 6].
|
||||
*
|
||||
* The SPI clock will be set to F_CPU/pow(2, 1 + sckRateID). The maximum
|
||||
* SPI rate is F_CPU/2 for \a sckRateID = 0 and the minimum rate is F_CPU/128
|
||||
* for \a scsRateID = 6.
|
||||
*
|
||||
* \return The value one, true, is returned for success and the value zero,
|
||||
* false, is returned for an invalid value of \a sckRateID.
|
||||
*/
|
||||
bool Sd2Card::setSckRate(uint8_t sckRateID) {
|
||||
if (sckRateID > 6) {
|
||||
error(SD_CARD_ERROR_SCK_RATE);
|
||||
return false;
|
||||
}
|
||||
spiRate_ = sckRateID;
|
||||
return true;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
// wait for card to go not busy
|
||||
bool Sd2Card::waitNotBusy(uint16_t timeoutMillis) {
|
||||
uint16_t t0 = millis();
|
||||
while (spiRec() != 0XFF) {
|
||||
if (((uint16_t)millis() - t0) >= timeoutMillis) goto fail;
|
||||
}
|
||||
return true;
|
||||
fail:
|
||||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* Writes a 512 byte block to an SD card.
|
||||
*
|
||||
* \param[in] blockNumber Logical block to be written.
|
||||
* \param[in] src Pointer to the location of the data to be written.
|
||||
* \return The value one, true, is returned for success and
|
||||
* the value zero, false, is returned for failure.
|
||||
*/
|
||||
bool Sd2Card::writeBlock(uint32_t blockNumber, const uint8_t* src) {
|
||||
// use address if not SDHC card
|
||||
if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9;
|
||||
if (cardCommand(CMD24, blockNumber)) {
|
||||
error(SD_CARD_ERROR_CMD24);
|
||||
goto fail;
|
||||
}
|
||||
if (!writeData(DATA_START_BLOCK, src)) goto fail;
|
||||
|
||||
// wait for flash programming to complete
|
||||
if (!waitNotBusy(SD_WRITE_TIMEOUT)) {
|
||||
error(SD_CARD_ERROR_WRITE_TIMEOUT);
|
||||
goto fail;
|
||||
}
|
||||
// response is r2 so get and check two bytes for nonzero
|
||||
if (cardCommand(CMD13, 0) || spiRec()) {
|
||||
error(SD_CARD_ERROR_WRITE_PROGRAMMING);
|
||||
goto fail;
|
||||
}
|
||||
chipSelectHigh();
|
||||
return true;
|
||||
fail:
|
||||
chipSelectHigh();
|
||||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** Write one data block in a multiple block write sequence
|
||||
* \param[in] src Pointer to the location of the data to be written.
|
||||
* \return The value one, true, is returned for success and
|
||||
* the value zero, false, is returned for failure.
|
||||
*/
|
||||
bool Sd2Card::writeData(const uint8_t* src) {
|
||||
chipSelectLow();
|
||||
// wait for previous write to finish
|
||||
if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto fail;
|
||||
if (!writeData(WRITE_MULTIPLE_TOKEN, src)) goto fail;
|
||||
chipSelectHigh();
|
||||
return true;
|
||||
fail:
|
||||
error(SD_CARD_ERROR_WRITE_MULTIPLE);
|
||||
chipSelectHigh();
|
||||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
// send one block of data for write block or write multiple blocks
|
||||
bool Sd2Card::writeData(uint8_t token, const uint8_t* src) {
|
||||
spiSendBlock(token, src);
|
||||
|
||||
spiSend(0xFF); // dummy crc
|
||||
spiSend(0xFF); // dummy crc
|
||||
|
||||
status_ = spiRec();
|
||||
if ((status_ & DATA_RES_MASK) != DATA_RES_ACCEPTED) {
|
||||
error(SD_CARD_ERROR_WRITE);
|
||||
goto fail;
|
||||
}
|
||||
return true;
|
||||
fail:
|
||||
chipSelectHigh();
|
||||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** Start a write multiple blocks sequence.
|
||||
*
|
||||
* \param[in] blockNumber Address of first block in sequence.
|
||||
* \param[in] eraseCount The number of blocks to be pre-erased.
|
||||
*
|
||||
* \note This function is used with writeData() and writeStop()
|
||||
* for optimized multiple block writes.
|
||||
*
|
||||
* \return The value one, true, is returned for success and
|
||||
* the value zero, false, is returned for failure.
|
||||
*/
|
||||
bool Sd2Card::writeStart(uint32_t blockNumber, uint32_t eraseCount) {
|
||||
// send pre-erase count
|
||||
if (cardAcmd(ACMD23, eraseCount)) {
|
||||
error(SD_CARD_ERROR_ACMD23);
|
||||
goto fail;
|
||||
}
|
||||
// use address if not SDHC card
|
||||
if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9;
|
||||
if (cardCommand(CMD25, blockNumber)) {
|
||||
error(SD_CARD_ERROR_CMD25);
|
||||
goto fail;
|
||||
}
|
||||
chipSelectHigh();
|
||||
return true;
|
||||
fail:
|
||||
chipSelectHigh();
|
||||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** End a write multiple blocks sequence.
|
||||
*
|
||||
* \return The value one, true, is returned for success and
|
||||
* the value zero, false, is returned for failure.
|
||||
*/
|
||||
bool Sd2Card::writeStop() {
|
||||
chipSelectLow();
|
||||
if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto fail;
|
||||
spiSend(STOP_TRAN_TOKEN);
|
||||
if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto fail;
|
||||
chipSelectHigh();
|
||||
return true;
|
||||
fail:
|
||||
error(SD_CARD_ERROR_STOP_TRAN);
|
||||
chipSelectHigh();
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
||||
251
Marlin/Sd2Card.h
251
Marlin/Sd2Card.h
@@ -1,251 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Arduino Sd2Card Library
|
||||
* Copyright (C) 2009 by William Greiman
|
||||
*
|
||||
* This file is part of the Arduino Sd2Card Library
|
||||
*/
|
||||
|
||||
#include "Marlin.h"
|
||||
#if ENABLED(SDSUPPORT)
|
||||
|
||||
#ifndef Sd2Card_h
|
||||
#define Sd2Card_h
|
||||
/**
|
||||
* \file
|
||||
* \brief Sd2Card class for V2 SD/SDHC cards
|
||||
*/
|
||||
#include "SdFatConfig.h"
|
||||
#include "SdInfo.h"
|
||||
//------------------------------------------------------------------------------
|
||||
// SPI speed is F_CPU/2^(1 + index), 0 <= index <= 6
|
||||
/** Set SCK to max rate of F_CPU/2. See Sd2Card::setSckRate(). */
|
||||
uint8_t const SPI_FULL_SPEED = 0;
|
||||
/** Set SCK rate to F_CPU/4. See Sd2Card::setSckRate(). */
|
||||
uint8_t const SPI_HALF_SPEED = 1;
|
||||
/** Set SCK rate to F_CPU/8. See Sd2Card::setSckRate(). */
|
||||
uint8_t const SPI_QUARTER_SPEED = 2;
|
||||
/** Set SCK rate to F_CPU/16. See Sd2Card::setSckRate(). */
|
||||
uint8_t const SPI_EIGHTH_SPEED = 3;
|
||||
/** Set SCK rate to F_CPU/32. See Sd2Card::setSckRate(). */
|
||||
uint8_t const SPI_SIXTEENTH_SPEED = 4;
|
||||
//------------------------------------------------------------------------------
|
||||
/** init timeout ms */
|
||||
uint16_t const SD_INIT_TIMEOUT = 2000;
|
||||
/** erase timeout ms */
|
||||
uint16_t const SD_ERASE_TIMEOUT = 10000;
|
||||
/** read timeout ms */
|
||||
uint16_t const SD_READ_TIMEOUT = 300;
|
||||
/** write time out ms */
|
||||
uint16_t const SD_WRITE_TIMEOUT = 600;
|
||||
//------------------------------------------------------------------------------
|
||||
// SD card errors
|
||||
/** timeout error for command CMD0 (initialize card in SPI mode) */
|
||||
uint8_t const SD_CARD_ERROR_CMD0 = 0X1;
|
||||
/** CMD8 was not accepted - not a valid SD card*/
|
||||
uint8_t const SD_CARD_ERROR_CMD8 = 0X2;
|
||||
/** card returned an error response for CMD12 (write stop) */
|
||||
uint8_t const SD_CARD_ERROR_CMD12 = 0X3;
|
||||
/** card returned an error response for CMD17 (read block) */
|
||||
uint8_t const SD_CARD_ERROR_CMD17 = 0X4;
|
||||
/** card returned an error response for CMD18 (read multiple block) */
|
||||
uint8_t const SD_CARD_ERROR_CMD18 = 0X5;
|
||||
/** card returned an error response for CMD24 (write block) */
|
||||
uint8_t const SD_CARD_ERROR_CMD24 = 0X6;
|
||||
/** WRITE_MULTIPLE_BLOCKS command failed */
|
||||
uint8_t const SD_CARD_ERROR_CMD25 = 0X7;
|
||||
/** card returned an error response for CMD58 (read OCR) */
|
||||
uint8_t const SD_CARD_ERROR_CMD58 = 0X8;
|
||||
/** SET_WR_BLK_ERASE_COUNT failed */
|
||||
uint8_t const SD_CARD_ERROR_ACMD23 = 0X9;
|
||||
/** ACMD41 initialization process timeout */
|
||||
uint8_t const SD_CARD_ERROR_ACMD41 = 0XA;
|
||||
/** card returned a bad CSR version field */
|
||||
uint8_t const SD_CARD_ERROR_BAD_CSD = 0XB;
|
||||
/** erase block group command failed */
|
||||
uint8_t const SD_CARD_ERROR_ERASE = 0XC;
|
||||
/** card not capable of single block erase */
|
||||
uint8_t const SD_CARD_ERROR_ERASE_SINGLE_BLOCK = 0XD;
|
||||
/** Erase sequence timed out */
|
||||
uint8_t const SD_CARD_ERROR_ERASE_TIMEOUT = 0XE;
|
||||
/** card returned an error token instead of read data */
|
||||
uint8_t const SD_CARD_ERROR_READ = 0XF;
|
||||
/** read CID or CSD failed */
|
||||
uint8_t const SD_CARD_ERROR_READ_REG = 0X10;
|
||||
/** timeout while waiting for start of read data */
|
||||
uint8_t const SD_CARD_ERROR_READ_TIMEOUT = 0X11;
|
||||
/** card did not accept STOP_TRAN_TOKEN */
|
||||
uint8_t const SD_CARD_ERROR_STOP_TRAN = 0X12;
|
||||
/** card returned an error token as a response to a write operation */
|
||||
uint8_t const SD_CARD_ERROR_WRITE = 0X13;
|
||||
/** attempt to write protected block zero */
|
||||
uint8_t const SD_CARD_ERROR_WRITE_BLOCK_ZERO = 0X14; // REMOVE - not used
|
||||
/** card did not go ready for a multiple block write */
|
||||
uint8_t const SD_CARD_ERROR_WRITE_MULTIPLE = 0X15;
|
||||
/** card returned an error to a CMD13 status check after a write */
|
||||
uint8_t const SD_CARD_ERROR_WRITE_PROGRAMMING = 0X16;
|
||||
/** timeout occurred during write programming */
|
||||
uint8_t const SD_CARD_ERROR_WRITE_TIMEOUT = 0X17;
|
||||
/** incorrect rate selected */
|
||||
uint8_t const SD_CARD_ERROR_SCK_RATE = 0X18;
|
||||
/** init() not called */
|
||||
uint8_t const SD_CARD_ERROR_INIT_NOT_CALLED = 0X19;
|
||||
/** crc check error */
|
||||
uint8_t const SD_CARD_ERROR_CRC = 0X20;
|
||||
//------------------------------------------------------------------------------
|
||||
// card types
|
||||
/** Standard capacity V1 SD card */
|
||||
uint8_t const SD_CARD_TYPE_SD1 = 1;
|
||||
/** Standard capacity V2 SD card */
|
||||
uint8_t const SD_CARD_TYPE_SD2 = 2;
|
||||
/** High Capacity SD card */
|
||||
uint8_t const SD_CARD_TYPE_SDHC = 3;
|
||||
/**
|
||||
* define SOFTWARE_SPI to use bit-bang SPI
|
||||
*/
|
||||
//------------------------------------------------------------------------------
|
||||
#if MEGA_SOFT_SPI && (defined(__AVR_ATmega1280__)||defined(__AVR_ATmega2560__))
|
||||
#define SOFTWARE_SPI
|
||||
#elif USE_SOFTWARE_SPI
|
||||
#define SOFTWARE_SPI
|
||||
#endif // MEGA_SOFT_SPI
|
||||
//------------------------------------------------------------------------------
|
||||
// SPI pin definitions - do not edit here - change in SdFatConfig.h
|
||||
//
|
||||
#if DISABLED(SOFTWARE_SPI)
|
||||
// hardware pin defs
|
||||
/** The default chip select pin for the SD card is SS. */
|
||||
#define SD_CHIP_SELECT_PIN SS_PIN
|
||||
// The following three pins must not be redefined for hardware SPI.
|
||||
/** SPI Master Out Slave In pin */
|
||||
#define SPI_MOSI_PIN MOSI_PIN
|
||||
/** SPI Master In Slave Out pin */
|
||||
#define SPI_MISO_PIN MISO_PIN
|
||||
/** SPI Clock pin */
|
||||
#define SPI_SCK_PIN SCK_PIN
|
||||
|
||||
#else // SOFTWARE_SPI
|
||||
|
||||
/** SPI chip select pin */
|
||||
#define SD_CHIP_SELECT_PIN SOFT_SPI_CS_PIN
|
||||
/** SPI Master Out Slave In pin */
|
||||
#define SPI_MOSI_PIN SOFT_SPI_MOSI_PIN
|
||||
/** SPI Master In Slave Out pin */
|
||||
#define SPI_MISO_PIN SOFT_SPI_MISO_PIN
|
||||
/** SPI Clock pin */
|
||||
#define SPI_SCK_PIN SOFT_SPI_SCK_PIN
|
||||
#endif // SOFTWARE_SPI
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* \class Sd2Card
|
||||
* \brief Raw access to SD and SDHC flash memory cards.
|
||||
*/
|
||||
class Sd2Card {
|
||||
public:
|
||||
/** Construct an instance of Sd2Card. */
|
||||
Sd2Card() : errorCode_(SD_CARD_ERROR_INIT_NOT_CALLED), type_(0) {}
|
||||
uint32_t cardSize();
|
||||
bool erase(uint32_t firstBlock, uint32_t lastBlock);
|
||||
bool eraseSingleBlockEnable();
|
||||
/**
|
||||
* Set SD error code.
|
||||
* \param[in] code value for error code.
|
||||
*/
|
||||
void error(uint8_t code) {errorCode_ = code;}
|
||||
/**
|
||||
* \return error code for last error. See Sd2Card.h for a list of error codes.
|
||||
*/
|
||||
int errorCode() const {return errorCode_;}
|
||||
/** \return error data for last error. */
|
||||
int errorData() const {return status_;}
|
||||
/**
|
||||
* Initialize an SD flash memory card with default clock rate and chip
|
||||
* select pin. See sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin).
|
||||
*
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool init(uint8_t sckRateID = SPI_FULL_SPEED,
|
||||
uint8_t chipSelectPin = SD_CHIP_SELECT_PIN);
|
||||
bool readBlock(uint32_t block, uint8_t* dst);
|
||||
/**
|
||||
* Read a card's CID register. The CID contains card identification
|
||||
* information such as Manufacturer ID, Product name, Product serial
|
||||
* number and Manufacturing date.
|
||||
*
|
||||
* \param[out] cid pointer to area for returned data.
|
||||
*
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool readCID(cid_t* cid) {
|
||||
return readRegister(CMD10, cid);
|
||||
}
|
||||
/**
|
||||
* Read a card's CSD register. The CSD contains Card-Specific Data that
|
||||
* provides information regarding access to the card's contents.
|
||||
*
|
||||
* \param[out] csd pointer to area for returned data.
|
||||
*
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool readCSD(csd_t* csd) {
|
||||
return readRegister(CMD9, csd);
|
||||
}
|
||||
bool readData(uint8_t* dst);
|
||||
bool readStart(uint32_t blockNumber);
|
||||
bool readStop();
|
||||
bool setSckRate(uint8_t sckRateID);
|
||||
/** Return the card type: SD V1, SD V2 or SDHC
|
||||
* \return 0 - SD V1, 1 - SD V2, or 3 - SDHC.
|
||||
*/
|
||||
int type() const {return type_;}
|
||||
bool writeBlock(uint32_t blockNumber, const uint8_t* src);
|
||||
bool writeData(const uint8_t* src);
|
||||
bool writeStart(uint32_t blockNumber, uint32_t eraseCount);
|
||||
bool writeStop();
|
||||
private:
|
||||
//----------------------------------------------------------------------------
|
||||
uint8_t chipSelectPin_;
|
||||
uint8_t errorCode_;
|
||||
uint8_t spiRate_;
|
||||
uint8_t status_;
|
||||
uint8_t type_;
|
||||
// private functions
|
||||
uint8_t cardAcmd(uint8_t cmd, uint32_t arg) {
|
||||
cardCommand(CMD55, 0);
|
||||
return cardCommand(cmd, arg);
|
||||
}
|
||||
uint8_t cardCommand(uint8_t cmd, uint32_t arg);
|
||||
|
||||
bool readData(uint8_t* dst, uint16_t count);
|
||||
bool readRegister(uint8_t cmd, void* buf);
|
||||
void chipSelectHigh();
|
||||
void chipSelectLow();
|
||||
void type(uint8_t value) {type_ = value;}
|
||||
bool waitNotBusy(uint16_t timeoutMillis);
|
||||
bool writeData(uint8_t token, const uint8_t* src);
|
||||
};
|
||||
#endif // Sd2Card_h
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,492 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Arduino SdFat Library
|
||||
* Copyright (C) 2009 by William Greiman
|
||||
*
|
||||
* This file is part of the Arduino Sd2Card Library
|
||||
*/
|
||||
#include "Marlin.h"
|
||||
#if ENABLED(SDSUPPORT)
|
||||
|
||||
#ifndef SdBaseFile_h
|
||||
#define SdBaseFile_h
|
||||
/**
|
||||
* \file
|
||||
* \brief SdBaseFile class
|
||||
*/
|
||||
#include "Marlin.h"
|
||||
#include "SdFatConfig.h"
|
||||
#include "SdVolume.h"
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* \struct filepos_t
|
||||
* \brief internal type for istream
|
||||
* do not use in user apps
|
||||
*/
|
||||
struct filepos_t {
|
||||
/** stream position */
|
||||
uint32_t position;
|
||||
/** cluster for position */
|
||||
uint32_t cluster;
|
||||
filepos_t() : position(0), cluster(0) {}
|
||||
};
|
||||
|
||||
// use the gnu style oflag in open()
|
||||
/** open() oflag for reading */
|
||||
uint8_t const O_READ = 0X01;
|
||||
/** open() oflag - same as O_IN */
|
||||
uint8_t const O_RDONLY = O_READ;
|
||||
/** open() oflag for write */
|
||||
uint8_t const O_WRITE = 0X02;
|
||||
/** open() oflag - same as O_WRITE */
|
||||
uint8_t const O_WRONLY = O_WRITE;
|
||||
/** open() oflag for reading and writing */
|
||||
uint8_t const O_RDWR = (O_READ | O_WRITE);
|
||||
/** open() oflag mask for access modes */
|
||||
uint8_t const O_ACCMODE = (O_READ | O_WRITE);
|
||||
/** The file offset shall be set to the end of the file prior to each write. */
|
||||
uint8_t const O_APPEND = 0X04;
|
||||
/** synchronous writes - call sync() after each write */
|
||||
uint8_t const O_SYNC = 0X08;
|
||||
/** truncate the file to zero length */
|
||||
uint8_t const O_TRUNC = 0X10;
|
||||
/** set the initial position at the end of the file */
|
||||
uint8_t const O_AT_END = 0X20;
|
||||
/** create the file if nonexistent */
|
||||
uint8_t const O_CREAT = 0X40;
|
||||
/** If O_CREAT and O_EXCL are set, open() shall fail if the file exists */
|
||||
uint8_t const O_EXCL = 0X80;
|
||||
|
||||
// SdBaseFile class static and const definitions
|
||||
// flags for ls()
|
||||
/** ls() flag to print modify date */
|
||||
uint8_t const LS_DATE = 1;
|
||||
/** ls() flag to print file size */
|
||||
uint8_t const LS_SIZE = 2;
|
||||
/** ls() flag for recursive list of subdirectories */
|
||||
uint8_t const LS_R = 4;
|
||||
|
||||
|
||||
// flags for timestamp
|
||||
/** set the file's last access date */
|
||||
uint8_t const T_ACCESS = 1;
|
||||
/** set the file's creation date and time */
|
||||
uint8_t const T_CREATE = 2;
|
||||
/** Set the file's write date and time */
|
||||
uint8_t const T_WRITE = 4;
|
||||
// values for type_
|
||||
/** This file has not been opened. */
|
||||
uint8_t const FAT_FILE_TYPE_CLOSED = 0;
|
||||
/** A normal file */
|
||||
uint8_t const FAT_FILE_TYPE_NORMAL = 1;
|
||||
/** A FAT12 or FAT16 root directory */
|
||||
uint8_t const FAT_FILE_TYPE_ROOT_FIXED = 2;
|
||||
/** A FAT32 root directory */
|
||||
uint8_t const FAT_FILE_TYPE_ROOT32 = 3;
|
||||
/** A subdirectory file*/
|
||||
uint8_t const FAT_FILE_TYPE_SUBDIR = 4;
|
||||
/** Test value for directory type */
|
||||
uint8_t const FAT_FILE_TYPE_MIN_DIR = FAT_FILE_TYPE_ROOT_FIXED;
|
||||
|
||||
/** date field for FAT directory entry
|
||||
* \param[in] year [1980,2107]
|
||||
* \param[in] month [1,12]
|
||||
* \param[in] day [1,31]
|
||||
*
|
||||
* \return Packed date for dir_t entry.
|
||||
*/
|
||||
static inline uint16_t FAT_DATE(uint16_t year, uint8_t month, uint8_t day) {
|
||||
return (year - 1980) << 9 | month << 5 | day;
|
||||
}
|
||||
/** year part of FAT directory date field
|
||||
* \param[in] fatDate Date in packed dir format.
|
||||
*
|
||||
* \return Extracted year [1980,2107]
|
||||
*/
|
||||
static inline uint16_t FAT_YEAR(uint16_t fatDate) {
|
||||
return 1980 + (fatDate >> 9);
|
||||
}
|
||||
/** month part of FAT directory date field
|
||||
* \param[in] fatDate Date in packed dir format.
|
||||
*
|
||||
* \return Extracted month [1,12]
|
||||
*/
|
||||
static inline uint8_t FAT_MONTH(uint16_t fatDate) {
|
||||
return (fatDate >> 5) & 0XF;
|
||||
}
|
||||
/** day part of FAT directory date field
|
||||
* \param[in] fatDate Date in packed dir format.
|
||||
*
|
||||
* \return Extracted day [1,31]
|
||||
*/
|
||||
static inline uint8_t FAT_DAY(uint16_t fatDate) {
|
||||
return fatDate & 0X1F;
|
||||
}
|
||||
/** time field for FAT directory entry
|
||||
* \param[in] hour [0,23]
|
||||
* \param[in] minute [0,59]
|
||||
* \param[in] second [0,59]
|
||||
*
|
||||
* \return Packed time for dir_t entry.
|
||||
*/
|
||||
static inline uint16_t FAT_TIME(uint8_t hour, uint8_t minute, uint8_t second) {
|
||||
return hour << 11 | minute << 5 | second >> 1;
|
||||
}
|
||||
/** hour part of FAT directory time field
|
||||
* \param[in] fatTime Time in packed dir format.
|
||||
*
|
||||
* \return Extracted hour [0,23]
|
||||
*/
|
||||
static inline uint8_t FAT_HOUR(uint16_t fatTime) {
|
||||
return fatTime >> 11;
|
||||
}
|
||||
/** minute part of FAT directory time field
|
||||
* \param[in] fatTime Time in packed dir format.
|
||||
*
|
||||
* \return Extracted minute [0,59]
|
||||
*/
|
||||
static inline uint8_t FAT_MINUTE(uint16_t fatTime) {
|
||||
return (fatTime >> 5) & 0X3F;
|
||||
}
|
||||
/** second part of FAT directory time field
|
||||
* Note second/2 is stored in packed time.
|
||||
*
|
||||
* \param[in] fatTime Time in packed dir format.
|
||||
*
|
||||
* \return Extracted second [0,58]
|
||||
*/
|
||||
static inline uint8_t FAT_SECOND(uint16_t fatTime) {
|
||||
return 2 * (fatTime & 0X1F);
|
||||
}
|
||||
/** Default date for file timestamps is 1 Jan 2000 */
|
||||
uint16_t const FAT_DEFAULT_DATE = ((2000 - 1980) << 9) | (1 << 5) | 1;
|
||||
/** Default time for file timestamp is 1 am */
|
||||
uint16_t const FAT_DEFAULT_TIME = (1 << 11);
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* \class SdBaseFile
|
||||
* \brief Base class for SdFile with Print and C++ streams.
|
||||
*/
|
||||
class SdBaseFile {
|
||||
public:
|
||||
/** Create an instance. */
|
||||
SdBaseFile() : writeError(false), type_(FAT_FILE_TYPE_CLOSED) {}
|
||||
SdBaseFile(const char* path, uint8_t oflag);
|
||||
~SdBaseFile() {if (isOpen()) close();}
|
||||
/**
|
||||
* writeError is set to true if an error occurs during a write().
|
||||
* Set writeError to false before calling print() and/or write() and check
|
||||
* for true after calls to print() and/or write().
|
||||
*/
|
||||
bool writeError;
|
||||
//----------------------------------------------------------------------------
|
||||
// helpers for stream classes
|
||||
/** get position for streams
|
||||
* \param[out] pos struct to receive position
|
||||
*/
|
||||
void getpos(filepos_t* pos);
|
||||
/** set position for streams
|
||||
* \param[out] pos struct with value for new position
|
||||
*/
|
||||
void setpos(filepos_t* pos);
|
||||
//----------------------------------------------------------------------------
|
||||
bool close();
|
||||
bool contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock);
|
||||
bool createContiguous(SdBaseFile* dirFile,
|
||||
const char* path, uint32_t size);
|
||||
/** \return The current cluster number for a file or directory. */
|
||||
uint32_t curCluster() const {return curCluster_;}
|
||||
/** \return The current position for a file or directory. */
|
||||
uint32_t curPosition() const {return curPosition_;}
|
||||
/** \return Current working directory */
|
||||
static SdBaseFile* cwd() {return cwd_;}
|
||||
/** Set the date/time callback function
|
||||
*
|
||||
* \param[in] dateTime The user's call back function. The callback
|
||||
* function is of the form:
|
||||
*
|
||||
* \code
|
||||
* void dateTime(uint16_t* date, uint16_t* time) {
|
||||
* uint16_t year;
|
||||
* uint8_t month, day, hour, minute, second;
|
||||
*
|
||||
* // User gets date and time from GPS or real-time clock here
|
||||
*
|
||||
* // return date using FAT_DATE macro to format fields
|
||||
* *date = FAT_DATE(year, month, day);
|
||||
*
|
||||
* // return time using FAT_TIME macro to format fields
|
||||
* *time = FAT_TIME(hour, minute, second);
|
||||
* }
|
||||
* \endcode
|
||||
*
|
||||
* Sets the function that is called when a file is created or when
|
||||
* a file's directory entry is modified by sync(). All timestamps,
|
||||
* access, creation, and modify, are set when a file is created.
|
||||
* sync() maintains the last access date and last modify date/time.
|
||||
*
|
||||
* See the timestamp() function.
|
||||
*/
|
||||
static void dateTimeCallback(
|
||||
void (*dateTime)(uint16_t* date, uint16_t* time)) {
|
||||
dateTime_ = dateTime;
|
||||
}
|
||||
/** Cancel the date/time callback function. */
|
||||
static void dateTimeCallbackCancel() {dateTime_ = 0;}
|
||||
bool dirEntry(dir_t* dir);
|
||||
static void dirName(const dir_t& dir, char* name);
|
||||
bool exists(const char* name);
|
||||
int16_t fgets(char* str, int16_t num, char* delim = 0);
|
||||
/** \return The total number of bytes in a file or directory. */
|
||||
uint32_t fileSize() const {return fileSize_;}
|
||||
/** \return The first cluster number for a file or directory. */
|
||||
uint32_t firstCluster() const {return firstCluster_;}
|
||||
bool getFilename(char* name);
|
||||
/** \return True if this is a directory else false. */
|
||||
bool isDir() const {return type_ >= FAT_FILE_TYPE_MIN_DIR;}
|
||||
/** \return True if this is a normal file else false. */
|
||||
bool isFile() const {return type_ == FAT_FILE_TYPE_NORMAL;}
|
||||
/** \return True if this is an open file/directory else false. */
|
||||
bool isOpen() const {return type_ != FAT_FILE_TYPE_CLOSED;}
|
||||
/** \return True if this is a subdirectory else false. */
|
||||
bool isSubDir() const {return type_ == FAT_FILE_TYPE_SUBDIR;}
|
||||
/** \return True if this is the root directory. */
|
||||
bool isRoot() const {
|
||||
return type_ == FAT_FILE_TYPE_ROOT_FIXED || type_ == FAT_FILE_TYPE_ROOT32;
|
||||
}
|
||||
void ls(uint8_t flags = 0, uint8_t indent = 0);
|
||||
bool mkdir(SdBaseFile* dir, const char* path, bool pFlag = true);
|
||||
// alias for backward compactability
|
||||
bool makeDir(SdBaseFile* dir, const char* path) {
|
||||
return mkdir(dir, path, false);
|
||||
}
|
||||
bool open(SdBaseFile* dirFile, uint16_t index, uint8_t oflag);
|
||||
bool open(SdBaseFile* dirFile, const char* path, uint8_t oflag);
|
||||
bool open(const char* path, uint8_t oflag = O_READ);
|
||||
bool openNext(SdBaseFile* dirFile, uint8_t oflag);
|
||||
bool openRoot(SdVolume* vol);
|
||||
int peek();
|
||||
static void printFatDate(uint16_t fatDate);
|
||||
static void printFatTime(uint16_t fatTime);
|
||||
bool printName();
|
||||
int16_t read();
|
||||
int16_t read(void* buf, uint16_t nbyte);
|
||||
int8_t readDir(dir_t* dir, char* longFilename);
|
||||
static bool remove(SdBaseFile* dirFile, const char* path);
|
||||
bool remove();
|
||||
/** Set the file's current position to zero. */
|
||||
void rewind() {seekSet(0);}
|
||||
bool rename(SdBaseFile* dirFile, const char* newPath);
|
||||
bool rmdir();
|
||||
// for backward compatibility
|
||||
bool rmDir() {return rmdir();}
|
||||
bool rmRfStar();
|
||||
/** Set the files position to current position + \a pos. See seekSet().
|
||||
* \param[in] offset The new position in bytes from the current position.
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool seekCur(int32_t offset) {
|
||||
return seekSet(curPosition_ + offset);
|
||||
}
|
||||
/** Set the files position to end-of-file + \a offset. See seekSet().
|
||||
* \param[in] offset The new position in bytes from end-of-file.
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool seekEnd(int32_t offset = 0) {return seekSet(fileSize_ + offset);}
|
||||
bool seekSet(uint32_t pos);
|
||||
bool sync();
|
||||
bool timestamp(SdBaseFile* file);
|
||||
bool timestamp(uint8_t flag, uint16_t year, uint8_t month, uint8_t day,
|
||||
uint8_t hour, uint8_t minute, uint8_t second);
|
||||
/** Type of file. You should use isFile() or isDir() instead of type()
|
||||
* if possible.
|
||||
*
|
||||
* \return The file or directory type.
|
||||
*/
|
||||
uint8_t type() const {return type_;}
|
||||
bool truncate(uint32_t size);
|
||||
/** \return SdVolume that contains this file. */
|
||||
SdVolume* volume() const {return vol_;}
|
||||
int16_t write(const void* buf, uint16_t nbyte);
|
||||
//------------------------------------------------------------------------------
|
||||
private:
|
||||
// allow SdFat to set cwd_
|
||||
friend class SdFat;
|
||||
// global pointer to cwd dir
|
||||
static SdBaseFile* cwd_;
|
||||
// data time callback function
|
||||
static void (*dateTime_)(uint16_t* date, uint16_t* time);
|
||||
// bits defined in flags_
|
||||
// should be 0X0F
|
||||
static uint8_t const F_OFLAG = (O_ACCMODE | O_APPEND | O_SYNC);
|
||||
// sync of directory entry required
|
||||
static uint8_t const F_FILE_DIR_DIRTY = 0X80;
|
||||
|
||||
// private data
|
||||
uint8_t flags_; // See above for definition of flags_ bits
|
||||
uint8_t fstate_; // error and eof indicator
|
||||
uint8_t type_; // type of file see above for values
|
||||
uint32_t curCluster_; // cluster for current file position
|
||||
uint32_t curPosition_; // current file position in bytes from beginning
|
||||
uint32_t dirBlock_; // block for this files directory entry
|
||||
uint8_t dirIndex_; // index of directory entry in dirBlock
|
||||
uint32_t fileSize_; // file size in bytes
|
||||
uint32_t firstCluster_; // first cluster of file
|
||||
SdVolume* vol_; // volume where file is located
|
||||
|
||||
/** experimental don't use */
|
||||
bool openParent(SdBaseFile* dir);
|
||||
// private functions
|
||||
bool addCluster();
|
||||
bool addDirCluster();
|
||||
dir_t* cacheDirEntry(uint8_t action);
|
||||
int8_t lsPrintNext(uint8_t flags, uint8_t indent);
|
||||
static bool make83Name(const char* str, uint8_t* name, const char** ptr);
|
||||
bool mkdir(SdBaseFile* parent, const uint8_t dname[11]);
|
||||
bool open(SdBaseFile* dirFile, const uint8_t dname[11], uint8_t oflag);
|
||||
bool openCachedEntry(uint8_t cacheIndex, uint8_t oflags);
|
||||
dir_t* readDirCache();
|
||||
//------------------------------------------------------------------------------
|
||||
// to be deleted
|
||||
static void printDirName(const dir_t& dir,
|
||||
uint8_t width, bool printSlash);
|
||||
//------------------------------------------------------------------------------
|
||||
// Deprecated functions - suppress cpplint warnings with NOLINT comment
|
||||
#if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN)
|
||||
public:
|
||||
/** \deprecated Use:
|
||||
* bool contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock);
|
||||
* \param[out] bgnBlock the first block address for the file.
|
||||
* \param[out] endBlock the last block address for the file.
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool contiguousRange(uint32_t& bgnBlock, uint32_t& endBlock) { // NOLINT
|
||||
return contiguousRange(&bgnBlock, &endBlock);
|
||||
}
|
||||
/** \deprecated Use:
|
||||
* bool createContiguous(SdBaseFile* dirFile,
|
||||
* const char* path, uint32_t size)
|
||||
* \param[in] dirFile The directory where the file will be created.
|
||||
* \param[in] path A path with a valid DOS 8.3 file name.
|
||||
* \param[in] size The desired file size.
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool createContiguous(SdBaseFile& dirFile, // NOLINT
|
||||
const char* path, uint32_t size) {
|
||||
return createContiguous(&dirFile, path, size);
|
||||
}
|
||||
/** \deprecated Use:
|
||||
* static void dateTimeCallback(
|
||||
* void (*dateTime)(uint16_t* date, uint16_t* time));
|
||||
* \param[in] dateTime The user's call back function.
|
||||
*/
|
||||
static void dateTimeCallback(
|
||||
void (*dateTime)(uint16_t &date, uint16_t &time)) { // NOLINT
|
||||
oldDateTime_ = dateTime;
|
||||
dateTime_ = dateTime ? oldToNew : 0;
|
||||
}
|
||||
/** \deprecated Use: bool dirEntry(dir_t* dir);
|
||||
* \param[out] dir Location for return of the file's directory entry.
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool dirEntry(dir_t& dir) {return dirEntry(&dir);} // NOLINT
|
||||
/** \deprecated Use:
|
||||
* bool mkdir(SdBaseFile* dir, const char* path);
|
||||
* \param[in] dir An open SdFat instance for the directory that will contain
|
||||
* the new directory.
|
||||
* \param[in] path A path with a valid 8.3 DOS name for the new directory.
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool mkdir(SdBaseFile& dir, const char* path) { // NOLINT
|
||||
return mkdir(&dir, path);
|
||||
}
|
||||
/** \deprecated Use:
|
||||
* bool open(SdBaseFile* dirFile, const char* path, uint8_t oflag);
|
||||
* \param[in] dirFile An open SdFat instance for the directory containing the
|
||||
* file to be opened.
|
||||
* \param[in] path A path with a valid 8.3 DOS name for the file.
|
||||
* \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive
|
||||
* OR of flags O_READ, O_WRITE, O_TRUNC, and O_SYNC.
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool open(SdBaseFile& dirFile, // NOLINT
|
||||
const char* path, uint8_t oflag) {
|
||||
return open(&dirFile, path, oflag);
|
||||
}
|
||||
/** \deprecated Do not use in new apps
|
||||
* \param[in] dirFile An open SdFat instance for the directory containing the
|
||||
* file to be opened.
|
||||
* \param[in] path A path with a valid 8.3 DOS name for a file to be opened.
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool open(SdBaseFile& dirFile, const char* path) { // NOLINT
|
||||
return open(dirFile, path, O_RDWR);
|
||||
}
|
||||
/** \deprecated Use:
|
||||
* bool open(SdBaseFile* dirFile, uint16_t index, uint8_t oflag);
|
||||
* \param[in] dirFile An open SdFat instance for the directory.
|
||||
* \param[in] index The \a index of the directory entry for the file to be
|
||||
* opened. The value for \a index is (directory file position)/32.
|
||||
* \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive
|
||||
* OR of flags O_READ, O_WRITE, O_TRUNC, and O_SYNC.
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool open(SdBaseFile& dirFile, uint16_t index, uint8_t oflag) { // NOLINT
|
||||
return open(&dirFile, index, oflag);
|
||||
}
|
||||
/** \deprecated Use: bool openRoot(SdVolume* vol);
|
||||
* \param[in] vol The FAT volume containing the root directory to be opened.
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool openRoot(SdVolume& vol) {return openRoot(&vol);} // NOLINT
|
||||
/** \deprecated Use: int8_t readDir(dir_t* dir);
|
||||
* \param[out] dir The dir_t struct that will receive the data.
|
||||
* \return bytes read for success zero for eof or -1 for failure.
|
||||
*/
|
||||
int8_t readDir(dir_t& dir, char* longFilename) {return readDir(&dir, longFilename);} // NOLINT
|
||||
/** \deprecated Use:
|
||||
* static uint8_t remove(SdBaseFile* dirFile, const char* path);
|
||||
* \param[in] dirFile The directory that contains the file.
|
||||
* \param[in] path The name of the file to be removed.
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
static bool remove(SdBaseFile& dirFile, const char* path) { // NOLINT
|
||||
return remove(&dirFile, path);
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
// rest are private
|
||||
private:
|
||||
static void (*oldDateTime_)(uint16_t &date, uint16_t &time); // NOLINT
|
||||
static void oldToNew(uint16_t* date, uint16_t* time) {
|
||||
uint16_t d;
|
||||
uint16_t t;
|
||||
oldDateTime_(d, t);
|
||||
*date = d;
|
||||
*time = t;
|
||||
}
|
||||
#endif // ALLOW_DEPRECATED_FUNCTIONS
|
||||
};
|
||||
|
||||
#endif // SdBaseFile_h
|
||||
#endif
|
||||
@@ -1,134 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Arduino SdFat Library
|
||||
* Copyright (C) 2009 by William Greiman
|
||||
*
|
||||
* This file is part of the Arduino Sd2Card Library
|
||||
*/
|
||||
/**
|
||||
* \file
|
||||
* \brief configuration definitions
|
||||
*/
|
||||
#include "Marlin.h"
|
||||
#if ENABLED(SDSUPPORT)
|
||||
|
||||
#ifndef SdFatConfig_h
|
||||
#define SdFatConfig_h
|
||||
#include <stdint.h>
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* To use multiple SD cards set USE_MULTIPLE_CARDS nonzero.
|
||||
*
|
||||
* Using multiple cards costs 400 - 500 bytes of flash.
|
||||
*
|
||||
* Each card requires about 550 bytes of SRAM so use of a Mega is recommended.
|
||||
*/
|
||||
#define USE_MULTIPLE_CARDS 0
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* Call flush for endl if ENDL_CALLS_FLUSH is nonzero
|
||||
*
|
||||
* The standard for iostreams is to call flush. This is very costly for
|
||||
* SdFat. Each call to flush causes 2048 bytes of I/O to the SD.
|
||||
*
|
||||
* SdFat has a single 512 byte buffer for SD I/O so it must write the current
|
||||
* data block to the SD, read the directory block from the SD, update the
|
||||
* directory entry, write the directory block to the SD and read the data
|
||||
* block back into the buffer.
|
||||
*
|
||||
* The SD flash memory controller is not designed for this many rewrites
|
||||
* so performance may be reduced by more than a factor of 100.
|
||||
*
|
||||
* If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force
|
||||
* all data to be written to the SD.
|
||||
*/
|
||||
#define ENDL_CALLS_FLUSH 0
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* Allow use of deprecated functions if ALLOW_DEPRECATED_FUNCTIONS is nonzero
|
||||
*/
|
||||
#define ALLOW_DEPRECATED_FUNCTIONS 1
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* Allow FAT12 volumes if FAT12_SUPPORT is nonzero.
|
||||
* FAT12 has not been well tested.
|
||||
*/
|
||||
#define FAT12_SUPPORT 0
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* SPI init rate for SD initialization commands. Must be 5 (F_CPU/64)
|
||||
* or 6 (F_CPU/128).
|
||||
*/
|
||||
#define SPI_SD_INIT_RATE 5
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* Set the SS pin high for hardware SPI. If SS is chip select for another SPI
|
||||
* device this will disable that device during the SD init phase.
|
||||
*/
|
||||
#define SET_SPI_SS_HIGH 1
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* Define MEGA_SOFT_SPI nonzero to use software SPI on Mega Arduinos.
|
||||
* Pins used are SS 10, MOSI 11, MISO 12, and SCK 13.
|
||||
*
|
||||
* MEGA_SOFT_SPI allows an unmodified Adafruit GPS Shield to be used
|
||||
* on Mega Arduinos. Software SPI works well with GPS Shield V1.1
|
||||
* but many SD cards will fail with GPS Shield V1.0.
|
||||
*/
|
||||
#define MEGA_SOFT_SPI 0
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* Set USE_SOFTWARE_SPI nonzero to always use software SPI.
|
||||
*/
|
||||
#define USE_SOFTWARE_SPI 0
|
||||
// define software SPI pins so Mega can use unmodified 168/328 shields
|
||||
/** Software SPI chip select pin for the SD */
|
||||
#define SOFT_SPI_CS_PIN 10
|
||||
/** Software SPI Master Out Slave In pin */
|
||||
#define SOFT_SPI_MOSI_PIN 11
|
||||
/** Software SPI Master In Slave Out pin */
|
||||
#define SOFT_SPI_MISO_PIN 12
|
||||
/** Software SPI Clock pin */
|
||||
#define SOFT_SPI_SCK_PIN 13
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* The __cxa_pure_virtual function is an error handler that is invoked when
|
||||
* a pure virtual function is called.
|
||||
*/
|
||||
#define USE_CXA_PURE_VIRTUAL 1
|
||||
|
||||
/** Number of UTF-16 characters per entry */
|
||||
#define FILENAME_LENGTH 13
|
||||
|
||||
/**
|
||||
* Defines for long (vfat) filenames
|
||||
*/
|
||||
/** Number of VFAT entries used. Every entry has 13 UTF-16 characters */
|
||||
#define MAX_VFAT_ENTRIES (2)
|
||||
/** Total size of the buffer used to store the long filenames */
|
||||
#define LONG_FILENAME_LENGTH (FILENAME_LENGTH*MAX_VFAT_ENTRIES+1)
|
||||
#endif // SdFatConfig_h
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,655 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Arduino SdFat Library
|
||||
* Copyright (C) 2009 by William Greiman
|
||||
*
|
||||
* This file is part of the Arduino Sd2Card Library
|
||||
*/
|
||||
#include "Marlin.h"
|
||||
#if ENABLED(SDSUPPORT)
|
||||
|
||||
#ifndef SdFatStructs_h
|
||||
#define SdFatStructs_h
|
||||
|
||||
#define PACKED __attribute__((__packed__))
|
||||
/**
|
||||
* \file
|
||||
* \brief FAT file structures
|
||||
*/
|
||||
/**
|
||||
* mostly from Microsoft document fatgen103.doc
|
||||
* http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx
|
||||
*/
|
||||
//------------------------------------------------------------------------------
|
||||
/** Value for byte 510 of boot block or MBR */
|
||||
uint8_t const BOOTSIG0 = 0X55;
|
||||
/** Value for byte 511 of boot block or MBR */
|
||||
uint8_t const BOOTSIG1 = 0XAA;
|
||||
/** Value for bootSignature field int FAT/FAT32 boot sector */
|
||||
uint8_t const EXTENDED_BOOT_SIG = 0X29;
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* \struct partitionTable
|
||||
* \brief MBR partition table entry
|
||||
*
|
||||
* A partition table entry for a MBR formatted storage device.
|
||||
* The MBR partition table has four entries.
|
||||
*/
|
||||
struct partitionTable {
|
||||
/**
|
||||
* Boot Indicator . Indicates whether the volume is the active
|
||||
* partition. Legal values include: 0X00. Do not use for booting.
|
||||
* 0X80 Active partition.
|
||||
*/
|
||||
uint8_t boot;
|
||||
/**
|
||||
* Head part of Cylinder-head-sector address of the first block in
|
||||
* the partition. Legal values are 0-255. Only used in old PC BIOS.
|
||||
*/
|
||||
uint8_t beginHead;
|
||||
/**
|
||||
* Sector part of Cylinder-head-sector address of the first block in
|
||||
* the partition. Legal values are 1-63. Only used in old PC BIOS.
|
||||
*/
|
||||
unsigned beginSector : 6;
|
||||
/** High bits cylinder for first block in partition. */
|
||||
unsigned beginCylinderHigh : 2;
|
||||
/**
|
||||
* Combine beginCylinderLow with beginCylinderHigh. Legal values
|
||||
* are 0-1023. Only used in old PC BIOS.
|
||||
*/
|
||||
uint8_t beginCylinderLow;
|
||||
/**
|
||||
* Partition type. See defines that begin with PART_TYPE_ for
|
||||
* some Microsoft partition types.
|
||||
*/
|
||||
uint8_t type;
|
||||
/**
|
||||
* head part of cylinder-head-sector address of the last sector in the
|
||||
* partition. Legal values are 0-255. Only used in old PC BIOS.
|
||||
*/
|
||||
uint8_t endHead;
|
||||
/**
|
||||
* Sector part of cylinder-head-sector address of the last sector in
|
||||
* the partition. Legal values are 1-63. Only used in old PC BIOS.
|
||||
*/
|
||||
unsigned endSector : 6;
|
||||
/** High bits of end cylinder */
|
||||
unsigned endCylinderHigh : 2;
|
||||
/**
|
||||
* Combine endCylinderLow with endCylinderHigh. Legal values
|
||||
* are 0-1023. Only used in old PC BIOS.
|
||||
*/
|
||||
uint8_t endCylinderLow;
|
||||
/** Logical block address of the first block in the partition. */
|
||||
uint32_t firstSector;
|
||||
/** Length of the partition, in blocks. */
|
||||
uint32_t totalSectors;
|
||||
} PACKED;
|
||||
/** Type name for partitionTable */
|
||||
typedef struct partitionTable part_t;
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* \struct masterBootRecord
|
||||
*
|
||||
* \brief Master Boot Record
|
||||
*
|
||||
* The first block of a storage device that is formatted with a MBR.
|
||||
*/
|
||||
struct masterBootRecord {
|
||||
/** Code Area for master boot program. */
|
||||
uint8_t codeArea[440];
|
||||
/** Optional Windows NT disk signature. May contain boot code. */
|
||||
uint32_t diskSignature;
|
||||
/** Usually zero but may be more boot code. */
|
||||
uint16_t usuallyZero;
|
||||
/** Partition tables. */
|
||||
part_t part[4];
|
||||
/** First MBR signature byte. Must be 0X55 */
|
||||
uint8_t mbrSig0;
|
||||
/** Second MBR signature byte. Must be 0XAA */
|
||||
uint8_t mbrSig1;
|
||||
} PACKED;
|
||||
/** Type name for masterBootRecord */
|
||||
typedef struct masterBootRecord mbr_t;
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* \struct fat_boot
|
||||
*
|
||||
* \brief Boot sector for a FAT12/FAT16 volume.
|
||||
*
|
||||
*/
|
||||
struct fat_boot {
|
||||
/**
|
||||
* The first three bytes of the boot sector must be valid,
|
||||
* executable x 86-based CPU instructions. This includes a
|
||||
* jump instruction that skips the next nonexecutable bytes.
|
||||
*/
|
||||
uint8_t jump[3];
|
||||
/**
|
||||
* This is typically a string of characters that identifies
|
||||
* the operating system that formatted the volume.
|
||||
*/
|
||||
char oemId[8];
|
||||
/**
|
||||
* The size of a hardware sector. Valid decimal values for this
|
||||
* field are 512, 1024, 2048, and 4096. For most disks used in
|
||||
* the United States, the value of this field is 512.
|
||||
*/
|
||||
uint16_t bytesPerSector;
|
||||
/**
|
||||
* Number of sectors per allocation unit. This value must be a
|
||||
* power of 2 that is greater than 0. The legal values are
|
||||
* 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided.
|
||||
*/
|
||||
uint8_t sectorsPerCluster;
|
||||
/**
|
||||
* The number of sectors preceding the start of the first FAT,
|
||||
* including the boot sector. The value of this field is always 1.
|
||||
*/
|
||||
uint16_t reservedSectorCount;
|
||||
/**
|
||||
* The number of copies of the FAT on the volume.
|
||||
* The value of this field is always 2.
|
||||
*/
|
||||
uint8_t fatCount;
|
||||
/**
|
||||
* For FAT12 and FAT16 volumes, this field contains the count of
|
||||
* 32-byte directory entries in the root directory. For FAT32 volumes,
|
||||
* this field must be set to 0. For FAT12 and FAT16 volumes, this
|
||||
* value should always specify a count that when multiplied by 32
|
||||
* results in a multiple of bytesPerSector. FAT16 volumes should
|
||||
* use the value 512.
|
||||
*/
|
||||
uint16_t rootDirEntryCount;
|
||||
/**
|
||||
* This field is the old 16-bit total count of sectors on the volume.
|
||||
* This count includes the count of all sectors in all four regions
|
||||
* of the volume. This field can be 0; if it is 0, then totalSectors32
|
||||
* must be nonzero. For FAT32 volumes, this field must be 0. For
|
||||
* FAT12 and FAT16 volumes, this field contains the sector count, and
|
||||
* totalSectors32 is 0 if the total sector count fits
|
||||
* (is less than 0x10000).
|
||||
*/
|
||||
uint16_t totalSectors16;
|
||||
/**
|
||||
* This dates back to the old MS-DOS 1.x media determination and is
|
||||
* no longer usually used for anything. 0xF8 is the standard value
|
||||
* for fixed (nonremovable) media. For removable media, 0xF0 is
|
||||
* frequently used. Legal values are 0xF0 or 0xF8-0xFF.
|
||||
*/
|
||||
uint8_t mediaType;
|
||||
/**
|
||||
* Count of sectors occupied by one FAT on FAT12/FAT16 volumes.
|
||||
* On FAT32 volumes this field must be 0, and sectorsPerFat32
|
||||
* contains the FAT size count.
|
||||
*/
|
||||
uint16_t sectorsPerFat16;
|
||||
/** Sectors per track for interrupt 0x13. Not used otherwise. */
|
||||
uint16_t sectorsPerTrack;
|
||||
/** Number of heads for interrupt 0x13. Not used otherwise. */
|
||||
uint16_t headCount;
|
||||
/**
|
||||
* Count of hidden sectors preceding the partition that contains this
|
||||
* FAT volume. This field is generally only relevant for media
|
||||
* visible on interrupt 0x13.
|
||||
*/
|
||||
uint32_t hidddenSectors;
|
||||
/**
|
||||
* This field is the new 32-bit total count of sectors on the volume.
|
||||
* This count includes the count of all sectors in all four regions
|
||||
* of the volume. This field can be 0; if it is 0, then
|
||||
* totalSectors16 must be nonzero.
|
||||
*/
|
||||
uint32_t totalSectors32;
|
||||
/**
|
||||
* Related to the BIOS physical drive number. Floppy drives are
|
||||
* identified as 0x00 and physical hard disks are identified as
|
||||
* 0x80, regardless of the number of physical disk drives.
|
||||
* Typically, this value is set prior to issuing an INT 13h BIOS
|
||||
* call to specify the device to access. The value is only
|
||||
* relevant if the device is a boot device.
|
||||
*/
|
||||
uint8_t driveNumber;
|
||||
/** used by Windows NT - should be zero for FAT */
|
||||
uint8_t reserved1;
|
||||
/** 0X29 if next three fields are valid */
|
||||
uint8_t bootSignature;
|
||||
/**
|
||||
* A random serial number created when formatting a disk,
|
||||
* which helps to distinguish between disks.
|
||||
* Usually generated by combining date and time.
|
||||
*/
|
||||
uint32_t volumeSerialNumber;
|
||||
/**
|
||||
* A field once used to store the volume label. The volume label
|
||||
* is now stored as a special file in the root directory.
|
||||
*/
|
||||
char volumeLabel[11];
|
||||
/**
|
||||
* A field with a value of either FAT, FAT12 or FAT16,
|
||||
* depending on the disk format.
|
||||
*/
|
||||
char fileSystemType[8];
|
||||
/** X86 boot code */
|
||||
uint8_t bootCode[448];
|
||||
/** must be 0X55 */
|
||||
uint8_t bootSectorSig0;
|
||||
/** must be 0XAA */
|
||||
uint8_t bootSectorSig1;
|
||||
} PACKED;
|
||||
/** Type name for FAT Boot Sector */
|
||||
typedef struct fat_boot fat_boot_t;
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* \struct fat32_boot
|
||||
*
|
||||
* \brief Boot sector for a FAT32 volume.
|
||||
*
|
||||
*/
|
||||
struct fat32_boot {
|
||||
/**
|
||||
* The first three bytes of the boot sector must be valid,
|
||||
* executable x 86-based CPU instructions. This includes a
|
||||
* jump instruction that skips the next nonexecutable bytes.
|
||||
*/
|
||||
uint8_t jump[3];
|
||||
/**
|
||||
* This is typically a string of characters that identifies
|
||||
* the operating system that formatted the volume.
|
||||
*/
|
||||
char oemId[8];
|
||||
/**
|
||||
* The size of a hardware sector. Valid decimal values for this
|
||||
* field are 512, 1024, 2048, and 4096. For most disks used in
|
||||
* the United States, the value of this field is 512.
|
||||
*/
|
||||
uint16_t bytesPerSector;
|
||||
/**
|
||||
* Number of sectors per allocation unit. This value must be a
|
||||
* power of 2 that is greater than 0. The legal values are
|
||||
* 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided.
|
||||
*/
|
||||
uint8_t sectorsPerCluster;
|
||||
/**
|
||||
* The number of sectors preceding the start of the first FAT,
|
||||
* including the boot sector. Must not be zero
|
||||
*/
|
||||
uint16_t reservedSectorCount;
|
||||
/**
|
||||
* The number of copies of the FAT on the volume.
|
||||
* The value of this field is always 2.
|
||||
*/
|
||||
uint8_t fatCount;
|
||||
/**
|
||||
* FAT12/FAT16 only. For FAT32 volumes, this field must be set to 0.
|
||||
*/
|
||||
uint16_t rootDirEntryCount;
|
||||
/**
|
||||
* For FAT32 volumes, this field must be 0.
|
||||
*/
|
||||
uint16_t totalSectors16;
|
||||
/**
|
||||
* This dates back to the old MS-DOS 1.x media determination and is
|
||||
* no longer usually used for anything. 0xF8 is the standard value
|
||||
* for fixed (nonremovable) media. For removable media, 0xF0 is
|
||||
* frequently used. Legal values are 0xF0 or 0xF8-0xFF.
|
||||
*/
|
||||
uint8_t mediaType;
|
||||
/**
|
||||
* On FAT32 volumes this field must be 0, and sectorsPerFat32
|
||||
* contains the FAT size count.
|
||||
*/
|
||||
uint16_t sectorsPerFat16;
|
||||
/** Sectors per track for interrupt 0x13. Not used otherwise. */
|
||||
uint16_t sectorsPerTrack;
|
||||
/** Number of heads for interrupt 0x13. Not used otherwise. */
|
||||
uint16_t headCount;
|
||||
/**
|
||||
* Count of hidden sectors preceding the partition that contains this
|
||||
* FAT volume. This field is generally only relevant for media
|
||||
* visible on interrupt 0x13.
|
||||
*/
|
||||
uint32_t hidddenSectors;
|
||||
/**
|
||||
* Contains the total number of sectors in the FAT32 volume.
|
||||
*/
|
||||
uint32_t totalSectors32;
|
||||
/**
|
||||
* Count of sectors occupied by one FAT on FAT32 volumes.
|
||||
*/
|
||||
uint32_t sectorsPerFat32;
|
||||
/**
|
||||
* This field is only defined for FAT32 media and does not exist on
|
||||
* FAT12 and FAT16 media.
|
||||
* Bits 0-3 -- Zero-based number of active FAT.
|
||||
* Only valid if mirroring is disabled.
|
||||
* Bits 4-6 -- Reserved.
|
||||
* Bit 7 -- 0 means the FAT is mirrored at runtime into all FATs.
|
||||
* -- 1 means only one FAT is active; it is the one referenced
|
||||
* in bits 0-3.
|
||||
* Bits 8-15 -- Reserved.
|
||||
*/
|
||||
uint16_t fat32Flags;
|
||||
/**
|
||||
* FAT32 version. High byte is major revision number.
|
||||
* Low byte is minor revision number. Only 0.0 define.
|
||||
*/
|
||||
uint16_t fat32Version;
|
||||
/**
|
||||
* Cluster number of the first cluster of the root directory for FAT32.
|
||||
* This usually 2 but not required to be 2.
|
||||
*/
|
||||
uint32_t fat32RootCluster;
|
||||
/**
|
||||
* Sector number of FSINFO structure in the reserved area of the
|
||||
* FAT32 volume. Usually 1.
|
||||
*/
|
||||
uint16_t fat32FSInfo;
|
||||
/**
|
||||
* If nonzero, indicates the sector number in the reserved area
|
||||
* of the volume of a copy of the boot record. Usually 6.
|
||||
* No value other than 6 is recommended.
|
||||
*/
|
||||
uint16_t fat32BackBootBlock;
|
||||
/**
|
||||
* Reserved for future expansion. Code that formats FAT32 volumes
|
||||
* should always set all of the bytes of this field to 0.
|
||||
*/
|
||||
uint8_t fat32Reserved[12];
|
||||
/**
|
||||
* Related to the BIOS physical drive number. Floppy drives are
|
||||
* identified as 0x00 and physical hard disks are identified as
|
||||
* 0x80, regardless of the number of physical disk drives.
|
||||
* Typically, this value is set prior to issuing an INT 13h BIOS
|
||||
* call to specify the device to access. The value is only
|
||||
* relevant if the device is a boot device.
|
||||
*/
|
||||
uint8_t driveNumber;
|
||||
/** used by Windows NT - should be zero for FAT */
|
||||
uint8_t reserved1;
|
||||
/** 0X29 if next three fields are valid */
|
||||
uint8_t bootSignature;
|
||||
/**
|
||||
* A random serial number created when formatting a disk,
|
||||
* which helps to distinguish between disks.
|
||||
* Usually generated by combining date and time.
|
||||
*/
|
||||
uint32_t volumeSerialNumber;
|
||||
/**
|
||||
* A field once used to store the volume label. The volume label
|
||||
* is now stored as a special file in the root directory.
|
||||
*/
|
||||
char volumeLabel[11];
|
||||
/**
|
||||
* A text field with a value of FAT32.
|
||||
*/
|
||||
char fileSystemType[8];
|
||||
/** X86 boot code */
|
||||
uint8_t bootCode[420];
|
||||
/** must be 0X55 */
|
||||
uint8_t bootSectorSig0;
|
||||
/** must be 0XAA */
|
||||
uint8_t bootSectorSig1;
|
||||
} PACKED;
|
||||
/** Type name for FAT32 Boot Sector */
|
||||
typedef struct fat32_boot fat32_boot_t;
|
||||
//------------------------------------------------------------------------------
|
||||
/** Lead signature for a FSINFO sector */
|
||||
uint32_t const FSINFO_LEAD_SIG = 0x41615252;
|
||||
/** Struct signature for a FSINFO sector */
|
||||
uint32_t const FSINFO_STRUCT_SIG = 0x61417272;
|
||||
/**
|
||||
* \struct fat32_fsinfo
|
||||
*
|
||||
* \brief FSINFO sector for a FAT32 volume.
|
||||
*
|
||||
*/
|
||||
struct fat32_fsinfo {
|
||||
/** must be 0X52, 0X52, 0X61, 0X41 */
|
||||
uint32_t leadSignature;
|
||||
/** must be zero */
|
||||
uint8_t reserved1[480];
|
||||
/** must be 0X72, 0X72, 0X41, 0X61 */
|
||||
uint32_t structSignature;
|
||||
/**
|
||||
* Contains the last known free cluster count on the volume.
|
||||
* If the value is 0xFFFFFFFF, then the free count is unknown
|
||||
* and must be computed. Any other value can be used, but is
|
||||
* not necessarily correct. It should be range checked at least
|
||||
* to make sure it is <= volume cluster count.
|
||||
*/
|
||||
uint32_t freeCount;
|
||||
/**
|
||||
* This is a hint for the FAT driver. It indicates the cluster
|
||||
* number at which the driver should start looking for free clusters.
|
||||
* If the value is 0xFFFFFFFF, then there is no hint and the driver
|
||||
* should start looking at cluster 2.
|
||||
*/
|
||||
uint32_t nextFree;
|
||||
/** must be zero */
|
||||
uint8_t reserved2[12];
|
||||
/** must be 0X00, 0X00, 0X55, 0XAA */
|
||||
uint8_t tailSignature[4];
|
||||
} PACKED;
|
||||
/** Type name for FAT32 FSINFO Sector */
|
||||
typedef struct fat32_fsinfo fat32_fsinfo_t;
|
||||
//------------------------------------------------------------------------------
|
||||
// End Of Chain values for FAT entries
|
||||
/** FAT12 end of chain value used by Microsoft. */
|
||||
uint16_t const FAT12EOC = 0XFFF;
|
||||
/** Minimum value for FAT12 EOC. Use to test for EOC. */
|
||||
uint16_t const FAT12EOC_MIN = 0XFF8;
|
||||
/** FAT16 end of chain value used by Microsoft. */
|
||||
uint16_t const FAT16EOC = 0XFFFF;
|
||||
/** Minimum value for FAT16 EOC. Use to test for EOC. */
|
||||
uint16_t const FAT16EOC_MIN = 0XFFF8;
|
||||
/** FAT32 end of chain value used by Microsoft. */
|
||||
uint32_t const FAT32EOC = 0X0FFFFFFF;
|
||||
/** Minimum value for FAT32 EOC. Use to test for EOC. */
|
||||
uint32_t const FAT32EOC_MIN = 0X0FFFFFF8;
|
||||
/** Mask a for FAT32 entry. Entries are 28 bits. */
|
||||
uint32_t const FAT32MASK = 0X0FFFFFFF;
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* \struct directoryEntry
|
||||
* \brief FAT short directory entry
|
||||
*
|
||||
* Short means short 8.3 name, not the entry size.
|
||||
*
|
||||
* Date Format. A FAT directory entry date stamp is a 16-bit field that is
|
||||
* basically a date relative to the MS-DOS epoch of 01/01/1980. Here is the
|
||||
* format (bit 0 is the LSB of the 16-bit word, bit 15 is the MSB of the
|
||||
* 16-bit word):
|
||||
*
|
||||
* Bits 9-15: Count of years from 1980, valid value range 0-127
|
||||
* inclusive (1980-2107).
|
||||
*
|
||||
* Bits 5-8: Month of year, 1 = January, valid value range 1-12 inclusive.
|
||||
*
|
||||
* Bits 0-4: Day of month, valid value range 1-31 inclusive.
|
||||
*
|
||||
* Time Format. A FAT directory entry time stamp is a 16-bit field that has
|
||||
* a granularity of 2 seconds. Here is the format (bit 0 is the LSB of the
|
||||
* 16-bit word, bit 15 is the MSB of the 16-bit word).
|
||||
*
|
||||
* Bits 11-15: Hours, valid value range 0-23 inclusive.
|
||||
*
|
||||
* Bits 5-10: Minutes, valid value range 0-59 inclusive.
|
||||
*
|
||||
* Bits 0-4: 2-second count, valid value range 0-29 inclusive (0 - 58 seconds).
|
||||
*
|
||||
* The valid time range is from Midnight 00:00:00 to 23:59:58.
|
||||
*/
|
||||
struct directoryEntry {
|
||||
/** Short 8.3 name.
|
||||
*
|
||||
* The first eight bytes contain the file name with blank fill.
|
||||
* The last three bytes contain the file extension with blank fill.
|
||||
*/
|
||||
uint8_t name[11];
|
||||
/** Entry attributes.
|
||||
*
|
||||
* The upper two bits of the attribute byte are reserved and should
|
||||
* always be set to 0 when a file is created and never modified or
|
||||
* looked at after that. See defines that begin with DIR_ATT_.
|
||||
*/
|
||||
uint8_t attributes;
|
||||
/**
|
||||
* Reserved for use by Windows NT. Set value to 0 when a file is
|
||||
* created and never modify or look at it after that.
|
||||
*/
|
||||
uint8_t reservedNT;
|
||||
/**
|
||||
* The granularity of the seconds part of creationTime is 2 seconds
|
||||
* so this field is a count of tenths of a second and its valid
|
||||
* value range is 0-199 inclusive. (WHG note - seems to be hundredths)
|
||||
*/
|
||||
uint8_t creationTimeTenths;
|
||||
/** Time file was created. */
|
||||
uint16_t creationTime;
|
||||
/** Date file was created. */
|
||||
uint16_t creationDate;
|
||||
/**
|
||||
* Last access date. Note that there is no last access time, only
|
||||
* a date. This is the date of last read or write. In the case of
|
||||
* a write, this should be set to the same date as lastWriteDate.
|
||||
*/
|
||||
uint16_t lastAccessDate;
|
||||
/**
|
||||
* High word of this entry's first cluster number (always 0 for a
|
||||
* FAT12 or FAT16 volume).
|
||||
*/
|
||||
uint16_t firstClusterHigh;
|
||||
/** Time of last write. File creation is considered a write. */
|
||||
uint16_t lastWriteTime;
|
||||
/** Date of last write. File creation is considered a write. */
|
||||
uint16_t lastWriteDate;
|
||||
/** Low word of this entry's first cluster number. */
|
||||
uint16_t firstClusterLow;
|
||||
/** 32-bit unsigned holding this file's size in bytes. */
|
||||
uint32_t fileSize;
|
||||
} PACKED;
|
||||
/**
|
||||
* \struct directoryVFATEntry
|
||||
* \brief VFAT long filename directory entry
|
||||
*
|
||||
* directoryVFATEntries are found in the same list as normal directoryEntry.
|
||||
* But have the attribute field set to DIR_ATT_LONG_NAME.
|
||||
*
|
||||
* Long filenames are saved in multiple directoryVFATEntries.
|
||||
* Each entry containing 13 UTF-16 characters.
|
||||
*/
|
||||
struct directoryVFATEntry {
|
||||
/**
|
||||
* Sequence number. Consists of 2 parts:
|
||||
* bit 6: indicates first long filename block for the next file
|
||||
* bit 0-4: the position of this long filename block (first block is 1)
|
||||
*/
|
||||
uint8_t sequenceNumber;
|
||||
/** First set of UTF-16 characters */
|
||||
uint16_t name1[5];//UTF-16
|
||||
/** attributes (at the same location as in directoryEntry), always 0x0F */
|
||||
uint8_t attributes;
|
||||
/** Reserved for use by Windows NT. Always 0. */
|
||||
uint8_t reservedNT;
|
||||
/** Checksum of the short 8.3 filename, can be used to checked if the file system as modified by a not-long-filename aware implementation. */
|
||||
uint8_t checksum;
|
||||
/** Second set of UTF-16 characters */
|
||||
uint16_t name2[6];//UTF-16
|
||||
/** firstClusterLow is always zero for longFilenames */
|
||||
uint16_t firstClusterLow;
|
||||
/** Third set of UTF-16 characters */
|
||||
uint16_t name3[2];//UTF-16
|
||||
} PACKED;
|
||||
//------------------------------------------------------------------------------
|
||||
// Definitions for directory entries
|
||||
//
|
||||
/** Type name for directoryEntry */
|
||||
typedef struct directoryEntry dir_t;
|
||||
/** Type name for directoryVFATEntry */
|
||||
typedef struct directoryVFATEntry vfat_t;
|
||||
/** escape for name[0] = 0XE5 */
|
||||
uint8_t const DIR_NAME_0XE5 = 0X05;
|
||||
/** name[0] value for entry that is free after being "deleted" */
|
||||
uint8_t const DIR_NAME_DELETED = 0XE5;
|
||||
/** name[0] value for entry that is free and no allocated entries follow */
|
||||
uint8_t const DIR_NAME_FREE = 0X00;
|
||||
/** file is read-only */
|
||||
uint8_t const DIR_ATT_READ_ONLY = 0X01;
|
||||
/** File should hidden in directory listings */
|
||||
uint8_t const DIR_ATT_HIDDEN = 0X02;
|
||||
/** Entry is for a system file */
|
||||
uint8_t const DIR_ATT_SYSTEM = 0X04;
|
||||
/** Directory entry contains the volume label */
|
||||
uint8_t const DIR_ATT_VOLUME_ID = 0X08;
|
||||
/** Entry is for a directory */
|
||||
uint8_t const DIR_ATT_DIRECTORY = 0X10;
|
||||
/** Old DOS archive bit for backup support */
|
||||
uint8_t const DIR_ATT_ARCHIVE = 0X20;
|
||||
/** Test value for long name entry. Test is
|
||||
(d->attributes & DIR_ATT_LONG_NAME_MASK) == DIR_ATT_LONG_NAME. */
|
||||
uint8_t const DIR_ATT_LONG_NAME = 0X0F;
|
||||
/** Test mask for long name entry */
|
||||
uint8_t const DIR_ATT_LONG_NAME_MASK = 0X3F;
|
||||
/** defined attribute bits */
|
||||
uint8_t const DIR_ATT_DEFINED_BITS = 0X3F;
|
||||
/** Directory entry is part of a long name
|
||||
* \param[in] dir Pointer to a directory entry.
|
||||
*
|
||||
* \return true if the entry is for part of a long name else false.
|
||||
*/
|
||||
static inline uint8_t DIR_IS_LONG_NAME(const dir_t* dir) {
|
||||
return (dir->attributes & DIR_ATT_LONG_NAME_MASK) == DIR_ATT_LONG_NAME;
|
||||
}
|
||||
/** Mask for file/subdirectory tests */
|
||||
uint8_t const DIR_ATT_FILE_TYPE_MASK = (DIR_ATT_VOLUME_ID | DIR_ATT_DIRECTORY);
|
||||
/** Directory entry is for a file
|
||||
* \param[in] dir Pointer to a directory entry.
|
||||
*
|
||||
* \return true if the entry is for a normal file else false.
|
||||
*/
|
||||
static inline uint8_t DIR_IS_FILE(const dir_t* dir) {
|
||||
return (dir->attributes & DIR_ATT_FILE_TYPE_MASK) == 0;
|
||||
}
|
||||
/** Directory entry is for a subdirectory
|
||||
* \param[in] dir Pointer to a directory entry.
|
||||
*
|
||||
* \return true if the entry is for a subdirectory else false.
|
||||
*/
|
||||
static inline uint8_t DIR_IS_SUBDIR(const dir_t* dir) {
|
||||
return (dir->attributes & DIR_ATT_FILE_TYPE_MASK) == DIR_ATT_DIRECTORY;
|
||||
}
|
||||
/** Directory entry is for a file or subdirectory
|
||||
* \param[in] dir Pointer to a directory entry.
|
||||
*
|
||||
* \return true if the entry is for a normal file or subdirectory else false.
|
||||
*/
|
||||
static inline uint8_t DIR_IS_FILE_OR_SUBDIR(const dir_t* dir) {
|
||||
return (dir->attributes & DIR_ATT_VOLUME_ID) == 0;
|
||||
}
|
||||
#endif // SdFatStructs_h
|
||||
|
||||
|
||||
#endif
|
||||
@@ -1,91 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Arduino SdFat Library
|
||||
* Copyright (C) 2008 by William Greiman
|
||||
*
|
||||
* This file is part of the Arduino Sd2Card Library
|
||||
*/
|
||||
#include "Marlin.h"
|
||||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
#include "SdFatUtil.h"
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** Amount of free RAM
|
||||
* \return The number of free bytes.
|
||||
*/
|
||||
#ifdef __arm__
|
||||
extern "C" char* sbrk(int incr);
|
||||
int SdFatUtil::FreeRam() {
|
||||
char top;
|
||||
return &top - reinterpret_cast<char*>(sbrk(0));
|
||||
}
|
||||
#else // __arm__
|
||||
extern char* __brkval;
|
||||
extern char __bss_end;
|
||||
/** Amount of free RAM
|
||||
* \return The number of free bytes.
|
||||
*/
|
||||
int SdFatUtil::FreeRam() {
|
||||
char top;
|
||||
return __brkval ? &top - __brkval : &top - &__bss_end;
|
||||
}
|
||||
#endif // __arm
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** %Print a string in flash memory.
|
||||
*
|
||||
* \param[in] pr Print object for output.
|
||||
* \param[in] str Pointer to string stored in flash memory.
|
||||
*/
|
||||
void SdFatUtil::print_P(PGM_P str) {
|
||||
for (uint8_t c; (c = pgm_read_byte(str)); str++) MYSERIAL.write(c);
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** %Print a string in flash memory followed by a CR/LF.
|
||||
*
|
||||
* \param[in] pr Print object for output.
|
||||
* \param[in] str Pointer to string stored in flash memory.
|
||||
*/
|
||||
void SdFatUtil::println_P(PGM_P str) {
|
||||
print_P(str);
|
||||
MYSERIAL.println();
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** %Print a string in flash memory to Serial.
|
||||
*
|
||||
* \param[in] str Pointer to string stored in flash memory.
|
||||
*/
|
||||
void SdFatUtil::SerialPrint_P(PGM_P str) {
|
||||
print_P(str);
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
/** %Print a string in flash memory to Serial followed by a CR/LF.
|
||||
*
|
||||
* \param[in] str Pointer to string stored in flash memory.
|
||||
*/
|
||||
void SdFatUtil::SerialPrintln_P(PGM_P str) {
|
||||
println_P(str);
|
||||
}
|
||||
#endif
|
||||
@@ -1,227 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Arduino SdFat Library
|
||||
* Copyright (C) 2009 by William Greiman
|
||||
*
|
||||
* This file is part of the Arduino Sd2Card Library
|
||||
*/
|
||||
#include "Marlin.h"
|
||||
#if ENABLED(SDSUPPORT)
|
||||
#ifndef SdVolume_h
|
||||
#define SdVolume_h
|
||||
/**
|
||||
* \file
|
||||
* \brief SdVolume class
|
||||
*/
|
||||
#include "SdFatConfig.h"
|
||||
#include "Sd2Card.h"
|
||||
#include "SdFatStructs.h"
|
||||
|
||||
//==============================================================================
|
||||
// SdVolume class
|
||||
/**
|
||||
* \brief Cache for an SD data block
|
||||
*/
|
||||
union cache_t {
|
||||
/** Used to access cached file data blocks. */
|
||||
uint8_t data[512];
|
||||
/** Used to access cached FAT16 entries. */
|
||||
uint16_t fat16[256];
|
||||
/** Used to access cached FAT32 entries. */
|
||||
uint32_t fat32[128];
|
||||
/** Used to access cached directory entries. */
|
||||
dir_t dir[16];
|
||||
/** Used to access a cached Master Boot Record. */
|
||||
mbr_t mbr;
|
||||
/** Used to access to a cached FAT boot sector. */
|
||||
fat_boot_t fbs;
|
||||
/** Used to access to a cached FAT32 boot sector. */
|
||||
fat32_boot_t fbs32;
|
||||
/** Used to access to a cached FAT32 FSINFO sector. */
|
||||
fat32_fsinfo_t fsinfo;
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* \class SdVolume
|
||||
* \brief Access FAT16 and FAT32 volumes on SD and SDHC cards.
|
||||
*/
|
||||
class SdVolume {
|
||||
public:
|
||||
/** Create an instance of SdVolume */
|
||||
SdVolume() : fatType_(0) {}
|
||||
/** Clear the cache and returns a pointer to the cache. Used by the WaveRP
|
||||
* recorder to do raw write to the SD card. Not for normal apps.
|
||||
* \return A pointer to the cache buffer or zero if an error occurs.
|
||||
*/
|
||||
cache_t* cacheClear() {
|
||||
if (!cacheFlush()) return 0;
|
||||
cacheBlockNumber_ = 0XFFFFFFFF;
|
||||
return &cacheBuffer_;
|
||||
}
|
||||
/** Initialize a FAT volume. Try partition one first then try super
|
||||
* floppy format.
|
||||
*
|
||||
* \param[in] dev The Sd2Card where the volume is located.
|
||||
*
|
||||
* \return The value one, true, is returned for success and
|
||||
* the value zero, false, is returned for failure. Reasons for
|
||||
* failure include not finding a valid partition, not finding a valid
|
||||
* FAT file system or an I/O error.
|
||||
*/
|
||||
bool init(Sd2Card* dev) { return init(dev, 1) ? true : init(dev, 0);}
|
||||
bool init(Sd2Card* dev, uint8_t part);
|
||||
|
||||
// inline functions that return volume info
|
||||
/** \return The volume's cluster size in blocks. */
|
||||
uint8_t blocksPerCluster() const {return blocksPerCluster_;}
|
||||
/** \return The number of blocks in one FAT. */
|
||||
uint32_t blocksPerFat() const {return blocksPerFat_;}
|
||||
/** \return The total number of clusters in the volume. */
|
||||
uint32_t clusterCount() const {return clusterCount_;}
|
||||
/** \return The shift count required to multiply by blocksPerCluster. */
|
||||
uint8_t clusterSizeShift() const {return clusterSizeShift_;}
|
||||
/** \return The logical block number for the start of file data. */
|
||||
uint32_t dataStartBlock() const {return dataStartBlock_;}
|
||||
/** \return The number of FAT structures on the volume. */
|
||||
uint8_t fatCount() const {return fatCount_;}
|
||||
/** \return The logical block number for the start of the first FAT. */
|
||||
uint32_t fatStartBlock() const {return fatStartBlock_;}
|
||||
/** \return The FAT type of the volume. Values are 12, 16 or 32. */
|
||||
uint8_t fatType() const {return fatType_;}
|
||||
int32_t freeClusterCount();
|
||||
/** \return The number of entries in the root directory for FAT16 volumes. */
|
||||
uint32_t rootDirEntryCount() const {return rootDirEntryCount_;}
|
||||
/** \return The logical block number for the start of the root directory
|
||||
on FAT16 volumes or the first cluster number on FAT32 volumes. */
|
||||
uint32_t rootDirStart() const {return rootDirStart_;}
|
||||
/** Sd2Card object for this volume
|
||||
* \return pointer to Sd2Card object.
|
||||
*/
|
||||
Sd2Card* sdCard() {return sdCard_;}
|
||||
/** Debug access to FAT table
|
||||
*
|
||||
* \param[in] n cluster number.
|
||||
* \param[out] v value of entry
|
||||
* \return true for success or false for failure
|
||||
*/
|
||||
bool dbgFat(uint32_t n, uint32_t* v) {return fatGet(n, v);}
|
||||
//------------------------------------------------------------------------------
|
||||
private:
|
||||
// Allow SdBaseFile access to SdVolume private data.
|
||||
friend class SdBaseFile;
|
||||
|
||||
// value for dirty argument in cacheRawBlock to indicate read from cache
|
||||
static bool const CACHE_FOR_READ = false;
|
||||
// value for dirty argument in cacheRawBlock to indicate write to cache
|
||||
static bool const CACHE_FOR_WRITE = true;
|
||||
|
||||
#if USE_MULTIPLE_CARDS
|
||||
cache_t cacheBuffer_; // 512 byte cache for device blocks
|
||||
uint32_t cacheBlockNumber_; // Logical number of block in the cache
|
||||
Sd2Card* sdCard_; // Sd2Card object for cache
|
||||
bool cacheDirty_; // cacheFlush() will write block if true
|
||||
uint32_t cacheMirrorBlock_; // block number for mirror FAT
|
||||
#else // USE_MULTIPLE_CARDS
|
||||
static cache_t cacheBuffer_; // 512 byte cache for device blocks
|
||||
static uint32_t cacheBlockNumber_; // Logical number of block in the cache
|
||||
static Sd2Card* sdCard_; // Sd2Card object for cache
|
||||
static bool cacheDirty_; // cacheFlush() will write block if true
|
||||
static uint32_t cacheMirrorBlock_; // block number for mirror FAT
|
||||
#endif // USE_MULTIPLE_CARDS
|
||||
uint32_t allocSearchStart_; // start cluster for alloc search
|
||||
uint8_t blocksPerCluster_; // cluster size in blocks
|
||||
uint32_t blocksPerFat_; // FAT size in blocks
|
||||
uint32_t clusterCount_; // clusters in one FAT
|
||||
uint8_t clusterSizeShift_; // shift to convert cluster count to block count
|
||||
uint32_t dataStartBlock_; // first data block number
|
||||
uint8_t fatCount_; // number of FATs on volume
|
||||
uint32_t fatStartBlock_; // start block for first FAT
|
||||
uint8_t fatType_; // volume type (12, 16, OR 32)
|
||||
uint16_t rootDirEntryCount_; // number of entries in FAT16 root dir
|
||||
uint32_t rootDirStart_; // root start block for FAT16, cluster for FAT32
|
||||
//----------------------------------------------------------------------------
|
||||
bool allocContiguous(uint32_t count, uint32_t* curCluster);
|
||||
uint8_t blockOfCluster(uint32_t position) const {
|
||||
return (position >> 9) & (blocksPerCluster_ - 1);
|
||||
}
|
||||
uint32_t clusterStartBlock(uint32_t cluster) const {
|
||||
return dataStartBlock_ + ((cluster - 2) << clusterSizeShift_);
|
||||
}
|
||||
uint32_t blockNumber(uint32_t cluster, uint32_t position) const {
|
||||
return clusterStartBlock(cluster) + blockOfCluster(position);
|
||||
}
|
||||
cache_t* cache() {return &cacheBuffer_;}
|
||||
uint32_t cacheBlockNumber() {return cacheBlockNumber_;}
|
||||
#if USE_MULTIPLE_CARDS
|
||||
bool cacheFlush();
|
||||
bool cacheRawBlock(uint32_t blockNumber, bool dirty);
|
||||
#else // USE_MULTIPLE_CARDS
|
||||
static bool cacheFlush();
|
||||
static bool cacheRawBlock(uint32_t blockNumber, bool dirty);
|
||||
#endif // USE_MULTIPLE_CARDS
|
||||
// used by SdBaseFile write to assign cache to SD location
|
||||
void cacheSetBlockNumber(uint32_t blockNumber, bool dirty) {
|
||||
cacheDirty_ = dirty;
|
||||
cacheBlockNumber_ = blockNumber;
|
||||
}
|
||||
void cacheSetDirty() {cacheDirty_ |= CACHE_FOR_WRITE;}
|
||||
bool chainSize(uint32_t beginCluster, uint32_t* size);
|
||||
bool fatGet(uint32_t cluster, uint32_t* value);
|
||||
bool fatPut(uint32_t cluster, uint32_t value);
|
||||
bool fatPutEOC(uint32_t cluster) {
|
||||
return fatPut(cluster, 0x0FFFFFFF);
|
||||
}
|
||||
bool freeChain(uint32_t cluster);
|
||||
bool isEOC(uint32_t cluster) const {
|
||||
if (FAT12_SUPPORT && fatType_ == 12) return cluster >= FAT12EOC_MIN;
|
||||
if (fatType_ == 16) return cluster >= FAT16EOC_MIN;
|
||||
return cluster >= FAT32EOC_MIN;
|
||||
}
|
||||
bool readBlock(uint32_t block, uint8_t* dst) {
|
||||
return sdCard_->readBlock(block, dst);
|
||||
}
|
||||
bool writeBlock(uint32_t block, const uint8_t* dst) {
|
||||
return sdCard_->writeBlock(block, dst);
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
// Deprecated functions - suppress cpplint warnings with NOLINT comment
|
||||
#if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN)
|
||||
public:
|
||||
/** \deprecated Use: bool SdVolume::init(Sd2Card* dev);
|
||||
* \param[in] dev The SD card where the volume is located.
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool init(Sd2Card& dev) {return init(&dev);} // NOLINT
|
||||
/** \deprecated Use: bool SdVolume::init(Sd2Card* dev, uint8_t vol);
|
||||
* \param[in] dev The SD card where the volume is located.
|
||||
* \param[in] part The partition to be used.
|
||||
* \return true for success or false for failure.
|
||||
*/
|
||||
bool init(Sd2Card& dev, uint8_t part) { // NOLINT
|
||||
return init(&dev, part);
|
||||
}
|
||||
#endif // ALLOW_DEPRECATED_FUNCTIONS
|
||||
};
|
||||
#endif // SdVolume
|
||||
#endif
|
||||
101
Marlin/boards.h
101
Marlin/boards.h
@@ -1,101 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef BOARDS_H
|
||||
#define BOARDS_H
|
||||
|
||||
#define BOARD_UNKNOWN -1
|
||||
|
||||
#define BOARD_GEN7_CUSTOM 10 // Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics"
|
||||
#define BOARD_GEN7_12 11 // Gen7 v1.1, v1.2
|
||||
#define BOARD_GEN7_13 12 // Gen7 v1.3
|
||||
#define BOARD_GEN7_14 13 // Gen7 v1.4
|
||||
#define BOARD_CNCONTROLS_11 111 // Cartesio CN Controls V11
|
||||
#define BOARD_CNCONTROLS_12 112 // Cartesio CN Controls V12
|
||||
#define BOARD_CHEAPTRONIC 2 // Cheaptronic v1.0
|
||||
#define BOARD_CHEAPTRONIC_V2 21 // Cheaptronic v2.0
|
||||
#define BOARD_SETHI 20 // Sethi 3D_1
|
||||
#define BOARD_MIGHTYBOARD_REVE 200 // Makerbot Mightyboard Revision E
|
||||
#define BOARD_RAMPS_OLD 3 // MEGA/RAMPS up to 1.2
|
||||
#define BOARD_RAMPS_13_EFB 33 // RAMPS 1.3 (Power outputs: Hotend, Fan, Bed)
|
||||
#define BOARD_RAMPS_13_EEB 34 // RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Bed)
|
||||
#define BOARD_RAMPS_13_EFF 35 // RAMPS 1.3 (Power outputs: Hotend, Fan0, Fan1)
|
||||
#define BOARD_RAMPS_13_EEF 36 // RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Fan)
|
||||
#define BOARD_RAMPS_13_SF 38 // RAMPS 1.3 (Power outputs: Spindle, Controller Fan)
|
||||
#define BOARD_FELIX2 37 // Felix 2.0+ Electronics Board (RAMPS like)
|
||||
#define BOARD_RIGIDBOARD 42 // Invent-A-Part RigidBoard
|
||||
#define BOARD_RIGIDBOARD_V2 52 // Invent-A-Part RigidBoard V2
|
||||
#define BOARD_RAMPS_14_EFB 43 // RAMPS 1.4 (Power outputs: Hotend, Fan, Bed)
|
||||
#define BOARD_RAMPS_14_EEB 44 // RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Bed)
|
||||
#define BOARD_RAMPS_14_EFF 45 // RAMPS 1.4 (Power outputs: Hotend, Fan0, Fan1)
|
||||
#define BOARD_RAMPS_14_EEF 46 // RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Fan)
|
||||
#define BOARD_RAMPS_14_SF 48 // RAMPS 1.4 (Power outputs: Spindle, Controller Fan)
|
||||
#define BOARD_GEN6 5 // Gen6
|
||||
#define BOARD_GEN6_DELUXE 51 // Gen6 deluxe
|
||||
#define BOARD_SANGUINOLOLU_11 6 // Sanguinololu < 1.2
|
||||
#define BOARD_SANGUINOLOLU_12 62 // Sanguinololu 1.2 and above
|
||||
#define BOARD_MELZI 63 // Melzi
|
||||
#define BOARD_STB_11 64 // STB V1.1
|
||||
#define BOARD_AZTEEG_X1 65 // Azteeg X1
|
||||
#define BOARD_MELZI_MAKR3D 66 // Melzi with ATmega1284 (MaKr3d version)
|
||||
#define BOARD_AZTEEG_X3 67 // Azteeg X3
|
||||
#define BOARD_AZTEEG_X3_PRO 68 // Azteeg X3 Pro
|
||||
#define BOARD_ULTIMAKER 7 // Ultimaker
|
||||
#define BOARD_ULTIMAKER_OLD 71 // Ultimaker (Older electronics. Pre 1.5.4. This is rare)
|
||||
#define BOARD_ULTIMAIN_2 72 // Ultimainboard 2.x (Uses TEMP_SENSOR 20)
|
||||
#define BOARD_3DRAG 77 // 3Drag Controller
|
||||
#define BOARD_K8200 78 // Velleman K8200 Controller (derived from 3Drag Controller)
|
||||
#define BOARD_K8400 79 // Velleman K8400 Controller (derived from 3Drag Controller)
|
||||
#define BOARD_TEENSYLU 8 // Teensylu
|
||||
#define BOARD_RUMBA 80 // Rumba
|
||||
#define BOARD_PRINTRBOARD 81 // Printrboard (AT90USB1286)
|
||||
#define BOARD_PRINTRBOARD_REVF 811 // Printrboard Revision F (AT90USB1286)
|
||||
#define BOARD_BRAINWAVE 82 // Brainwave (AT90USB646)
|
||||
#define BOARD_SAV_MKI 83 // SAV Mk-I (AT90USB1286)
|
||||
#define BOARD_TEENSY2 84 // Teensy++2.0 (AT90USB1286) - CLI compile: DEFINES=AT90USBxx_TEENSYPP_ASSIGNMENTS HARDWARE_MOTHERBOARD=84 make
|
||||
#define BOARD_BRAINWAVE_PRO 85 // Brainwave Pro (AT90USB1286)
|
||||
#define BOARD_GEN3_PLUS 9 // Gen3+
|
||||
#define BOARD_GEN3_MONOLITHIC 22 // Gen3 Monolithic Electronics
|
||||
#define BOARD_MEGATRONICS 70 // Megatronics
|
||||
#define BOARD_MEGATRONICS_2 701 // Megatronics v2.0
|
||||
#define BOARD_MINITRONICS 702 // Minitronics v1.0/1.1
|
||||
#define BOARD_MEGATRONICS_3 703 // Megatronics v3.0
|
||||
#define BOARD_MEGATRONICS_31 704 // Megatronics v3.1
|
||||
#define BOARD_OMCA_A 90 // Alpha OMCA board
|
||||
#define BOARD_OMCA 91 // Final OMCA board
|
||||
#define BOARD_RAMBO 301 // Rambo
|
||||
#define BOARD_MINIRAMBO 302 // Mini-Rambo
|
||||
#define BOARD_SCOOVO_X9H 303 // abee Scoovo X9H
|
||||
#define BOARD_MEGACONTROLLER 310 // Mega controller
|
||||
#define BOARD_ELEFU_3 21 // Elefu Ra Board (v3)
|
||||
#define BOARD_5DPRINT 88 // 5DPrint D8 Driver Board
|
||||
#define BOARD_LEAPFROG 999 // Leapfrog
|
||||
#define BOARD_MKS_BASE 40 // MKS BASE 1.0
|
||||
#define BOARD_MKS_13 47 // MKS v1.3 or 1.4 (maybe higher)
|
||||
#define BOARD_SAINSMART_2IN1 49 // Sainsmart 2-in-1 board
|
||||
#define BOARD_BAM_DICE 401 // 2PrintBeta BAM&DICE with STK drivers
|
||||
#define BOARD_BAM_DICE_DUE 402 // 2PrintBeta BAM&DICE Due with STK drivers
|
||||
#define BOARD_BQ_ZUM_MEGA_3D 503 // bq ZUM Mega 3D
|
||||
|
||||
#define MB(board) (MOTHERBOARD==BOARD_##board)
|
||||
|
||||
#endif // __BOARDS_H
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,82 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef CONFIGURATION_STORE_H
|
||||
#define CONFIGURATION_STORE_H
|
||||
|
||||
#include "MarlinConfig.h"
|
||||
|
||||
class MarlinSettings {
|
||||
public:
|
||||
MarlinSettings() { }
|
||||
|
||||
static void reset();
|
||||
static bool save();
|
||||
|
||||
#if ENABLED(EEPROM_SETTINGS)
|
||||
static bool load();
|
||||
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL) // Eventually make these available if any leveling system
|
||||
// That can store is enabled
|
||||
FORCE_INLINE static int get_start_of_meshes() { return meshes_begin; }
|
||||
FORCE_INLINE static int get_end_of_meshes() { return meshes_end; }
|
||||
static int calc_num_meshes();
|
||||
static void store_mesh(int8_t slot);
|
||||
static void load_mesh(int8_t slot, void *into = 0);
|
||||
|
||||
//static void delete_mesh(); // necessary if we have a MAT
|
||||
//static void defrag_meshes(); // "
|
||||
#endif
|
||||
#else
|
||||
FORCE_INLINE
|
||||
static bool load() { reset(); report(); return true; }
|
||||
#endif
|
||||
|
||||
#if DISABLED(DISABLE_M503)
|
||||
static void report(bool forReplay=false);
|
||||
#else
|
||||
FORCE_INLINE
|
||||
static void report(bool forReplay=false) { }
|
||||
#endif
|
||||
|
||||
private:
|
||||
static void postprocess();
|
||||
|
||||
#if ENABLED(EEPROM_SETTINGS)
|
||||
static bool eeprom_error;
|
||||
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL) // Eventually make these available if any leveling system
|
||||
// That can store is enabled
|
||||
static int meshes_begin;
|
||||
const static int meshes_end = E2END - 128; // 128 is a placeholder for the size of the MAT; the MAT will always
|
||||
// live at the very end of the eeprom
|
||||
|
||||
#endif
|
||||
|
||||
static void write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc);
|
||||
static void read_data(int &pos, uint8_t *value, uint16_t size, uint16_t *crc);
|
||||
#endif
|
||||
};
|
||||
|
||||
extern MarlinSettings settings;
|
||||
|
||||
#endif // CONFIGURATION_STORE_H
|
||||
@@ -1,91 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "MarlinConfig.h"
|
||||
|
||||
#if ENABLED(DIGIPOT_I2C) && ENABLED(DIGIPOT_MCP4018)
|
||||
|
||||
#include "Stream.h"
|
||||
#include "utility/twi.h"
|
||||
#include <SlowSoftI2CMaster.h> //https://github.com/stawel/SlowSoftI2CMaster
|
||||
|
||||
// Settings for the I2C based DIGIPOT (MCP4018) based on WT150
|
||||
|
||||
#define DIGIPOT_I2C_ADDRESS 0x2F
|
||||
|
||||
#define DIGIPOT_A4988_Rsx 0.250
|
||||
#define DIGIPOT_A4988_Vrefmax 5.0
|
||||
#define DIGIPOT_A4988_MAX_VALUE 127
|
||||
|
||||
#define DIGIPOT_A4988_Itripmax(Vref) ((Vref)/(8.0*DIGIPOT_A4988_Rsx))
|
||||
|
||||
#define DIGIPOT_A4988_FACTOR (DIGIPOT_A4988_MAX_VALUE/DIGIPOT_A4988_Itripmax(DIGIPOT_A4988_Vrefmax))
|
||||
//TODO: MAX_CURRENT -0.5A ?? (currently set to 2A, max possible current 2.5A)
|
||||
#define DIGIPOT_A4988_MAX_CURRENT (DIGIPOT_A4988_Itripmax(DIGIPOT_A4988_Vrefmax) - 0.5)
|
||||
|
||||
static byte current_to_wiper(float current) {
|
||||
return byte(ceil(float((DIGIPOT_A4988_FACTOR * current))));
|
||||
}
|
||||
|
||||
static uint8_t sda_pins[DIGIPOT_I2C_NUM_CHANNELS] = {
|
||||
DIGIPOTS_I2C_SDA_X,
|
||||
DIGIPOTS_I2C_SDA_Y,
|
||||
DIGIPOTS_I2C_SDA_Z,
|
||||
DIGIPOTS_I2C_SDA_E0,
|
||||
DIGIPOTS_I2C_SDA_E1,
|
||||
};
|
||||
|
||||
static SlowSoftI2CMaster pots[DIGIPOT_I2C_NUM_CHANNELS] = {
|
||||
SlowSoftI2CMaster { sda_pins[0], DIGIPOTS_I2C_SCL },
|
||||
SlowSoftI2CMaster { sda_pins[1], DIGIPOTS_I2C_SCL },
|
||||
SlowSoftI2CMaster { sda_pins[2], DIGIPOTS_I2C_SCL },
|
||||
SlowSoftI2CMaster { sda_pins[3], DIGIPOTS_I2C_SCL },
|
||||
SlowSoftI2CMaster { sda_pins[4], DIGIPOTS_I2C_SCL }
|
||||
};
|
||||
|
||||
static void i2c_send(int channel, byte v) {
|
||||
if (WITHIN(channel, 0, DIGIPOT_I2C_NUM_CHANNELS - 1)) {
|
||||
pots[channel].i2c_start(((DIGIPOT_I2C_ADDRESS) << 1) | I2C_WRITE);
|
||||
pots[channel].i2c_write(v);
|
||||
pots[channel].i2c_stop();
|
||||
}
|
||||
}
|
||||
|
||||
// This is for the MCP4018 I2C based digipot
|
||||
void digipot_i2c_set_current(int channel, float current) {
|
||||
current = min(max(current, 0.0f), float(DIGIPOT_A4988_MAX_CURRENT));
|
||||
|
||||
i2c_send(channel, current_to_wiper(current));
|
||||
}
|
||||
|
||||
void digipot_i2c_init() {
|
||||
const float digipot_motor_current[] = DIGIPOT_I2C_MOTOR_CURRENTS;
|
||||
|
||||
for (uint8_t i = 0; i < DIGIPOT_I2C_NUM_CHANNELS; i++)
|
||||
pots[i].i2c_init();
|
||||
|
||||
// setup initial currents as defined in Configuration_adv.h
|
||||
for (uint8_t i = 0; i < COUNT(digipot_motor_current); i++)
|
||||
digipot_i2c_set_current(i, digipot_motor_current[i]);
|
||||
}
|
||||
|
||||
#endif // DIGIPOT_I2C && DIGIPOT_MCP4018
|
||||
@@ -1,422 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Standard Marlin Bitmap for splashscreen
|
||||
*
|
||||
* You may use one of the following tools to generate the C++ bitmap array from
|
||||
* a black and white image:
|
||||
*
|
||||
* - http://www.marlinfw.org/tools/u8glib/converter.html
|
||||
* - http://www.digole.com/tools/PicturetoC_Hex_converter.php
|
||||
*
|
||||
* Please note that using the high-res version takes 402Bytes of PROGMEM.
|
||||
*/
|
||||
|
||||
//#define START_BMPHIGH
|
||||
|
||||
#if ENABLED(SHOW_BOOTSCREEN)
|
||||
#if ENABLED(START_BMPHIGH)
|
||||
#define START_BMPWIDTH 112
|
||||
#define START_BMPHEIGHT 38
|
||||
#define START_BMPBYTEWIDTH 14
|
||||
#define START_BMPBYTES 532 // START_BMPWIDTH * START_BMPHEIGHT / 8
|
||||
|
||||
const unsigned char start_bmp[START_BMPBYTES] PROGMEM = {
|
||||
0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF,
|
||||
0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF,
|
||||
0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF,
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF,
|
||||
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3F, 0xFF,
|
||||
0xC0, 0x0F, 0xC0, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x00, 0x1F, 0xFF,
|
||||
0xC0, 0x3F, 0xE1, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x0F, 0xFF,
|
||||
0xC0, 0x7F, 0xF3, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x07, 0xFF,
|
||||
0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xFF,
|
||||
0xC1, 0xF8, 0x7F, 0x87, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xFF,
|
||||
0xC1, 0xF0, 0x3F, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xFF,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE0, 0x1F, 0x00, 0x03, 0xE0, 0x78, 0x3C, 0x03, 0xF0, 0x7F,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE0, 0x7F, 0xC0, 0x0F, 0xF8, 0x78, 0x3C, 0x07, 0xFC, 0x3F,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE1, 0xFF, 0xE0, 0x1F, 0xFC, 0x78, 0x3C, 0x0F, 0xFE, 0x1F,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE3, 0xFF, 0xF0, 0x3F, 0xFE, 0x78, 0x3C, 0x1F, 0xFE, 0x0F,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE3, 0xF3, 0xF8, 0x3F, 0x3E, 0x78, 0x3C, 0x3F, 0x3F, 0x07,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0xE0, 0xFC, 0x7C, 0x1F, 0x78, 0x3C, 0x3E, 0x1F, 0x07,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0xC0, 0x7C, 0x7C, 0x0F, 0x78, 0x3C, 0x3C, 0x0F, 0x03,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0x80, 0x7C, 0x78, 0x0F, 0x78, 0x3C, 0x3C, 0x0F, 0x03,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0x80, 0x3C, 0x78, 0x00, 0x78, 0x3C, 0x3C, 0x0F, 0x03,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0x80, 0x3C, 0x78, 0x00, 0x78, 0x3C, 0x3C, 0x0F, 0x03,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0x80, 0x3C, 0x78, 0x00, 0x78, 0x3C, 0x3C, 0x0F, 0x03,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0xC0, 0x3C, 0x78, 0x00, 0x78, 0x3C, 0x3C, 0x0F, 0x03,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE3, 0xE0, 0x3C, 0x78, 0x00, 0x7C, 0x3C, 0x3C, 0x0F, 0x03,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE3, 0xFF, 0x3F, 0xF8, 0x00, 0x7F, 0xBC, 0x3C, 0x0F, 0x03,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE1, 0xFF, 0x3F, 0xF8, 0x00, 0x3F, 0xBF, 0xFC, 0x0F, 0x03,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE0, 0xFF, 0x3F, 0xF8, 0x00, 0x1F, 0xBF, 0xFC, 0x0F, 0x03,
|
||||
0xC1, 0xE0, 0x1E, 0x01, 0xE0, 0x7F, 0x3F, 0xF8, 0x00, 0x0F, 0xBF, 0xFC, 0x0F, 0x03,
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
|
||||
0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E,
|
||||
0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C,
|
||||
0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
|
||||
0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0,
|
||||
0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80 };
|
||||
#else
|
||||
#define START_BMPWIDTH 56
|
||||
#define START_BMPHEIGHT 19
|
||||
#define START_BMPBYTEWIDTH 7
|
||||
#define START_BMPBYTES 133 // START_BMPWIDTH * START_BMPHEIGHT / 8
|
||||
|
||||
const unsigned char start_bmp[START_BMPBYTES] PROGMEM = {
|
||||
0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF,
|
||||
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F,
|
||||
0x83, 0xCF, 0x00, 0x00, 0x0C, 0x30, 0x3F,
|
||||
0x87, 0xFF, 0x80, 0x00, 0x0C, 0x30, 0x1F,
|
||||
0x86, 0x79, 0x80, 0x00, 0x0C, 0x00, 0x0F,
|
||||
0x8C, 0x30, 0xC7, 0x83, 0x8C, 0x30, 0xE7,
|
||||
0x8C, 0x30, 0xCF, 0xC7, 0xCC, 0x31, 0xF3,
|
||||
0x8C, 0x30, 0xDC, 0xEC, 0xEC, 0x33, 0xB9,
|
||||
0x8C, 0x30, 0xD8, 0x6C, 0x6C, 0x33, 0x19,
|
||||
0x8C, 0x30, 0xD0, 0x6C, 0x0C, 0x33, 0x19,
|
||||
0x8C, 0x30, 0xD8, 0x6C, 0x0C, 0x33, 0x19,
|
||||
0x8C, 0x30, 0xDC, 0x6C, 0x0E, 0x3B, 0x19,
|
||||
0x8C, 0x30, 0xCF, 0x7C, 0x07, 0x9F, 0x19,
|
||||
0x8C, 0x30, 0xC7, 0x7C, 0x03, 0x8F, 0x19,
|
||||
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
|
||||
0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8 };
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Here comes a compile-time operation to match the extruder symbols
|
||||
// on the info screen to the set number of extruders in configuration.h
|
||||
//
|
||||
// When only one extruder is selected, the "1" on the symbol will not
|
||||
// be displayed.
|
||||
|
||||
#if HAS_TEMP_BED
|
||||
#if HOTENDS == 1
|
||||
#define STATUS_SCREENWIDTH 115 //Width in pixels
|
||||
#define STATUS_SCREENHEIGHT 19 //Height in pixels
|
||||
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
|
||||
const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20,
|
||||
0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x5E, 0x07, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x5F, 0x0F, 0xA0,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x4F, 0x0F, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x47, 0x0E, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x63, 0x0C, 0x60,
|
||||
0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0,
|
||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
#define STATUS_SCREENWIDTH 115 //Width in pixels
|
||||
#define STATUS_SCREENHEIGHT 19 //Height in pixels
|
||||
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
|
||||
const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x58, 0x01, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x40, 0x60, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x41, 0xF8, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x61, 0xF8, 0x60,
|
||||
0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0,
|
||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00
|
||||
};
|
||||
#elif HOTENDS == 2
|
||||
#define STATUS_SCREENWIDTH 115 //Width in pixels
|
||||
#define STATUS_SCREENHEIGHT 19 //Height in pixels
|
||||
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
|
||||
const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20,
|
||||
0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x5E, 0x07, 0xA0,
|
||||
0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x5F, 0x0F, 0xA0,
|
||||
0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x4F, 0x0F, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x47, 0x0E, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x63, 0x0C, 0x60,
|
||||
0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0,
|
||||
0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
#define STATUS_SCREENWIDTH 115 //Width in pixels
|
||||
#define STATUS_SCREENHEIGHT 19 //Height in pixels
|
||||
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
|
||||
const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0,
|
||||
0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0,
|
||||
0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0,
|
||||
0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0,
|
||||
0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x58, 0x01, 0xA0,
|
||||
0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x40, 0x60, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x41, 0xF8, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x61, 0xF8, 0x60,
|
||||
0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0,
|
||||
0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00
|
||||
};
|
||||
#else
|
||||
#define STATUS_SCREENWIDTH 115 //Width in pixels
|
||||
#define STATUS_SCREENHEIGHT 19 //Height in pixels
|
||||
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
|
||||
const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x7E, 0xE0, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20,
|
||||
0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x39, 0xC0, 0x00, 0x82, 0x08, 0x00, 0x5E, 0x07, 0xA0,
|
||||
0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x3E, 0xC0, 0x01, 0x04, 0x10, 0x00, 0x5F, 0x0F, 0xA0,
|
||||
0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x76, 0xE0, 0x01, 0x04, 0x10, 0x00, 0x4F, 0x0F, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x82, 0x08, 0x00, 0x47, 0x0E, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x41, 0x04, 0x00, 0x63, 0x0C, 0x60,
|
||||
0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0,
|
||||
0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
#define STATUS_SCREENWIDTH 115 //Width in pixels
|
||||
#define STATUS_SCREENHEIGHT 19 //Height in pixels
|
||||
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
|
||||
const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0,
|
||||
0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0,
|
||||
0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0,
|
||||
0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x7E, 0xE0, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0,
|
||||
0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x39, 0xC0, 0x00, 0x82, 0x08, 0x00, 0x58, 0x01, 0xA0,
|
||||
0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x3E, 0xC0, 0x01, 0x04, 0x10, 0x00, 0x40, 0x60, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x76, 0xE0, 0x01, 0x04, 0x10, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x82, 0x08, 0x00, 0x41, 0xF8, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x41, 0x04, 0x00, 0x61, 0xF8, 0x60,
|
||||
0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0,
|
||||
0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00
|
||||
};
|
||||
#endif // Extruders
|
||||
#else
|
||||
#if HOTENDS == 1
|
||||
#define STATUS_SCREENWIDTH 115 //Width in pixels
|
||||
#define STATUS_SCREENHEIGHT 19 //Height in pixels
|
||||
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
|
||||
const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60,
|
||||
0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
#define STATUS_SCREENWIDTH 115 //Width in pixels
|
||||
#define STATUS_SCREENHEIGHT 19 //Height in pixels
|
||||
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
|
||||
const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x63, 0xA0,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF7, 0xA0,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF7, 0xA0,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x63, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60,
|
||||
0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
#elif HOTENDS == 2
|
||||
#define STATUS_SCREENWIDTH 115 //Width in pixels
|
||||
#define STATUS_SCREENHEIGHT 19 //Height in pixels
|
||||
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
|
||||
const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0,
|
||||
0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0,
|
||||
0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60,
|
||||
0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
#define STATUS_SCREENWIDTH 115 //Width in pixels
|
||||
#define STATUS_SCREENHEIGHT 19 //Height in pixels
|
||||
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
|
||||
const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x63, 0xA0,
|
||||
0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF7, 0xA0,
|
||||
0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF7, 0xA0,
|
||||
0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x63, 0xA0,
|
||||
0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0,
|
||||
0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60,
|
||||
0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
#else
|
||||
#define STATUS_SCREENWIDTH 115 //Width in pixels
|
||||
#define STATUS_SCREENHEIGHT 19 //Height in pixels
|
||||
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
|
||||
const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x39, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0,
|
||||
0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x3E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0,
|
||||
0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60,
|
||||
0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
#define STATUS_SCREENWIDTH 115 //Width in pixels
|
||||
#define STATUS_SCREENHEIGHT 19 //Height in pixels
|
||||
#define STATUS_SCREENBYTEWIDTH 15 //Width in bytes
|
||||
const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0,
|
||||
0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x63, 0xA0,
|
||||
0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF7, 0xA0,
|
||||
0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF7, 0xA0,
|
||||
0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x63, 0xA0,
|
||||
0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x39, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0,
|
||||
0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x3E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
|
||||
0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20,
|
||||
0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60,
|
||||
0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
|
||||
0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
#endif // Extruders
|
||||
#endif // HAS_TEMP_BED
|
||||
@@ -1,194 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
Fontname: HD44780_C v1.2
|
||||
Copyright: A. Hardtung, public domain
|
||||
Capital A Height: 7, '1' Height: 7
|
||||
Calculated Max Values w= 5 h= 8 x= 2 y= 7 dx= 6 dy= 0 ascent= 8 len= 8
|
||||
Font Bounding box w= 6 h= 9 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-1 dx= 0 dy= 0
|
||||
Pure Font ascent = 7 descent=-1
|
||||
X Font ascent = 7 descent=-1
|
||||
Max Font ascent = 8 descent=-1
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
const u8g_fntpgm_uint8_t HD44780_C_5x7[2522] U8G_SECTION(".progmem.HD44780_C_5x7") = {
|
||||
0, 6, 9, 0, 254, 7, 1, 145, 3, 34, 32, 255, 255, 8, 255, 7,
|
||||
255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128,
|
||||
128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6,
|
||||
0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32,
|
||||
120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32,
|
||||
64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104,
|
||||
2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32,
|
||||
64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32,
|
||||
32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5,
|
||||
5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192,
|
||||
64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192,
|
||||
192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6,
|
||||
0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64,
|
||||
192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112,
|
||||
128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240,
|
||||
5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7,
|
||||
6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0,
|
||||
48, 64, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16,
|
||||
32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136,
|
||||
112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5,
|
||||
5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192,
|
||||
192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64,
|
||||
32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1,
|
||||
0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136,
|
||||
8, 16, 32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168,
|
||||
112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7,
|
||||
7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0,
|
||||
0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144,
|
||||
136, 136, 136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128,
|
||||
128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5,
|
||||
7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6,
|
||||
0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128,
|
||||
128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16,
|
||||
16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136,
|
||||
5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7,
|
||||
6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0,
|
||||
136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136,
|
||||
136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128,
|
||||
128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7,
|
||||
7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0,
|
||||
0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32,
|
||||
32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136,
|
||||
136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5,
|
||||
7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6,
|
||||
0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136,
|
||||
136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32,
|
||||
64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224,
|
||||
5, 7, 7, 6, 0, 0, 32, 112, 160, 160, 168, 112, 32, 3, 7, 7,
|
||||
6, 1, 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4,
|
||||
32, 80, 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5,
|
||||
128, 64, 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7,
|
||||
6, 0, 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0,
|
||||
112, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136,
|
||||
136, 120, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7,
|
||||
6, 0, 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255,
|
||||
112, 136, 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200,
|
||||
136, 136, 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128,
|
||||
3, 8, 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7,
|
||||
7, 6, 0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1,
|
||||
0, 192, 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168,
|
||||
168, 168, 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5,
|
||||
5, 6, 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240,
|
||||
136, 136, 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8,
|
||||
8, 5, 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6,
|
||||
0, 0, 112, 128, 112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224,
|
||||
64, 64, 72, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5,
|
||||
5, 5, 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0,
|
||||
136, 136, 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136,
|
||||
5, 6, 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6,
|
||||
0, 0, 248, 16, 32, 64, 248, 5, 5, 5, 6, 0, 2, 184, 168, 168,
|
||||
168, 184, 5, 5, 5, 6, 0, 2, 184, 136, 184, 160, 184, 5, 5, 5,
|
||||
6, 0, 2, 184, 160, 184, 136, 184, 5, 6, 6, 6, 0, 1, 8, 40,
|
||||
72, 248, 64, 32, 5, 5, 5, 6, 0, 0, 56, 112, 224, 136, 240, 0,
|
||||
0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
|
||||
0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
|
||||
0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
|
||||
0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
|
||||
0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
|
||||
0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
|
||||
0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
|
||||
0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 5,
|
||||
7, 7, 6, 0, 0, 248, 136, 128, 240, 136, 136, 240, 5, 7, 7, 6,
|
||||
0, 0, 248, 136, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 80,
|
||||
0, 248, 128, 240, 128, 248, 5, 7, 7, 6, 0, 0, 168, 168, 168, 112,
|
||||
168, 168, 168, 5, 7, 7, 6, 0, 0, 240, 8, 8, 112, 8, 8, 240,
|
||||
5, 7, 7, 6, 0, 0, 136, 136, 152, 168, 200, 136, 136, 5, 8, 8,
|
||||
6, 0, 0, 80, 32, 136, 152, 168, 168, 200, 136, 5, 7, 7, 6, 0,
|
||||
0, 120, 40, 40, 40, 40, 168, 72, 5, 7, 7, 6, 0, 0, 248, 136,
|
||||
136, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 136, 136, 136, 80, 32,
|
||||
64, 128, 5, 7, 7, 6, 0, 0, 32, 112, 168, 168, 168, 112, 32, 5,
|
||||
7, 7, 6, 0, 0, 136, 136, 136, 120, 8, 8, 8, 5, 7, 7, 6,
|
||||
0, 0, 168, 168, 168, 168, 168, 168, 248, 5, 7, 7, 6, 0, 0, 192,
|
||||
64, 64, 112, 72, 72, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 200,
|
||||
168, 168, 200, 5, 7, 7, 6, 0, 0, 112, 136, 8, 56, 8, 136, 112,
|
||||
5, 7, 7, 6, 0, 0, 144, 168, 168, 232, 168, 168, 144, 5, 7, 7,
|
||||
6, 0, 0, 120, 136, 136, 120, 40, 72, 136, 5, 7, 7, 6, 0, 0,
|
||||
24, 96, 128, 240, 136, 136, 112, 4, 5, 5, 6, 0, 0, 224, 144, 224,
|
||||
144, 224, 5, 5, 5, 6, 0, 0, 248, 136, 128, 128, 128, 5, 7, 7,
|
||||
6, 0, 0, 80, 0, 112, 136, 248, 128, 112, 5, 5, 5, 6, 0, 0,
|
||||
168, 168, 112, 168, 168, 5, 5, 5, 6, 0, 0, 240, 8, 48, 8, 240,
|
||||
5, 5, 5, 6, 0, 0, 136, 152, 168, 200, 136, 5, 7, 7, 6, 0,
|
||||
0, 80, 32, 136, 152, 168, 200, 136, 4, 5, 5, 6, 0, 0, 144, 160,
|
||||
192, 160, 144, 5, 5, 5, 6, 0, 0, 248, 40, 40, 168, 72, 5, 5,
|
||||
5, 6, 0, 0, 136, 216, 168, 136, 136, 5, 5, 5, 6, 0, 0, 136,
|
||||
136, 248, 136, 136, 5, 5, 5, 6, 0, 0, 248, 136, 136, 136, 136, 5,
|
||||
5, 5, 6, 0, 0, 248, 32, 32, 32, 32, 5, 5, 5, 6, 0, 0,
|
||||
136, 136, 120, 8, 8, 5, 5, 5, 6, 0, 0, 168, 168, 168, 168, 248,
|
||||
5, 5, 5, 6, 0, 0, 192, 64, 112, 72, 112, 5, 5, 5, 6, 0,
|
||||
0, 136, 136, 200, 168, 200, 4, 5, 5, 6, 0, 0, 128, 128, 224, 144,
|
||||
224, 5, 5, 5, 6, 0, 0, 112, 136, 56, 136, 112, 5, 5, 5, 6,
|
||||
0, 0, 144, 168, 232, 168, 144, 5, 5, 5, 6, 0, 0, 120, 136, 120,
|
||||
40, 72, 5, 5, 5, 6, 0, 1, 32, 72, 144, 72, 32, 5, 5, 5,
|
||||
6, 0, 1, 32, 144, 72, 144, 32, 5, 3, 3, 6, 0, 0, 72, 144,
|
||||
216, 5, 3, 3, 6, 0, 4, 216, 72, 144, 5, 7, 7, 6, 0, 0,
|
||||
144, 208, 176, 144, 56, 40, 56, 5, 7, 7, 6, 0, 0, 32, 0, 32,
|
||||
64, 128, 136, 112, 5, 7, 7, 6, 0, 0, 24, 32, 32, 112, 32, 32,
|
||||
192, 5, 7, 7, 6, 0, 0, 32, 80, 64, 240, 64, 64, 120, 1, 2,
|
||||
2, 6, 2, 0, 128, 128, 1, 4, 4, 6, 2, 0, 128, 128, 128, 128,
|
||||
3, 5, 5, 6, 1, 0, 160, 160, 160, 0, 224, 3, 5, 5, 6, 1,
|
||||
0, 160, 160, 160, 0, 160, 5, 7, 7, 6, 0, 0, 160, 0, 232, 16,
|
||||
32, 64, 128, 5, 5, 5, 6, 0, 1, 216, 112, 32, 112, 216, 5, 7,
|
||||
7, 6, 0, 0, 160, 64, 168, 16, 32, 64, 128, 3, 6, 6, 6, 1,
|
||||
1, 224, 64, 64, 64, 64, 224, 5, 6, 6, 6, 0, 1, 248, 80, 80,
|
||||
80, 80, 248, 5, 7, 7, 6, 0, 0, 32, 112, 168, 32, 32, 32, 32,
|
||||
5, 7, 7, 6, 0, 0, 32, 32, 32, 32, 168, 112, 32, 5, 7, 7,
|
||||
6, 0, 0, 128, 144, 176, 248, 176, 144, 128, 5, 7, 7, 6, 0, 0,
|
||||
8, 72, 104, 248, 104, 72, 8, 5, 7, 7, 6, 0, 0, 128, 136, 168,
|
||||
248, 168, 136, 128, 5, 7, 7, 6, 0, 0, 128, 224, 136, 16, 32, 64,
|
||||
128, 2, 2, 2, 6, 2, 2, 192, 192, 5, 8, 8, 6, 0, 255, 120,
|
||||
40, 40, 40, 72, 136, 248, 136, 5, 8, 8, 6, 0, 255, 136, 136, 136,
|
||||
136, 136, 136, 248, 8, 5, 8, 8, 6, 0, 255, 168, 168, 168, 168, 168,
|
||||
168, 248, 8, 5, 6, 6, 6, 0, 255, 120, 40, 72, 136, 248, 136, 5,
|
||||
7, 7, 6, 0, 255, 32, 32, 112, 168, 168, 112, 32, 5, 6, 6, 6,
|
||||
0, 255, 136, 136, 136, 136, 248, 8, 5, 6, 6, 6, 0, 255, 168, 168,
|
||||
168, 168, 248, 8, 2, 2, 2, 6, 2, 6, 64, 128, 3, 1, 1, 6,
|
||||
1, 7, 160, 5, 2, 2, 6, 0, 6, 72, 176, 5, 8, 8, 6, 0,
|
||||
0, 16, 32, 0, 112, 136, 248, 128, 112, 5, 6, 6, 6, 0, 255, 112,
|
||||
128, 136, 112, 32, 96, 3, 7, 7, 6, 1, 0, 160, 0, 160, 160, 160,
|
||||
32, 192, 5, 6, 6, 6, 0, 1, 32, 112, 112, 112, 248, 32, 5, 5,
|
||||
5, 6, 0, 1, 80, 0, 136, 0, 80, 5, 5, 5, 6, 0, 1, 112,
|
||||
136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 136, 144, 168, 88, 184, 8,
|
||||
8, 5, 7, 7, 6, 0, 0, 136, 144, 184, 72, 184, 8, 56, 5, 7,
|
||||
7, 6, 0, 0, 136, 144, 184, 72, 152, 32, 56, 5, 8, 8, 6, 0,
|
||||
0, 192, 64, 192, 72, 216, 56, 8, 8, 5, 7, 7, 6, 0, 0, 136,
|
||||
248, 136, 248, 136, 248, 136, 4, 5, 5, 6, 0, 2, 192, 0, 48, 0,
|
||||
96, 5, 8, 8, 6, 0, 0, 64, 160, 224, 168, 8, 40, 120, 32, 5,
|
||||
8, 8, 6, 0, 0, 64, 112, 64, 120, 64, 112, 64, 224, 5, 8, 8,
|
||||
6, 0, 0, 32, 112, 32, 248, 32, 112, 32, 112, 5, 7, 7, 6, 0,
|
||||
0, 104, 0, 232, 0, 104, 16, 56, 5, 8, 8, 6, 0, 0, 16, 112,
|
||||
16, 240, 16, 112, 16, 56, 5, 7, 7, 6, 0, 1, 32, 112, 32, 248,
|
||||
32, 112, 32, 5, 8, 8, 6, 0, 0, 16, 144, 80, 48, 80, 144, 16,
|
||||
56, 5, 8, 8, 6, 0, 0, 48, 72, 32, 80, 80, 32, 144, 96, 5,
|
||||
7, 7, 6, 0, 0, 120, 168, 168, 120, 40, 40, 40, 5, 8, 8, 6,
|
||||
0, 0, 248, 248, 248, 248, 248, 248, 248, 248
|
||||
};
|
||||
@@ -1,192 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
Fontname: HD44780_J
|
||||
Copyright: A. Hardtung, public domain
|
||||
Capital A Height: 7, '1' Height: 7
|
||||
Calculated Max Values w= 6 h=10 x= 2 y= 5 dx= 6 dy= 0 ascent= 8 len= 8
|
||||
Font Bounding box w= 6 h= 9 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-2 dx= 0 dy= 0
|
||||
Pure Font ascent = 7 descent=-1
|
||||
X Font ascent = 7 descent=-1
|
||||
Max Font ascent = 8 descent=-2
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
const u8g_fntpgm_uint8_t HD44780_J_5x7[2492] U8G_SECTION(".progmem.HD44780_J_5x7") = {
|
||||
0, 6, 9, 0, 254, 7, 1, 145, 3, 34, 32, 255, 255, 8, 254, 7,
|
||||
255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128,
|
||||
128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6,
|
||||
0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32,
|
||||
120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32,
|
||||
64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104,
|
||||
2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32,
|
||||
64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32,
|
||||
32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5,
|
||||
5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192,
|
||||
64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192,
|
||||
192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6,
|
||||
0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64,
|
||||
192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112,
|
||||
128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240,
|
||||
5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7,
|
||||
6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0,
|
||||
48, 64, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16,
|
||||
32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136,
|
||||
112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5,
|
||||
5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192,
|
||||
192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64,
|
||||
32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1,
|
||||
0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136,
|
||||
8, 16, 32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168,
|
||||
112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7,
|
||||
7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0,
|
||||
0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144,
|
||||
136, 136, 136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128,
|
||||
128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5,
|
||||
7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6,
|
||||
0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128,
|
||||
128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16,
|
||||
16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136,
|
||||
5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7,
|
||||
6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0,
|
||||
136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136,
|
||||
136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128,
|
||||
128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7,
|
||||
7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0,
|
||||
0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32,
|
||||
32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136,
|
||||
136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5,
|
||||
7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6,
|
||||
0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136,
|
||||
136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32,
|
||||
64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224,
|
||||
5, 7, 7, 6, 0, 0, 136, 80, 248, 32, 248, 32, 32, 3, 7, 7,
|
||||
6, 1, 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4,
|
||||
32, 80, 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5,
|
||||
128, 64, 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7,
|
||||
6, 0, 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0,
|
||||
112, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136,
|
||||
136, 120, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7,
|
||||
6, 0, 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255,
|
||||
112, 136, 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200,
|
||||
136, 136, 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128,
|
||||
3, 8, 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7,
|
||||
7, 6, 0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1,
|
||||
0, 192, 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168,
|
||||
168, 168, 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5,
|
||||
5, 6, 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240,
|
||||
136, 136, 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8,
|
||||
8, 5, 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6,
|
||||
0, 0, 112, 128, 112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224,
|
||||
64, 64, 72, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5,
|
||||
5, 5, 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0,
|
||||
136, 136, 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136,
|
||||
5, 6, 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6,
|
||||
0, 0, 248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64,
|
||||
128, 64, 64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128,
|
||||
128, 3, 7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 5,
|
||||
5, 6, 0, 1, 32, 16, 248, 16, 32, 5, 5, 5, 6, 0, 1, 32,
|
||||
64, 248, 64, 32, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
|
||||
0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
|
||||
0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
|
||||
0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
|
||||
0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
|
||||
0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
|
||||
0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
|
||||
0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
|
||||
0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
|
||||
0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
|
||||
0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
|
||||
0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
|
||||
0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 3, 3, 3, 6, 0, 0,
|
||||
224, 160, 224, 3, 4, 4, 6, 2, 3, 224, 128, 128, 128, 3, 4, 4,
|
||||
6, 0, 0, 32, 32, 32, 224, 3, 3, 3, 6, 0, 0, 128, 64, 32,
|
||||
2, 2, 2, 6, 1, 2, 192, 192, 5, 6, 6, 6, 0, 0, 248, 8,
|
||||
248, 8, 16, 32, 5, 5, 5, 6, 0, 0, 248, 8, 48, 32, 64, 4,
|
||||
5, 5, 6, 0, 0, 16, 32, 96, 160, 32, 5, 5, 5, 6, 0, 0,
|
||||
32, 248, 136, 8, 48, 5, 4, 4, 6, 0, 0, 248, 32, 32, 248, 5,
|
||||
5, 5, 6, 0, 0, 16, 248, 48, 80, 144, 5, 5, 5, 6, 0, 0,
|
||||
64, 248, 72, 80, 64, 5, 4, 4, 6, 0, 0, 112, 16, 16, 248, 4,
|
||||
5, 5, 6, 0, 0, 240, 16, 240, 16, 240, 5, 4, 4, 6, 0, 0,
|
||||
168, 168, 8, 48, 5, 1, 1, 6, 0, 3, 248, 5, 7, 7, 6, 0,
|
||||
0, 248, 8, 40, 48, 32, 32, 64, 5, 7, 7, 6, 0, 0, 8, 16,
|
||||
32, 96, 160, 32, 32, 5, 7, 7, 6, 0, 0, 32, 248, 136, 136, 8,
|
||||
16, 32, 5, 6, 6, 6, 0, 0, 248, 32, 32, 32, 32, 248, 5, 7,
|
||||
7, 6, 0, 0, 16, 248, 16, 48, 80, 144, 16, 5, 7, 7, 6, 0,
|
||||
0, 64, 248, 72, 72, 72, 72, 144, 5, 7, 7, 6, 0, 0, 32, 248,
|
||||
32, 248, 32, 32, 32, 5, 6, 6, 6, 0, 0, 120, 72, 136, 8, 16,
|
||||
96, 5, 7, 7, 6, 0, 0, 64, 120, 144, 16, 16, 16, 32, 5, 6,
|
||||
6, 6, 0, 0, 248, 8, 8, 8, 8, 248, 5, 7, 7, 6, 0, 0,
|
||||
80, 248, 80, 80, 16, 32, 64, 5, 6, 6, 6, 0, 0, 192, 8, 200,
|
||||
8, 16, 224, 5, 6, 6, 6, 0, 0, 248, 8, 16, 32, 80, 136, 5,
|
||||
7, 7, 6, 0, 0, 64, 248, 72, 80, 64, 64, 56, 5, 6, 6, 6,
|
||||
0, 0, 136, 136, 72, 8, 16, 96, 5, 6, 6, 6, 0, 0, 120, 72,
|
||||
168, 24, 16, 96, 5, 7, 7, 6, 0, 0, 16, 224, 32, 248, 32, 32,
|
||||
64, 5, 6, 6, 6, 0, 0, 168, 168, 168, 8, 16, 32, 5, 7, 7,
|
||||
6, 0, 0, 112, 0, 248, 32, 32, 32, 64, 3, 7, 7, 6, 1, 0,
|
||||
128, 128, 128, 192, 160, 128, 128, 5, 7, 7, 6, 0, 0, 32, 32, 248,
|
||||
32, 32, 64, 128, 5, 6, 6, 6, 0, 0, 112, 0, 0, 0, 0, 248,
|
||||
5, 6, 6, 6, 0, 0, 248, 8, 80, 32, 80, 128, 5, 7, 7, 6,
|
||||
0, 0, 32, 248, 16, 32, 112, 168, 32, 3, 7, 7, 6, 1, 0, 32,
|
||||
32, 32, 32, 32, 64, 128, 5, 6, 6, 6, 0, 0, 32, 16, 136, 136,
|
||||
136, 136, 5, 7, 7, 6, 0, 0, 128, 128, 248, 128, 128, 128, 120, 5,
|
||||
6, 6, 6, 0, 0, 248, 8, 8, 8, 16, 96, 5, 5, 5, 6, 0,
|
||||
1, 64, 160, 16, 8, 8, 5, 7, 7, 6, 0, 0, 32, 248, 32, 32,
|
||||
168, 168, 32, 5, 6, 6, 6, 0, 0, 248, 8, 8, 80, 32, 16, 4,
|
||||
6, 6, 6, 1, 0, 224, 0, 224, 0, 224, 16, 5, 6, 6, 6, 0,
|
||||
0, 32, 64, 128, 136, 248, 8, 5, 6, 6, 6, 0, 0, 8, 8, 80,
|
||||
32, 80, 128, 5, 6, 6, 6, 0, 0, 248, 64, 248, 64, 64, 56, 5,
|
||||
7, 7, 6, 0, 0, 64, 64, 248, 72, 80, 64, 64, 5, 7, 7, 6,
|
||||
0, 0, 112, 16, 16, 16, 16, 16, 248, 5, 6, 6, 6, 0, 0, 248,
|
||||
8, 248, 8, 8, 248, 5, 7, 7, 6, 0, 0, 112, 0, 248, 8, 8,
|
||||
16, 32, 4, 7, 7, 6, 0, 0, 144, 144, 144, 144, 16, 32, 64, 5,
|
||||
6, 6, 6, 0, 0, 32, 160, 160, 168, 168, 176, 5, 7, 7, 6, 0,
|
||||
0, 128, 128, 128, 136, 144, 160, 192, 5, 6, 6, 6, 0, 0, 248, 136,
|
||||
136, 136, 136, 248, 5, 6, 6, 6, 0, 0, 248, 136, 136, 8, 16, 32,
|
||||
5, 6, 6, 6, 0, 0, 192, 0, 8, 8, 16, 224, 4, 3, 3, 6,
|
||||
0, 4, 32, 144, 64, 3, 3, 3, 6, 0, 4, 224, 160, 224, 5, 5,
|
||||
5, 6, 0, 1, 72, 168, 144, 144, 104, 5, 7, 7, 6, 0, 0, 80,
|
||||
0, 112, 8, 120, 136, 120, 4, 8, 8, 6, 1, 255, 96, 144, 144, 224,
|
||||
144, 144, 224, 128, 5, 5, 5, 6, 0, 0, 112, 128, 96, 136, 112, 5,
|
||||
6, 6, 6, 0, 255, 136, 136, 152, 232, 136, 128, 5, 5, 5, 6, 0,
|
||||
0, 120, 160, 144, 136, 112, 5, 7, 7, 6, 0, 254, 48, 72, 136, 136,
|
||||
240, 128, 128, 5, 8, 8, 6, 0, 254, 120, 136, 136, 136, 120, 8, 8,
|
||||
112, 5, 5, 5, 6, 0, 1, 56, 32, 32, 160, 64, 4, 3, 3, 6,
|
||||
0, 3, 16, 208, 16, 4, 8, 8, 6, 0, 255, 16, 0, 48, 16, 16,
|
||||
16, 144, 96, 3, 3, 3, 6, 0, 4, 160, 64, 160, 5, 7, 7, 6,
|
||||
0, 0, 32, 112, 160, 160, 168, 112, 32, 5, 7, 7, 6, 0, 0, 64,
|
||||
64, 224, 64, 224, 64, 120, 5, 7, 7, 6, 0, 0, 112, 0, 176, 200,
|
||||
136, 136, 136, 5, 7, 7, 6, 0, 0, 80, 0, 112, 136, 136, 136, 112,
|
||||
5, 7, 7, 6, 0, 255, 176, 200, 136, 136, 240, 128, 128, 5, 7, 7,
|
||||
6, 0, 255, 104, 152, 136, 136, 120, 8, 8, 5, 6, 6, 6, 0, 0,
|
||||
112, 136, 248, 136, 136, 112, 5, 3, 3, 6, 0, 2, 88, 168, 208, 5,
|
||||
5, 5, 6, 0, 0, 112, 136, 136, 80, 216, 5, 7, 7, 6, 0, 0,
|
||||
80, 0, 136, 136, 136, 152, 104, 5, 7, 7, 6, 0, 0, 248, 128, 64,
|
||||
32, 64, 128, 248, 5, 5, 5, 6, 0, 0, 248, 80, 80, 80, 152, 5,
|
||||
7, 7, 6, 0, 0, 248, 0, 136, 80, 32, 80, 136, 5, 7, 7, 6,
|
||||
0, 255, 136, 136, 136, 136, 120, 8, 112, 5, 6, 6, 6, 0, 0, 8,
|
||||
240, 32, 248, 32, 32, 5, 5, 5, 6, 0, 0, 248, 64, 120, 72, 136,
|
||||
5, 5, 5, 6, 0, 0, 248, 168, 248, 136, 136, 5, 5, 5, 6, 0,
|
||||
1, 32, 0, 248, 0, 32, 0, 0, 0, 6, 0, 0, 6, 10, 10, 6,
|
||||
0, 254, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252
|
||||
};
|
||||
@@ -1,226 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
Fontname: HD44780_W
|
||||
Copyright: A.Hardtung, public domain
|
||||
Capital A Height: 7, '1' Height: 7
|
||||
Calculated Max Values w= 5 h= 9 x= 2 y= 5 dx= 6 dy= 0 ascent= 8 len= 9
|
||||
Font Bounding box w= 6 h= 9 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-1 dx= 0 dy= 0
|
||||
Pure Font ascent = 7 descent=-1
|
||||
X Font ascent = 7 descent=-1
|
||||
Max Font ascent = 8 descent=-1
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
const u8g_fntpgm_uint8_t HD44780_W_5x7[3034] U8G_SECTION(".progmem.HD44780_W_5x7") = {
|
||||
0, 6, 9, 0, 254, 7, 2, 79, 3, 222, 16, 255, 255, 8, 255, 7,
|
||||
255, 4, 7, 7, 6, 0, 0, 16, 48, 112, 240, 112, 48, 16, 4, 7,
|
||||
7, 6, 1, 0, 128, 192, 224, 240, 224, 192, 128, 5, 3, 3, 6, 0,
|
||||
4, 216, 72, 144, 5, 3, 3, 6, 0, 4, 216, 144, 72, 5, 7, 7,
|
||||
6, 0, 0, 32, 112, 248, 0, 32, 112, 248, 5, 7, 7, 6, 0, 0,
|
||||
248, 112, 32, 0, 248, 112, 32, 5, 5, 5, 6, 0, 1, 112, 248, 248,
|
||||
248, 112, 5, 7, 7, 6, 0, 0, 8, 8, 40, 72, 248, 64, 32, 5,
|
||||
7, 7, 6, 0, 0, 32, 112, 168, 32, 32, 32, 32, 5, 7, 7, 6,
|
||||
0, 0, 32, 32, 32, 32, 168, 112, 32, 5, 5, 5, 6, 0, 1, 32,
|
||||
64, 248, 64, 32, 5, 5, 5, 6, 0, 1, 32, 16, 248, 16, 32, 5,
|
||||
7, 7, 6, 0, 0, 16, 32, 64, 32, 16, 0, 248, 5, 7, 7, 6,
|
||||
0, 0, 64, 32, 16, 32, 64, 0, 248, 5, 5, 5, 6, 0, 1, 32,
|
||||
32, 112, 112, 248, 5, 5, 5, 6, 0, 0, 248, 112, 112, 32, 32, 0,
|
||||
0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128,
|
||||
0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6, 0, 0,
|
||||
80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32, 120, 160,
|
||||
112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32, 64, 152,
|
||||
24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104, 2, 3,
|
||||
3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32, 64, 128,
|
||||
128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32, 32, 64,
|
||||
128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5, 5, 6,
|
||||
0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192, 64, 128,
|
||||
5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192, 192, 5,
|
||||
5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0,
|
||||
112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64, 192, 64,
|
||||
64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112, 128, 128,
|
||||
248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240, 5, 7,
|
||||
7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7, 6, 0,
|
||||
0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0, 48, 64,
|
||||
128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32, 32,
|
||||
32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136, 112, 5,
|
||||
7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5, 5, 6,
|
||||
2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192, 192, 0,
|
||||
192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64, 32, 16,
|
||||
5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1, 0, 128,
|
||||
64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136, 8, 16,
|
||||
32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168, 112, 5,
|
||||
7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7, 7, 6,
|
||||
0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0, 0, 112,
|
||||
136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144, 136, 136,
|
||||
136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 248,
|
||||
5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5, 7, 7,
|
||||
6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6, 0, 0,
|
||||
136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128, 128, 128,
|
||||
128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16, 16, 144,
|
||||
96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136, 5, 7,
|
||||
7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7, 6, 0,
|
||||
0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 136, 136,
|
||||
200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 136,
|
||||
136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128, 128, 5,
|
||||
7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7, 7, 6,
|
||||
0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0, 0, 120,
|
||||
128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32, 32, 32,
|
||||
32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 136, 112,
|
||||
5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5, 7, 7,
|
||||
6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6, 0, 0,
|
||||
136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136, 136, 136,
|
||||
80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32, 64, 128,
|
||||
248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224, 5, 5,
|
||||
5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6, 1, 0, 224,
|
||||
32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32, 80, 136, 5,
|
||||
1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128, 64, 5, 5,
|
||||
5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6, 0, 0, 128,
|
||||
128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112, 128, 128, 136,
|
||||
112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136, 120, 5, 5,
|
||||
5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6, 0, 0, 48,
|
||||
72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112, 136, 136, 120,
|
||||
8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136, 136, 136, 1,
|
||||
7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, 8, 8, 6,
|
||||
1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7, 6, 0, 0,
|
||||
128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0, 192, 64, 64,
|
||||
64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168, 168, 168, 5,
|
||||
5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5, 6, 0, 0,
|
||||
112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136, 136, 240, 128,
|
||||
128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8, 5, 5, 5,
|
||||
6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0, 0, 112, 128,
|
||||
112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224, 64, 64, 72, 48,
|
||||
5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5, 5, 6, 0,
|
||||
0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136, 136, 168, 168,
|
||||
80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5, 6, 6, 6,
|
||||
0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0, 0, 248, 16,
|
||||
32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128, 64, 64, 32,
|
||||
1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128, 3, 7, 7,
|
||||
6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 6, 6, 6, 0, 1,
|
||||
8, 40, 72, 248, 64, 32, 5, 7, 7, 6, 0, 0, 32, 80, 136, 136,
|
||||
136, 136, 248, 5, 7, 7, 6, 0, 0, 248, 136, 128, 240, 136, 136, 240,
|
||||
5, 8, 8, 6, 0, 255, 120, 40, 40, 40, 72, 136, 248, 136, 5, 7,
|
||||
7, 6, 0, 0, 168, 168, 168, 112, 168, 168, 168, 5, 7, 7, 6, 0,
|
||||
0, 240, 8, 8, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 136, 136,
|
||||
152, 168, 200, 136, 136, 5, 8, 8, 6, 0, 0, 80, 32, 136, 152, 168,
|
||||
168, 200, 136, 5, 7, 7, 6, 0, 0, 120, 40, 40, 40, 40, 168, 72,
|
||||
5, 7, 7, 6, 0, 0, 248, 136, 136, 136, 136, 136, 136, 5, 7, 7,
|
||||
6, 0, 0, 136, 136, 136, 80, 32, 64, 128, 5, 8, 8, 6, 0, 255,
|
||||
136, 136, 136, 136, 136, 136, 248, 8, 5, 7, 7, 6, 0, 0, 136, 136,
|
||||
136, 120, 8, 8, 8, 5, 7, 7, 6, 0, 0, 168, 168, 168, 168, 168,
|
||||
168, 248, 5, 8, 8, 6, 0, 255, 168, 168, 168, 168, 168, 168, 248, 8,
|
||||
5, 7, 7, 6, 0, 0, 192, 64, 64, 112, 72, 72, 112, 5, 7, 7,
|
||||
6, 0, 0, 136, 136, 136, 200, 168, 168, 200, 5, 7, 7, 6, 0, 0,
|
||||
112, 136, 40, 80, 8, 136, 112, 5, 5, 5, 6, 0, 0, 64, 160, 144,
|
||||
144, 104, 5, 7, 7, 6, 0, 0, 32, 48, 40, 40, 32, 224, 224, 5,
|
||||
7, 7, 6, 0, 0, 248, 136, 128, 128, 128, 128, 128, 5, 5, 5, 6,
|
||||
0, 0, 248, 80, 80, 80, 152, 5, 7, 7, 6, 0, 0, 248, 128, 64,
|
||||
32, 64, 128, 248, 5, 5, 5, 6, 0, 0, 120, 144, 144, 144, 96, 5,
|
||||
7, 7, 6, 0, 0, 48, 40, 56, 40, 200, 216, 24, 5, 6, 6, 6,
|
||||
0, 0, 8, 112, 160, 32, 32, 16, 5, 6, 6, 6, 0, 1, 32, 112,
|
||||
112, 112, 248, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136,
|
||||
112, 5, 5, 5, 6, 0, 0, 112, 136, 136, 80, 216, 5, 7, 7, 6,
|
||||
0, 0, 48, 72, 32, 80, 136, 136, 112, 5, 3, 3, 6, 0, 2, 88,
|
||||
168, 208, 5, 6, 6, 6, 0, 0, 80, 248, 248, 248, 112, 32, 5, 5,
|
||||
5, 6, 0, 0, 112, 128, 96, 136, 112, 5, 7, 7, 6, 0, 0, 112,
|
||||
136, 136, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 216, 216, 216, 216,
|
||||
216, 216, 216, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128,
|
||||
5, 7, 7, 6, 0, 0, 32, 112, 160, 160, 168, 112, 32, 5, 7, 7,
|
||||
6, 0, 0, 48, 64, 64, 224, 64, 80, 168, 5, 5, 5, 6, 0, 0,
|
||||
136, 112, 80, 112, 136, 5, 7, 7, 6, 0, 0, 136, 80, 248, 32, 248,
|
||||
32, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 0, 128, 128, 128, 5,
|
||||
8, 8, 6, 0, 0, 48, 72, 32, 80, 80, 32, 144, 96, 5, 7, 7,
|
||||
6, 0, 0, 24, 32, 32, 112, 32, 32, 192, 5, 7, 7, 6, 0, 0,
|
||||
248, 136, 184, 184, 184, 136, 248, 5, 7, 7, 6, 0, 0, 112, 8, 120,
|
||||
136, 120, 0, 248, 5, 5, 5, 6, 0, 1, 40, 80, 160, 80, 40, 5,
|
||||
7, 7, 6, 0, 0, 144, 168, 168, 232, 168, 168, 144, 5, 7, 7, 6,
|
||||
0, 0, 120, 136, 136, 120, 40, 72, 136, 5, 7, 7, 6, 0, 0, 248,
|
||||
136, 168, 136, 152, 168, 248, 2, 3, 3, 6, 2, 4, 64, 128, 192, 4,
|
||||
5, 5, 6, 0, 3, 96, 144, 144, 144, 96, 5, 7, 7, 6, 0, 0,
|
||||
32, 32, 248, 32, 32, 0, 248, 4, 5, 5, 6, 0, 3, 96, 144, 32,
|
||||
64, 240, 3, 5, 5, 6, 0, 3, 224, 32, 224, 32, 224, 5, 8, 8,
|
||||
6, 0, 0, 224, 144, 224, 128, 144, 184, 144, 24, 5, 8, 8, 6, 0,
|
||||
255, 136, 136, 136, 136, 152, 232, 128, 128, 5, 7, 7, 6, 0, 0, 120,
|
||||
152, 152, 120, 24, 24, 24, 2, 2, 2, 6, 2, 2, 192, 192, 5, 5,
|
||||
5, 6, 0, 0, 80, 136, 168, 168, 80, 3, 5, 5, 6, 0, 3, 64,
|
||||
192, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 112, 0,
|
||||
248, 5, 5, 5, 6, 0, 1, 160, 80, 40, 80, 160, 5, 7, 7, 6,
|
||||
0, 0, 136, 144, 168, 88, 184, 8, 8, 5, 7, 7, 6, 0, 0, 136,
|
||||
144, 184, 72, 152, 32, 56, 5, 8, 8, 6, 0, 0, 192, 64, 192, 72,
|
||||
216, 56, 8, 8, 5, 7, 7, 6, 0, 0, 32, 0, 32, 64, 128, 136,
|
||||
112, 5, 8, 8, 6, 0, 0, 64, 32, 32, 80, 136, 248, 136, 136, 5,
|
||||
8, 8, 6, 0, 0, 16, 32, 32, 80, 136, 248, 136, 136, 5, 8, 8,
|
||||
6, 0, 0, 32, 80, 0, 112, 136, 248, 136, 136, 5, 8, 8, 6, 0,
|
||||
0, 104, 144, 0, 112, 136, 248, 136, 136, 5, 8, 8, 6, 0, 0, 80,
|
||||
0, 32, 80, 136, 248, 136, 136, 5, 8, 8, 6, 0, 0, 32, 80, 32,
|
||||
112, 136, 248, 136, 136, 5, 7, 7, 6, 0, 0, 56, 96, 160, 184, 224,
|
||||
160, 184, 5, 8, 8, 6, 0, 255, 112, 136, 128, 128, 136, 112, 32, 96,
|
||||
5, 8, 8, 6, 0, 0, 64, 32, 0, 248, 128, 240, 128, 248, 5, 8,
|
||||
8, 6, 0, 0, 8, 16, 0, 248, 128, 240, 128, 248, 5, 8, 8, 6,
|
||||
0, 0, 32, 80, 0, 248, 128, 240, 128, 248, 5, 7, 7, 6, 0, 0,
|
||||
80, 0, 248, 128, 240, 128, 248, 3, 8, 8, 6, 1, 0, 128, 64, 0,
|
||||
224, 64, 64, 64, 224, 3, 8, 8, 6, 1, 0, 32, 64, 0, 224, 64,
|
||||
64, 64, 224, 3, 8, 8, 6, 1, 0, 64, 160, 0, 224, 64, 64, 64,
|
||||
224, 3, 7, 7, 6, 1, 0, 160, 0, 224, 64, 64, 64, 224, 5, 7,
|
||||
7, 6, 0, 0, 112, 72, 72, 232, 72, 72, 112, 5, 8, 8, 6, 0,
|
||||
0, 104, 144, 0, 136, 200, 168, 152, 136, 5, 8, 8, 6, 0, 0, 64,
|
||||
32, 112, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 16, 32, 112,
|
||||
136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80, 0, 112, 136,
|
||||
136, 136, 112, 5, 8, 8, 6, 0, 0, 104, 144, 0, 112, 136, 136, 136,
|
||||
112, 5, 8, 8, 6, 0, 0, 80, 0, 112, 136, 136, 136, 136, 112, 5,
|
||||
5, 5, 6, 0, 1, 136, 80, 32, 80, 136, 5, 7, 7, 6, 0, 0,
|
||||
112, 32, 112, 168, 112, 32, 112, 5, 8, 8, 6, 0, 0, 64, 32, 136,
|
||||
136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 16, 32, 136, 136, 136,
|
||||
136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80, 0, 136, 136, 136, 136,
|
||||
112, 5, 8, 8, 6, 0, 0, 80, 0, 136, 136, 136, 136, 136, 112, 5,
|
||||
8, 8, 6, 0, 0, 16, 32, 136, 80, 32, 32, 32, 32, 5, 8, 8,
|
||||
6, 0, 0, 192, 64, 112, 72, 72, 112, 64, 224, 5, 7, 7, 6, 0,
|
||||
0, 48, 72, 72, 112, 72, 72, 176, 5, 8, 8, 6, 0, 0, 64, 32,
|
||||
0, 112, 8, 120, 136, 120, 5, 8, 8, 6, 0, 0, 16, 32, 0, 112,
|
||||
8, 120, 136, 120, 5, 8, 8, 6, 0, 0, 32, 80, 0, 112, 8, 120,
|
||||
136, 120, 5, 8, 8, 6, 0, 0, 104, 144, 0, 112, 8, 120, 136, 120,
|
||||
5, 7, 7, 6, 0, 0, 80, 0, 112, 8, 120, 136, 120, 5, 8, 8,
|
||||
6, 0, 0, 32, 80, 32, 112, 8, 120, 136, 120, 5, 6, 6, 6, 0,
|
||||
0, 208, 40, 120, 160, 168, 80, 5, 6, 6, 6, 0, 255, 112, 128, 136,
|
||||
112, 32, 96, 5, 8, 8, 6, 0, 0, 64, 32, 0, 112, 136, 248, 128,
|
||||
112, 5, 8, 8, 6, 0, 0, 16, 32, 0, 112, 136, 248, 128, 112, 5,
|
||||
8, 8, 6, 0, 0, 32, 80, 0, 112, 136, 248, 128, 112, 5, 7, 7,
|
||||
6, 0, 0, 80, 0, 112, 136, 248, 128, 112, 3, 8, 8, 6, 1, 0,
|
||||
128, 64, 0, 64, 192, 64, 64, 224, 3, 8, 8, 6, 1, 0, 32, 64,
|
||||
0, 64, 192, 64, 64, 224, 3, 8, 8, 6, 1, 0, 64, 160, 0, 64,
|
||||
192, 64, 64, 224, 3, 7, 7, 6, 1, 0, 160, 0, 64, 192, 64, 64,
|
||||
224, 5, 7, 7, 6, 0, 0, 160, 64, 160, 16, 120, 136, 112, 5, 8,
|
||||
8, 6, 0, 0, 104, 144, 0, 176, 200, 136, 136, 136, 5, 8, 8, 6,
|
||||
0, 0, 64, 32, 0, 112, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0,
|
||||
16, 32, 0, 112, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80,
|
||||
0, 112, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 104, 144, 0, 112,
|
||||
136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 80, 0, 112, 136, 136, 136,
|
||||
112, 5, 5, 5, 6, 0, 1, 32, 0, 248, 0, 32, 5, 7, 7, 6,
|
||||
0, 0, 16, 32, 112, 168, 112, 32, 64, 5, 8, 8, 6, 0, 0, 64,
|
||||
32, 0, 136, 136, 136, 152, 104, 5, 8, 8, 6, 0, 0, 16, 32, 0,
|
||||
136, 136, 136, 152, 104, 5, 8, 8, 6, 0, 0, 32, 80, 0, 136, 136,
|
||||
136, 152, 104, 5, 7, 7, 6, 0, 0, 80, 0, 136, 136, 136, 152, 104,
|
||||
5, 9, 9, 6, 0, 255, 16, 32, 0, 136, 136, 136, 248, 8, 112, 4,
|
||||
7, 7, 6, 1, 0, 192, 64, 96, 80, 96, 64, 224, 5, 8, 8, 6,
|
||||
0, 255, 80, 0, 136, 136, 136, 248, 8, 112
|
||||
};
|
||||
@@ -1,198 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
Fontname: ISO10646-1
|
||||
Copyright: A.Hardtung, public domain
|
||||
Capital A Height: 7, '1' Height: 7
|
||||
Calculated Max Values w= 5 h= 9 x= 2 y= 7 dx= 6 dy= 0 ascent= 8 len= 9
|
||||
Font Bounding box w= 6 h= 9 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-1 dx= 0 dy= 0
|
||||
Pure Font ascent = 7 descent=-1
|
||||
X Font ascent = 7 descent=-1
|
||||
Max Font ascent = 8 descent=-1
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
const u8g_fntpgm_uint8_t ISO10646_1_5x7[2592] U8G_SECTION(".progmem.ISO10646_1_5x7") = {
|
||||
0, 6, 9, 0, 254, 7, 1, 146, 3, 33, 32, 255, 255, 8, 255, 7,
|
||||
255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128,
|
||||
128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6,
|
||||
0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32,
|
||||
120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32,
|
||||
64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104,
|
||||
2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32,
|
||||
64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32,
|
||||
32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5,
|
||||
5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192,
|
||||
64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192,
|
||||
192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6,
|
||||
0, 0, 112, 136, 136, 136, 136, 136, 112, 3, 7, 7, 6, 1, 0, 64,
|
||||
192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112,
|
||||
128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240,
|
||||
5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7,
|
||||
6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0,
|
||||
112, 128, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16,
|
||||
32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136,
|
||||
112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 8, 112, 2, 5,
|
||||
5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192,
|
||||
192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64,
|
||||
32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1,
|
||||
0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136,
|
||||
8, 16, 32, 0, 32, 5, 7, 7, 6, 0, 0, 112, 136, 8, 104, 168,
|
||||
168, 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5,
|
||||
7, 7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6,
|
||||
0, 0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 240,
|
||||
136, 136, 136, 136, 136, 240, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240,
|
||||
128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128,
|
||||
5, 7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7,
|
||||
6, 0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0,
|
||||
128, 128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16,
|
||||
16, 16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144,
|
||||
136, 5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7,
|
||||
7, 6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0,
|
||||
0, 136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136,
|
||||
136, 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128,
|
||||
128, 128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5,
|
||||
7, 7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6,
|
||||
0, 0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248,
|
||||
32, 32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136,
|
||||
136, 136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32,
|
||||
5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7,
|
||||
6, 0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0,
|
||||
136, 136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16,
|
||||
32, 64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128,
|
||||
224, 5, 5, 5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6,
|
||||
1, 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32,
|
||||
80, 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128,
|
||||
64, 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6,
|
||||
0, 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112,
|
||||
128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136,
|
||||
120, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6,
|
||||
0, 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112,
|
||||
136, 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136,
|
||||
136, 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3,
|
||||
8, 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7,
|
||||
6, 0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0,
|
||||
192, 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168,
|
||||
168, 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5,
|
||||
6, 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136,
|
||||
136, 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8,
|
||||
5, 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0,
|
||||
0, 112, 128, 112, 8, 240, 4, 7, 7, 6, 0, 0, 64, 64, 224, 64,
|
||||
64, 64, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5,
|
||||
5, 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136,
|
||||
136, 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5,
|
||||
6, 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0,
|
||||
0, 248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128,
|
||||
64, 64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128,
|
||||
3, 7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 2, 2,
|
||||
6, 0, 2, 104, 144, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
|
||||
0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
|
||||
0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
|
||||
0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
|
||||
0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
|
||||
0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
|
||||
0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
|
||||
0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
|
||||
0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
|
||||
0, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 5, 7,
|
||||
7, 6, 0, 0, 32, 112, 168, 160, 168, 112, 32, 5, 7, 7, 6, 0,
|
||||
0, 48, 64, 64, 224, 64, 80, 168, 5, 5, 5, 6, 0, 0, 136, 112,
|
||||
80, 112, 136, 5, 7, 7, 6, 0, 0, 136, 80, 32, 248, 32, 248, 32,
|
||||
1, 7, 7, 6, 2, 0, 128, 128, 128, 0, 128, 128, 128, 5, 8, 8,
|
||||
6, 0, 0, 48, 72, 32, 80, 80, 32, 144, 96, 3, 1, 1, 6, 1,
|
||||
7, 160, 5, 7, 7, 6, 0, 0, 248, 136, 184, 184, 184, 136, 248, 5,
|
||||
7, 7, 6, 0, 1, 112, 8, 120, 136, 120, 0, 248, 5, 5, 5, 6,
|
||||
0, 1, 40, 80, 160, 80, 40, 5, 3, 3, 6, 0, 1, 248, 8, 8,
|
||||
2, 2, 2, 6, 2, 6, 64, 128, 5, 7, 7, 6, 0, 0, 248, 136,
|
||||
168, 136, 152, 168, 248, 5, 1, 1, 6, 0, 6, 248, 4, 4, 4, 6,
|
||||
0, 3, 96, 144, 144, 96, 5, 7, 7, 6, 0, 0, 32, 32, 248, 32,
|
||||
32, 0, 248, 4, 5, 5, 6, 0, 3, 96, 144, 32, 64, 240, 3, 5,
|
||||
5, 6, 0, 3, 224, 32, 224, 32, 224, 2, 2, 2, 6, 2, 6, 64,
|
||||
128, 5, 8, 8, 6, 0, 255, 136, 136, 136, 136, 152, 232, 128, 128, 5,
|
||||
7, 7, 6, 0, 0, 120, 152, 152, 120, 24, 24, 24, 2, 2, 2, 6,
|
||||
2, 2, 192, 192, 2, 2, 2, 6, 2, 255, 64, 128, 3, 5, 5, 6,
|
||||
0, 3, 64, 192, 64, 64, 224, 5, 7, 7, 6, 0, 1, 112, 136, 136,
|
||||
136, 112, 0, 248, 5, 5, 5, 6, 0, 1, 160, 80, 40, 80, 160, 5,
|
||||
7, 7, 6, 0, 0, 136, 144, 168, 88, 184, 8, 8, 5, 7, 7, 6,
|
||||
0, 0, 136, 144, 184, 72, 152, 32, 56, 5, 8, 8, 6, 0, 0, 192,
|
||||
64, 192, 72, 216, 56, 8, 8, 5, 7, 7, 6, 0, 0, 32, 0, 32,
|
||||
64, 128, 136, 112, 5, 8, 8, 6, 0, 0, 64, 32, 0, 112, 136, 248,
|
||||
136, 136, 5, 8, 8, 6, 0, 0, 16, 32, 0, 112, 136, 248, 136, 136,
|
||||
5, 8, 8, 6, 0, 0, 32, 80, 0, 112, 136, 248, 136, 136, 5, 8,
|
||||
8, 6, 0, 0, 104, 144, 0, 112, 136, 248, 136, 136, 5, 8, 8, 6,
|
||||
0, 0, 80, 0, 112, 136, 136, 248, 136, 136, 5, 8, 8, 6, 0, 0,
|
||||
32, 80, 32, 112, 136, 248, 136, 136, 5, 7, 7, 6, 0, 0, 56, 96,
|
||||
160, 184, 224, 160, 184, 5, 8, 8, 6, 0, 255, 112, 136, 128, 128, 136,
|
||||
112, 32, 96, 5, 8, 8, 6, 0, 0, 64, 32, 0, 248, 128, 240, 128,
|
||||
248, 5, 8, 8, 6, 0, 0, 8, 16, 0, 248, 128, 240, 128, 248, 5,
|
||||
8, 8, 6, 0, 0, 32, 80, 0, 248, 128, 240, 128, 248, 5, 7, 7,
|
||||
6, 0, 0, 80, 0, 248, 128, 240, 128, 248, 3, 8, 8, 6, 1, 0,
|
||||
128, 64, 0, 224, 64, 64, 64, 224, 3, 8, 8, 6, 1, 0, 32, 64,
|
||||
0, 224, 64, 64, 64, 224, 3, 8, 8, 6, 1, 0, 64, 160, 0, 224,
|
||||
64, 64, 64, 224, 3, 7, 7, 6, 1, 0, 160, 0, 224, 64, 64, 64,
|
||||
224, 5, 7, 7, 6, 0, 0, 112, 72, 72, 232, 72, 72, 112, 5, 8,
|
||||
8, 6, 0, 0, 104, 144, 0, 136, 200, 168, 152, 136, 5, 8, 8, 6,
|
||||
0, 0, 64, 32, 112, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0,
|
||||
16, 32, 112, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80,
|
||||
0, 112, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 104, 144, 0, 112,
|
||||
136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 80, 0, 112, 136, 136, 136,
|
||||
136, 112, 5, 5, 5, 6, 0, 1, 136, 80, 32, 80, 136, 5, 8, 8,
|
||||
6, 0, 255, 16, 112, 168, 168, 168, 168, 112, 64, 5, 8, 8, 6, 0,
|
||||
0, 64, 32, 136, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 16,
|
||||
32, 136, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80, 0,
|
||||
136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 80, 0, 136, 136, 136,
|
||||
136, 136, 112, 5, 8, 8, 6, 0, 0, 16, 32, 136, 80, 32, 32, 32,
|
||||
32, 5, 9, 9, 6, 0, 255, 192, 64, 112, 72, 72, 112, 64, 64, 224,
|
||||
4, 8, 8, 6, 1, 255, 96, 144, 144, 160, 144, 144, 224, 128, 5, 8,
|
||||
8, 6, 0, 0, 64, 32, 0, 112, 8, 120, 136, 120, 5, 8, 8, 6,
|
||||
0, 0, 16, 32, 0, 112, 8, 120, 136, 120, 5, 8, 8, 6, 0, 0,
|
||||
32, 80, 0, 112, 8, 120, 136, 120, 5, 8, 8, 6, 0, 0, 104, 144,
|
||||
0, 112, 8, 120, 136, 120, 5, 7, 7, 6, 0, 0, 80, 0, 112, 8,
|
||||
120, 136, 120, 5, 8, 8, 6, 0, 0, 32, 80, 32, 112, 8, 120, 136,
|
||||
120, 5, 6, 6, 6, 0, 0, 208, 40, 120, 160, 168, 80, 5, 6, 6,
|
||||
6, 0, 255, 112, 128, 136, 112, 32, 96, 5, 8, 8, 6, 0, 0, 64,
|
||||
32, 0, 112, 136, 248, 128, 112, 5, 8, 8, 6, 0, 0, 16, 32, 0,
|
||||
112, 136, 248, 128, 112, 5, 8, 8, 6, 0, 0, 32, 80, 0, 112, 136,
|
||||
248, 128, 112, 5, 7, 7, 6, 0, 0, 80, 0, 112, 136, 248, 128, 112,
|
||||
3, 8, 8, 6, 1, 0, 128, 64, 0, 64, 192, 64, 64, 224, 3, 8,
|
||||
8, 6, 1, 0, 32, 64, 0, 64, 192, 64, 64, 224, 3, 8, 8, 6,
|
||||
1, 0, 64, 160, 0, 64, 192, 64, 64, 224, 3, 7, 7, 6, 1, 0,
|
||||
160, 0, 64, 192, 64, 64, 224, 5, 7, 7, 6, 0, 0, 160, 64, 160,
|
||||
16, 120, 136, 112, 5, 8, 8, 6, 0, 0, 104, 144, 0, 176, 200, 136,
|
||||
136, 136, 5, 8, 8, 6, 0, 0, 64, 32, 0, 112, 136, 136, 136, 112,
|
||||
5, 8, 8, 6, 0, 0, 16, 32, 0, 112, 136, 136, 136, 112, 5, 8,
|
||||
8, 6, 0, 0, 32, 80, 0, 112, 136, 136, 136, 112, 5, 8, 8, 6,
|
||||
0, 0, 104, 144, 0, 112, 136, 136, 136, 112, 5, 7, 7, 6, 0, 0,
|
||||
80, 0, 112, 136, 136, 136, 112, 5, 5, 5, 6, 0, 1, 32, 0, 248,
|
||||
0, 32, 5, 7, 7, 6, 0, 255, 16, 112, 168, 168, 168, 112, 64, 5,
|
||||
8, 8, 6, 0, 0, 64, 32, 0, 136, 136, 136, 152, 104, 5, 8, 8,
|
||||
6, 0, 0, 16, 32, 0, 136, 136, 136, 152, 104, 5, 8, 8, 6, 0,
|
||||
0, 32, 80, 0, 136, 136, 136, 152, 104, 5, 7, 7, 6, 0, 0, 80,
|
||||
0, 136, 136, 136, 152, 104, 5, 9, 9, 6, 0, 255, 16, 32, 0, 136,
|
||||
136, 136, 248, 8, 112, 4, 7, 7, 6, 1, 255, 192, 64, 96, 80, 96,
|
||||
64, 224, 5, 8, 8, 6, 0, 255, 80, 0, 136, 136, 136, 120, 8, 112
|
||||
};
|
||||
@@ -1,184 +0,0 @@
|
||||
/*
|
||||
Fontname: ISO10646-1-PL
|
||||
Copyright: A.Hardtung, public domain
|
||||
Capital A Height: 7, '1' Height: 7
|
||||
Calculated Max Values w= 5 h= 9 x= 2 y= 7 dx= 6 dy= 0 ascent= 8 len= 9
|
||||
Font Bounding box w= 6 h= 9 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-2 dx= 0 dy= 0
|
||||
Pure Font ascent = 7 descent=-1
|
||||
X Font ascent = 7 descent=-1
|
||||
Max Font ascent = 8 descent=-2
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
const u8g_fntpgm_uint8_t ISO10646_1_PL_5x7[2732] U8G_FONT_SECTION(".progmem.ISO10646_1_PL_5x7") = {
|
||||
0,6,9,0,254,7,1,146,3,33,32,255,255,8,254,7,
|
||||
255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
|
||||
128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
|
||||
0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
|
||||
120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
|
||||
64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
|
||||
2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
|
||||
64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
|
||||
32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
|
||||
5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
|
||||
64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
|
||||
192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
|
||||
0,0,112,136,136,136,136,136,112,3,7,7,6,1,0,64,
|
||||
192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
|
||||
128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
|
||||
5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
|
||||
6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
|
||||
112,128,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
|
||||
32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
|
||||
112,5,7,7,6,0,0,112,136,136,120,8,8,112,2,5,
|
||||
5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
|
||||
192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
|
||||
32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
|
||||
0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
|
||||
8,16,32,0,32,5,7,7,6,0,0,112,136,8,104,168,
|
||||
168,112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,
|
||||
7,7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,
|
||||
0,0,112,136,128,128,128,136,112,5,7,7,6,0,0,240,
|
||||
136,136,136,136,136,240,5,7,7,6,0,0,248,128,128,240,
|
||||
128,128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,
|
||||
5,7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,
|
||||
6,0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,
|
||||
128,128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,
|
||||
16,16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,
|
||||
136,5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,
|
||||
7,6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,
|
||||
0,136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,
|
||||
136,136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,
|
||||
128,128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,
|
||||
7,7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,
|
||||
0,0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,
|
||||
32,32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,
|
||||
136,136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,
|
||||
5,7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,
|
||||
6,0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,
|
||||
136,136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,
|
||||
32,64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,
|
||||
224,5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,
|
||||
1,0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,
|
||||
80,136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,
|
||||
64,5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,
|
||||
0,0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,
|
||||
128,128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,
|
||||
120,5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,
|
||||
0,0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,
|
||||
136,136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,
|
||||
136,136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,
|
||||
8,8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,
|
||||
6,0,0,128,128,144,160,192,160,144,3,7,7,6,1,0,
|
||||
192,64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,
|
||||
168,168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,
|
||||
6,0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,
|
||||
136,240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,
|
||||
5,5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,
|
||||
0,112,128,112,8,240,4,7,7,6,0,0,64,64,224,64,
|
||||
64,64,48,5,5,5,6,0,0,136,136,136,152,104,5,5,
|
||||
5,6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,
|
||||
136,168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,
|
||||
6,6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,
|
||||
0,248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,
|
||||
64,64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,
|
||||
3,7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,
|
||||
6,0,2,104,144,0,0,0,6,0,0,5,9,9,6,0,
|
||||
254,112,136,136,248,136,136,136,16,32,5,7,7,6,0,254,
|
||||
112,8,120,136,120,16,32,5,8,8,6,0,0,16,32,112,
|
||||
136,128,128,136,112,5,7,7,6,0,0,16,32,112,128,128,
|
||||
136,112,5,9,9,6,0,254,248,128,128,240,128,128,248,8,
|
||||
16,5,7,7,6,0,254,112,136,248,128,112,16,32,5,7,
|
||||
7,6,0,0,128,144,160,192,128,128,248,5,7,7,6,0,
|
||||
0,96,40,48,96,160,32,112,5,8,8,6,0,0,16,168,
|
||||
136,200,168,152,136,136,5,8,8,6,0,0,8,16,0,176,
|
||||
200,136,136,136,5,8,8,6,0,0,16,32,112,136,136,136,
|
||||
136,112,5,8,8,6,0,0,16,32,0,112,136,136,136,112,
|
||||
5,8,8,6,0,0,16,120,128,128,112,8,8,240,5,8,
|
||||
8,6,0,0,16,32,0,112,128,112,8,240,5,8,8,6,
|
||||
0,0,32,248,8,16,32,64,128,248,5,8,8,6,0,0,
|
||||
16,32,0,248,16,32,64,248,5,7,7,6,0,0,248,8,
|
||||
16,248,64,128,248,5,8,8,6,0,0,48,48,0,248,16,
|
||||
32,64,248,0,0,0,6,0,0,0,0,0,6,0,0,0,
|
||||
0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
|
||||
0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
|
||||
6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
|
||||
0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
|
||||
0,0,0,0,6,0,0,0,0,0,6,0,0,1,7,7,
|
||||
6,2,0,128,0,128,128,128,128,128,5,7,7,6,0,0,
|
||||
32,112,168,160,168,112,32,5,7,7,6,0,0,48,64,64,
|
||||
224,64,80,168,5,5,5,6,0,0,136,112,80,112,136,5,
|
||||
7,7,6,0,0,136,80,32,248,32,248,32,1,7,7,6,
|
||||
2,0,128,128,128,0,128,128,128,5,8,8,6,0,0,48,
|
||||
72,32,80,80,32,144,96,3,1,1,6,1,7,160,5,7,
|
||||
7,6,0,0,248,136,184,184,184,136,248,5,7,7,6,0,
|
||||
1,112,8,120,136,120,0,248,5,5,5,6,0,1,40,80,
|
||||
160,80,40,5,3,3,6,0,1,248,8,8,2,2,2,6,
|
||||
2,6,64,128,5,7,7,6,0,0,248,136,168,136,152,168,
|
||||
248,5,1,1,6,0,6,248,4,4,4,6,0,3,96,144,
|
||||
144,96,5,7,7,6,0,0,32,32,248,32,32,0,248,4,
|
||||
5,5,6,0,3,96,144,32,64,240,3,5,5,6,0,3,
|
||||
224,32,224,32,224,2,2,2,6,2,6,64,128,5,8,8,
|
||||
6,0,255,136,136,136,136,152,232,128,128,5,7,7,6,0,
|
||||
0,120,152,152,120,24,24,24,2,2,2,6,2,2,192,192,
|
||||
2,2,2,6,2,255,64,128,3,5,5,6,0,3,64,192,
|
||||
64,64,224,5,7,7,6,0,1,112,136,136,136,112,0,248,
|
||||
5,5,5,6,0,1,160,80,40,80,160,5,7,7,6,0,
|
||||
0,136,144,168,88,184,8,8,5,7,7,6,0,0,136,144,
|
||||
184,72,152,32,56,5,8,8,6,0,0,192,64,192,72,216,
|
||||
56,8,8,5,7,7,6,0,0,32,0,32,64,128,136,112,
|
||||
5,8,8,6,0,0,64,32,0,112,136,248,136,136,5,8,
|
||||
8,6,0,0,16,32,0,112,136,248,136,136,5,8,8,6,
|
||||
0,0,32,80,0,112,136,248,136,136,5,8,8,6,0,0,
|
||||
104,144,0,112,136,248,136,136,5,8,8,6,0,0,80,0,
|
||||
112,136,136,248,136,136,5,8,8,6,0,0,32,80,32,112,
|
||||
136,248,136,136,5,7,7,6,0,0,56,96,160,184,224,160,
|
||||
184,5,8,8,6,0,255,112,136,128,128,136,112,32,96,5,
|
||||
8,8,6,0,0,64,32,0,248,128,240,128,248,5,8,8,
|
||||
6,0,0,8,16,0,248,128,240,128,248,5,8,8,6,0,
|
||||
0,32,80,0,248,128,240,128,248,5,7,7,6,0,0,80,
|
||||
0,248,128,240,128,248,3,8,8,6,1,0,128,64,0,224,
|
||||
64,64,64,224,3,8,8,6,1,0,32,64,0,224,64,64,
|
||||
64,224,3,8,8,6,1,0,64,160,0,224,64,64,64,224,
|
||||
3,7,7,6,1,0,160,0,224,64,64,64,224,5,7,7,
|
||||
6,0,0,112,72,72,232,72,72,112,5,8,8,6,0,0,
|
||||
104,144,0,136,200,168,152,136,5,8,8,6,0,0,64,32,
|
||||
112,136,136,136,136,112,5,8,8,6,0,0,16,32,112,136,
|
||||
136,136,136,112,5,8,8,6,0,0,32,80,0,112,136,136,
|
||||
136,112,5,8,8,6,0,0,104,144,0,112,136,136,136,112,
|
||||
5,8,8,6,0,0,80,0,112,136,136,136,136,112,5,5,
|
||||
5,6,0,1,136,80,32,80,136,5,8,8,6,0,255,16,
|
||||
112,168,168,168,168,112,64,5,8,8,6,0,0,64,32,136,
|
||||
136,136,136,136,112,5,8,8,6,0,0,16,32,136,136,136,
|
||||
136,136,112,5,8,8,6,0,0,32,80,0,136,136,136,136,
|
||||
112,5,8,8,6,0,0,80,0,136,136,136,136,136,112,5,
|
||||
8,8,6,0,0,16,32,136,80,32,32,32,32,5,9,9,
|
||||
6,0,255,192,64,112,72,72,112,64,64,224,4,8,8,6,
|
||||
1,255,96,144,144,160,144,144,224,128,5,8,8,6,0,0,
|
||||
64,32,0,112,8,120,136,120,5,8,8,6,0,0,16,32,
|
||||
0,112,8,120,136,120,5,8,8,6,0,0,32,80,0,112,
|
||||
8,120,136,120,5,8,8,6,0,0,104,144,0,112,8,120,
|
||||
136,120,5,7,7,6,0,0,80,0,112,8,120,136,120,5,
|
||||
8,8,6,0,0,32,80,32,112,8,120,136,120,5,6,6,
|
||||
6,0,0,208,40,120,160,168,80,5,6,6,6,0,255,112,
|
||||
128,136,112,32,96,5,8,8,6,0,0,64,32,0,112,136,
|
||||
248,128,112,5,8,8,6,0,0,16,32,0,112,136,248,128,
|
||||
112,5,8,8,6,0,0,32,80,0,112,136,248,128,112,5,
|
||||
7,7,6,0,0,80,0,112,136,248,128,112,3,8,8,6,
|
||||
1,0,128,64,0,64,192,64,64,224,3,8,8,6,1,0,
|
||||
32,64,0,64,192,64,64,224,3,8,8,6,1,0,64,160,
|
||||
0,64,192,64,64,224,3,7,7,6,1,0,160,0,64,192,
|
||||
64,64,224,5,7,7,6,0,0,160,64,160,16,120,136,112,
|
||||
5,8,8,6,0,0,104,144,0,176,200,136,136,136,5,8,
|
||||
8,6,0,0,64,32,0,112,136,136,136,112,5,8,8,6,
|
||||
0,0,16,32,0,112,136,136,136,112,5,8,8,6,0,0,
|
||||
32,80,0,112,136,136,136,112,5,8,8,6,0,0,104,144,
|
||||
0,112,136,136,136,112,5,7,7,6,0,0,80,0,112,136,
|
||||
136,136,112,5,5,5,6,0,1,32,0,248,0,32,5,7,
|
||||
7,6,0,255,16,112,168,168,168,112,64,5,8,8,6,0,
|
||||
0,64,32,0,136,136,136,152,104,5,8,8,6,0,0,16,
|
||||
32,0,136,136,136,152,104,5,8,8,6,0,0,32,80,0,
|
||||
136,136,136,152,104,5,7,7,6,0,0,80,0,136,136,136,
|
||||
152,104,5,9,9,6,0,255,16,32,0,136,136,136,248,8,
|
||||
112,4,7,7,6,1,255,192,64,96,80,96,64,224,5,8,
|
||||
8,6,0,255,80,0,136,136,136,120,8,112};
|
||||
@@ -1,197 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
Fontname: ISO10646-1-tr
|
||||
Copyright: public domain
|
||||
Capital A Height: 7, '1' Height: 7
|
||||
Calculated Max Values w= 5 h= 9 x= 2 y= 7 dx= 6 dy= 0 ascent= 8 len= 9
|
||||
Font Bounding box w= 6 h= 9 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-1 dx= 0 dy= 0
|
||||
Pure Font ascent = 7 descent=-1
|
||||
X Font ascent = 7 descent=-1
|
||||
Max Font ascent = 8 descent=-1
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
const u8g_fntpgm_uint8_t ISO10646_TR[2591] U8G_SECTION(".progmem.ISO10646_TR") = {
|
||||
0,6,9,0,254,7,1,146,3,33,32,255,255,8,255,7,
|
||||
255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
|
||||
128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
|
||||
0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
|
||||
120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
|
||||
64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
|
||||
2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
|
||||
64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
|
||||
32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
|
||||
5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
|
||||
64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
|
||||
192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
|
||||
0,0,112,136,136,136,136,136,112,3,7,7,6,1,0,64,
|
||||
192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
|
||||
128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
|
||||
5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
|
||||
6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
|
||||
112,128,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
|
||||
32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
|
||||
112,5,7,7,6,0,0,112,136,136,120,8,8,112,2,5,
|
||||
5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
|
||||
192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
|
||||
32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
|
||||
0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
|
||||
8,16,32,0,32,5,7,7,6,0,0,112,136,8,104,168,
|
||||
168,112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,
|
||||
7,7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,
|
||||
0,0,112,136,128,128,128,136,112,5,7,7,6,0,0,240,
|
||||
136,136,136,136,136,240,5,7,7,6,0,0,248,128,128,240,
|
||||
128,128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,
|
||||
5,7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,
|
||||
6,0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,
|
||||
128,128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,
|
||||
16,16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,
|
||||
136,5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,
|
||||
7,6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,
|
||||
0,136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,
|
||||
136,136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,
|
||||
128,128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,
|
||||
7,7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,
|
||||
0,0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,
|
||||
32,32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,
|
||||
136,136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,
|
||||
5,7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,
|
||||
6,0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,
|
||||
136,136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,
|
||||
32,64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,
|
||||
224,5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,
|
||||
1,0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,
|
||||
80,136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,
|
||||
64,5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,
|
||||
0,0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,
|
||||
128,128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,
|
||||
120,5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,
|
||||
0,0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,
|
||||
136,136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,
|
||||
136,136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,
|
||||
8,8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,
|
||||
6,0,0,128,128,144,160,192,160,144,3,7,7,6,1,0,
|
||||
192,64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,
|
||||
168,168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,
|
||||
6,0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,
|
||||
136,240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,
|
||||
5,5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,
|
||||
0,112,128,112,8,240,4,7,7,6,0,0,64,64,224,64,
|
||||
64,64,48,5,5,5,6,0,0,136,136,136,152,104,5,5,
|
||||
5,6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,
|
||||
136,168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,
|
||||
6,6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,
|
||||
0,248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,
|
||||
64,64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,
|
||||
3,7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,
|
||||
6,0,2,104,144,0,0,0,6,0,0,0,0,0,6,0,
|
||||
0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
|
||||
6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
|
||||
0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
|
||||
0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
|
||||
6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
|
||||
0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
|
||||
0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
|
||||
6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
|
||||
0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
|
||||
0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
|
||||
6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
|
||||
0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
|
||||
0,1,7,7,6,2,0,128,0,128,128,128,128,128,5,7,
|
||||
7,6,0,0,32,112,168,160,168,112,32,5,7,7,6,0,
|
||||
0,48,64,64,224,64,80,168,5,5,5,6,0,0,136,112,
|
||||
80,112,136,5,7,7,6,0,0,136,80,32,248,32,248,32,
|
||||
1,7,7,6,2,0,128,128,128,0,128,128,128,5,8,8,
|
||||
6,0,0,48,72,32,80,80,32,144,96,3,1,1,6,1,
|
||||
7,160,5,7,7,6,0,0,248,136,184,184,184,136,248,5,
|
||||
7,7,6,0,1,112,8,120,136,120,0,248,5,5,5,6,
|
||||
0,1,40,80,160,80,40,5,3,3,6,0,1,248,8,8,
|
||||
2,2,2,6,2,6,64,128,5,7,7,6,0,0,248,136,
|
||||
168,136,152,168,248,5,1,1,6,0,6,248,4,4,4,6,
|
||||
0,3,96,144,144,96,5,7,7,6,0,0,32,32,248,32,
|
||||
32,0,248,4,5,5,6,0,3,96,144,32,64,240,3,5,
|
||||
5,6,0,3,224,32,224,32,224,2,2,2,6,2,6,64,
|
||||
128,5,8,8,6,0,255,136,136,136,136,152,232,128,128,5,
|
||||
7,7,6,0,0,120,152,152,120,24,24,24,2,2,2,6,
|
||||
2,2,192,192,2,2,2,6,2,255,64,128,3,5,5,6,
|
||||
0,3,64,192,64,64,224,5,7,7,6,0,1,112,136,136,
|
||||
136,112,0,248,5,5,5,6,0,1,160,80,40,80,160,5,
|
||||
7,7,6,0,0,136,144,168,88,184,8,8,5,7,7,6,
|
||||
0,0,136,144,184,72,152,32,56,5,8,8,6,0,0,192,
|
||||
64,192,72,216,56,8,8,5,7,7,6,0,0,32,0,32,
|
||||
64,128,136,112,5,8,8,6,0,0,64,32,0,112,136,248,
|
||||
136,136,5,8,8,6,0,0,16,32,0,112,136,248,136,136,
|
||||
5,8,8,6,0,0,32,80,0,112,136,248,136,136,5,8,
|
||||
8,6,0,0,104,144,0,112,136,248,136,136,5,8,8,6,
|
||||
0,0,80,0,112,136,136,248,136,136,5,8,8,6,0,0,
|
||||
32,80,32,112,136,248,136,136,5,7,7,6,0,0,56,96,
|
||||
160,184,224,160,184,5,8,8,6,0,255,112,136,128,128,136,
|
||||
112,32,96,5,8,8,6,0,0,64,32,0,248,128,240,128,
|
||||
248,5,8,8,6,0,0,8,16,0,248,128,240,128,248,5,
|
||||
8,8,6,0,0,32,80,0,248,128,240,128,248,5,7,7,
|
||||
6,0,0,80,0,248,128,240,128,248,3,8,8,6,1,0,
|
||||
128,64,0,224,64,64,64,224,3,8,8,6,1,0,32,64,
|
||||
0,224,64,64,64,224,3,8,8,6,1,0,64,160,0,224,
|
||||
64,64,64,224,3,7,7,6,1,0,160,0,224,64,64,64,
|
||||
224,5,9,9,6,0,255,80,32,112,136,128,184,136,136,112,
|
||||
5,8,8,6,0,0,104,144,0,136,200,168,152,136,5,8,
|
||||
8,6,0,0,64,32,112,136,136,136,136,112,5,8,8,6,
|
||||
0,0,16,32,112,136,136,136,136,112,5,8,8,6,0,0,
|
||||
32,80,0,112,136,136,136,112,5,8,8,6,0,0,104,144,
|
||||
0,112,136,136,136,112,5,8,8,6,0,0,80,0,112,136,
|
||||
136,136,136,112,5,5,5,6,0,1,136,80,32,80,136,5,
|
||||
8,8,6,0,255,16,112,168,168,168,168,112,64,5,8,8,
|
||||
6,0,0,64,32,136,136,136,136,136,112,5,8,8,6,0,
|
||||
0,16,32,136,136,136,136,136,112,5,8,8,6,0,0,32,
|
||||
80,0,136,136,136,136,112,5,8,8,6,0,0,80,0,136,
|
||||
136,136,136,136,112,1,7,7,6,2,0,128,0,128,128,128,
|
||||
128,128,5,9,9,6,0,255,120,128,128,112,8,8,240,32,
|
||||
96,4,8,8,6,1,255,96,144,144,160,144,144,224,128,5,
|
||||
8,8,6,0,0,64,32,0,112,8,120,136,120,5,8,8,
|
||||
6,0,0,16,32,0,112,8,120,136,120,5,8,8,6,0,
|
||||
0,32,80,0,112,8,120,136,120,5,8,8,6,0,0,104,
|
||||
144,0,112,8,120,136,120,5,7,7,6,0,0,80,0,112,
|
||||
8,120,136,120,5,8,8,6,0,0,32,80,32,112,8,120,
|
||||
136,120,5,6,6,6,0,0,208,40,120,160,168,80,5,7,
|
||||
7,6,0,255,112,128,128,136,112,32,96,5,8,8,6,0,
|
||||
0,64,32,0,112,136,248,128,112,5,8,8,6,0,0,16,
|
||||
32,0,112,136,248,128,112,5,8,8,6,0,0,32,80,0,
|
||||
112,136,248,128,112,5,7,7,6,0,0,80,0,112,136,248,
|
||||
128,112,3,8,8,6,1,0,128,64,0,64,192,64,64,224,
|
||||
3,8,8,6,1,0,32,64,0,64,192,64,64,224,3,8,
|
||||
8,6,1,0,64,160,0,64,192,64,64,224,3,7,7,6,
|
||||
1,0,160,0,64,192,64,64,224,5,8,8,6,0,255,80,
|
||||
32,112,136,136,120,8,112,5,8,8,6,0,0,104,144,0,
|
||||
176,200,136,136,136,5,8,8,6,0,0,64,32,0,112,136,
|
||||
136,136,112,5,8,8,6,0,0,16,32,0,112,136,136,136,
|
||||
112,5,8,8,6,0,0,32,80,0,112,136,136,136,112,5,
|
||||
8,8,6,0,0,104,144,0,112,136,136,136,112,5,7,7,
|
||||
6,0,0,80,0,112,136,136,136,112,5,5,5,6,0,1,
|
||||
32,0,248,0,32,5,7,7,6,0,255,16,112,168,168,168,
|
||||
112,64,5,8,8,6,0,0,64,32,0,136,136,136,152,104,
|
||||
5,8,8,6,0,0,16,32,0,136,136,136,152,104,5,8,
|
||||
8,6,0,0,32,80,0,136,136,136,152,104,5,7,7,6,
|
||||
0,0,80,0,136,136,136,152,104,1,5,5,6,2,0,128,
|
||||
128,128,128,128,5,7,7,6,0,255,112,128,112,8,240,32,
|
||||
96,5,8,8,6,0,255,80,0,136,136,136,120,8,112};
|
||||
@@ -1,196 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
Fontname: ISO10646_5_Cyrillic
|
||||
Copyright: A. Hardtung, public domain
|
||||
Capital A Height: 7, '1' Height: 7
|
||||
Calculated Max Values w= 5 h= 9 x= 2 y= 5 dx= 6 dy= 0 ascent= 8 len= 9
|
||||
Font Bounding box w= 6 h= 9 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-1 dx= 0 dy= 0
|
||||
Pure Font ascent = 7 descent=-1
|
||||
X Font ascent = 7 descent=-1
|
||||
Max Font ascent = 8 descent=-1
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
const u8g_fntpgm_uint8_t ISO10646_5_Cyrillic_5x7[2560] U8G_SECTION(".progmem.ISO10646_5_Cyrillic_5x7") = {
|
||||
0, 6, 9, 0, 254, 7, 1, 145, 3, 32, 32, 255, 255, 8, 255, 7,
|
||||
255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128,
|
||||
128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6,
|
||||
0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32,
|
||||
120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32,
|
||||
64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104,
|
||||
2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32,
|
||||
64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32,
|
||||
32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5,
|
||||
5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192,
|
||||
64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192,
|
||||
192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6,
|
||||
0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64,
|
||||
192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112,
|
||||
128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240,
|
||||
5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7,
|
||||
6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0,
|
||||
48, 64, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16,
|
||||
32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136,
|
||||
112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5,
|
||||
5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192,
|
||||
192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64,
|
||||
32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1,
|
||||
0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136,
|
||||
8, 16, 32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168,
|
||||
112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7,
|
||||
7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0,
|
||||
0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144,
|
||||
136, 136, 136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128,
|
||||
128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5,
|
||||
7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6,
|
||||
0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128,
|
||||
128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16,
|
||||
16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136,
|
||||
5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7,
|
||||
6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0,
|
||||
136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136,
|
||||
136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128,
|
||||
128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7,
|
||||
7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0,
|
||||
0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32,
|
||||
32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136,
|
||||
136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5,
|
||||
7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6,
|
||||
0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136,
|
||||
136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32,
|
||||
64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224,
|
||||
5, 5, 5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6, 1,
|
||||
0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32, 80,
|
||||
136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128, 64,
|
||||
5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6, 0,
|
||||
0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112, 128,
|
||||
128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136, 120,
|
||||
5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6, 0,
|
||||
0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112, 136,
|
||||
136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136, 136,
|
||||
136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, 8,
|
||||
8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7, 6,
|
||||
0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0, 192,
|
||||
64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168, 168,
|
||||
168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5, 6,
|
||||
0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136, 136,
|
||||
240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8, 5,
|
||||
5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0, 0,
|
||||
112, 128, 112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224, 64, 64,
|
||||
72, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5, 5,
|
||||
6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136, 136,
|
||||
168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5, 6,
|
||||
6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0, 0,
|
||||
248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128, 64,
|
||||
64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128, 3,
|
||||
7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 2, 2, 6,
|
||||
0, 3, 104, 144, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
|
||||
0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
|
||||
0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
|
||||
0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
|
||||
0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
|
||||
0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
|
||||
0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
|
||||
0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
|
||||
0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
|
||||
0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
|
||||
0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
|
||||
0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
|
||||
0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 5, 8, 8, 6, 0, 0,
|
||||
64, 248, 128, 128, 240, 128, 128, 248, 5, 8, 8, 6, 0, 0, 80, 248,
|
||||
128, 128, 240, 128, 128, 248, 5, 7, 7, 6, 0, 0, 224, 64, 64, 112,
|
||||
72, 72, 112, 5, 8, 8, 6, 0, 0, 16, 32, 248, 136, 128, 128, 128,
|
||||
128, 5, 7, 7, 6, 0, 0, 48, 72, 128, 224, 128, 72, 48, 5, 7,
|
||||
7, 6, 0, 0, 112, 136, 128, 112, 8, 136, 112, 3, 7, 7, 6, 1,
|
||||
0, 224, 64, 64, 64, 64, 64, 224, 3, 8, 8, 6, 1, 0, 160, 0,
|
||||
224, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16,
|
||||
16, 144, 96, 5, 7, 7, 6, 0, 0, 160, 160, 160, 184, 168, 168, 184,
|
||||
5, 7, 7, 6, 0, 0, 160, 160, 160, 248, 168, 168, 184, 4, 7, 7,
|
||||
6, 0, 0, 224, 64, 112, 80, 80, 80, 80, 5, 8, 8, 6, 0, 0,
|
||||
16, 32, 136, 144, 160, 224, 144, 136, 5, 8, 8, 6, 0, 0, 64, 32,
|
||||
136, 152, 168, 200, 136, 136, 5, 9, 9, 6, 0, 255, 80, 32, 136, 136,
|
||||
136, 80, 32, 32, 32, 5, 8, 8, 6, 0, 255, 136, 136, 136, 136, 136,
|
||||
136, 248, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136,
|
||||
5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 136, 136, 240, 5, 7, 7,
|
||||
6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0, 0,
|
||||
248, 136, 128, 128, 128, 128, 128, 5, 8, 8, 6, 0, 255, 120, 40, 40,
|
||||
40, 72, 136, 248, 136, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128,
|
||||
128, 248, 5, 7, 7, 6, 0, 0, 168, 168, 168, 112, 168, 168, 168, 5,
|
||||
7, 7, 6, 0, 0, 240, 8, 8, 112, 8, 8, 240, 5, 7, 7, 6,
|
||||
0, 0, 136, 136, 152, 168, 200, 136, 136, 5, 8, 8, 6, 0, 0, 80,
|
||||
32, 136, 152, 168, 168, 200, 136, 5, 7, 7, 6, 0, 0, 136, 144, 160,
|
||||
192, 160, 144, 136, 5, 7, 7, 6, 0, 0, 120, 40, 40, 40, 40, 168,
|
||||
72, 5, 7, 7, 6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7,
|
||||
7, 6, 0, 0, 136, 136, 136, 248, 136, 136, 136, 5, 7, 7, 6, 0,
|
||||
0, 112, 136, 136, 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 136,
|
||||
136, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128,
|
||||
128, 128, 5, 7, 7, 6, 0, 0, 112, 136, 128, 128, 128, 136, 112, 5,
|
||||
7, 7, 6, 0, 0, 248, 32, 32, 32, 32, 32, 32, 5, 7, 7, 6,
|
||||
0, 0, 136, 136, 136, 80, 32, 64, 128, 5, 7, 7, 6, 0, 0, 32,
|
||||
112, 168, 168, 168, 112, 32, 5, 7, 7, 6, 0, 0, 136, 136, 80, 32,
|
||||
80, 136, 136, 5, 8, 8, 6, 0, 255, 136, 136, 136, 136, 136, 136, 248,
|
||||
8, 5, 7, 7, 6, 0, 0, 136, 136, 136, 152, 104, 8, 8, 5, 7,
|
||||
7, 6, 0, 0, 168, 168, 168, 168, 168, 168, 248, 5, 8, 8, 6, 0,
|
||||
255, 168, 168, 168, 168, 168, 168, 248, 8, 5, 7, 7, 6, 0, 0, 192,
|
||||
64, 64, 112, 72, 72, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 200,
|
||||
168, 168, 200, 5, 7, 7, 6, 0, 0, 128, 128, 128, 240, 136, 136, 240,
|
||||
5, 7, 7, 6, 0, 0, 112, 136, 8, 56, 8, 136, 112, 5, 7, 7,
|
||||
6, 0, 0, 144, 168, 168, 232, 168, 168, 144, 5, 7, 7, 6, 0, 0,
|
||||
120, 136, 136, 120, 40, 72, 136, 5, 5, 5, 6, 0, 0, 112, 8, 120,
|
||||
136, 120, 5, 7, 7, 6, 0, 0, 24, 96, 128, 240, 136, 136, 112, 4,
|
||||
5, 5, 6, 0, 0, 224, 144, 224, 144, 224, 5, 5, 5, 6, 0, 0,
|
||||
248, 136, 128, 128, 128, 5, 6, 6, 6, 0, 255, 120, 40, 72, 136, 248,
|
||||
136, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 5, 5, 6,
|
||||
0, 0, 168, 168, 112, 168, 168, 5, 5, 5, 6, 0, 0, 240, 8, 48,
|
||||
8, 240, 5, 5, 5, 6, 0, 0, 136, 152, 168, 200, 136, 5, 7, 7,
|
||||
6, 0, 0, 80, 32, 136, 152, 168, 200, 136, 4, 5, 5, 6, 0, 0,
|
||||
144, 160, 192, 160, 144, 5, 5, 5, 6, 0, 0, 248, 40, 40, 168, 72,
|
||||
5, 5, 5, 6, 0, 0, 136, 216, 168, 136, 136, 5, 5, 5, 6, 0,
|
||||
0, 136, 136, 248, 136, 136, 5, 5, 5, 6, 0, 0, 112, 136, 136, 136,
|
||||
112, 5, 5, 5, 6, 0, 0, 248, 136, 136, 136, 136, 5, 6, 6, 6,
|
||||
0, 255, 240, 136, 136, 240, 128, 128, 5, 5, 5, 6, 0, 0, 112, 128,
|
||||
128, 136, 112, 5, 5, 5, 6, 0, 0, 248, 32, 32, 32, 32, 5, 6,
|
||||
6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 6, 6, 6, 0, 0,
|
||||
32, 112, 168, 168, 112, 32, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80,
|
||||
136, 5, 6, 6, 6, 0, 255, 136, 136, 136, 136, 248, 8, 5, 5, 5,
|
||||
6, 0, 0, 136, 136, 248, 8, 8, 5, 5, 5, 6, 0, 0, 168, 168,
|
||||
168, 168, 248, 5, 6, 6, 6, 0, 255, 168, 168, 168, 168, 248, 8, 5,
|
||||
5, 5, 6, 0, 0, 192, 64, 112, 72, 112, 5, 5, 5, 6, 0, 0,
|
||||
136, 136, 200, 168, 200, 3, 5, 5, 6, 1, 0, 128, 128, 192, 160, 192,
|
||||
5, 5, 5, 6, 0, 0, 112, 136, 56, 136, 112, 5, 5, 5, 6, 0,
|
||||
0, 144, 168, 232, 168, 144, 5, 5, 5, 6, 0, 0, 120, 136, 120, 40,
|
||||
72, 5, 8, 8, 6, 0, 0, 64, 32, 0, 112, 136, 248, 128, 112, 5,
|
||||
7, 7, 6, 0, 0, 80, 0, 112, 136, 248, 128, 112, 5, 9, 9, 6,
|
||||
0, 255, 64, 224, 64, 64, 120, 72, 72, 72, 16, 5, 8, 8, 6, 0,
|
||||
0, 16, 32, 0, 248, 136, 128, 128, 128, 5, 5, 5, 6, 0, 0, 112,
|
||||
136, 96, 136, 112, 5, 5, 5, 6, 0, 0, 112, 128, 112, 8, 240, 1,
|
||||
7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, 7, 7, 6,
|
||||
1, 0, 160, 0, 64, 64, 64, 64, 64, 3, 8, 8, 6, 1, 255, 32,
|
||||
0, 32, 32, 32, 32, 160, 64, 5, 5, 5, 6, 0, 0, 160, 160, 184,
|
||||
168, 184, 5, 5, 5, 6, 0, 0, 160, 160, 248, 168, 184, 5, 6, 6,
|
||||
6, 0, 0, 64, 224, 64, 120, 72, 72, 4, 8, 8, 6, 0, 0, 16,
|
||||
32, 0, 144, 160, 192, 160, 144, 5, 8, 8, 6, 0, 0, 64, 32, 0,
|
||||
136, 152, 168, 200, 136, 5, 9, 9, 6, 0, 255, 80, 32, 0, 136, 136,
|
||||
136, 120, 8, 112, 5, 6, 6, 6, 0, 255, 136, 136, 136, 136, 248, 32
|
||||
};
|
||||
@@ -1,293 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
Fontname: ISO10646_CN
|
||||
Copyright: A. Hardtung, public domain
|
||||
Capital A Height: 7, '1' Height: 7
|
||||
Calculated Max Values w=11 h=11 x= 2 y=10 dx=12 dy= 0 ascent=10 len=22
|
||||
Font Bounding box w=12 h=11 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-1 dx= 0 dy= 0
|
||||
Pure Font ascent = 7 descent=-1
|
||||
X Font ascent = 7 descent=-1
|
||||
Max Font ascent =10 descent=-1
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
const u8g_fntpgm_uint8_t ISO10646_CN[4105] U8G_SECTION(".progmem.ISO10646_CN") = {
|
||||
0, 12, 11, 0, 254, 7, 1, 146, 3, 33, 32, 255, 255, 10, 255, 7,
|
||||
255, 0, 0, 0, 6, 0, 10, 1, 7, 7, 6, 2, 0, 128, 128, 128,
|
||||
128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6,
|
||||
0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32,
|
||||
120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32,
|
||||
64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104,
|
||||
2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32,
|
||||
64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32,
|
||||
32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5,
|
||||
5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192,
|
||||
64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192,
|
||||
192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6,
|
||||
0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64,
|
||||
192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112,
|
||||
128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240,
|
||||
5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7,
|
||||
6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0,
|
||||
112, 128, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16,
|
||||
32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136,
|
||||
112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 8, 112, 2, 5,
|
||||
5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192,
|
||||
192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64,
|
||||
32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 0,
|
||||
0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136,
|
||||
8, 16, 32, 0, 32, 5, 7, 7, 6, 0, 0, 112, 136, 8, 104, 168,
|
||||
168, 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5,
|
||||
7, 7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6,
|
||||
0, 0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 240,
|
||||
136, 136, 136, 136, 136, 240, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240,
|
||||
128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128,
|
||||
5, 7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7,
|
||||
6, 0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0,
|
||||
128, 128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16,
|
||||
16, 16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144,
|
||||
136, 5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7,
|
||||
7, 6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0,
|
||||
0, 136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136,
|
||||
136, 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128,
|
||||
128, 128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5,
|
||||
7, 7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6,
|
||||
0, 0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248,
|
||||
32, 32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136,
|
||||
136, 136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32,
|
||||
5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7,
|
||||
6, 0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0,
|
||||
136, 136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16,
|
||||
32, 64, 128, 248, 3, 7, 7, 6, 0, 0, 224, 128, 128, 128, 128, 128,
|
||||
224, 5, 5, 5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6,
|
||||
0, 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32,
|
||||
80, 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128,
|
||||
64, 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6,
|
||||
0, 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112,
|
||||
128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136,
|
||||
120, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6,
|
||||
0, 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112,
|
||||
136, 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136,
|
||||
136, 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3,
|
||||
8, 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7,
|
||||
6, 1, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0,
|
||||
192, 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168,
|
||||
168, 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5,
|
||||
6, 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136,
|
||||
136, 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8,
|
||||
5, 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0,
|
||||
0, 112, 128, 112, 8, 240, 4, 7, 7, 6, 0, 0, 64, 64, 224, 64,
|
||||
64, 64, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5,
|
||||
5, 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136,
|
||||
136, 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5,
|
||||
6, 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0,
|
||||
0, 248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128,
|
||||
64, 64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128,
|
||||
3, 7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 2, 2,
|
||||
6, 0, 3, 104, 144, 0, 0, 0, 6, 0, 10, 0, 0, 0, 12, 0,
|
||||
10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0,
|
||||
12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0,
|
||||
0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0,
|
||||
10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0,
|
||||
12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0,
|
||||
0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0,
|
||||
10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0,
|
||||
12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0,
|
||||
0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0,
|
||||
10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0,
|
||||
12, 0, 10, 0, 0, 0, 12, 0, 10, 11, 11, 22, 12, 0, 255, 255,
|
||||
224, 2, 0, 2, 0, 4, 0, 13, 0, 20, 128, 36, 64, 196, 32, 4,
|
||||
0, 4, 0, 4, 0, 11, 11, 22, 12, 0, 255, 249, 0, 138, 0, 171,
|
||||
224, 172, 64, 170, 64, 170, 64, 170, 64, 170, 128, 33, 0, 82, 128, 140,
|
||||
96, 11, 11, 22, 12, 0, 255, 36, 0, 36, 0, 63, 128, 68, 0, 132,
|
||||
0, 4, 0, 255, 224, 10, 0, 17, 0, 32, 128, 192, 96, 11, 11, 22,
|
||||
12, 0, 255, 36, 0, 36, 0, 63, 192, 68, 0, 4, 0, 255, 224, 9,
|
||||
0, 9, 0, 17, 32, 33, 32, 64, 224, 11, 11, 22, 12, 0, 255, 32,
|
||||
0, 61, 224, 81, 32, 145, 32, 17, 32, 255, 32, 17, 32, 41, 32, 37,
|
||||
224, 69, 32, 128, 0, 11, 11, 22, 12, 0, 255, 32, 128, 127, 192, 8,
|
||||
64, 255, 224, 17, 0, 32, 128, 95, 64, 128, 32, 63, 128, 0, 0, 127,
|
||||
192, 11, 11, 22, 12, 0, 255, 34, 64, 71, 224, 148, 128, 228, 128, 47,
|
||||
224, 68, 128, 244, 128, 7, 224, 52, 128, 196, 128, 7, 224, 11, 11, 22,
|
||||
12, 0, 255, 4, 128, 143, 224, 73, 0, 25, 0, 47, 192, 9, 0, 9,
|
||||
0, 47, 192, 73, 0, 137, 0, 15, 224, 11, 11, 22, 12, 0, 255, 16,
|
||||
0, 63, 128, 81, 0, 14, 0, 49, 128, 192, 96, 63, 128, 36, 128, 63,
|
||||
128, 36, 128, 63, 128, 11, 11, 22, 12, 0, 255, 34, 128, 250, 64, 7,
|
||||
224, 250, 128, 138, 128, 138, 128, 250, 128, 34, 128, 178, 128, 170, 160, 100,
|
||||
224, 11, 11, 22, 12, 0, 255, 34, 32, 71, 64, 146, 128, 239, 224, 34,
|
||||
0, 71, 192, 236, 64, 7, 192, 52, 64, 199, 192, 4, 64, 11, 11, 22,
|
||||
12, 0, 255, 8, 0, 15, 192, 8, 0, 8, 0, 255, 224, 8, 0, 14,
|
||||
0, 9, 128, 8, 64, 8, 0, 8, 0, 10, 11, 22, 12, 0, 255, 255,
|
||||
128, 0, 128, 0, 128, 128, 128, 128, 128, 255, 128, 128, 0, 128, 0, 128,
|
||||
64, 128, 64, 127, 192, 11, 11, 22, 12, 0, 255, 71, 192, 65, 0, 239,
|
||||
224, 65, 0, 69, 0, 105, 96, 201, 32, 77, 96, 73, 32, 79, 224, 200,
|
||||
32, 11, 11, 22, 12, 0, 255, 8, 0, 4, 0, 4, 0, 10, 0, 10,
|
||||
0, 10, 0, 17, 0, 17, 0, 32, 128, 64, 64, 128, 32, 11, 11, 22,
|
||||
12, 0, 255, 34, 64, 34, 0, 247, 224, 34, 0, 35, 224, 53, 32, 229,
|
||||
32, 37, 64, 40, 128, 41, 64, 114, 32, 11, 10, 20, 12, 0, 0, 68,
|
||||
64, 68, 64, 68, 64, 127, 192, 4, 0, 4, 0, 132, 32, 132, 32, 132,
|
||||
32, 255, 224, 11, 11, 22, 12, 0, 255, 4, 0, 0, 0, 127, 192, 4,
|
||||
0, 4, 0, 4, 0, 127, 192, 4, 0, 4, 0, 4, 0, 255, 224, 11,
|
||||
11, 22, 12, 0, 255, 255, 224, 17, 0, 1, 192, 254, 0, 72, 128, 37,
|
||||
0, 4, 0, 255, 224, 21, 0, 36, 128, 196, 96, 11, 11, 22, 12, 0,
|
||||
255, 17, 0, 127, 192, 68, 64, 127, 192, 68, 64, 127, 192, 4, 0, 255,
|
||||
224, 4, 0, 4, 0, 4, 0, 9, 11, 22, 12, 0, 255, 16, 0, 255,
|
||||
128, 128, 128, 128, 128, 255, 128, 128, 128, 128, 128, 255, 128, 128, 128, 128,
|
||||
128, 255, 128, 11, 11, 22, 12, 0, 255, 113, 0, 1, 0, 3, 224, 249,
|
||||
32, 33, 32, 65, 32, 81, 32, 137, 32, 250, 32, 2, 32, 4, 192, 11,
|
||||
11, 22, 12, 0, 255, 127, 192, 17, 0, 17, 0, 17, 0, 17, 0, 255,
|
||||
224, 17, 0, 17, 0, 33, 0, 33, 0, 65, 0, 11, 11, 22, 12, 0,
|
||||
255, 33, 0, 34, 0, 244, 64, 87, 224, 80, 32, 87, 192, 148, 64, 84,
|
||||
64, 36, 64, 87, 192, 148, 64, 11, 11, 22, 12, 0, 255, 17, 0, 10,
|
||||
0, 127, 192, 4, 0, 4, 0, 255, 224, 4, 0, 10, 0, 17, 0, 32,
|
||||
128, 192, 96, 10, 11, 22, 12, 0, 255, 95, 192, 0, 64, 132, 64, 132,
|
||||
64, 191, 64, 132, 64, 140, 64, 148, 64, 164, 64, 140, 64, 129, 192, 11,
|
||||
11, 22, 12, 0, 255, 36, 0, 39, 192, 36, 0, 36, 0, 255, 224, 0,
|
||||
0, 20, 64, 36, 128, 71, 0, 12, 0, 112, 0, 11, 11, 22, 12, 0,
|
||||
255, 36, 128, 4, 128, 15, 192, 228, 128, 36, 128, 63, 224, 36, 128, 36,
|
||||
128, 40, 128, 80, 0, 143, 224, 11, 11, 22, 12, 0, 255, 8, 0, 8,
|
||||
0, 255, 128, 136, 128, 136, 128, 255, 128, 136, 128, 136, 128, 255, 160, 136,
|
||||
32, 7, 224, 11, 11, 22, 12, 0, 255, 39, 128, 36, 128, 244, 128, 36,
|
||||
128, 116, 128, 108, 128, 164, 128, 36, 128, 36, 160, 40, 160, 48, 96, 10,
|
||||
11, 22, 12, 0, 255, 255, 192, 128, 64, 128, 64, 158, 64, 146, 64, 146,
|
||||
64, 158, 64, 128, 64, 128, 64, 255, 192, 128, 64, 11, 11, 22, 12, 0,
|
||||
255, 127, 192, 68, 0, 95, 192, 80, 64, 95, 192, 80, 64, 95, 192, 66,
|
||||
0, 74, 128, 82, 64, 166, 32, 11, 11, 22, 12, 0, 255, 4, 0, 7,
|
||||
224, 4, 0, 127, 192, 64, 64, 64, 64, 64, 64, 127, 192, 0, 0, 82,
|
||||
64, 137, 32, 11, 11, 22, 12, 0, 255, 71, 128, 36, 128, 4, 128, 4,
|
||||
128, 232, 96, 32, 0, 47, 192, 36, 64, 34, 128, 49, 0, 38, 192, 11,
|
||||
11, 22, 12, 0, 255, 127, 192, 74, 64, 127, 192, 4, 0, 255, 224, 4,
|
||||
0, 63, 128, 32, 128, 36, 128, 36, 128, 255, 224, 11, 11, 22, 12, 0,
|
||||
255, 34, 0, 79, 224, 72, 32, 79, 224, 200, 0, 79, 224, 74, 160, 90,
|
||||
160, 111, 224, 74, 160, 72, 96, 11, 11, 22, 12, 0, 255, 243, 192, 36,
|
||||
64, 42, 128, 241, 0, 34, 128, 101, 224, 114, 32, 165, 64, 32, 128, 35,
|
||||
0, 44, 0, 11, 11, 22, 12, 0, 255, 4, 0, 255, 224, 128, 32, 0,
|
||||
0, 255, 224, 4, 0, 36, 0, 39, 192, 36, 0, 84, 0, 143, 224, 11,
|
||||
11, 22, 12, 0, 255, 115, 224, 16, 128, 81, 0, 35, 224, 250, 32, 42,
|
||||
160, 34, 160, 34, 160, 32, 128, 33, 64, 98, 32, 11, 11, 22, 12, 0,
|
||||
255, 34, 0, 247, 128, 34, 128, 54, 128, 226, 160, 37, 160, 36, 96, 104,
|
||||
32, 0, 0, 82, 64, 137, 32, 11, 11, 22, 12, 0, 255, 115, 192, 66,
|
||||
0, 66, 0, 123, 224, 74, 64, 74, 64, 122, 64, 74, 64, 66, 64, 68,
|
||||
64, 136, 64, 11, 11, 22, 12, 0, 255, 8, 0, 255, 224, 8, 0, 31,
|
||||
192, 48, 64, 95, 192, 144, 64, 31, 192, 16, 64, 16, 64, 16, 192, 11,
|
||||
11, 22, 12, 0, 255, 2, 0, 127, 224, 66, 0, 66, 0, 95, 192, 66,
|
||||
0, 71, 0, 74, 128, 82, 64, 98, 32, 130, 0, 11, 11, 22, 12, 0,
|
||||
255, 243, 192, 150, 64, 145, 128, 166, 96, 161, 0, 151, 192, 145, 0, 149,
|
||||
0, 231, 224, 129, 0, 129, 0, 11, 11, 22, 12, 0, 255, 15, 128, 136,
|
||||
128, 79, 128, 8, 128, 143, 128, 64, 0, 31, 192, 53, 64, 85, 64, 149,
|
||||
64, 63, 224, 11, 11, 22, 12, 0, 255, 39, 224, 32, 128, 248, 128, 32,
|
||||
128, 32, 128, 56, 128, 224, 128, 32, 128, 32, 128, 32, 128, 97, 128, 11,
|
||||
11, 22, 12, 0, 255, 31, 224, 145, 0, 87, 192, 20, 64, 23, 192, 148,
|
||||
64, 87, 192, 17, 0, 85, 64, 153, 32, 35, 0, 11, 11, 22, 12, 0,
|
||||
255, 32, 128, 39, 224, 242, 64, 33, 128, 34, 64, 52, 32, 226, 64, 34,
|
||||
64, 34, 64, 34, 64, 100, 64, 11, 11, 22, 12, 0, 255, 65, 0, 65,
|
||||
0, 79, 224, 233, 32, 73, 32, 73, 32, 111, 224, 201, 32, 73, 32, 73,
|
||||
32, 207, 224, 11, 11, 22, 12, 0, 255, 33, 0, 241, 0, 79, 224, 169,
|
||||
32, 249, 32, 47, 224, 57, 32, 233, 32, 41, 32, 47, 224, 40, 32, 11,
|
||||
11, 22, 12, 0, 255, 143, 224, 73, 32, 9, 32, 203, 160, 73, 32, 79,
|
||||
224, 72, 32, 75, 160, 74, 160, 107, 160, 80, 224, 11, 11, 22, 12, 0,
|
||||
255, 127, 192, 4, 0, 68, 64, 36, 64, 36, 128, 4, 0, 255, 224, 4,
|
||||
0, 4, 0, 4, 0, 4, 0, 11, 11, 22, 12, 0, 255, 130, 0, 66,
|
||||
0, 31, 224, 194, 0, 95, 192, 82, 64, 95, 192, 71, 0, 74, 128, 82,
|
||||
64, 191, 224, 11, 11, 22, 12, 0, 255, 4, 0, 127, 224, 72, 128, 127,
|
||||
224, 72, 128, 79, 128, 64, 0, 95, 192, 72, 64, 71, 128, 152, 96, 11,
|
||||
11, 22, 12, 0, 255, 1, 0, 239, 224, 161, 0, 164, 64, 175, 224, 164,
|
||||
64, 175, 224, 169, 32, 233, 32, 2, 128, 12, 96, 11, 11, 22, 12, 0,
|
||||
255, 20, 192, 246, 160, 188, 96, 167, 128, 168, 128, 191, 224, 169, 32, 239,
|
||||
224, 9, 32, 15, 224, 9, 32, 11, 11, 22, 12, 0, 255, 127, 128, 64,
|
||||
128, 66, 128, 98, 128, 84, 128, 72, 128, 72, 128, 84, 160, 98, 160, 64,
|
||||
96, 128, 32, 11, 11, 22, 12, 0, 255, 4, 0, 127, 224, 64, 32, 127,
|
||||
224, 64, 0, 125, 224, 84, 32, 76, 160, 84, 96, 100, 160, 141, 96, 11,
|
||||
11, 22, 12, 0, 255, 130, 0, 95, 224, 4, 0, 8, 64, 159, 224, 64,
|
||||
32, 10, 128, 10, 128, 74, 160, 146, 160, 34, 96, 11, 11, 22, 12, 0,
|
||||
255, 65, 0, 79, 224, 232, 32, 66, 128, 68, 64, 104, 32, 199, 192, 65,
|
||||
0, 65, 0, 65, 0, 207, 224, 11, 11, 22, 12, 0, 255, 80, 32, 125,
|
||||
32, 145, 32, 255, 32, 17, 32, 125, 32, 85, 32, 85, 32, 84, 32, 92,
|
||||
32, 16, 224, 11, 11, 22, 12, 0, 255, 63, 128, 32, 128, 63, 128, 32,
|
||||
128, 255, 224, 72, 0, 123, 192, 73, 64, 121, 64, 72, 128, 251, 96, 11,
|
||||
11, 22, 12, 0, 255, 4, 0, 4, 0, 4, 0, 36, 128, 36, 64, 68,
|
||||
64, 68, 32, 132, 32, 4, 0, 4, 0, 28, 0, 11, 11, 22, 12, 0,
|
||||
255, 4, 0, 4, 0, 4, 0, 255, 224, 4, 0, 10, 0, 10, 0, 17,
|
||||
0, 17, 0, 32, 128, 192, 96, 9, 10, 20, 10, 0, 0, 136, 128, 73,
|
||||
0, 8, 0, 255, 128, 0, 128, 0, 128, 127, 128, 0, 128, 0, 128, 255,
|
||||
128, 11, 11, 22, 12, 0, 255, 33, 0, 18, 0, 255, 224, 0, 0, 120,
|
||||
128, 74, 128, 122, 128, 74, 128, 122, 128, 72, 128, 89, 128, 11, 11, 22,
|
||||
12, 0, 255, 39, 192, 0, 0, 0, 0, 239, 224, 33, 0, 34, 0, 36,
|
||||
64, 47, 224, 32, 32, 80, 0, 143, 224, 11, 11, 22, 12, 0, 255, 32,
|
||||
128, 39, 0, 249, 0, 33, 192, 119, 0, 33, 0, 249, 224, 39, 0, 113,
|
||||
32, 169, 32, 32, 224, 11, 11, 22, 12, 0, 255, 16, 64, 16, 64, 253,
|
||||
224, 16, 64, 56, 192, 53, 64, 82, 64, 148, 64, 16, 64, 16, 64, 16,
|
||||
192, 11, 11, 22, 12, 0, 255, 0, 64, 248, 64, 11, 224, 8, 64, 136,
|
||||
64, 82, 64, 81, 64, 33, 64, 80, 64, 72, 64, 137, 192, 10, 11, 22,
|
||||
12, 0, 255, 132, 0, 132, 64, 132, 128, 245, 0, 134, 0, 132, 0, 132,
|
||||
0, 148, 0, 164, 64, 196, 64, 131, 192, 11, 11, 22, 12, 0, 255, 17,
|
||||
32, 125, 0, 17, 0, 255, 224, 41, 0, 253, 64, 73, 64, 124, 128, 8,
|
||||
160, 253, 96, 10, 32, 11, 11, 22, 12, 0, 255, 23, 192, 36, 64, 36,
|
||||
64, 103, 192, 161, 0, 47, 224, 33, 0, 35, 128, 37, 64, 41, 32, 33,
|
||||
0, 11, 11, 22, 12, 0, 255, 8, 0, 255, 224, 16, 0, 39, 192, 32,
|
||||
128, 97, 0, 175, 224, 33, 0, 33, 0, 33, 0, 35, 0, 11, 11, 22,
|
||||
12, 0, 255, 36, 0, 47, 224, 180, 0, 164, 128, 164, 160, 170, 192, 42,
|
||||
128, 40, 128, 41, 64, 50, 64, 36, 32, 11, 11, 22, 12, 0, 255, 127,
|
||||
224, 128, 0, 63, 192, 32, 64, 63, 192, 16, 0, 31, 192, 16, 64, 40,
|
||||
128, 71, 0, 56, 224, 11, 11, 22, 12, 0, 255, 127, 224, 64, 0, 64,
|
||||
0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 128,
|
||||
0, 11, 11, 22, 12, 0, 255, 255, 224, 4, 0, 127, 192, 68, 64, 127,
|
||||
192, 68, 64, 127, 192, 68, 0, 36, 0, 24, 0, 231, 224, 11, 11, 22,
|
||||
12, 0, 255, 17, 224, 253, 0, 69, 0, 41, 224, 253, 64, 17, 64, 125,
|
||||
64, 17, 64, 85, 64, 146, 64, 52, 64, 11, 11, 22, 12, 0, 255, 33,
|
||||
0, 95, 224, 64, 0, 207, 192, 64, 0, 79, 192, 64, 0, 79, 192, 72,
|
||||
64, 79, 192, 72, 64, 11, 11, 22, 12, 0, 255, 4, 0, 127, 192, 64,
|
||||
64, 127, 192, 64, 64, 127, 192, 64, 64, 127, 192, 4, 64, 82, 32, 191,
|
||||
160, 11, 11, 22, 12, 0, 255, 127, 192, 68, 64, 127, 192, 68, 64, 127,
|
||||
192, 4, 0, 27, 0, 224, 224, 17, 0, 17, 0, 97, 0, 11, 11, 22,
|
||||
12, 0, 255, 255, 224, 4, 0, 8, 0, 127, 224, 73, 32, 79, 32, 73,
|
||||
32, 79, 32, 73, 32, 73, 32, 127, 224, 11, 11, 22, 12, 0, 255, 253,
|
||||
224, 86, 64, 121, 64, 56, 128, 85, 64, 146, 32, 255, 224, 4, 0, 39,
|
||||
192, 36, 0, 255, 224, 11, 11, 22, 12, 0, 255, 251, 128, 82, 0, 123,
|
||||
224, 18, 64, 250, 64, 20, 64, 63, 128, 32, 128, 63, 128, 32, 128, 63,
|
||||
128, 11, 11, 22, 12, 0, 255, 31, 224, 32, 0, 39, 192, 100, 64, 167,
|
||||
192, 32, 0, 47, 224, 40, 32, 39, 192, 33, 0, 35, 0, 11, 11, 22,
|
||||
12, 0, 255, 243, 224, 130, 32, 130, 32, 250, 32, 130, 32, 130, 32, 138,
|
||||
32, 178, 32, 194, 224, 2, 0, 2, 0, 11, 11, 22, 12, 0, 255, 36,
|
||||
128, 70, 160, 149, 192, 228, 128, 39, 224, 68, 128, 245, 192, 6, 160, 52,
|
||||
128, 196, 128, 7, 224, 11, 11, 22, 12, 0, 255, 39, 192, 65, 0, 135,
|
||||
224, 224, 32, 34, 128, 69, 128, 242, 128, 15, 224, 48, 128, 193, 64, 2,
|
||||
32, 11, 11, 22, 12, 0, 255, 2, 0, 2, 0, 34, 0, 35, 192, 34,
|
||||
0, 34, 0, 34, 0, 34, 0, 34, 0, 34, 0, 255, 224, 9, 11, 22,
|
||||
12, 0, 255, 8, 0, 8, 0, 255, 128, 136, 128, 136, 128, 136, 128, 255,
|
||||
128, 136, 128, 136, 128, 136, 128, 255, 128, 11, 11, 22, 12, 0, 255, 33,
|
||||
0, 83, 160, 65, 0, 247, 224, 81, 0, 83, 192, 86, 64, 83, 192, 90,
|
||||
64, 83, 192, 66, 64, 11, 11, 22, 12, 0, 255, 127, 192, 4, 0, 4,
|
||||
0, 4, 0, 255, 224, 10, 0, 10, 0, 18, 0, 34, 32, 66, 32, 129,
|
||||
224, 11, 11, 22, 12, 0, 255, 17, 0, 33, 0, 47, 224, 97, 0, 163,
|
||||
128, 35, 128, 37, 64, 37, 64, 41, 32, 33, 0, 33, 0, 11, 11, 22,
|
||||
12, 0, 255, 247, 224, 148, 32, 244, 32, 151, 224, 148, 128, 244, 128, 151,
|
||||
224, 148, 128, 244, 160, 150, 96, 4, 32, 11, 11, 22, 12, 0, 255, 123,
|
||||
224, 148, 128, 4, 0, 127, 192, 4, 0, 255, 224, 1, 0, 255, 224, 33,
|
||||
0, 17, 0, 7, 0, 11, 11, 22, 12, 0, 255, 33, 0, 71, 192, 145,
|
||||
0, 47, 224, 96, 128, 175, 224, 32, 128, 36, 128, 34, 128, 32, 128, 35,
|
||||
128, 11, 11, 22, 12, 0, 255, 39, 192, 36, 64, 247, 192, 46, 224, 42,
|
||||
160, 62, 224, 225, 0, 47, 224, 35, 128, 37, 64, 105, 32, 11, 11, 22,
|
||||
12, 0, 255, 20, 0, 39, 224, 42, 0, 98, 0, 163, 192, 34, 0, 34,
|
||||
0, 35, 224, 34, 0, 34, 0, 34, 0
|
||||
};
|
||||
@@ -1,205 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
Fontname: ISO10646_4_Greek
|
||||
Copyright: A. Hardtung, public domain
|
||||
Capital A Height: 7, '1' Height: 7
|
||||
Calculated Max Values w= 5 h= 9 x= 2 y= 6 dx= 6 dy= 0 ascent= 8 len= 9
|
||||
Font Bounding box w= 6 h= 9 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-1 dx= 0 dy= 0
|
||||
Pure Font ascent = 7 descent=-1
|
||||
X Font ascent = 7 descent=-1
|
||||
Max Font ascent = 8 descent=-1
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
const u8g_fntpgm_uint8_t ISO10646_Greek_5x7[2715] U8G_SECTION(".progmem.ISO10646_Greek_5x7") = {
|
||||
0,6,9,0,254,7,1,145,3,32,32,255,255,8,255,7,
|
||||
255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
|
||||
128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
|
||||
0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
|
||||
120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
|
||||
64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
|
||||
2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
|
||||
64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
|
||||
32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
|
||||
5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
|
||||
64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
|
||||
192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
|
||||
0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64,
|
||||
192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
|
||||
128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
|
||||
5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
|
||||
6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
|
||||
48,64,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
|
||||
32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
|
||||
112,5,7,7,6,0,0,112,136,136,120,8,16,96,2,5,
|
||||
5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
|
||||
192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
|
||||
32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
|
||||
0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
|
||||
8,16,32,0,32,5,6,6,6,0,0,112,136,8,104,168,
|
||||
112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,7,
|
||||
7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,0,
|
||||
0,112,136,128,128,128,136,112,5,7,7,6,0,0,224,144,
|
||||
136,136,136,144,224,5,7,7,6,0,0,248,128,128,240,128,
|
||||
128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,5,
|
||||
7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,6,
|
||||
0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,128,
|
||||
128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,16,
|
||||
16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,136,
|
||||
5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,7,
|
||||
6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,0,
|
||||
136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,136,
|
||||
136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,128,
|
||||
128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,7,
|
||||
7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,0,
|
||||
0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,32,
|
||||
32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,136,
|
||||
136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,5,
|
||||
7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,6,
|
||||
0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,136,
|
||||
136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,32,
|
||||
64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,224,
|
||||
5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,1,
|
||||
0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,80,
|
||||
136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,64,
|
||||
5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,0,
|
||||
0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,128,
|
||||
128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,120,
|
||||
5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,0,
|
||||
0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,136,
|
||||
136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,136,
|
||||
136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,8,
|
||||
8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,6,
|
||||
0,0,128,128,144,160,192,160,144,3,7,7,6,1,0,192,
|
||||
64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,168,
|
||||
168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,6,
|
||||
0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,136,
|
||||
240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,5,
|
||||
5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,0,
|
||||
112,128,112,8,240,5,7,7,6,0,0,64,64,224,64,64,
|
||||
72,48,5,5,5,6,0,0,136,136,136,152,104,5,5,5,
|
||||
6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,136,
|
||||
168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,6,
|
||||
6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,0,
|
||||
248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,64,
|
||||
64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,3,
|
||||
7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,6,
|
||||
0,3,104,144,0,0,0,6,0,0,0,0,0,6,0,0,
|
||||
0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
|
||||
0,0,2,2,2,6,1,6,64,128,3,3,3,6,1,5,
|
||||
32,64,160,5,8,8,6,0,0,64,160,80,80,136,248,136,
|
||||
136,2,2,2,6,1,2,192,192,5,8,8,6,0,0,64,
|
||||
128,248,128,240,128,128,248,5,8,8,6,0,0,64,128,136,
|
||||
136,248,136,136,136,4,8,8,6,0,0,64,128,112,32,32,
|
||||
32,32,112,0,0,0,6,0,0,5,8,8,6,0,0,64,
|
||||
128,112,136,136,136,136,112,0,0,0,6,0,0,5,8,8,
|
||||
6,0,0,64,128,8,136,112,32,32,32,5,8,8,6,0,
|
||||
0,64,128,112,136,136,136,80,216,3,8,8,6,1,0,32,
|
||||
64,160,0,64,64,64,32,5,7,7,6,0,0,32,80,136,
|
||||
136,248,136,136,5,7,7,6,0,0,240,72,72,112,72,72,
|
||||
240,5,7,7,6,0,0,248,128,128,128,128,128,128,5,6,
|
||||
6,6,0,0,32,80,80,136,136,248,5,7,7,6,0,0,
|
||||
248,128,128,240,128,128,248,5,7,7,6,0,0,248,8,16,
|
||||
32,64,128,248,5,7,7,6,0,0,136,136,136,248,136,136,
|
||||
136,5,7,7,6,0,0,112,136,136,168,136,136,112,3,7,
|
||||
7,6,1,0,224,64,64,64,64,64,224,5,7,7,6,0,
|
||||
0,136,144,160,192,160,144,136,5,7,7,6,0,0,32,80,
|
||||
136,136,136,136,136,5,7,7,6,0,0,136,216,168,168,136,
|
||||
136,136,5,7,7,6,0,0,136,200,200,168,152,152,136,5,
|
||||
7,7,6,0,0,248,0,0,112,0,0,248,5,7,7,6,
|
||||
0,0,112,136,136,136,136,136,112,5,7,7,6,0,0,248,
|
||||
80,80,80,80,80,80,5,7,7,6,0,0,240,136,136,240,
|
||||
128,128,128,0,0,0,6,0,0,5,7,7,6,0,0,248,
|
||||
128,64,32,64,128,248,5,7,7,6,0,0,248,32,32,32,
|
||||
32,32,32,5,7,7,6,0,0,136,136,80,32,32,32,32,
|
||||
5,7,7,6,0,0,112,32,112,168,112,32,112,5,7,7,
|
||||
6,0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,
|
||||
168,168,168,168,112,32,32,5,6,6,6,0,0,112,136,136,
|
||||
80,80,216,3,8,8,6,1,0,160,0,224,64,64,64,64,
|
||||
224,5,8,8,6,0,0,80,0,136,136,136,80,32,32,5,
|
||||
8,8,6,0,0,32,64,8,104,152,144,144,104,5,8,8,
|
||||
6,0,0,32,64,0,112,136,224,136,112,5,9,9,6,0,
|
||||
255,32,64,0,112,136,136,136,136,8,2,8,8,6,1,0,
|
||||
64,128,0,128,128,128,128,64,5,8,8,6,0,0,16,32,
|
||||
80,0,136,136,136,112,5,6,6,6,0,0,8,104,152,144,
|
||||
144,104,4,6,6,6,0,255,96,144,240,144,224,128,5,6,
|
||||
6,6,0,255,136,72,80,32,32,64,5,6,6,6,0,0,
|
||||
48,64,112,136,136,112,5,5,5,6,0,0,112,136,224,136,
|
||||
112,5,8,8,6,0,255,128,112,64,128,128,112,8,112,5,
|
||||
6,6,6,0,255,184,200,136,136,136,8,5,5,5,6,0,
|
||||
0,112,136,248,136,112,3,5,5,6,1,0,128,128,128,128,
|
||||
96,4,5,5,6,0,0,144,160,192,160,144,5,6,6,6,
|
||||
0,0,64,32,32,80,80,136,5,6,6,6,0,255,136,136,
|
||||
136,216,168,128,5,5,5,6,0,0,136,136,80,96,32,5,
|
||||
9,9,6,0,255,128,224,128,112,32,64,240,8,112,5,5,
|
||||
5,6,0,0,112,136,136,136,112,5,5,5,6,0,0,248,
|
||||
80,80,80,80,5,6,6,6,0,255,112,136,136,200,176,128,
|
||||
5,7,7,6,0,255,48,64,128,64,48,8,112,5,5,5,
|
||||
6,0,0,104,144,144,144,96,4,5,5,6,0,0,240,64,
|
||||
64,64,48,5,5,5,6,0,0,136,136,144,144,224,5,7,
|
||||
7,6,0,255,32,168,168,168,112,32,32,5,6,6,6,0,
|
||||
255,136,80,32,32,80,136,5,6,6,6,0,255,168,168,168,
|
||||
168,112,32,5,5,5,6,0,0,80,136,136,168,112,4,7,
|
||||
7,6,0,0,160,0,64,64,64,64,48,5,7,7,6,0,
|
||||
0,80,0,136,136,144,144,224,4,8,8,6,0,0,32,64,
|
||||
0,96,144,144,144,96,5,8,8,6,0,0,32,64,0,136,
|
||||
136,144,144,96,5,8,8,6,0,0,32,64,0,80,136,136,
|
||||
168,112,5,7,7,6,0,255,144,160,192,160,144,136,16,5,
|
||||
8,8,6,0,0,96,144,160,128,240,136,136,112,5,7,7,
|
||||
6,0,0,112,80,56,144,144,144,96,5,6,6,6,0,0,
|
||||
152,80,32,32,32,32,5,8,8,6,0,0,64,128,152,80,
|
||||
32,32,32,32,5,8,8,6,0,0,80,0,152,80,32,32,
|
||||
32,32,5,7,7,6,0,255,48,168,168,168,168,112,32,5,
|
||||
5,5,6,0,0,248,80,80,80,88,5,6,6,6,0,255,
|
||||
136,80,112,80,136,16,5,7,7,6,0,255,112,136,136,136,
|
||||
112,32,112,5,6,6,6,0,255,112,136,136,112,32,112,5,
|
||||
6,6,6,0,0,112,136,128,112,32,112,5,7,7,6,0,
|
||||
255,8,8,112,128,112,16,96,5,6,6,6,0,0,248,128,
|
||||
128,240,128,128,4,5,5,6,0,0,240,128,224,128,128,5,
|
||||
6,6,6,0,0,248,0,0,112,0,248,4,5,5,6,0,
|
||||
0,64,128,240,16,32,5,7,7,6,0,0,224,80,40,40,
|
||||
8,8,16,5,7,7,6,0,0,192,32,80,40,8,8,8,
|
||||
5,7,7,6,0,255,168,168,168,168,88,8,112,5,6,6,
|
||||
6,0,255,168,168,168,88,8,112,5,6,6,6,0,0,104,
|
||||
136,136,120,8,8,5,6,6,6,0,255,104,136,136,120,8,
|
||||
8,4,8,8,6,0,255,128,224,144,144,144,144,32,192,5,
|
||||
5,5,6,0,0,104,144,112,16,224,5,6,6,6,0,0,
|
||||
96,144,16,96,136,112,4,6,6,6,0,0,96,144,16,96,
|
||||
128,112,5,6,6,6,0,0,136,80,32,80,136,248,5,5,
|
||||
5,6,0,0,136,80,32,80,112,5,6,6,6,0,0,120,
|
||||
128,240,136,136,112,4,5,5,6,0,0,240,128,224,144,96,
|
||||
3,6,6,6,1,0,64,224,64,64,64,64,3,6,6,6,
|
||||
1,255,64,224,64,64,64,128,5,5,5,6,0,0,136,80,
|
||||
112,80,136,5,6,6,6,0,255,112,136,136,240,128,112,4,
|
||||
5,5,6,0,0,112,128,128,128,112,2,8,8,6,1,255,
|
||||
64,0,192,64,64,64,64,128,5,7,7,6,0,0,112,136,
|
||||
136,248,136,136,112,4,5,5,6,0,0,112,128,224,128,112,
|
||||
4,5,5,6,0,0,224,16,112,16,224,5,7,7,6,0,
|
||||
0,128,240,136,136,136,240,128,4,7,7,6,0,255,128,224,
|
||||
144,144,144,224,128,5,6,6,6,0,0,112,136,128,128,136,
|
||||
112,5,6,6,6,0,0,136,216,168,136,136,136,5,6,6,
|
||||
6,0,255,136,216,168,136,136,128,5,8,8,6,0,255,112,
|
||||
136,136,136,112,64,224,64,5,6,6,6,0,0,112,136,8,
|
||||
8,136,112,5,6,6,6,0,0,112,136,160,128,136,112,5,
|
||||
6,6,6,0,0,112,136,40,8,136,112};
|
||||
@@ -1,192 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
Fontname: ISO10646_Kana
|
||||
Copyright: A. Hardtung, public domain
|
||||
Capital A Height: 7, '1' Height: 7
|
||||
Calculated Max Values w= 5 h= 8 x= 2 y= 5 dx= 6 dy= 0 ascent= 8 len= 8
|
||||
Font Bounding box w= 6 h= 9 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-1 dx= 0 dy= 0
|
||||
Pure Font ascent = 7 descent=-1
|
||||
X Font ascent = 7 descent=-1
|
||||
Max Font ascent = 8 descent=-1
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
const u8g_fntpgm_uint8_t ISO10646_Kana_5x7[2482] U8G_SECTION(".progmem.ISO10646_Kana_5x7") = {
|
||||
0, 6, 9, 0, 254, 7, 1, 145, 3, 32, 32, 255, 255, 8, 255, 7,
|
||||
255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128,
|
||||
128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6,
|
||||
0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32,
|
||||
120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32,
|
||||
64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104,
|
||||
2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32,
|
||||
64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32,
|
||||
32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5,
|
||||
5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192,
|
||||
64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192,
|
||||
192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6,
|
||||
0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64,
|
||||
192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112,
|
||||
128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240,
|
||||
5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7,
|
||||
6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0,
|
||||
48, 64, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16,
|
||||
32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136,
|
||||
112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5,
|
||||
5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192,
|
||||
192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64,
|
||||
32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1,
|
||||
0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136,
|
||||
8, 16, 32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168,
|
||||
112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7,
|
||||
7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0,
|
||||
0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144,
|
||||
136, 136, 136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128,
|
||||
128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5,
|
||||
7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6,
|
||||
0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128,
|
||||
128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16,
|
||||
16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136,
|
||||
5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7,
|
||||
6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0,
|
||||
136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136,
|
||||
136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128,
|
||||
128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7,
|
||||
7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0,
|
||||
0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32,
|
||||
32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136,
|
||||
136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5,
|
||||
7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6,
|
||||
0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136,
|
||||
136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32,
|
||||
64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224,
|
||||
5, 5, 5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6, 1,
|
||||
0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32, 80,
|
||||
136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128, 64,
|
||||
5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6, 0,
|
||||
0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112, 128,
|
||||
128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136, 120,
|
||||
5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6, 0,
|
||||
0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112, 136,
|
||||
136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136, 136,
|
||||
136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, 8,
|
||||
8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7, 6,
|
||||
0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0, 192,
|
||||
64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168, 168,
|
||||
168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5, 6,
|
||||
0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136, 136,
|
||||
240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8, 5,
|
||||
5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0, 0,
|
||||
112, 128, 112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224, 64, 64,
|
||||
72, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5, 5,
|
||||
6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136, 136,
|
||||
168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5, 6,
|
||||
6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0, 0,
|
||||
248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128, 64,
|
||||
64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128, 3,
|
||||
7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 2, 2, 6,
|
||||
0, 3, 104, 144, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
|
||||
0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
|
||||
0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
|
||||
0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
|
||||
0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
|
||||
0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
|
||||
0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
|
||||
0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
|
||||
0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
|
||||
0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
|
||||
0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
|
||||
0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
|
||||
0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 5, 3, 3, 6, 0, 1,
|
||||
248, 0, 248, 4, 4, 4, 6, 0, 0, 240, 16, 96, 64, 5, 6, 6,
|
||||
6, 0, 0, 248, 8, 40, 48, 32, 64, 3, 4, 4, 6, 1, 0, 32,
|
||||
64, 192, 64, 4, 6, 6, 6, 0, 0, 16, 32, 96, 160, 32, 32, 4,
|
||||
4, 4, 6, 0, 0, 32, 240, 144, 32, 5, 6, 6, 6, 0, 0, 32,
|
||||
248, 136, 8, 16, 32, 3, 4, 4, 6, 1, 0, 224, 64, 64, 224, 5,
|
||||
5, 5, 6, 0, 0, 248, 32, 32, 32, 248, 4, 4, 4, 6, 0, 0,
|
||||
32, 240, 96, 160, 5, 6, 6, 6, 0, 0, 16, 248, 48, 80, 144, 16,
|
||||
5, 6, 6, 6, 0, 0, 64, 248, 72, 72, 72, 144, 5, 8, 8, 6,
|
||||
0, 0, 40, 0, 64, 248, 72, 72, 72, 144, 5, 6, 6, 6, 0, 0,
|
||||
32, 248, 32, 248, 32, 32, 5, 8, 8, 6, 0, 0, 40, 0, 32, 248,
|
||||
32, 248, 32, 32, 4, 5, 5, 6, 0, 0, 112, 144, 16, 32, 192, 5,
|
||||
7, 7, 6, 0, 0, 40, 0, 112, 144, 16, 32, 192, 5, 6, 6, 6,
|
||||
0, 0, 64, 120, 144, 16, 16, 32, 5, 8, 8, 6, 0, 0, 40, 0,
|
||||
64, 120, 144, 16, 16, 32, 5, 5, 5, 6, 0, 0, 248, 8, 8, 8,
|
||||
248, 5, 7, 7, 6, 0, 0, 40, 0, 248, 8, 8, 8, 248, 5, 6,
|
||||
6, 6, 0, 0, 80, 248, 80, 16, 32, 64, 5, 8, 8, 6, 0, 0,
|
||||
40, 0, 80, 248, 80, 16, 32, 64, 5, 5, 5, 6, 0, 0, 192, 8,
|
||||
200, 16, 224, 5, 7, 7, 6, 0, 0, 40, 0, 192, 8, 200, 16, 224,
|
||||
5, 5, 5, 6, 0, 0, 248, 16, 32, 80, 136, 5, 7, 7, 6, 0,
|
||||
0, 40, 0, 248, 16, 32, 80, 136, 5, 6, 6, 6, 0, 0, 64, 248,
|
||||
72, 80, 64, 56, 5, 8, 8, 6, 0, 0, 40, 0, 64, 248, 72, 80,
|
||||
64, 56, 5, 5, 5, 6, 0, 0, 136, 136, 72, 16, 96, 5, 7, 7,
|
||||
6, 0, 0, 40, 0, 136, 136, 72, 16, 96, 5, 5, 5, 6, 0, 0,
|
||||
120, 72, 168, 16, 96, 5, 7, 7, 6, 0, 0, 40, 0, 120, 72, 168,
|
||||
16, 96, 5, 6, 6, 6, 0, 0, 16, 224, 32, 248, 32, 64, 5, 8,
|
||||
8, 6, 0, 0, 40, 0, 16, 224, 32, 248, 32, 64, 5, 4, 4, 6,
|
||||
0, 0, 168, 168, 8, 48, 5, 5, 5, 6, 0, 0, 168, 168, 8, 16,
|
||||
32, 5, 7, 7, 6, 0, 0, 40, 0, 168, 168, 8, 16, 32, 5, 6,
|
||||
6, 6, 0, 0, 112, 0, 248, 32, 32, 64, 5, 8, 8, 6, 0, 0,
|
||||
40, 0, 112, 0, 248, 32, 32, 64, 3, 6, 6, 6, 1, 0, 128, 128,
|
||||
192, 160, 128, 128, 4, 8, 8, 6, 1, 0, 80, 0, 128, 128, 192, 160,
|
||||
128, 128, 5, 6, 6, 6, 0, 0, 32, 248, 32, 32, 64, 128, 5, 5,
|
||||
5, 6, 0, 0, 112, 0, 0, 0, 248, 5, 5, 5, 6, 0, 0, 248,
|
||||
8, 80, 32, 208, 5, 6, 6, 6, 0, 0, 32, 248, 16, 32, 112, 168,
|
||||
3, 6, 6, 6, 1, 0, 32, 32, 32, 32, 64, 128, 5, 5, 5, 6,
|
||||
0, 0, 16, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 40, 0, 16,
|
||||
136, 136, 136, 136, 5, 8, 8, 6, 0, 0, 24, 24, 0, 16, 136, 136,
|
||||
136, 136, 5, 6, 6, 6, 0, 0, 128, 128, 248, 128, 128, 120, 5, 7,
|
||||
7, 6, 0, 0, 40, 128, 128, 248, 128, 128, 120, 5, 7, 7, 6, 0,
|
||||
0, 24, 152, 128, 248, 128, 128, 120, 5, 5, 5, 6, 0, 0, 248, 8,
|
||||
8, 16, 96, 5, 7, 7, 6, 0, 0, 40, 0, 248, 8, 8, 16, 96,
|
||||
5, 8, 8, 6, 0, 0, 24, 24, 0, 248, 8, 8, 16, 96, 5, 4,
|
||||
4, 6, 0, 1, 64, 160, 16, 8, 5, 6, 6, 6, 0, 1, 40, 0,
|
||||
64, 160, 16, 8, 5, 6, 6, 6, 0, 1, 24, 24, 64, 160, 16, 8,
|
||||
5, 6, 6, 6, 0, 0, 32, 248, 32, 168, 168, 32, 5, 8, 8, 6,
|
||||
0, 0, 40, 0, 32, 248, 32, 168, 168, 32, 5, 8, 8, 6, 0, 0,
|
||||
24, 24, 32, 248, 32, 168, 168, 32, 5, 5, 5, 6, 0, 0, 248, 8,
|
||||
80, 32, 16, 4, 5, 5, 6, 1, 0, 224, 0, 224, 0, 240, 5, 5,
|
||||
5, 6, 0, 0, 32, 64, 136, 248, 8, 5, 5, 5, 6, 0, 0, 8,
|
||||
40, 16, 40, 192, 5, 5, 5, 6, 0, 0, 248, 64, 248, 64, 56, 5,
|
||||
4, 4, 6, 0, 0, 64, 248, 80, 64, 5, 6, 6, 6, 0, 0, 64,
|
||||
248, 72, 80, 64, 64, 4, 4, 4, 6, 0, 0, 96, 32, 32, 240, 5,
|
||||
5, 5, 6, 0, 0, 112, 16, 16, 16, 248, 4, 5, 5, 6, 0, 0,
|
||||
240, 16, 240, 16, 240, 5, 5, 5, 6, 0, 0, 248, 8, 248, 8, 248,
|
||||
5, 6, 6, 6, 0, 0, 112, 0, 248, 8, 16, 32, 4, 6, 6, 6,
|
||||
0, 0, 144, 144, 144, 144, 16, 32, 5, 5, 5, 6, 0, 0, 32, 160,
|
||||
168, 168, 176, 4, 5, 5, 6, 0, 0, 128, 128, 144, 160, 192, 5, 5,
|
||||
5, 6, 0, 0, 248, 136, 136, 136, 248, 4, 4, 4, 6, 0, 0, 240,
|
||||
144, 16, 32, 5, 5, 5, 6, 0, 0, 248, 136, 8, 16, 32, 5, 6,
|
||||
6, 6, 0, 0, 16, 248, 80, 80, 248, 16, 5, 5, 5, 6, 0, 0,
|
||||
248, 8, 48, 32, 248, 5, 5, 5, 6, 0, 0, 248, 8, 248, 8, 48,
|
||||
5, 5, 5, 6, 0, 0, 192, 8, 8, 16, 224, 5, 8, 8, 6, 0,
|
||||
0, 40, 0, 32, 248, 136, 8, 16, 32, 4, 4, 4, 6, 0, 0, 64,
|
||||
240, 80, 160, 4, 4, 4, 6, 0, 0, 64, 240, 32, 64, 5, 7, 7,
|
||||
6, 0, 0, 40, 0, 248, 136, 8, 16, 96, 5, 8, 8, 6, 0, 0,
|
||||
40, 0, 16, 248, 80, 80, 248, 16, 5, 7, 7, 6, 0, 0, 40, 0,
|
||||
248, 8, 48, 32, 248, 5, 7, 7, 6, 0, 0, 40, 0, 248, 8, 248,
|
||||
8, 48, 2, 2, 2, 6, 2, 2, 192, 192, 5, 1, 1, 6, 0, 2,
|
||||
248, 5, 4, 4, 6, 0, 1, 128, 96, 16, 8, 5, 5, 5, 6, 0,
|
||||
1, 40, 128, 96, 16, 8, 5, 6, 6, 6, 0, 0, 248, 8, 8, 8,
|
||||
8, 8
|
||||
};
|
||||
@@ -1,45 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
Fontname: Marlin_symbols
|
||||
Copyright: Created with Fony 1.4.7
|
||||
Capital A Height: 0, '1' Height: 0
|
||||
Calculated Max Values w= 5 h=10 x= 0 y= 3 dx= 6 dy= 0 ascent= 8 len=10
|
||||
Font Bounding box w= 6 h= 9 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-2 dx= 0 dy= 0
|
||||
Pure Font ascent = 0 descent= 0
|
||||
X Font ascent = 0 descent= 0
|
||||
Max Font ascent = 8 descent=-2
|
||||
*/
|
||||
#include <U8glib.h>
|
||||
const u8g_fntpgm_uint8_t Marlin_symbols[140] U8G_SECTION(".progmem.Marlin_symbols") = {
|
||||
0, 6, 9, 0, 254, 0, 0, 0, 0, 0, 1, 9, 0, 8, 254, 0,
|
||||
0, 5, 8, 8, 6, 0, 0, 64, 240, 200, 136, 136, 152, 120, 16, 5,
|
||||
8, 8, 6, 0, 0, 192, 248, 136, 136, 136, 136, 136, 248, 5, 5, 5,
|
||||
6, 0, 1, 32, 48, 248, 48, 32, 5, 8, 8, 6, 0, 0, 32, 112,
|
||||
248, 32, 32, 32, 32, 224, 5, 9, 9, 6, 0, 255, 32, 112, 168, 168,
|
||||
184, 136, 136, 112, 32, 5, 9, 9, 6, 0, 255, 224, 128, 192, 176, 168,
|
||||
40, 48, 40, 40, 5, 9, 9, 6, 0, 255, 248, 168, 136, 136, 136, 136,
|
||||
136, 168, 248, 5, 10, 10, 6, 0, 254, 32, 80, 80, 80, 80, 136, 168,
|
||||
168, 136, 112, 3, 3, 3, 6, 0, 3, 64, 160, 64
|
||||
};
|
||||
@@ -1,458 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* endstops.cpp - A singleton object to manage endstops
|
||||
*/
|
||||
|
||||
#include "Marlin.h"
|
||||
#include "cardreader.h"
|
||||
#include "endstops.h"
|
||||
#include "temperature.h"
|
||||
#include "stepper.h"
|
||||
#include "ultralcd.h"
|
||||
|
||||
// TEST_ENDSTOP: test the old and the current status of an endstop
|
||||
#define TEST_ENDSTOP(ENDSTOP) (TEST(current_endstop_bits & old_endstop_bits, ENDSTOP))
|
||||
|
||||
Endstops endstops;
|
||||
|
||||
// public:
|
||||
|
||||
bool Endstops::enabled = true,
|
||||
Endstops::enabled_globally =
|
||||
#if ENABLED(ENDSTOPS_ALWAYS_ON_DEFAULT)
|
||||
(true)
|
||||
#else
|
||||
(false)
|
||||
#endif
|
||||
;
|
||||
volatile char Endstops::endstop_hit_bits; // use X_MIN, Y_MIN, Z_MIN and Z_MIN_PROBE as BIT value
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
uint16_t
|
||||
#else
|
||||
byte
|
||||
#endif
|
||||
Endstops::current_endstop_bits = 0,
|
||||
Endstops::old_endstop_bits = 0;
|
||||
|
||||
#if HAS_BED_PROBE
|
||||
volatile bool Endstops::z_probe_enabled = false;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Class and Instance Methods
|
||||
*/
|
||||
|
||||
void Endstops::init() {
|
||||
|
||||
#if HAS_X_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_XMIN)
|
||||
SET_INPUT_PULLUP(X_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(X_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Y_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_YMIN)
|
||||
SET_INPUT_PULLUP(Y_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(Y_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Z_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMIN)
|
||||
SET_INPUT_PULLUP(Z_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(Z_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Z2_MIN
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMIN)
|
||||
SET_INPUT_PULLUP(Z2_MIN_PIN);
|
||||
#else
|
||||
SET_INPUT(Z2_MIN_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_X_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_XMAX)
|
||||
SET_INPUT_PULLUP(X_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(X_MAX_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Y_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_YMAX)
|
||||
SET_INPUT_PULLUP(Y_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(Y_MAX_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Z_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMAX)
|
||||
SET_INPUT_PULLUP(Z_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(Z_MAX_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_Z2_MAX
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMAX)
|
||||
SET_INPUT_PULLUP(Z2_MAX_PIN);
|
||||
#else
|
||||
SET_INPUT(Z2_MAX_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(Z_MIN_PROBE_ENDSTOP)
|
||||
#if ENABLED(ENDSTOPPULLUP_ZMIN_PROBE)
|
||||
SET_INPUT_PULLUP(Z_MIN_PROBE_PIN);
|
||||
#else
|
||||
SET_INPUT(Z_MIN_PROBE_PIN);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
} // Endstops::init
|
||||
|
||||
void Endstops::report_state() {
|
||||
if (endstop_hit_bits) {
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
char chrX = ' ', chrY = ' ', chrZ = ' ', chrP = ' ';
|
||||
#define _SET_STOP_CHAR(A,C) (chr## A = C)
|
||||
#else
|
||||
#define _SET_STOP_CHAR(A,C) ;
|
||||
#endif
|
||||
|
||||
#define _ENDSTOP_HIT_ECHO(A,C) do{ \
|
||||
SERIAL_ECHOPAIR(" " STRINGIFY(A) ":", stepper.triggered_position_mm(A ##_AXIS)); \
|
||||
_SET_STOP_CHAR(A,C); }while(0)
|
||||
|
||||
#define _ENDSTOP_HIT_TEST(A,C) \
|
||||
if (TEST(endstop_hit_bits, A ##_MIN) || TEST(endstop_hit_bits, A ##_MAX)) \
|
||||
_ENDSTOP_HIT_ECHO(A,C)
|
||||
|
||||
#define ENDSTOP_HIT_TEST_X() _ENDSTOP_HIT_TEST(X,'X')
|
||||
#define ENDSTOP_HIT_TEST_Y() _ENDSTOP_HIT_TEST(Y,'Y')
|
||||
#define ENDSTOP_HIT_TEST_Z() _ENDSTOP_HIT_TEST(Z,'Z')
|
||||
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOPGM(MSG_ENDSTOPS_HIT);
|
||||
ENDSTOP_HIT_TEST_X();
|
||||
ENDSTOP_HIT_TEST_Y();
|
||||
ENDSTOP_HIT_TEST_Z();
|
||||
|
||||
#if ENABLED(Z_MIN_PROBE_ENDSTOP)
|
||||
#define P_AXIS Z_AXIS
|
||||
if (TEST(endstop_hit_bits, Z_MIN_PROBE)) _ENDSTOP_HIT_ECHO(P, 'P');
|
||||
#endif
|
||||
SERIAL_EOL;
|
||||
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
lcd_status_printf_P(0, PSTR(MSG_LCD_ENDSTOPS " %c %c %c %c"), chrX, chrY, chrZ, chrP);
|
||||
#endif
|
||||
|
||||
hit_on_purpose();
|
||||
|
||||
#if ENABLED(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) && ENABLED(SDSUPPORT)
|
||||
if (stepper.abort_on_endstop_hit) {
|
||||
card.sdprinting = false;
|
||||
card.closefile();
|
||||
quickstop_stepper();
|
||||
thermalManager.disable_all_heaters(); // switch off all heaters.
|
||||
}
|
||||
#endif
|
||||
}
|
||||
} // Endstops::report_state
|
||||
|
||||
void Endstops::M119() {
|
||||
SERIAL_PROTOCOLLNPGM(MSG_M119_REPORT);
|
||||
#if HAS_X_MIN
|
||||
SERIAL_PROTOCOLPGM(MSG_X_MIN);
|
||||
SERIAL_PROTOCOLLN(((READ(X_MIN_PIN)^X_MIN_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
|
||||
#endif
|
||||
#if HAS_X_MAX
|
||||
SERIAL_PROTOCOLPGM(MSG_X_MAX);
|
||||
SERIAL_PROTOCOLLN(((READ(X_MAX_PIN)^X_MAX_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
|
||||
#endif
|
||||
#if HAS_Y_MIN
|
||||
SERIAL_PROTOCOLPGM(MSG_Y_MIN);
|
||||
SERIAL_PROTOCOLLN(((READ(Y_MIN_PIN)^Y_MIN_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
|
||||
#endif
|
||||
#if HAS_Y_MAX
|
||||
SERIAL_PROTOCOLPGM(MSG_Y_MAX);
|
||||
SERIAL_PROTOCOLLN(((READ(Y_MAX_PIN)^Y_MAX_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
|
||||
#endif
|
||||
#if HAS_Z_MIN
|
||||
SERIAL_PROTOCOLPGM(MSG_Z_MIN);
|
||||
SERIAL_PROTOCOLLN(((READ(Z_MIN_PIN)^Z_MIN_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
|
||||
#endif
|
||||
#if HAS_Z2_MIN
|
||||
SERIAL_PROTOCOLPGM(MSG_Z2_MIN);
|
||||
SERIAL_PROTOCOLLN(((READ(Z2_MIN_PIN)^Z2_MIN_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
|
||||
#endif
|
||||
#if HAS_Z_MAX
|
||||
SERIAL_PROTOCOLPGM(MSG_Z_MAX);
|
||||
SERIAL_PROTOCOLLN(((READ(Z_MAX_PIN)^Z_MAX_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
|
||||
#endif
|
||||
#if HAS_Z2_MAX
|
||||
SERIAL_PROTOCOLPGM(MSG_Z2_MAX);
|
||||
SERIAL_PROTOCOLLN(((READ(Z2_MAX_PIN)^Z2_MAX_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
|
||||
#endif
|
||||
#if ENABLED(Z_MIN_PROBE_ENDSTOP)
|
||||
SERIAL_PROTOCOLPGM(MSG_Z_PROBE);
|
||||
SERIAL_PROTOCOLLN(((READ(Z_MIN_PROBE_PIN)^Z_MIN_PROBE_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
|
||||
#endif
|
||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||
SERIAL_PROTOCOLPGM(MSG_FILAMENT_RUNOUT_SENSOR);
|
||||
SERIAL_PROTOCOLLN(((READ(FIL_RUNOUT_PIN)^FIL_RUNOUT_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));
|
||||
#endif
|
||||
} // Endstops::M119
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
|
||||
// Pass the result of the endstop test
|
||||
void Endstops::test_dual_z_endstops(const EndstopEnum es1, const EndstopEnum es2) {
|
||||
byte z_test = TEST_ENDSTOP(es1) | (TEST_ENDSTOP(es2) << 1); // bit 0 for Z, bit 1 for Z2
|
||||
if (z_test && stepper.current_block->steps[Z_AXIS] > 0) {
|
||||
SBI(endstop_hit_bits, Z_MIN);
|
||||
if (!stepper.performing_homing || (z_test == 0x3)) //if not performing home or if both endstops were trigged during homing...
|
||||
stepper.kill_current_block();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// Check endstops - Called from ISR!
|
||||
void Endstops::update() {
|
||||
|
||||
#define _ENDSTOP(AXIS, MINMAX) AXIS ##_## MINMAX
|
||||
#define _ENDSTOP_PIN(AXIS, MINMAX) AXIS ##_## MINMAX ##_PIN
|
||||
#define _ENDSTOP_INVERTING(AXIS, MINMAX) AXIS ##_## MINMAX ##_ENDSTOP_INVERTING
|
||||
#define _ENDSTOP_HIT(AXIS) SBI(endstop_hit_bits, _ENDSTOP(AXIS, MIN))
|
||||
|
||||
// UPDATE_ENDSTOP_BIT: set the current endstop bits for an endstop to its status
|
||||
#define UPDATE_ENDSTOP_BIT(AXIS, MINMAX) SET_BIT(current_endstop_bits, _ENDSTOP(AXIS, MINMAX), (READ(_ENDSTOP_PIN(AXIS, MINMAX)) != _ENDSTOP_INVERTING(AXIS, MINMAX)))
|
||||
// COPY_BIT: copy the value of SRC_BIT to DST_BIT in DST
|
||||
#define COPY_BIT(DST, SRC_BIT, DST_BIT) SET_BIT(DST, DST_BIT, TEST(DST, SRC_BIT))
|
||||
|
||||
#define UPDATE_ENDSTOP(AXIS,MINMAX) do { \
|
||||
UPDATE_ENDSTOP_BIT(AXIS, MINMAX); \
|
||||
if (TEST_ENDSTOP(_ENDSTOP(AXIS, MINMAX)) && stepper.current_block->steps[_AXIS(AXIS)] > 0) { \
|
||||
_ENDSTOP_HIT(AXIS); \
|
||||
stepper.endstop_triggered(_AXIS(AXIS)); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#if ENABLED(G38_PROBE_TARGET) && PIN_EXISTS(Z_MIN_PROBE) && !(CORE_IS_XY || CORE_IS_XZ)
|
||||
// If G38 command is active check Z_MIN_PROBE for ALL movement
|
||||
if (G38_move) {
|
||||
UPDATE_ENDSTOP_BIT(Z, MIN_PROBE);
|
||||
if (TEST_ENDSTOP(_ENDSTOP(Z, MIN_PROBE))) {
|
||||
if (stepper.current_block->steps[_AXIS(X)] > 0) { _ENDSTOP_HIT(X); stepper.endstop_triggered(_AXIS(X)); }
|
||||
else if (stepper.current_block->steps[_AXIS(Y)] > 0) { _ENDSTOP_HIT(Y); stepper.endstop_triggered(_AXIS(Y)); }
|
||||
else if (stepper.current_block->steps[_AXIS(Z)] > 0) { _ENDSTOP_HIT(Z); stepper.endstop_triggered(_AXIS(Z)); }
|
||||
G38_endstop_hit = true;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Define conditions for checking endstops
|
||||
*/
|
||||
|
||||
#if IS_CORE
|
||||
#define S_(N) stepper.current_block->steps[CORE_AXIS_##N]
|
||||
#define D_(N) stepper.motor_direction(CORE_AXIS_##N)
|
||||
#endif
|
||||
|
||||
#if CORE_IS_XY || CORE_IS_XZ
|
||||
/**
|
||||
* Head direction in -X axis for CoreXY and CoreXZ bots.
|
||||
*
|
||||
* If steps differ, both axes are moving.
|
||||
* If DeltaA == -DeltaB, the movement is only in the 2nd axis (Y or Z, handled below)
|
||||
* If DeltaA == DeltaB, the movement is only in the 1st axis (X)
|
||||
*/
|
||||
#if ENABLED(COREXY) || ENABLED(COREXZ)
|
||||
#define X_CMP ==
|
||||
#else
|
||||
#define X_CMP !=
|
||||
#endif
|
||||
#define X_MOVE_TEST ( S_(1) != S_(2) || (S_(1) > 0 && D_(1) X_CMP D_(2)) )
|
||||
#define X_AXIS_HEAD X_HEAD
|
||||
#else
|
||||
#define X_MOVE_TEST stepper.current_block->steps[X_AXIS] > 0
|
||||
#define X_AXIS_HEAD X_AXIS
|
||||
#endif
|
||||
|
||||
#if CORE_IS_XY || CORE_IS_YZ
|
||||
/**
|
||||
* Head direction in -Y axis for CoreXY / CoreYZ bots.
|
||||
*
|
||||
* If steps differ, both axes are moving
|
||||
* If DeltaA == DeltaB, the movement is only in the 1st axis (X or Y)
|
||||
* If DeltaA == -DeltaB, the movement is only in the 2nd axis (Y or Z)
|
||||
*/
|
||||
#if ENABLED(COREYX) || ENABLED(COREYZ)
|
||||
#define Y_CMP ==
|
||||
#else
|
||||
#define Y_CMP !=
|
||||
#endif
|
||||
#define Y_MOVE_TEST ( S_(1) != S_(2) || (S_(1) > 0 && D_(1) Y_CMP D_(2)) )
|
||||
#define Y_AXIS_HEAD Y_HEAD
|
||||
#else
|
||||
#define Y_MOVE_TEST stepper.current_block->steps[Y_AXIS] > 0
|
||||
#define Y_AXIS_HEAD Y_AXIS
|
||||
#endif
|
||||
|
||||
#if CORE_IS_XZ || CORE_IS_YZ
|
||||
/**
|
||||
* Head direction in -Z axis for CoreXZ or CoreYZ bots.
|
||||
*
|
||||
* If steps differ, both axes are moving
|
||||
* If DeltaA == DeltaB, the movement is only in the 1st axis (X or Y, already handled above)
|
||||
* If DeltaA == -DeltaB, the movement is only in the 2nd axis (Z)
|
||||
*/
|
||||
#if ENABLED(COREZX) || ENABLED(COREZY)
|
||||
#define Z_CMP ==
|
||||
#else
|
||||
#define Z_CMP !=
|
||||
#endif
|
||||
#define Z_MOVE_TEST ( S_(1) != S_(2) || (S_(1) > 0 && D_(1) Z_CMP D_(2)) )
|
||||
#define Z_AXIS_HEAD Z_HEAD
|
||||
#else
|
||||
#define Z_MOVE_TEST stepper.current_block->steps[Z_AXIS] > 0
|
||||
#define Z_AXIS_HEAD Z_AXIS
|
||||
#endif
|
||||
|
||||
// With Dual X, endstops are only checked in the homing direction for the active extruder
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
#define E0_ACTIVE stepper.current_block->active_extruder == 0
|
||||
#define X_MIN_TEST ((X_HOME_DIR < 0 && E0_ACTIVE) || (X2_HOME_DIR < 0 && !E0_ACTIVE))
|
||||
#define X_MAX_TEST ((X_HOME_DIR > 0 && E0_ACTIVE) || (X2_HOME_DIR > 0 && !E0_ACTIVE))
|
||||
#else
|
||||
#define X_MIN_TEST true
|
||||
#define X_MAX_TEST true
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Check and update endstops according to conditions
|
||||
*/
|
||||
|
||||
if (X_MOVE_TEST) {
|
||||
if (stepper.motor_direction(X_AXIS_HEAD)) {
|
||||
if (X_MIN_TEST) { // -direction
|
||||
#if HAS_X_MIN
|
||||
UPDATE_ENDSTOP(X, MIN);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else if (X_MAX_TEST) { // +direction
|
||||
#if HAS_X_MAX
|
||||
UPDATE_ENDSTOP(X, MAX);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
if (Y_MOVE_TEST) {
|
||||
if (stepper.motor_direction(Y_AXIS_HEAD)) { // -direction
|
||||
#if HAS_Y_MIN
|
||||
UPDATE_ENDSTOP(Y, MIN);
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if HAS_Y_MAX
|
||||
UPDATE_ENDSTOP(Y, MAX);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
if (Z_MOVE_TEST) {
|
||||
if (stepper.motor_direction(Z_AXIS_HEAD)) { // Z -direction. Gantry down, bed up.
|
||||
#if HAS_Z_MIN
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
|
||||
UPDATE_ENDSTOP_BIT(Z, MIN);
|
||||
#if HAS_Z2_MIN
|
||||
UPDATE_ENDSTOP_BIT(Z2, MIN);
|
||||
#else
|
||||
COPY_BIT(current_endstop_bits, Z_MIN, Z2_MIN);
|
||||
#endif
|
||||
|
||||
test_dual_z_endstops(Z_MIN, Z2_MIN);
|
||||
|
||||
#else // !Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
|
||||
if (z_probe_enabled) UPDATE_ENDSTOP(Z, MIN);
|
||||
#else
|
||||
UPDATE_ENDSTOP(Z, MIN);
|
||||
#endif
|
||||
|
||||
#endif // !Z_DUAL_ENDSTOPS
|
||||
|
||||
#endif // HAS_Z_MIN
|
||||
|
||||
// When closing the gap check the enabled probe
|
||||
#if ENABLED(Z_MIN_PROBE_ENDSTOP)
|
||||
if (z_probe_enabled) {
|
||||
UPDATE_ENDSTOP(Z, MIN_PROBE);
|
||||
if (TEST_ENDSTOP(Z_MIN_PROBE)) SBI(endstop_hit_bits, Z_MIN_PROBE);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else { // Z +direction. Gantry up, bed down.
|
||||
#if HAS_Z_MAX
|
||||
|
||||
// Check both Z dual endstops
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
|
||||
UPDATE_ENDSTOP_BIT(Z, MAX);
|
||||
#if HAS_Z2_MAX
|
||||
UPDATE_ENDSTOP_BIT(Z2, MAX);
|
||||
#else
|
||||
COPY_BIT(current_endstop_bits, Z_MAX, Z2_MAX);
|
||||
#endif
|
||||
|
||||
test_dual_z_endstops(Z_MAX, Z2_MAX);
|
||||
|
||||
// If this pin is not hijacked for the bed probe
|
||||
// then it belongs to the Z endstop
|
||||
#elif DISABLED(Z_MIN_PROBE_ENDSTOP) || Z_MAX_PIN != Z_MIN_PROBE_PIN
|
||||
|
||||
UPDATE_ENDSTOP(Z, MAX);
|
||||
|
||||
#endif // !Z_MIN_PROBE_PIN...
|
||||
#endif // Z_MAX_PIN
|
||||
}
|
||||
}
|
||||
|
||||
old_endstop_bits = current_endstop_bits;
|
||||
|
||||
} // Endstops::update()
|
||||
@@ -1,102 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* endstops.h - manages endstops
|
||||
*/
|
||||
|
||||
#ifndef ENDSTOPS_H
|
||||
#define ENDSTOPS_H
|
||||
|
||||
#include "enum.h"
|
||||
|
||||
class Endstops {
|
||||
|
||||
public:
|
||||
|
||||
static bool enabled, enabled_globally;
|
||||
static volatile char endstop_hit_bits; // use X_MIN, Y_MIN, Z_MIN and Z_MIN_PROBE as BIT value
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
static uint16_t
|
||||
#else
|
||||
static byte
|
||||
#endif
|
||||
current_endstop_bits, old_endstop_bits;
|
||||
|
||||
Endstops() {};
|
||||
|
||||
/**
|
||||
* Initialize the endstop pins
|
||||
*/
|
||||
void init();
|
||||
|
||||
/**
|
||||
* Update the endstops bits from the pins
|
||||
*/
|
||||
static void update();
|
||||
|
||||
/**
|
||||
* Print an error message reporting the position when the endstops were last hit.
|
||||
*/
|
||||
static void report_state(); //call from somewhere to create an serial error message with the locations the endstops where hit, in case they were triggered
|
||||
|
||||
/**
|
||||
* Report endstop positions in response to M119
|
||||
*/
|
||||
static void M119();
|
||||
|
||||
// Enable / disable endstop checking globally
|
||||
static void enable_globally(bool onoff=true) { enabled_globally = enabled = onoff; }
|
||||
|
||||
// Enable / disable endstop checking
|
||||
static void enable(bool onoff=true) { enabled = onoff; }
|
||||
|
||||
// Disable / Enable endstops based on ENSTOPS_ONLY_FOR_HOMING and global enable
|
||||
static void not_homing() { enabled = enabled_globally; }
|
||||
|
||||
// Clear endstops (i.e., they were hit intentionally) to suppress the report
|
||||
static void hit_on_purpose() { endstop_hit_bits = 0; }
|
||||
|
||||
// Enable / disable endstop z-probe checking
|
||||
#if HAS_BED_PROBE
|
||||
static volatile bool z_probe_enabled;
|
||||
static void enable_z_probe(bool onoff=true) { z_probe_enabled = onoff; }
|
||||
#endif
|
||||
|
||||
private:
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
static void test_dual_z_endstops(const EndstopEnum es1, const EndstopEnum es2);
|
||||
#endif
|
||||
};
|
||||
|
||||
extern Endstops endstops;
|
||||
|
||||
#if HAS_BED_PROBE
|
||||
#define ENDSTOPS_ENABLED (endstops.enabled || endstops.z_probe_enabled)
|
||||
#else
|
||||
#define ENDSTOPS_ENABLED endstops.enabled
|
||||
#endif
|
||||
|
||||
|
||||
#endif // ENDSTOPS_H
|
||||
172
Marlin/enum.h
172
Marlin/enum.h
@@ -1,172 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __ENUM_H__
|
||||
#define __ENUM_H__
|
||||
|
||||
#include "MarlinConfig.h"
|
||||
|
||||
/**
|
||||
* Axis indices as enumerated constants
|
||||
*
|
||||
* Special axis:
|
||||
* - A_AXIS and B_AXIS are used by COREXY printers
|
||||
* - X_HEAD and Y_HEAD is used for systems that don't have a 1:1 relationship
|
||||
* between X_AXIS and X Head movement, like CoreXY bots
|
||||
*/
|
||||
enum AxisEnum {
|
||||
NO_AXIS = -1,
|
||||
X_AXIS = 0,
|
||||
A_AXIS = 0,
|
||||
Y_AXIS = 1,
|
||||
B_AXIS = 1,
|
||||
Z_AXIS = 2,
|
||||
C_AXIS = 2,
|
||||
E_AXIS = 3,
|
||||
X_HEAD = 4,
|
||||
Y_HEAD = 5,
|
||||
Z_HEAD = 6,
|
||||
ALL_AXES = 100
|
||||
};
|
||||
|
||||
#define LOOP_XYZ(VAR) for (uint8_t VAR=X_AXIS; VAR<=Z_AXIS; VAR++)
|
||||
#define LOOP_XYZE(VAR) for (uint8_t VAR=X_AXIS; VAR<=E_AXIS; VAR++)
|
||||
#define LOOP_XYZE_N(VAR) for (uint8_t VAR=X_AXIS; VAR<XYZE_N; VAR++)
|
||||
|
||||
typedef enum {
|
||||
LINEARUNIT_MM,
|
||||
LINEARUNIT_INCH
|
||||
} LinearUnit;
|
||||
|
||||
typedef enum {
|
||||
TEMPUNIT_C,
|
||||
TEMPUNIT_K,
|
||||
TEMPUNIT_F
|
||||
} TempUnit;
|
||||
|
||||
/**
|
||||
* Debug flags
|
||||
* Not yet widely applied
|
||||
*/
|
||||
enum DebugFlags {
|
||||
DEBUG_NONE = 0,
|
||||
DEBUG_ECHO = _BV(0), ///< Echo commands in order as they are processed
|
||||
DEBUG_INFO = _BV(1), ///< Print messages for code that has debug output
|
||||
DEBUG_ERRORS = _BV(2), ///< Not implemented
|
||||
DEBUG_DRYRUN = _BV(3), ///< Ignore temperature setting and E movement commands
|
||||
DEBUG_COMMUNICATION = _BV(4), ///< Not implemented
|
||||
DEBUG_LEVELING = _BV(5), ///< Print detailed output for homing and leveling
|
||||
DEBUG_MESH_ADJUST = _BV(6), ///< UBL bed leveling
|
||||
DEBUG_ALL = 0xFF
|
||||
};
|
||||
|
||||
enum EndstopEnum {
|
||||
X_MIN,
|
||||
Y_MIN,
|
||||
Z_MIN,
|
||||
Z_MIN_PROBE,
|
||||
X_MAX,
|
||||
Y_MAX,
|
||||
Z_MAX,
|
||||
Z2_MIN,
|
||||
Z2_MAX
|
||||
};
|
||||
|
||||
#if ENABLED(EMERGENCY_PARSER)
|
||||
enum e_parser_state {
|
||||
state_RESET,
|
||||
state_N,
|
||||
state_M,
|
||||
state_M1,
|
||||
state_M10,
|
||||
state_M108,
|
||||
state_M11,
|
||||
state_M112,
|
||||
state_M4,
|
||||
state_M41,
|
||||
state_M410,
|
||||
state_IGNORE // to '\n'
|
||||
};
|
||||
#endif
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
enum AdvancedPauseMenuResponse {
|
||||
ADVANCED_PAUSE_RESPONSE_WAIT_FOR,
|
||||
ADVANCED_PAUSE_RESPONSE_EXTRUDE_MORE,
|
||||
ADVANCED_PAUSE_RESPONSE_RESUME_PRINT
|
||||
};
|
||||
|
||||
#if ENABLED(ULTIPANEL)
|
||||
enum AdvancedPauseMessage {
|
||||
ADVANCED_PAUSE_MESSAGE_INIT,
|
||||
ADVANCED_PAUSE_MESSAGE_UNLOAD,
|
||||
ADVANCED_PAUSE_MESSAGE_INSERT,
|
||||
ADVANCED_PAUSE_MESSAGE_LOAD,
|
||||
ADVANCED_PAUSE_MESSAGE_EXTRUDE,
|
||||
ADVANCED_PAUSE_MESSAGE_OPTION,
|
||||
ADVANCED_PAUSE_MESSAGE_RESUME,
|
||||
ADVANCED_PAUSE_MESSAGE_STATUS,
|
||||
ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE,
|
||||
ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* States for managing Marlin and host communication
|
||||
* Marlin sends messages if blocked or busy
|
||||
*/
|
||||
#if ENABLED(HOST_KEEPALIVE_FEATURE)
|
||||
enum MarlinBusyState {
|
||||
NOT_BUSY, // Not in a handler
|
||||
IN_HANDLER, // Processing a GCode
|
||||
IN_PROCESS, // Known to be blocking command input (as in G29)
|
||||
PAUSED_FOR_USER, // Blocking pending any input
|
||||
PAUSED_FOR_INPUT // Blocking pending text input (concept)
|
||||
};
|
||||
#endif
|
||||
|
||||
/**
|
||||
* SD Card
|
||||
*/
|
||||
enum LsAction { LS_SerialPrint, LS_Count, LS_GetFilename };
|
||||
|
||||
/**
|
||||
* Ultra LCD
|
||||
*/
|
||||
enum LCDViewAction {
|
||||
LCDVIEW_NONE,
|
||||
LCDVIEW_REDRAW_NOW,
|
||||
LCDVIEW_CALL_REDRAW_NEXT,
|
||||
LCDVIEW_CLEAR_CALL_REDRAW,
|
||||
LCDVIEW_CALL_NO_REDRAW
|
||||
};
|
||||
|
||||
#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
|
||||
enum DualXMode {
|
||||
DXC_FULL_CONTROL_MODE,
|
||||
DXC_AUTO_PARK_MODE,
|
||||
DXC_DUPLICATION_MODE
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif // __ENUM_H__
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,103 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Custom Bitmap for splashscreen
|
||||
*
|
||||
* You may use one of the following tools to generate the C++ bitmap array from
|
||||
* a black and white image:
|
||||
*
|
||||
* - http://www.marlinfw.org/tools/u8glib/converter.html
|
||||
* - http://www.digole.com/tools/PicturetoC_Hex_converter.php
|
||||
*/
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
#define CUSTOM_BOOTSCREEN_TIMEOUT 2500
|
||||
#define CUSTOM_BOOTSCREEN_BMPWIDTH 63
|
||||
#define CUSTOM_BOOTSCREEN_BMPHEIGHT 64
|
||||
|
||||
const unsigned char custom_start_bmp[512] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0xFF, 0xFF, 0xC0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFC, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00,
|
||||
0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x0F, 0x07, 0x87, 0xFF, 0xFF, 0xE0, 0x00,
|
||||
0x00, 0x1F, 0x8F, 0xC7, 0xFF, 0xFF, 0xF1, 0x00,
|
||||
0x01, 0x1F, 0x8F, 0xC7, 0xFF, 0xFF, 0xF1, 0x80,
|
||||
0x03, 0x1F, 0x8F, 0xC7, 0xFF, 0xFF, 0xF1, 0x80,
|
||||
0x07, 0x1F, 0x8F, 0xC7, 0xFF, 0xFF, 0xE1, 0xC0,
|
||||
0x07, 0x1F, 0x8F, 0xC7, 0xC0, 0x00, 0x01, 0xE0,
|
||||
0x0F, 0x1F, 0x8F, 0xC7, 0xC0, 0x00, 0x01, 0xE0,
|
||||
0x0F, 0x1F, 0x8F, 0xC7, 0xC0, 0x00, 0x01, 0xF0,
|
||||
0x1F, 0x1F, 0x8F, 0xC7, 0xC0, 0x00, 0x01, 0xF0,
|
||||
0x1F, 0x1F, 0x8F, 0xC7, 0xFF, 0xFF, 0xE1, 0xF0,
|
||||
0x3F, 0x1F, 0x8F, 0xC7, 0xFF, 0xFF, 0xF1, 0xF8,
|
||||
0x3F, 0x1F, 0x8F, 0xC7, 0xFF, 0xFF, 0xF1, 0xF8,
|
||||
0x3F, 0x1F, 0x8F, 0xC7, 0xFF, 0xFF, 0xF1, 0xF8,
|
||||
0x3F, 0x1F, 0x8F, 0xC7, 0xFF, 0xFF, 0xE1, 0xF8,
|
||||
0x7F, 0x1F, 0x8F, 0xC7, 0xC0, 0x00, 0x01, 0xFC,
|
||||
0x7F, 0x1F, 0x8F, 0xC7, 0xC0, 0x00, 0x01, 0xFC,
|
||||
0x7F, 0x1F, 0x8F, 0xC7, 0xC0, 0x00, 0x01, 0xFC,
|
||||
0x7F, 0x1F, 0x8F, 0xC7, 0xC0, 0x00, 0x01, 0xFC,
|
||||
0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
|
||||
0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
|
||||
0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
|
||||
0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
|
||||
0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
|
||||
0x7F, 0x00, 0x00, 0x07, 0xC7, 0xE3, 0xF1, 0xFC,
|
||||
0x7F, 0x00, 0x00, 0x07, 0xC7, 0xE3, 0xF1, 0xFC,
|
||||
0x7F, 0x00, 0x00, 0x07, 0xC7, 0xE3, 0xF1, 0xFC,
|
||||
0x3F, 0x0F, 0xFF, 0xFF, 0xC7, 0xE3, 0xF1, 0xF8,
|
||||
0x3F, 0x1F, 0xFF, 0xFF, 0xC7, 0xE3, 0xF1, 0xF8,
|
||||
0x3F, 0x1F, 0xFF, 0xFF, 0xC7, 0xE3, 0xF1, 0xF8,
|
||||
0x3F, 0x1F, 0xFF, 0xFF, 0xC7, 0xE3, 0xF1, 0xF8,
|
||||
0x1F, 0x1F, 0xFF, 0xFF, 0xC7, 0xE3, 0xF1, 0xF0,
|
||||
0x1F, 0x0F, 0xFF, 0xFF, 0xC7, 0xE3, 0xF1, 0xF0,
|
||||
0x1F, 0x00, 0x00, 0x07, 0xC7, 0xE3, 0xF1, 0xE0,
|
||||
0x0F, 0x00, 0x00, 0x07, 0xC7, 0xE3, 0xF1, 0xE0,
|
||||
0x0F, 0x00, 0x00, 0x07, 0xC7, 0xE3, 0xF1, 0xC0,
|
||||
0x07, 0x0F, 0xFF, 0xFF, 0xC7, 0xE3, 0xF1, 0xC0,
|
||||
0x03, 0x1F, 0xFF, 0xFF, 0xC7, 0xE3, 0xF1, 0x80,
|
||||
0x03, 0x1F, 0xFF, 0xFF, 0xC7, 0xE3, 0xF1, 0x00,
|
||||
0x01, 0x1F, 0xFF, 0xFF, 0xC7, 0xE3, 0xF0, 0x00,
|
||||
0x00, 0x1F, 0xFF, 0xFF, 0xC7, 0xE3, 0xF0, 0x00,
|
||||
0x00, 0x0F, 0xFF, 0xFF, 0xC3, 0xC1, 0xE0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00,
|
||||
0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00,
|
||||
0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00,
|
||||
0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFC, 0x00, 0x00,
|
||||
0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x07, 0xFF, 0xFF, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,15 +0,0 @@
|
||||
# Example Configuration for BQ [Hephestos 2](http://www.bq.com/uk/hephestos-2)
|
||||
This configuration file is based on the original configuration file shipped with the heavily modified Marlin fork by BQ. The original firmware and configuration file can be found at [BQ Github repository](https://github.com/bq/Marlin).
|
||||
|
||||
NOTE: The look and feel of the Hephestos 2 while navigating the LCD menu will change by using the original Marlin firmware.
|
||||
|
||||
## Changelog
|
||||
* 2016/03/01 - Initial release
|
||||
* 2016/03/21 - Activated 4-point auto leveling by default
|
||||
Updated miscellaneous z-probe values
|
||||
* 2016/06/21 - Disabled hot bed related options
|
||||
Activated software endstops
|
||||
SD printing now disables the heater when finished
|
||||
* 2016/07/13 - Update the `DEFAULT_AXIS_STEPS_PER_UNIT` for the Z axis
|
||||
Increased the `DEFAULT_XYJERK`
|
||||
* 2016/12/13 - Configuration updated.
|
||||
@@ -1,103 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Custom Bitmap for splashscreen
|
||||
*
|
||||
* You may use one of the following tools to generate the C++ bitmap array from
|
||||
* a black and white image:
|
||||
*
|
||||
* - http://www.marlinfw.org/tools/u8glib/converter.html
|
||||
* - http://www.digole.com/tools/PicturetoC_Hex_converter.php
|
||||
*/
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
#define CUSTOM_BOOTSCREEN_TIMEOUT 2500
|
||||
#define CUSTOM_BOOTSCREEN_BMPWIDTH 62
|
||||
#define CUSTOM_BOOTSCREEN_BMPHEIGHT 64
|
||||
|
||||
const unsigned char custom_start_bmp[512] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x03, 0xC0, 0x0F, 0xF0, 0x07, 0x80, 0x00,
|
||||
0x00, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0xC0, 0x00,
|
||||
0x00, 0x0F, 0xF0, 0x03, 0xC0, 0x1F, 0xE0, 0x00,
|
||||
0x00, 0x1F, 0xF8, 0x00, 0x00, 0x3F, 0xF0, 0x00,
|
||||
0x00, 0x1F, 0xF8, 0x00, 0x00, 0x3F, 0xF0, 0x00,
|
||||
0x00, 0x1F, 0xF8, 0x00, 0x00, 0x3F, 0xF0, 0x00,
|
||||
0x00, 0x1F, 0xF8, 0x00, 0x00, 0x3F, 0xF0, 0x00,
|
||||
0x00, 0x1F, 0xF8, 0x00, 0x00, 0x3F, 0xF0, 0x00,
|
||||
0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00,
|
||||
0x00, 0x07, 0xE0, 0x00, 0x00, 0x0F, 0xC0, 0x00,
|
||||
0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, 0x80, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFC,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFC,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x1E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
||||
0x3F, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
||||
0x7F, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0xF7, 0xC0, 0x1F, 0x80,
|
||||
0xFF, 0xC0, 0x00, 0x00, 0xFF, 0xF0, 0x7F, 0xC0,
|
||||
0x7F, 0x80, 0x00, 0x00, 0xFF, 0xF8, 0xFF, 0xE0,
|
||||
0x3F, 0x00, 0x00, 0x00, 0xFC, 0xF8, 0xF0, 0xF8,
|
||||
0x1E, 0x00, 0x00, 0x00, 0xF8, 0x7D, 0xE0, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0xF0, 0x3D, 0xE0, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0xF0, 0x3D, 0xE0, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0xF0, 0x3D, 0xE0, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0xF0, 0x3D, 0xE0, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0xF0, 0x3D, 0xE0, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0xF0, 0x3D, 0xE0, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0xF8, 0x79, 0xF0, 0xF8,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xF8, 0xFF, 0xF8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x7F, 0xF8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x3F, 0xF8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0E, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,108 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Custom Bitmap for splashscreen
|
||||
*
|
||||
* You may use one of the following tools to generate the C++ bitmap array from
|
||||
* a black and white image:
|
||||
*
|
||||
* - http://www.marlinfw.org/tools/u8glib/converter.html
|
||||
* - http://www.digole.com/tools/PicturetoC_Hex_converter.php
|
||||
*/
|
||||
//custom screen can be up to 112 wide and 64 high
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
#define CUSTOM_BOOTSCREEN_TIMEOUT 2500
|
||||
#define CUSTOM_BOOTSCREEN_BMPWIDTH 112
|
||||
#define CUSTOM_BOOTSCREEN_BMPHEIGHT 64
|
||||
|
||||
// Width: 112, Height: 64
|
||||
const unsigned char custom_start_bmp[896] PROGMEM = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x00, 0x00, 0x01, 0xf9, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x01, 0xc0, 0x01,
|
||||
0x80, 0x00, 0x00, 0x06, 0x4d, 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, 0x01, 0xc0, 0x01,
|
||||
0x80, 0x00, 0x00, 0x0c, 0x26, 0x00, 0x0e, 0xe7, 0x39, 0xd3, 0xe1, 0xf3, 0xe7, 0xc1,
|
||||
0x80, 0x00, 0x00, 0x19, 0x12, 0x00, 0x0f, 0xe7, 0x39, 0xf7, 0xf3, 0xfb, 0xef, 0xe1,
|
||||
0x80, 0x00, 0x00, 0x37, 0xce, 0x00, 0x0e, 0xe7, 0x01, 0xf7, 0x73, 0xb9, 0xce, 0xe1,
|
||||
0x80, 0x00, 0x00, 0x64, 0x66, 0x00, 0x0e, 0xe7, 0x01, 0xc7, 0xf3, 0xb9, 0xcf, 0xe1,
|
||||
0x80, 0x00, 0x00, 0x4b, 0xa6, 0x00, 0x0e, 0xe7, 0x39, 0xc7, 0xf0, 0xf9, 0xcf, 0xe1,
|
||||
0x80, 0x00, 0x00, 0xca, 0xb4, 0x00, 0x0f, 0xe7, 0x39, 0xc7, 0x03, 0xf9, 0xce, 0x01,
|
||||
0x80, 0x00, 0x00, 0xcd, 0xa4, 0x00, 0x06, 0xe7, 0x39, 0xc7, 0x73, 0xb9, 0xce, 0xe1,
|
||||
0x80, 0x00, 0x03, 0xa6, 0x6c, 0x00, 0x00, 0xe7, 0x39, 0xc7, 0x73, 0xb9, 0xce, 0xe1,
|
||||
0x80, 0x00, 0xff, 0x13, 0xd8, 0x00, 0x0e, 0xe3, 0xf1, 0xc7, 0xf3, 0xf9, 0xef, 0xe1,
|
||||
0x80, 0x01, 0x21, 0x88, 0x18, 0x00, 0x0f, 0xe1, 0xe1, 0xc3, 0xe1, 0xb9, 0xe7, 0xc1,
|
||||
0x80, 0x06, 0x61, 0x16, 0x30, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x04, 0x41, 0x23, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x04, 0xfe, 0x41, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x0b, 0x86, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x80, 0x00, 0x00, 0x01,
|
||||
0x80, 0x1e, 0x01, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x80, 0x00, 0x00, 0x01,
|
||||
0x80, 0x1c, 0x07, 0x22, 0x00, 0x00, 0x07, 0xbc, 0x3f, 0x9f, 0x81, 0xf8, 0xf1, 0xe1,
|
||||
0x80, 0x08, 0x1f, 0xe2, 0x00, 0x00, 0x0f, 0xfc, 0x3f, 0xbf, 0x87, 0xfe, 0x71, 0xc1,
|
||||
0x80, 0x00, 0x33, 0x62, 0x00, 0x00, 0x0f, 0x3c, 0x3d, 0xb7, 0x87, 0x9e, 0x7b, 0xc1,
|
||||
0x80, 0x00, 0xc2, 0x22, 0x00, 0x00, 0x0f, 0x3c, 0x3d, 0xb7, 0x87, 0x9e, 0x7b, 0xc1,
|
||||
0x80, 0x00, 0xc2, 0x3e, 0x00, 0x00, 0x0f, 0x3c, 0x3d, 0xf7, 0x80, 0x7e, 0x3b, 0x81,
|
||||
0x80, 0x01, 0xe6, 0x1e, 0x00, 0x00, 0x0f, 0x3c, 0x3d, 0xf7, 0x83, 0xfe, 0x3f, 0x81,
|
||||
0x80, 0x01, 0x3c, 0x12, 0x00, 0x00, 0x0f, 0x3c, 0x3d, 0xf7, 0x87, 0x9e, 0x3b, 0x81,
|
||||
0x80, 0x01, 0x1c, 0x26, 0x00, 0x00, 0x0f, 0xfc, 0x3d, 0xf7, 0x87, 0x9e, 0x7b, 0xc1,
|
||||
0x80, 0x01, 0x70, 0x64, 0x00, 0x00, 0x07, 0xbc, 0x3c, 0xe7, 0x87, 0x9e, 0x7b, 0xc1,
|
||||
0x80, 0x03, 0xc0, 0x58, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0xe7, 0x87, 0xfe, 0x71, 0xc1,
|
||||
0x80, 0x0d, 0x80, 0xf0, 0x00, 0x00, 0x0f, 0x3c, 0x3c, 0xe7, 0x83, 0xde, 0xf1, 0xe1,
|
||||
0x80, 0x1a, 0x00, 0xe0, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x26, 0x00, 0x40, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
|
||||
0x81, 0x06, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x03, 0xc0, 0x20, 0x10, 0x00, 0x01,
|
||||
0x83, 0x24, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92, 0x02, 0x20, 0x00, 0x10, 0x00, 0x01,
|
||||
0x02, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x02, 0x23, 0x27, 0x39, 0x8c, 0xe1,
|
||||
0x06, 0x38, 0x00, 0x00, 0x00, 0x00, 0x03, 0x11, 0x03, 0xc2, 0x24, 0x92, 0x49, 0x01,
|
||||
0x04, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x02, 0x02, 0x24, 0x93, 0xc8, 0xc1,
|
||||
0x0d, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92, 0x02, 0x02, 0x24, 0x92, 0x08, 0x21,
|
||||
0x08, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x02, 0x02, 0x24, 0x99, 0xc9, 0xc1,
|
||||
0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
|
||||
0x10, 0x30, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x0f, 0xe0, 0x0f, 0x00, 0x01,
|
||||
0x30, 0x20, 0x00, 0x37, 0x00, 0x00, 0x00, 0x12, 0x24, 0x08, 0x10, 0x09, 0x00, 0x01,
|
||||
0x20, 0x30, 0x00, 0x6d, 0x80, 0x00, 0x00, 0x12, 0x24, 0x09, 0x88, 0x09, 0x00, 0x01,
|
||||
0x10, 0x18, 0x1f, 0x60, 0xc0, 0x00, 0x00, 0x12, 0x24, 0x09, 0x48, 0x09, 0x00, 0x01,
|
||||
0x30, 0x0c, 0x39, 0xe0, 0x60, 0x00, 0x00, 0x12, 0x24, 0x09, 0x90, 0x09, 0x00, 0x01,
|
||||
0x30, 0x07, 0x90, 0x70, 0x60, 0x00, 0x00, 0x12, 0x24, 0x08, 0x60, 0x09, 0x00, 0x01,
|
||||
0x10, 0x16, 0xf0, 0x18, 0x20, 0x00, 0x00, 0x12, 0x24, 0x08, 0x10, 0x09, 0x00, 0x01,
|
||||
0x1a, 0x10, 0x60, 0x08, 0x30, 0x00, 0x00, 0x12, 0x24, 0x09, 0xc8, 0x09, 0x00, 0x01,
|
||||
0x0b, 0x09, 0x80, 0x00, 0x30, 0x00, 0x00, 0x12, 0x24, 0x09, 0x24, 0x09, 0x00, 0x01,
|
||||
0x0e, 0x07, 0x80, 0x00, 0x10, 0x00, 0x00, 0x13, 0xe4, 0x89, 0xc4, 0x89, 0xf9, 0x01,
|
||||
0x06, 0x1e, 0x40, 0x10, 0x10, 0x00, 0x00, 0x10, 0x05, 0xc8, 0x09, 0xc8, 0x0b, 0x81,
|
||||
0x06, 0x00, 0x40, 0x20, 0x10, 0x00, 0x00, 0x0f, 0xf8, 0x8f, 0xf0, 0x8f, 0xf9, 0x01,
|
||||
0x03, 0x80, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x01, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
241
Marlin/fastio.h
241
Marlin/fastio.h
@@ -1,241 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Fast I/O Routines
|
||||
* Use direct port manipulation to save scads of processor time.
|
||||
* Contributed by Triffid_Hunter. Modified by Kliment and the Marlin team.
|
||||
*/
|
||||
|
||||
#ifndef _FASTIO_ARDUINO_H
|
||||
#define _FASTIO_ARDUINO_H
|
||||
|
||||
#include <avr/io.h>
|
||||
|
||||
/**
|
||||
* Enable this option to use Teensy++ 2.0 assignments for AT90USB processors.
|
||||
*/
|
||||
//#define AT90USBxx_TEENSYPP_ASSIGNMENTS
|
||||
|
||||
/**
|
||||
* Include Ports and Functions
|
||||
*/
|
||||
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__)
|
||||
#include "fastio_168.h"
|
||||
#elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__)
|
||||
#include "fastio_644.h"
|
||||
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
||||
#include "fastio_1280.h"
|
||||
#elif defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__)
|
||||
#ifdef AT90USBxx_TEENSYPP_ASSIGNMENTS
|
||||
#include "fastio_AT90USB-Teensy.h"
|
||||
#else
|
||||
#include "fastio_AT90USB-Marlin.h"
|
||||
#endif
|
||||
#elif defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
|
||||
#include "fastio_1281.h"
|
||||
#else
|
||||
#error "Pins for this chip not defined in Arduino.h! If you have a working pins definition, please contribute!"
|
||||
#endif
|
||||
|
||||
#ifndef _BV
|
||||
#define _BV(PIN) (1UL << PIN)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Magic I/O routines
|
||||
*
|
||||
* Now you can simply SET_OUTPUT(PIN); WRITE(PIN, HIGH); WRITE(PIN, LOW);
|
||||
*
|
||||
* Why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
|
||||
*/
|
||||
|
||||
#define _READ(IO) ((bool)(DIO ## IO ## _RPORT & _BV(DIO ## IO ## _PIN)))
|
||||
|
||||
// On some boards pins > 0x100 are used. These are not converted to atomic actions. A critical section is needed.
|
||||
|
||||
#define _WRITE_NC(IO, v) do { if (v) {DIO ## IO ## _WPORT |= _BV(DIO ## IO ## _PIN); } else {DIO ## IO ## _WPORT &= ~_BV(DIO ## IO ## _PIN); }; } while (0)
|
||||
|
||||
#define _WRITE_C(IO, v) do { if (v) { \
|
||||
CRITICAL_SECTION_START; \
|
||||
{DIO ## IO ## _WPORT |= _BV(DIO ## IO ## _PIN); } \
|
||||
CRITICAL_SECTION_END; \
|
||||
} \
|
||||
else { \
|
||||
CRITICAL_SECTION_START; \
|
||||
{DIO ## IO ## _WPORT &= ~_BV(DIO ## IO ## _PIN); } \
|
||||
CRITICAL_SECTION_END; \
|
||||
} \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#define _WRITE(IO, v) do { if (&(DIO ## IO ## _RPORT) >= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
|
||||
|
||||
#define _TOGGLE(IO) do {DIO ## IO ## _RPORT ^= _BV(DIO ## IO ## _PIN); } while (0)
|
||||
|
||||
#define _SET_INPUT(IO) do {DIO ## IO ## _DDR &= ~_BV(DIO ## IO ## _PIN); } while (0)
|
||||
#define _SET_OUTPUT(IO) do {DIO ## IO ## _DDR |= _BV(DIO ## IO ## _PIN); } while (0)
|
||||
|
||||
#define _GET_INPUT(IO) ((DIO ## IO ## _DDR & _BV(DIO ## IO ## _PIN)) == 0)
|
||||
#define _GET_OUTPUT(IO) ((DIO ## IO ## _DDR & _BV(DIO ## IO ## _PIN)) != 0)
|
||||
#define _GET_TIMER(IO) (DIO ## IO ## _PWM)
|
||||
|
||||
#define READ(IO) _READ(IO)
|
||||
#define WRITE(IO,V) _WRITE(IO,V)
|
||||
#define TOGGLE(IO) _TOGGLE(IO)
|
||||
|
||||
#define SET_INPUT(IO) _SET_INPUT(IO)
|
||||
#define SET_INPUT_PULLUP(IO) do{ _SET_INPUT(IO); _WRITE(IO, HIGH); }while(0)
|
||||
#define SET_OUTPUT(IO) _SET_OUTPUT(IO)
|
||||
|
||||
#define GET_INPUT(IO) _GET_INPUT(IO)
|
||||
#define GET_OUTPUT(IO) _GET_OUTPUT(IO)
|
||||
#define GET_TIMER(IO) _GET_TIMER(IO)
|
||||
|
||||
#define OUT_WRITE(IO, v) do{ SET_OUTPUT(IO); WRITE(IO, v); }while(0)
|
||||
|
||||
/**
|
||||
* Timer and Interrupt Control
|
||||
*/
|
||||
|
||||
// Waveform Generation Modes
|
||||
typedef enum {
|
||||
WGM_NORMAL, // 0
|
||||
WGM_PWM_PC_8, // 1
|
||||
WGM_PWM_PC_9, // 2
|
||||
WGM_PWM_PC_10, // 3
|
||||
WGM_CTC_OCRnA, // 4 COM OCnx
|
||||
WGM_FAST_PWM_8, // 5
|
||||
WGM_FAST_PWM_9, // 6
|
||||
WGM_FAST_PWM_10, // 7
|
||||
WGM_PWM_PC_FC_ICRn, // 8
|
||||
WGM_PWM_PC_FC_OCRnA, // 9 COM OCnA
|
||||
WGM_PWM_PC_ICRn, // 10
|
||||
WGM_PWM_PC_OCRnA, // 11 COM OCnA
|
||||
WGM_CTC_ICRn, // 12 COM OCnx
|
||||
WGM_reserved, // 13
|
||||
WGM_FAST_PWM_ICRn, // 14 COM OCnA
|
||||
WGM_FAST_PWM_OCRnA // 15 COM OCnA
|
||||
} WaveGenMode;
|
||||
|
||||
// Compare Modes
|
||||
typedef enum {
|
||||
COM_NORMAL, // 0
|
||||
COM_TOGGLE, // 1 Non-PWM: OCnx ... Both PWM (WGM 9,11,14,15): OCnA only ... else NORMAL
|
||||
COM_CLEAR_SET, // 2 Non-PWM: OCnx ... Fast PWM: OCnx/Bottom ... PF-FC: OCnx Up/Down
|
||||
COM_SET_CLEAR // 3 Non-PWM: OCnx ... Fast PWM: OCnx/Bottom ... PF-FC: OCnx Up/Down
|
||||
} CompareMode;
|
||||
|
||||
// Clock Sources
|
||||
typedef enum {
|
||||
CS_NONE, // 0
|
||||
CS_PRESCALER_1, // 1
|
||||
CS_PRESCALER_8, // 2
|
||||
CS_PRESCALER_64, // 3
|
||||
CS_PRESCALER_256, // 4
|
||||
CS_PRESCALER_1024, // 5
|
||||
CS_EXT_FALLING, // 6
|
||||
CS_EXT_RISING // 7
|
||||
} ClockSource;
|
||||
|
||||
// Clock Sources (Timer 2 only)
|
||||
typedef enum {
|
||||
CS2_NONE, // 0
|
||||
CS2_PRESCALER_1, // 1
|
||||
CS2_PRESCALER_8, // 2
|
||||
CS2_PRESCALER_32, // 3
|
||||
CS2_PRESCALER_64, // 4
|
||||
CS2_PRESCALER_128, // 5
|
||||
CS2_PRESCALER_256, // 6
|
||||
CS2_PRESCALER_1024 // 7
|
||||
} ClockSource2;
|
||||
|
||||
// Get interrupt bits in an orderly way
|
||||
#define GET_WGM(T) (((TCCR##T##A >> WGM##T##0) & 0x3) | ((TCCR##T##B >> WGM##T##2 << 2) & 0xC))
|
||||
#define GET_CS(T) ((TCCR##T##B >> CS##T##0) & 0x7)
|
||||
#define GET_COM(T,Q) ((TCCR##T##Q >> COM##T##Q##0) & 0x3)
|
||||
#define GET_COMA(T) GET_COM(T,A)
|
||||
#define GET_COMB(T) GET_COM(T,B)
|
||||
#define GET_COMC(T) GET_COM(T,C)
|
||||
#define GET_ICNC(T) (!!(TCCR##T##B & _BV(ICNC##T)))
|
||||
#define GET_ICES(T) (!!(TCCR##T##B & _BV(ICES##T)))
|
||||
#define GET_FOC(T,Q) (!!(TCCR##T##C & _BV(FOC##T##Q)))
|
||||
#define GET_FOCA(T) GET_FOC(T,A)
|
||||
#define GET_FOCB(T) GET_FOC(T,B)
|
||||
#define GET_FOCC(T) GET_FOC(T,C)
|
||||
|
||||
// Set Wave Generation Mode bits
|
||||
#define _SET_WGM(T,V) do{ \
|
||||
TCCR##T##A = (TCCR##T##A & ~(0x3 << WGM##T##0)) | (( int(V) & 0x3) << WGM##T##0); \
|
||||
TCCR##T##B = (TCCR##T##B & ~(0x3 << WGM##T##2)) | (((int(V) >> 2) & 0x3) << WGM##T##2); \
|
||||
}while(0)
|
||||
#define SET_WGM(T,V) _SET_WGM(T,WGM_##V)
|
||||
|
||||
// Set Clock Select bits
|
||||
#define _SET_CS(T,V) (TCCR##T##B = (TCCR##T##B & ~(0x7 << CS##T##0)) | ((int(V) & 0x7) << CS##T##0))
|
||||
#define _SET_CS0(V) _SET_CS(0,V)
|
||||
#define _SET_CS1(V) _SET_CS(1,V)
|
||||
#ifdef TCCR2
|
||||
#define _SET_CS2(V) (TCCR2 = (TCCR2 & ~(0x7 << CS20)) | (int(V) << CS20))
|
||||
#else
|
||||
#define _SET_CS2(V) _SET_CS(2,V)
|
||||
#endif
|
||||
#define _SET_CS3(V) _SET_CS(3,V)
|
||||
#define _SET_CS4(V) _SET_CS(4,V)
|
||||
#define _SET_CS5(V) _SET_CS(5,V)
|
||||
#define SET_CS0(V) _SET_CS0(CS_##V)
|
||||
#define SET_CS1(V) _SET_CS1(CS_##V)
|
||||
#ifdef TCCR2
|
||||
#define SET_CS2(V) _SET_CS2(CS2_##V)
|
||||
#else
|
||||
#define SET_CS2(V) _SET_CS2(CS_##V)
|
||||
#endif
|
||||
#define SET_CS3(V) _SET_CS3(CS_##V)
|
||||
#define SET_CS4(V) _SET_CS4(CS_##V)
|
||||
#define SET_CS5(V) _SET_CS5(CS_##V)
|
||||
#define SET_CS(T,V) SET_CS##T(V)
|
||||
|
||||
// Set Compare Mode bits
|
||||
#define _SET_COM(T,Q,V) (TCCR##T##Q = (TCCR##T##Q & ~(0x3 << COM##T##Q##0)) | (int(V) << COM##T##Q##0))
|
||||
#define _SET_COMA(T,V) _SET_COM(T,A,V)
|
||||
#define _SET_COMB(T,V) _SET_COM(T,B,V)
|
||||
#define _SET_COMC(T,V) _SET_COM(T,C,V)
|
||||
#define _SET_COMS(T,V1,V2,V3) do{ _SET_COMA(T,V1); _SET_COMB(T,V2); _SET_COMC(T,V3); }while(0)
|
||||
#define SET_COM(T,Q,V) _SET_COM(T,Q,COM_##V)
|
||||
#define SET_COMA(T,V) SET_COM(T,A,V)
|
||||
#define SET_COMB(T,V) SET_COM(T,B,V)
|
||||
#define SET_COMC(T,V) SET_COM(T,C,V)
|
||||
#define SET_COMS(T,V1,V2,V3) do{ SET_COMA(T,V1); SET_COMB(T,V2); SET_COMC(T,V3); }while(0)
|
||||
|
||||
// Set Noise Canceler bit
|
||||
#define SET_ICNC(T,V) (TCCR##T##B = (V) ? TCCR##T##B | _BV(ICNC##T) : TCCR##T##B & ~_BV(ICNC##T))
|
||||
|
||||
// Set Input Capture Edge Select bit
|
||||
#define SET_ICES(T,V) (TCCR##T##B = (V) ? TCCR##T##B | _BV(ICES##T) : TCCR##T##B & ~_BV(ICES##T))
|
||||
|
||||
// Set Force Output Compare bit
|
||||
#define SET_FOC(T,Q,V) (TCCR##T##C = (V) ? TCCR##T##C | _BV(FOC##T##Q) : TCCR##T##C & ~_BV(FOC##T##Q))
|
||||
#define SET_FOCA(T,V) SET_FOC(T,A,V)
|
||||
#define SET_FOCB(T,V) SET_FOC(T,B,V)
|
||||
#define SET_FOCC(T,V) SET_FOC(T,C,V)
|
||||
|
||||
#endif // _FASTIO_ARDUINO_H
|
||||
@@ -1,681 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Pin mapping (Marlin) for AT90USB646, 647, 1286, and 1287
|
||||
*
|
||||
* AT90USB 51 50 49 48 47 46 45 44 10 11 12 13 14 15 16 17 35 36 37 38 39 40 41 42 25 26 27 28 29 30 31 32 33 34 43 09 18 19 01 02 61 60 59 58 57 56 55 54
|
||||
* Teensy 28 29 30 31 32 33 34 35 20 21 22 23 24 25 26 27 10 11 12 13 14 15 16 17 00 01 02 03 04 05 06 07 08 09(46*47)36 37 18 19 38 39 40 41 42 43 44 45
|
||||
* Port A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7
|
||||
* > Marlin 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
||||
* The pins 46 and 47 are not supported by Teensyduino, but are supported below.
|
||||
*/
|
||||
|
||||
#ifndef _FASTIO_AT90USB
|
||||
#define _FASTIO_AT90USB
|
||||
|
||||
#include "fastio.h"
|
||||
|
||||
// change for your board
|
||||
#define DEBUG_LED DIO31 /* led D5 red */
|
||||
|
||||
// SPI
|
||||
#define SCK DIO9 // 21
|
||||
#define MISO DIO11 // 23
|
||||
#define MOSI DIO10 // 22
|
||||
#define SS DIO8 // 20
|
||||
|
||||
// Digital I/O
|
||||
|
||||
#define DIO0_PIN PINA0
|
||||
#define DIO0_RPORT PINA
|
||||
#define DIO0_WPORT PORTA
|
||||
#define DIO0_PWM NULL
|
||||
#define DIO0_DDR DDRA
|
||||
|
||||
#define DIO1_PIN PINA1
|
||||
#define DIO1_RPORT PINA
|
||||
#define DIO1_WPORT PORTA
|
||||
#define DIO1_PWM NULL
|
||||
#define DIO1_DDR DDRA
|
||||
|
||||
#define DIO2_PIN PINA2
|
||||
#define DIO2_RPORT PINA
|
||||
#define DIO2_WPORT PORTA
|
||||
#define DIO2_PWM NULL
|
||||
#define DIO2_DDR DDRA
|
||||
|
||||
#define DIO3_PIN PINA3
|
||||
#define DIO3_RPORT PINA
|
||||
#define DIO3_WPORT PORTA
|
||||
#define DIO3_PWM NULL
|
||||
#define DIO3_DDR DDRA
|
||||
|
||||
#define DIO4_PIN PINA4
|
||||
#define DIO4_RPORT PINA
|
||||
#define DIO4_WPORT PORTA
|
||||
#define DIO4_PWM NULL
|
||||
#define DIO4_DDR DDRA
|
||||
|
||||
#define DIO5_PIN PINA5
|
||||
#define DIO5_RPORT PINA
|
||||
#define DIO5_WPORT PORTA
|
||||
#define DIO5_PWM NULL
|
||||
#define DIO5_DDR DDRA
|
||||
|
||||
#define DIO6_PIN PINA6
|
||||
#define DIO6_RPORT PINA
|
||||
#define DIO6_WPORT PORTA
|
||||
#define DIO6_PWM NULL
|
||||
#define DIO6_DDR DDRA
|
||||
|
||||
#define DIO7_PIN PINA7
|
||||
#define DIO7_RPORT PINA
|
||||
#define DIO7_WPORT PORTA
|
||||
#define DIO7_PWM NULL
|
||||
#define DIO7_DDR DDRA
|
||||
|
||||
#define DIO8_PIN PINB0
|
||||
#define DIO8_RPORT PINB
|
||||
#define DIO8_WPORT PORTB
|
||||
#define DIO8_PWM NULL
|
||||
#define DIO8_DDR DDRB
|
||||
|
||||
#define DIO9_PIN PINB1
|
||||
#define DIO9_RPORT PINB
|
||||
#define DIO9_WPORT PORTB
|
||||
#define DIO9_PWM NULL
|
||||
#define DIO9_DDR DDRB
|
||||
|
||||
#define DIO10_PIN PINB2
|
||||
#define DIO10_RPORT PINB
|
||||
#define DIO10_WPORT PORTB
|
||||
#define DIO10_PWM NULL
|
||||
#define DIO10_DDR DDRB
|
||||
|
||||
#define DIO11_PIN PINB3
|
||||
#define DIO11_RPORT PINB
|
||||
#define DIO11_WPORT PORTB
|
||||
#define DIO11_PWM NULL
|
||||
#define DIO11_DDR DDRB
|
||||
|
||||
#define DIO12_PIN PINB4
|
||||
#define DIO12_RPORT PINB
|
||||
#define DIO12_WPORT PORTB
|
||||
#define DIO12_PWM NULL
|
||||
#define DIO12_DDR DDRB
|
||||
|
||||
#define DIO13_PIN PINB5
|
||||
#define DIO13_RPORT PINB
|
||||
#define DIO13_WPORT PORTB
|
||||
#define DIO13_PWM NULL
|
||||
#define DIO13_DDR DDRB
|
||||
|
||||
#define DIO14_PIN PINB6
|
||||
#define DIO14_RPORT PINB
|
||||
#define DIO14_WPORT PORTB
|
||||
#define DIO14_PWM NULL
|
||||
#define DIO14_DDR DDRB
|
||||
|
||||
#define DIO15_PIN PINB7
|
||||
#define DIO15_RPORT PINB
|
||||
#define DIO15_WPORT PORTB
|
||||
#define DIO15_PWM NULL
|
||||
#define DIO15_DDR DDRB
|
||||
|
||||
#define DIO16_PIN PINC0
|
||||
#define DIO16_RPORT PINC
|
||||
#define DIO16_WPORT PORTC
|
||||
#define DIO16_PWM NULL
|
||||
#define DIO16_DDR DDRC
|
||||
|
||||
#define DIO17_PIN PINC1
|
||||
#define DIO17_RPORT PINC
|
||||
#define DIO17_WPORT PORTC
|
||||
#define DIO17_PWM NULL
|
||||
#define DIO17_DDR DDRC
|
||||
|
||||
#define DIO18_PIN PINC2
|
||||
#define DIO18_RPORT PINC
|
||||
#define DIO18_WPORT PORTC
|
||||
#define DIO18_PWM NULL
|
||||
#define DIO18_DDR DDRC
|
||||
|
||||
#define DIO19_PIN PINC3
|
||||
#define DIO19_RPORT PINC
|
||||
#define DIO19_WPORT PORTC
|
||||
#define DIO19_PWM NULL
|
||||
#define DIO19_DDR DDRC
|
||||
|
||||
#define DIO20_PIN PINC4
|
||||
#define DIO20_RPORT PINC
|
||||
#define DIO20_WPORT PORTC
|
||||
#define DIO20_PWM NULL
|
||||
#define DIO20_DDR DDRC
|
||||
|
||||
#define DIO21_PIN PINC5
|
||||
#define DIO21_RPORT PINC
|
||||
#define DIO21_WPORT PORTC
|
||||
#define DIO21_PWM NULL
|
||||
#define DIO21_DDR DDRC
|
||||
|
||||
#define DIO22_PIN PINC6
|
||||
#define DIO22_RPORT PINC
|
||||
#define DIO22_WPORT PORTC
|
||||
#define DIO22_PWM NULL
|
||||
#define DIO22_DDR DDRC
|
||||
|
||||
#define DIO23_PIN PINC7
|
||||
#define DIO23_RPORT PINC
|
||||
#define DIO23_WPORT PORTC
|
||||
#define DIO23_PWM NULL
|
||||
#define DIO23_DDR DDRC
|
||||
|
||||
#define DIO24_PIN PIND0
|
||||
#define DIO24_RPORT PIND
|
||||
#define DIO24_WPORT PORTD
|
||||
#define DIO24_PWM NULL
|
||||
#define DIO24_DDR DDRD
|
||||
|
||||
#define DIO25_PIN PIND1
|
||||
#define DIO25_RPORT PIND
|
||||
#define DIO25_WPORT PORTD
|
||||
#define DIO25_PWM NULL
|
||||
#define DIO25_DDR DDRD
|
||||
|
||||
#define DIO26_PIN PIND2
|
||||
#define DIO26_RPORT PIND
|
||||
#define DIO26_WPORT PORTD
|
||||
#define DIO26_PWM NULL
|
||||
#define DIO26_DDR DDRD
|
||||
|
||||
#define DIO27_PIN PIND3
|
||||
#define DIO27_RPORT PIND
|
||||
#define DIO27_WPORT PORTD
|
||||
#define DIO27_PWM NULL
|
||||
#define DIO27_DDR DDRD
|
||||
|
||||
#define DIO28_PIN PIND4
|
||||
#define DIO28_RPORT PIND
|
||||
#define DIO28_WPORT PORTD
|
||||
#define DIO28_PWM NULL
|
||||
#define DIO28_DDR DDRD
|
||||
|
||||
#define DIO29_PIN PIND5
|
||||
#define DIO29_RPORT PIND
|
||||
#define DIO29_WPORT PORTD
|
||||
#define DIO29_PWM NULL
|
||||
#define DIO29_DDR DDRD
|
||||
|
||||
#define DIO30_PIN PIND6
|
||||
#define DIO30_RPORT PIND
|
||||
#define DIO30_WPORT PORTD
|
||||
#define DIO30_PWM NULL
|
||||
#define DIO30_DDR DDRD
|
||||
|
||||
#define DIO31_PIN PIND7
|
||||
#define DIO31_RPORT PIND
|
||||
#define DIO31_WPORT PORTD
|
||||
#define DIO31_PWM NULL
|
||||
#define DIO31_DDR DDRD
|
||||
|
||||
#define DIO32_PIN PINE0
|
||||
#define DIO32_RPORT PINE
|
||||
#define DIO32_WPORT PORTE
|
||||
#define DIO32_PWM NULL
|
||||
#define DIO32_DDR DDRE
|
||||
|
||||
#define DIO33_PIN PINE1
|
||||
#define DIO33_RPORT PINE
|
||||
#define DIO33_WPORT PORTE
|
||||
#define DIO33_PWM NULL
|
||||
#define DIO33_DDR DDRE
|
||||
|
||||
#define DIO34_PIN PINE2
|
||||
#define DIO34_RPORT PINE
|
||||
#define DIO34_WPORT PORTE
|
||||
#define DIO34_PWM NULL
|
||||
#define DIO34_DDR DDRE
|
||||
|
||||
#define DIO35_PIN PINE3
|
||||
#define DIO35_RPORT PINE
|
||||
#define DIO35_WPORT PORTE
|
||||
#define DIO35_PWM NULL
|
||||
#define DIO35_DDR DDRE
|
||||
|
||||
#define DIO36_PIN PINE4
|
||||
#define DIO36_RPORT PINE
|
||||
#define DIO36_WPORT PORTE
|
||||
#define DIO36_PWM NULL
|
||||
#define DIO36_DDR DDRE
|
||||
|
||||
#define DIO37_PIN PINE5
|
||||
#define DIO37_RPORT PINE
|
||||
#define DIO37_WPORT PORTE
|
||||
#define DIO37_PWM NULL
|
||||
#define DIO37_DDR DDRE
|
||||
|
||||
#define DIO38_PIN PINE6
|
||||
#define DIO38_RPORT PINE
|
||||
#define DIO38_WPORT PORTE
|
||||
#define DIO38_PWM NULL
|
||||
#define DIO38_DDR DDRE
|
||||
|
||||
#define DIO39_PIN PINE7
|
||||
#define DIO39_RPORT PINE
|
||||
#define DIO39_WPORT PORTE
|
||||
#define DIO39_PWM NULL
|
||||
#define DIO39_DDR DDRE
|
||||
|
||||
#define AIO0_PIN PINF0
|
||||
#define AIO0_RPORT PINF
|
||||
#define AIO0_WPORT PORTF
|
||||
#define AIO0_PWM NULL
|
||||
#define AIO0_DDR DDRF
|
||||
|
||||
#define AIO1_PIN PINF1
|
||||
#define AIO1_RPORT PINF
|
||||
#define AIO1_WPORT PORTF
|
||||
#define AIO1_PWM NULL
|
||||
#define AIO1_DDR DDRF
|
||||
|
||||
#define AIO2_PIN PINF2
|
||||
#define AIO2_RPORT PINF
|
||||
#define AIO2_WPORT PORTF
|
||||
#define AIO2_PWM NULL
|
||||
#define AIO2_DDR DDRF
|
||||
|
||||
#define AIO3_PIN PINF3
|
||||
#define AIO3_RPORT PINF
|
||||
#define AIO3_WPORT PORTF
|
||||
#define AIO3_PWM NULL
|
||||
#define AIO3_DDR DDRF
|
||||
|
||||
#define AIO4_PIN PINF4
|
||||
#define AIO4_RPORT PINF
|
||||
#define AIO4_WPORT PORTF
|
||||
#define AIO4_PWM NULL
|
||||
#define AIO4_DDR DDRF
|
||||
|
||||
#define AIO5_PIN PINF5
|
||||
#define AIO5_RPORT PINF
|
||||
#define AIO5_WPORT PORTF
|
||||
#define AIO5_PWM NULL
|
||||
#define AIO5_DDR DDRF
|
||||
|
||||
#define AIO6_PIN PINF6
|
||||
#define AIO6_RPORT PINF
|
||||
#define AIO6_WPORT PORTF
|
||||
#define AIO6_PWM NULL
|
||||
#define AIO6_DDR DDRF
|
||||
|
||||
#define AIO7_PIN PINF7
|
||||
#define AIO7_RPORT PINF
|
||||
#define AIO7_WPORT PORTF
|
||||
#define AIO7_PWM NULL
|
||||
#define AIO7_DDR DDRF
|
||||
|
||||
#define DIO40_PIN PINF0
|
||||
#define DIO40_RPORT PINF
|
||||
#define DIO40_WPORT PORTF
|
||||
#define DIO40_PWM NULL
|
||||
#define DIO40_DDR DDRF
|
||||
|
||||
#define DIO41_PIN PINF1
|
||||
#define DIO41_RPORT PINF
|
||||
#define DIO41_WPORT PORTF
|
||||
#define DIO41_PWM NULL
|
||||
#define DIO41_DDR DDRF
|
||||
|
||||
#define DIO42_PIN PINF2
|
||||
#define DIO42_RPORT PINF
|
||||
#define DIO42_WPORT PORTF
|
||||
#define DIO42_PWM NULL
|
||||
#define DIO42_DDR DDRF
|
||||
|
||||
#define DIO43_PIN PINF3
|
||||
#define DIO43_RPORT PINF
|
||||
#define DIO43_WPORT PORTF
|
||||
#define DIO43_PWM NULL
|
||||
#define DIO43_DDR DDRF
|
||||
|
||||
#define DIO44_PIN PINF4
|
||||
#define DIO44_RPORT PINF
|
||||
#define DIO44_WPORT PORTF
|
||||
#define DIO44_PWM NULL
|
||||
#define DIO44_DDR DDRF
|
||||
|
||||
#define DIO45_PIN PINF5
|
||||
#define DIO45_RPORT PINF
|
||||
#define DIO45_WPORT PORTF
|
||||
#define DIO45_PWM NULL
|
||||
#define DIO45_DDR DDRF
|
||||
|
||||
#define DIO46_PIN PINF6
|
||||
#define DIO46_RPORT PINF
|
||||
#define DIO46_WPORT PORTF
|
||||
#define DIO46_PWM NULL
|
||||
#define DIO46_DDR DDRF
|
||||
|
||||
#define DIO47_PIN PINF7
|
||||
#define DIO47_RPORT PINF
|
||||
#define DIO47_WPORT PORTF
|
||||
#define DIO47_PWM NULL
|
||||
#define DIO47_DDR DDRF
|
||||
|
||||
// Analog Outputs
|
||||
|
||||
#undef PA0
|
||||
#define PA0_PIN PINA0
|
||||
#define PA0_RPORT PINA
|
||||
#define PA0_WPORT PORTA
|
||||
#define PA0_PWM NULL
|
||||
#define PA0_DDR DDRA
|
||||
#undef PA1
|
||||
#define PA1_PIN PINA1
|
||||
#define PA1_RPORT PINA
|
||||
#define PA1_WPORT PORTA
|
||||
#define PA1_PWM NULL
|
||||
#define PA1_DDR DDRA
|
||||
#undef PA2
|
||||
#define PA2_PIN PINA2
|
||||
#define PA2_RPORT PINA
|
||||
#define PA2_WPORT PORTA
|
||||
#define PA2_PWM NULL
|
||||
#define PA2_DDR DDRA
|
||||
#undef PA3
|
||||
#define PA3_PIN PINA3
|
||||
#define PA3_RPORT PINA
|
||||
#define PA3_WPORT PORTA
|
||||
#define PA3_PWM NULL
|
||||
#define PA3_DDR DDRA
|
||||
#undef PA4
|
||||
#define PA4_PIN PINA4
|
||||
#define PA4_RPORT PINA
|
||||
#define PA4_WPORT PORTA
|
||||
#define PA4_PWM NULL
|
||||
#define PA4_DDR DDRA
|
||||
#undef PA5
|
||||
#define PA5_PIN PINA5
|
||||
#define PA5_RPORT PINA
|
||||
#define PA5_WPORT PORTA
|
||||
#define PA5_PWM NULL
|
||||
#define PA5_DDR DDRA
|
||||
#undef PA6
|
||||
#define PA6_PIN PINA6
|
||||
#define PA6_RPORT PINA
|
||||
#define PA6_WPORT PORTA
|
||||
#define PA6_PWM NULL
|
||||
#define PA6_DDR DDRA
|
||||
#undef PA7
|
||||
#define PA7_PIN PINA7
|
||||
#define PA7_RPORT PINA
|
||||
#define PA7_WPORT PORTA
|
||||
#define PA7_PWM NULL
|
||||
#define PA7_DDR DDRA
|
||||
|
||||
#undef PB0
|
||||
#define PB0_PIN PINB0
|
||||
#define PB0_RPORT PINB
|
||||
#define PB0_WPORT PORTB
|
||||
#define PB0_PWM NULL
|
||||
#define PB0_DDR DDRB
|
||||
#undef PB1
|
||||
#define PB1_PIN PINB1
|
||||
#define PB1_RPORT PINB
|
||||
#define PB1_WPORT PORTB
|
||||
#define PB1_PWM NULL
|
||||
#define PB1_DDR DDRB
|
||||
#undef PB2
|
||||
#define PB2_PIN PINB2
|
||||
#define PB2_RPORT PINB
|
||||
#define PB2_WPORT PORTB
|
||||
#define PB2_PWM NULL
|
||||
#define PB2_DDR DDRB
|
||||
#undef PB3
|
||||
#define PB3_PIN PINB3
|
||||
#define PB3_RPORT PINB
|
||||
#define PB3_WPORT PORTB
|
||||
#define PB3_PWM NULL
|
||||
#define PB3_DDR DDRB
|
||||
#undef PB4
|
||||
#define PB4_PIN PINB4
|
||||
#define PB4_RPORT PINB
|
||||
#define PB4_WPORT PORTB
|
||||
#define PB4_PWM NULL
|
||||
#define PB4_DDR DDRB
|
||||
#undef PB5
|
||||
#define PB5_PIN PINB5
|
||||
#define PB5_RPORT PINB
|
||||
#define PB5_WPORT PORTB
|
||||
#define PB5_PWM NULL
|
||||
#define PB5_DDR DDRB
|
||||
#undef PB6
|
||||
#define PB6_PIN PINB6
|
||||
#define PB6_RPORT PINB
|
||||
#define PB6_WPORT PORTB
|
||||
#define PB6_PWM NULL
|
||||
#define PB6_DDR DDRB
|
||||
#undef PB7
|
||||
#define PB7_PIN PINB7
|
||||
#define PB7_RPORT PINB
|
||||
#define PB7_WPORT PORTB
|
||||
#define PB7_PWM NULL
|
||||
#define PB7_DDR DDRB
|
||||
|
||||
#undef PC0
|
||||
#define PC0_PIN PINC0
|
||||
#define PC0_RPORT PINC
|
||||
#define PC0_WPORT PORTC
|
||||
#define PC0_PWM NULL
|
||||
#define PC0_DDR DDRC
|
||||
#undef PC1
|
||||
#define PC1_PIN PINC1
|
||||
#define PC1_RPORT PINC
|
||||
#define PC1_WPORT PORTC
|
||||
#define PC1_PWM NULL
|
||||
#define PC1_DDR DDRC
|
||||
#undef PC2
|
||||
#define PC2_PIN PINC2
|
||||
#define PC2_RPORT PINC
|
||||
#define PC2_WPORT PORTC
|
||||
#define PC2_PWM NULL
|
||||
#define PC2_DDR DDRC
|
||||
#undef PC3
|
||||
#define PC3_PIN PINC3
|
||||
#define PC3_RPORT PINC
|
||||
#define PC3_WPORT PORTC
|
||||
#define PC3_PWM NULL
|
||||
#define PC3_DDR DDRC
|
||||
#undef PC4
|
||||
#define PC4_PIN PINC4
|
||||
#define PC4_RPORT PINC
|
||||
#define PC4_WPORT PORTC
|
||||
#define PC4_PWM NULL
|
||||
#define PC4_DDR DDRC
|
||||
#undef PC5
|
||||
#define PC5_PIN PINC5
|
||||
#define PC5_RPORT PINC
|
||||
#define PC5_WPORT PORTC
|
||||
#define PC5_PWM NULL
|
||||
#define PC5_DDR DDRC
|
||||
#undef PC6
|
||||
#define PC6_PIN PINC6
|
||||
#define PC6_RPORT PINC
|
||||
#define PC6_WPORT PORTC
|
||||
#define PC6_PWM NULL
|
||||
#define PC6_DDR DDRC
|
||||
#undef PC7
|
||||
#define PC7_PIN PINC7
|
||||
#define PC7_RPORT PINC
|
||||
#define PC7_WPORT PORTC
|
||||
#define PC7_PWM NULL
|
||||
#define PC7_DDR DDRC
|
||||
|
||||
#undef PD0
|
||||
#define PD0_PIN PIND0
|
||||
#define PD0_RPORT PIND
|
||||
#define PD0_WPORT PORTD
|
||||
#define PD0_PWM NULL
|
||||
#define PD0_DDR DDRD
|
||||
#undef PD1
|
||||
#define PD1_PIN PIND1
|
||||
#define PD1_RPORT PIND
|
||||
#define PD1_WPORT PORTD
|
||||
#define PD1_PWM NULL
|
||||
#define PD1_DDR DDRD
|
||||
#undef PD2
|
||||
#define PD2_PIN PIND2
|
||||
#define PD2_RPORT PIND
|
||||
#define PD2_WPORT PORTD
|
||||
#define PD2_PWM NULL
|
||||
#define PD2_DDR DDRD
|
||||
#undef PD3
|
||||
#define PD3_PIN PIND3
|
||||
#define PD3_RPORT PIND
|
||||
#define PD3_WPORT PORTD
|
||||
#define PD3_PWM NULL
|
||||
#define PD3_DDR DDRD
|
||||
#undef PD4
|
||||
#define PD4_PIN PIND4
|
||||
#define PD4_RPORT PIND
|
||||
#define PD4_WPORT PORTD
|
||||
#define PD4_PWM NULL
|
||||
#define PD4_DDR DDRD
|
||||
#undef PD5
|
||||
#define PD5_PIN PIND5
|
||||
#define PD5_RPORT PIND
|
||||
#define PD5_WPORT PORTD
|
||||
#define PD5_PWM NULL
|
||||
#define PD5_DDR DDRD
|
||||
#undef PD6
|
||||
#define PD6_PIN PIND6
|
||||
#define PD6_RPORT PIND
|
||||
#define PD6_WPORT PORTD
|
||||
#define PD6_PWM NULL
|
||||
#define PD6_DDR DDRD
|
||||
#undef PD7
|
||||
#define PD7_PIN PIND7
|
||||
#define PD7_RPORT PIND
|
||||
#define PD7_WPORT PORTD
|
||||
#define PD7_PWM NULL
|
||||
#define PD7_DDR DDRD
|
||||
|
||||
#undef PE0
|
||||
#define PE0_PIN PINE0
|
||||
#define PE0_RPORT PINE
|
||||
#define PE0_WPORT PORTE
|
||||
#define PE0_PWM NULL
|
||||
#define PE0_DDR DDRE
|
||||
#undef PE1
|
||||
#define PE1_PIN PINE1
|
||||
#define PE1_RPORT PINE
|
||||
#define PE1_WPORT PORTE
|
||||
#define PE1_PWM NULL
|
||||
#define PE1_DDR DDRE
|
||||
#undef PE2
|
||||
#define PE2_PIN PINE2
|
||||
#define PE2_RPORT PINE
|
||||
#define PE2_WPORT PORTE
|
||||
#define PE2_PWM NULL
|
||||
#define PE2_DDR DDRE
|
||||
#undef PE3
|
||||
#define PE3_PIN PINE3
|
||||
#define PE3_RPORT PINE
|
||||
#define PE3_WPORT PORTE
|
||||
#define PE3_PWM NULL
|
||||
#define PE3_DDR DDRE
|
||||
#undef PE4
|
||||
#define PE4_PIN PINE4
|
||||
#define PE4_RPORT PINE
|
||||
#define PE4_WPORT PORTE
|
||||
#define PE4_PWM NULL
|
||||
#define PE4_DDR DDRE
|
||||
#undef PE5
|
||||
#define PE5_PIN PINE5
|
||||
#define PE5_RPORT PINE
|
||||
#define PE5_WPORT PORTE
|
||||
#define PE5_PWM NULL
|
||||
#define PE5_DDR DDRE
|
||||
#undef PE6
|
||||
#define PE6_PIN PINE6
|
||||
#define PE6_RPORT PINE
|
||||
#define PE6_WPORT PORTE
|
||||
#define PE6_PWM NULL
|
||||
#define PE6_DDR DDRE
|
||||
#undef PE7
|
||||
#define PE7_PIN PINE7
|
||||
#define PE7_RPORT PINE
|
||||
#define PE7_WPORT PORTE
|
||||
#define PE7_PWM NULL
|
||||
#define PE7_DDR DDRE
|
||||
|
||||
#undef PF0
|
||||
#define PF0_PIN PINF0
|
||||
#define PF0_RPORT PINF
|
||||
#define PF0_WPORT PORTF
|
||||
#define PF0_PWM NULL
|
||||
#define PF0_DDR DDRF
|
||||
#undef PF1
|
||||
#define PF1_PIN PINF1
|
||||
#define PF1_RPORT PINF
|
||||
#define PF1_WPORT PORTF
|
||||
#define PF1_PWM NULL
|
||||
#define PF1_DDR DDRF
|
||||
#undef PF2
|
||||
#define PF2_PIN PINF2
|
||||
#define PF2_RPORT PINF
|
||||
#define PF2_WPORT PORTF
|
||||
#define PF2_PWM NULL
|
||||
#define PF2_DDR DDRF
|
||||
#undef PF3
|
||||
#define PF3_PIN PINF3
|
||||
#define PF3_RPORT PINF
|
||||
#define PF3_WPORT PORTF
|
||||
#define PF3_PWM NULL
|
||||
#define PF3_DDR DDRF
|
||||
#undef PF4
|
||||
#define PF4_PIN PINF4
|
||||
#define PF4_RPORT PINF
|
||||
#define PF4_WPORT PORTF
|
||||
#define PF4_PWM NULL
|
||||
#define PF4_DDR DDRF
|
||||
#undef PF5
|
||||
#define PF5_PIN PINF5
|
||||
#define PF5_RPORT PINF
|
||||
#define PF5_WPORT PORTF
|
||||
#define PF5_PWM NULL
|
||||
#define PF5_DDR DDRF
|
||||
#undef PF6
|
||||
#define PF6_PIN PINF6
|
||||
#define PF6_RPORT PINF
|
||||
#define PF6_WPORT PORTF
|
||||
#define PF6_PWM NULL
|
||||
#define PF6_DDR DDRF
|
||||
#undef PF7
|
||||
#define PF7_PIN PINF7
|
||||
#define PF7_RPORT PINF
|
||||
#define PF7_WPORT PORTF
|
||||
#define PF7_PWM NULL
|
||||
#define PF7_DDR DDRF
|
||||
|
||||
#endif // _FASTIO_AT90USB
|
||||
@@ -1,55 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#include "Marlin.h"
|
||||
#include "gcode.h"
|
||||
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL) || ENABLED(M100_FREE_MEMORY_WATCHER) || ENABLED(DEBUG_GCODE_PARSER)
|
||||
|
||||
#include "hex_print_routines.h"
|
||||
|
||||
static char _hex[7] = "0x0000";
|
||||
|
||||
char* hex_byte(const uint8_t b) {
|
||||
_hex[4] = hex_nybble(b >> 4);
|
||||
_hex[5] = hex_nybble(b);
|
||||
return &_hex[4];
|
||||
}
|
||||
|
||||
char* hex_word(const uint16_t w) {
|
||||
_hex[2] = hex_nybble(w >> 12);
|
||||
_hex[3] = hex_nybble(w >> 8);
|
||||
_hex[4] = hex_nybble(w >> 4);
|
||||
_hex[5] = hex_nybble(w);
|
||||
return &_hex[2];
|
||||
}
|
||||
|
||||
char* hex_address(const void * const w) {
|
||||
(void)hex_word((uint16_t)w);
|
||||
return _hex;
|
||||
}
|
||||
|
||||
void print_hex_nybble(const uint8_t n) { SERIAL_CHAR(hex_nybble(n)); }
|
||||
void print_hex_byte(const uint8_t b) { SERIAL_ECHO(hex_byte(b)); }
|
||||
void print_hex_word(const uint16_t w) { SERIAL_ECHO(hex_word(w)); }
|
||||
void print_hex_address(const void * const w) { SERIAL_ECHO(hex_address(w)); }
|
||||
|
||||
#endif // AUTO_BED_LEVELING_UBL || M100_FREE_MEMORY_WATCHER || DEBUG_GCODE_PARSER
|
||||
@@ -1,167 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Chinese
|
||||
*
|
||||
* LCD Menu Messages
|
||||
* See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
|
||||
*
|
||||
*/
|
||||
#ifndef LANGUAGE_CN_H
|
||||
#define LANGUAGE_CN_H
|
||||
|
||||
#define DISPLAY_CHARSET_ISO10646_CN
|
||||
|
||||
#define WELCOME_MSG "\xa4\xa5\xa6\xa7"
|
||||
#define MSG_SD_INSERTED "\xa8\xa9\xaa\xab"
|
||||
#define MSG_SD_REMOVED "\xa8\xa9\xac\xad"
|
||||
#define MSG_MAIN "\xae\xaf\xb0"
|
||||
#define MSG_AUTOSTART "\xb1\xb2\xb3\xb4"
|
||||
#define MSG_DISABLE_STEPPERS "\xb5\xb6\xb7\xb8\xb9\xba"
|
||||
#define MSG_AUTO_HOME "\xbb\xbc\xbd"
|
||||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_SET_HOME_OFFSETS "\xbe\xbf\xbb\xbc\xbd\xc0\xc1"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "\xbe\xbf\xbc\xbd"
|
||||
#define MSG_PREHEAT_1 "\xc3\xc4 PLA"
|
||||
#define MSG_PREHEAT_1_N MSG_PREHEAT_1 " "
|
||||
#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 " \xc5\xc6"
|
||||
#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 " \xc4\xc7"
|
||||
#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 " \xbe\xbf"
|
||||
#define MSG_PREHEAT_2 "\xc3\xc4 ABS"
|
||||
#define MSG_PREHEAT_2_N MSG_PREHEAT_2 " "
|
||||
#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 " \xc5\xc6"
|
||||
#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 " \xbe\xc6"
|
||||
#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 " \xbe\xbf"
|
||||
#define MSG_COOLDOWN "\xc8\xc9"
|
||||
#define MSG_SWITCH_PS_ON "\xb9\xcb\xca\xb3"
|
||||
#define MSG_SWITCH_PS_OFF "\xb9\xcb\xb5\xb6"
|
||||
#define MSG_EXTRUDE "\xcc\xad"
|
||||
#define MSG_RETRACT "\xbb\xcd"
|
||||
#define MSG_MOVE_AXIS "\xc1\xb2\xce"
|
||||
#define MSG_BED_LEVELING "\xcf\xe0\xc4\xc7"
|
||||
#define MSG_LEVEL_BED "\xcf\xe0\xc4\xc7"
|
||||
#define MSG_MOVE_X "\xc1\xb2 X"
|
||||
#define MSG_MOVE_Y "\xc1\xb2 Y"
|
||||
#define MSG_MOVE_Z "\xc1\xb2 Z"
|
||||
#define MSG_MOVE_E "\xcc\xad\xba"
|
||||
#define MSG_MOVE_01MM "\xc1\xb2 0.1mm"
|
||||
#define MSG_MOVE_1MM "\xc1\xb2 1mm"
|
||||
#define MSG_MOVE_10MM "\xc1\xb2 10mm"
|
||||
#define MSG_SPEED "\xd1\xd2"
|
||||
#define MSG_NOZZLE "\xd3\xd4"
|
||||
#define MSG_BED "\xc4\xc7"
|
||||
#define MSG_FAN_SPEED "\xd5\xd6\xd1\xd2"
|
||||
#define MSG_FLOW "\xcc\xad\xd1\xd2"
|
||||
#define MSG_CONTROL "\xd8\xd9"
|
||||
#define MSG_MIN LCD_STR_THERMOMETER " \xda\xdb"
|
||||
#define MSG_MAX LCD_STR_THERMOMETER " \xda\xdc"
|
||||
#define MSG_FACTOR LCD_STR_THERMOMETER " \xdd\xde"
|
||||
#define MSG_AUTOTEMP "\xb1\xb2\xd8\xc9"
|
||||
#define MSG_ON "\xb3 " // intentional space to shift wide symbol to the left
|
||||
#define MSG_OFF "\xb5 " // intentional space to shift wide symbol to the left
|
||||
#define MSG_PID_P "PID-P"
|
||||
#define MSG_PID_I "PID-I"
|
||||
#define MSG_PID_D "PID-D"
|
||||
#define MSG_PID_C "PID-C"
|
||||
#define MSG_ACC "Accel"
|
||||
#define MSG_JERK "Jerk"
|
||||
#define MSG_VX_JERK "Vx-jerk"
|
||||
#define MSG_VY_JERK "Vy-jerk"
|
||||
#define MSG_VZ_JERK "Vz-jerk"
|
||||
#define MSG_VE_JERK "Ve-jerk"
|
||||
#define MSG_VMAX "Vmax "
|
||||
#define MSG_VMIN "Vmin"
|
||||
#define MSG_VTRAV_MIN "VTrav min"
|
||||
#define MSG_AMAX "Amax "
|
||||
#define MSG_A_RETRACT "A-retract"
|
||||
#define MSG_A_TRAVEL "A-travel"
|
||||
#define MSG_STEPS_PER_MM "Steps/mm"
|
||||
#define MSG_XSTEPS "Xsteps/mm"
|
||||
#define MSG_YSTEPS "Ysteps/mm"
|
||||
#define MSG_ZSTEPS "Zsteps/mm"
|
||||
#define MSG_ESTEPS "Esteps/mm"
|
||||
#define MSG_E1STEPS "E1steps/mm"
|
||||
#define MSG_E2STEPS "E2steps/mm"
|
||||
#define MSG_E3STEPS "E3steps/mm"
|
||||
#define MSG_E4STEPS "E4steps/mm"
|
||||
#define MSG_E5STEPS "E5steps/mm"
|
||||
#define MSG_TEMPERATURE "\xc9\xd2"
|
||||
#define MSG_MOTION "\xdf\xb2"
|
||||
#define MSG_FILAMENT "Filament"
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm3"
|
||||
#define MSG_FILAMENT_DIAM "Fil. Dia."
|
||||
#define MSG_CONTRAST "LCD contrast"
|
||||
#define MSG_STORE_EEPROM "Store memory"
|
||||
#define MSG_LOAD_EEPROM "Load memory"
|
||||
#define MSG_RESTORE_FAILSAFE "Restore failsafe"
|
||||
#define MSG_REFRESH "Refresh"
|
||||
#define MSG_WATCH "\xec\xed\xee\xef"
|
||||
#define MSG_PREPARE "\xa4\xa5"
|
||||
#define MSG_TUNE "\xcf\xf0"
|
||||
#define MSG_PAUSE_PRINT "\xf1\xf2\xca\xf3"
|
||||
#define MSG_RESUME_PRINT "\xf4\xf5\xca\xf3"
|
||||
#define MSG_STOP_PRINT "\xf2\xf6\xca\xf3"
|
||||
#define MSG_CARD_MENU "\xaf\xb0"
|
||||
#define MSG_NO_CARD "\xf9\xa8"
|
||||
#define MSG_DWELL "Sleep..."
|
||||
#define MSG_USERWAIT "Wait for user..."
|
||||
#define MSG_RESUMING "Resuming print"
|
||||
#define MSG_PRINT_ABORTED "Print aborted"
|
||||
#define MSG_NO_MOVE "No move."
|
||||
#define MSG_KILLED "KILLED. "
|
||||
#define MSG_STOPPED "STOPPED. "
|
||||
#define MSG_CONTROL_RETRACT "Retract mm"
|
||||
#define MSG_CONTROL_RETRACT_SWAP "Swap Re.mm"
|
||||
#define MSG_CONTROL_RETRACTF "Retract V"
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER "UnRet mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP "S UnRet mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V"
|
||||
#define MSG_AUTORETRACT "AutoRetr."
|
||||
#define MSG_FILAMENTCHANGE "Change filament"
|
||||
#define MSG_INIT_SDCARD "Init. SD card"
|
||||
#define MSG_CNG_SDCARD "Change SD card"
|
||||
#define MSG_ZPROBE_OUT "Z probe out. bed"
|
||||
#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
|
||||
#define MSG_FIRST "first"
|
||||
#define MSG_ZPROBE_ZOFFSET "Z Offset"
|
||||
#define MSG_BABYSTEP_X "Babystep X"
|
||||
#define MSG_BABYSTEP_Y "Babystep Y"
|
||||
#define MSG_BABYSTEP_Z "Babystep Z"
|
||||
#define MSG_ENDSTOP_ABORT "Endstop abort"
|
||||
#define MSG_HEATING_FAILED_LCD "Heating failed"
|
||||
#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP"
|
||||
#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY"
|
||||
#define MSG_ERR_MAXTEMP "Err: MAXTEMP"
|
||||
#define MSG_ERR_MINTEMP "Err: MINTEMP"
|
||||
#define MSG_ERR_MAXTEMP_BED "Err: MAXTEMP BED"
|
||||
#define MSG_DELTA_CALIBRATE "Delta Calibration"
|
||||
#define MSG_DELTA_CALIBRATE_X "Calibrate X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Calibrate Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Calibrate Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center"
|
||||
|
||||
#endif // LANGUAGE_CN_H
|
||||
@@ -1,273 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Czech
|
||||
*
|
||||
* LCD Menu Messages
|
||||
* See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
|
||||
*
|
||||
* Translated by Petr Zahradnik, Computer Laboratory
|
||||
* Blog and video blog Zahradnik se bavi
|
||||
* http://www.zahradniksebavi.cz
|
||||
*
|
||||
*/
|
||||
#ifndef LANGUAGE_CZ_H
|
||||
#define LANGUAGE_CZ_H
|
||||
|
||||
#define DISPLAY_CHARSET_ISO10646_1
|
||||
|
||||
#define WELCOME_MSG MACHINE_NAME _UxGT(" pripraven.")
|
||||
#define MSG_BACK _UxGT("Zpet")
|
||||
#define MSG_SD_INSERTED _UxGT("Karta vlozena")
|
||||
#define MSG_SD_REMOVED _UxGT("Karta vyjmuta")
|
||||
#define MSG_LCD_ENDSTOPS _UxGT("Endstopy") // maximalne 8 znaku
|
||||
#define MSG_MAIN _UxGT("Hlavni nabidka")
|
||||
#define MSG_AUTOSTART _UxGT("Autostart")
|
||||
#define MSG_DISABLE_STEPPERS _UxGT("Uvolnit motory")
|
||||
#define MSG_DEBUG_MENU _UxGT("Nabidka ladeni")
|
||||
#define MSG_PROGRESS_BAR_TEST _UxGT("Test uk.prubehu")
|
||||
#define MSG_AUTO_HOME _UxGT("Domovska pozice")
|
||||
#define MSG_AUTO_HOME_X _UxGT("Domu osa X")
|
||||
#define MSG_AUTO_HOME_Y _UxGT("Domu osa Y")
|
||||
#define MSG_AUTO_HOME_Z _UxGT("Domu osa Z")
|
||||
#define MSG_LEVEL_BED_HOMING _UxGT("Mereni podlozky")
|
||||
#define MSG_LEVEL_BED_WAITING _UxGT("Kliknutim spustte")
|
||||
#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Dalsi bod")
|
||||
#define MSG_LEVEL_BED_DONE _UxGT("Mereni hotovo!")
|
||||
#define MSG_SET_HOME_OFFSETS _UxGT("Nastavit ofsety")
|
||||
#define MSG_HOME_OFFSETS_APPLIED _UxGT("Ofsety nastaveny")
|
||||
#define MSG_SET_ORIGIN _UxGT("Nastavit pocatek")
|
||||
#define MSG_PREHEAT_1 _UxGT("Zahrat PLA")
|
||||
#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
|
||||
#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" vse")
|
||||
#define MSG_PREHEAT_1_END MSG_PREHEAT_1 _UxGT(" hotend")
|
||||
#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" podloz")
|
||||
#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" nast")
|
||||
#define MSG_PREHEAT_2 _UxGT("Zahrat ABS")
|
||||
#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
|
||||
#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" vse")
|
||||
#define MSG_PREHEAT_2_END MSG_PREHEAT_2 _UxGT(" hotend")
|
||||
#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" podloz")
|
||||
#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" nast")
|
||||
#define MSG_COOLDOWN _UxGT("Zchladit")
|
||||
#define MSG_SWITCH_PS_ON _UxGT("Zapnout napajeni")
|
||||
#define MSG_SWITCH_PS_OFF _UxGT("Vypnout napajeni")
|
||||
#define MSG_EXTRUDE _UxGT("Vytlacit (extr.)")
|
||||
#define MSG_RETRACT _UxGT("Zatlacit (retr.)")
|
||||
#define MSG_MOVE_AXIS _UxGT("Posunout osy")
|
||||
#define MSG_BED_LEVELING _UxGT("Vyrovnat podlozku")
|
||||
#define MSG_LEVEL_BED _UxGT("Vyrovnat podlozku")
|
||||
#define MSG_MOVING _UxGT("Posunování...")
|
||||
#define MSG_FREE_XY _UxGT("Uvolnit XY")
|
||||
#define MSG_MOVE_X _UxGT("Posunout X")
|
||||
#define MSG_MOVE_Y _UxGT("Posunout Y")
|
||||
#define MSG_MOVE_Z _UxGT("Posunout Z")
|
||||
#define MSG_MOVE_E _UxGT("Extruder")
|
||||
#define MSG_MOVE_01MM _UxGT("Posunout o 0,1mm")
|
||||
#define MSG_MOVE_1MM _UxGT("Posunout o 1mm")
|
||||
#define MSG_MOVE_10MM _UxGT("Posunout o 10mm")
|
||||
#define MSG_SPEED _UxGT("Rychlost")
|
||||
#define MSG_BED_Z _UxGT("Vyska podl.")
|
||||
#define MSG_NOZZLE _UxGT("Tryska")
|
||||
#define MSG_BED _UxGT("Podlozka")
|
||||
#define MSG_FAN_SPEED _UxGT("Rychlost vent.")
|
||||
#define MSG_FLOW _UxGT("Prutok")
|
||||
#define MSG_CONTROL _UxGT("Ovladani")
|
||||
#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
|
||||
#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
|
||||
#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fakt")
|
||||
#define MSG_AUTOTEMP _UxGT("Autoteplota")
|
||||
#define MSG_ON _UxGT("Zap")
|
||||
#define MSG_OFF _UxGT("Vyp")
|
||||
#define MSG_PID_P _UxGT("PID-P")
|
||||
#define MSG_PID_I _UxGT("PID-I")
|
||||
#define MSG_PID_D _UxGT("PID-D")
|
||||
#define MSG_PID_C _UxGT("PID-C")
|
||||
#define MSG_SELECT _UxGT("Vybrat")
|
||||
#define MSG_ACC _UxGT("Zrychl")
|
||||
#define MSG_JERK _UxGT("Jerk")
|
||||
#define MSG_VX_JERK _UxGT("Vx-jerk")
|
||||
#define MSG_VY_JERK _UxGT("Vy-jerk")
|
||||
#define MSG_VZ_JERK _UxGT("Vz-jerk")
|
||||
#define MSG_VE_JERK _UxGT("Ve-jerk")
|
||||
#define MSG_VMAX _UxGT("Vmax ")
|
||||
#define MSG_VMIN _UxGT("Vmin")
|
||||
#define MSG_VTRAV_MIN _UxGT("VTrav min")
|
||||
#define MSG_AMAX _UxGT("Amax ")
|
||||
#define MSG_A_RETRACT _UxGT("A-retrakt")
|
||||
#define MSG_A_TRAVEL _UxGT("A-prejezd")
|
||||
#define MSG_STEPS_PER_MM _UxGT("Kroku/mm")
|
||||
#define MSG_XSTEPS _UxGT("Xkroku/mm")
|
||||
#define MSG_YSTEPS _UxGT("Ykroku/mm")
|
||||
#define MSG_ZSTEPS _UxGT("Zkroku/mm")
|
||||
#define MSG_ESTEPS _UxGT("Ekroku/mm")
|
||||
#define MSG_E1STEPS _UxGT("E1kroku/mm")
|
||||
#define MSG_E2STEPS _UxGT("E2kroku/mm")
|
||||
#define MSG_E3STEPS _UxGT("E3kroku/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4kroku/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5kroku/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Teplota")
|
||||
#define MSG_MOTION _UxGT("Pohyb")
|
||||
#define MSG_FILAMENT _UxGT("Filament")
|
||||
#define MSG_VOLUMETRIC_ENABLED _UxGT("E na mm3")
|
||||
#define MSG_FILAMENT_DIAM _UxGT("Fil. Prum.")
|
||||
#define MSG_ADVANCE_K _UxGT("K pro posun")
|
||||
#define MSG_CONTRAST _UxGT("Kontrast LCD")
|
||||
#define MSG_STORE_EEPROM _UxGT("Ulozit nastaveni")
|
||||
#define MSG_LOAD_EEPROM _UxGT("Nacist nastaveni")
|
||||
#define MSG_RESTORE_FAILSAFE _UxGT("Obnovit vychozi")
|
||||
#define MSG_REFRESH _UxGT("Obnovit")
|
||||
#define MSG_WATCH _UxGT("Info obrazovka")
|
||||
#define MSG_PREPARE _UxGT("Priprava tisku")
|
||||
#define MSG_TUNE _UxGT("Doladeni tisku")
|
||||
#define MSG_PAUSE_PRINT _UxGT("Pozastavit tisk")
|
||||
#define MSG_RESUME_PRINT _UxGT("Obnovit tisk")
|
||||
#define MSG_STOP_PRINT _UxGT("Zastavit tisk")
|
||||
#define MSG_CARD_MENU _UxGT("Tisknout z SD")
|
||||
#define MSG_NO_CARD _UxGT("Zadna SD karta")
|
||||
#define MSG_DWELL _UxGT("Uspano...")
|
||||
#define MSG_USERWAIT _UxGT("Cekani na uziv...")
|
||||
#define MSG_RESUMING _UxGT("Obnovovani tisku")
|
||||
#define MSG_PRINT_ABORTED _UxGT("Tisk zrusen")
|
||||
#define MSG_NO_MOVE _UxGT("Zadny pohyb.")
|
||||
#define MSG_KILLED _UxGT("PRERUSENO. ")
|
||||
#define MSG_STOPPED _UxGT("ZASTAVENO. ")
|
||||
#define MSG_CONTROL_RETRACT _UxGT("Retrakt mm")
|
||||
#define MSG_CONTROL_RETRACT_SWAP _UxGT("Vymena Re.mm")
|
||||
#define MSG_CONTROL_RETRACTF _UxGT("Retraktovat V")
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT _UxGT("Zvednuti Z mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("S UnRet mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
|
||||
#define MSG_AUTORETRACT _UxGT("AutoRetr.")
|
||||
#define MSG_FILAMENTCHANGE _UxGT("Vymenit filament")
|
||||
#define MSG_INIT_SDCARD _UxGT("Nacist SD kartu")
|
||||
#define MSG_CNG_SDCARD _UxGT("Vymenit SD kartu")
|
||||
#define MSG_ZPROBE_OUT _UxGT("Sonda Z mimo podl")
|
||||
#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Self-Test")
|
||||
#define MSG_BLTOUCH_RESET _UxGT("BLTouch Reset")
|
||||
#define MSG_HOME _UxGT("Domu") // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
|
||||
#define MSG_FIRST _UxGT("prvni")
|
||||
#define MSG_ZPROBE_ZOFFSET _UxGT("Z ofset")
|
||||
#define MSG_BABYSTEP_X _UxGT("Babystep X")
|
||||
#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
|
||||
#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
|
||||
#define MSG_ENDSTOP_ABORT _UxGT("Endstop abort")
|
||||
#define MSG_HEATING_FAILED_LCD _UxGT("Chyba zahrivani")
|
||||
#define MSG_ERR_REDUNDANT_TEMP _UxGT("REDUND. TEPLOTA")
|
||||
#define MSG_THERMAL_RUNAWAY _UxGT("TEPLOTNI SKOK")
|
||||
#define MSG_ERR_MAXTEMP _UxGT("VYSOKA TEPLOTA")
|
||||
#define MSG_ERR_MINTEMP _UxGT("NIZKA TEPLOTA")
|
||||
#define MSG_ERR_MAXTEMP_BED _UxGT("VYS. TEPL. PODL.")
|
||||
#define MSG_ERR_MINTEMP_BED _UxGT("NIZ. TEPL. PODL.")
|
||||
#define MSG_ERR_Z_HOMING _UxGT("G28 Z ZAKAZANO")
|
||||
#define MSG_HALTED _UxGT("TISK. ZASTAVENA")
|
||||
#define MSG_PLEASE_RESET _UxGT("Provedte reset")
|
||||
#define MSG_SHORT_DAY _UxGT("d")
|
||||
#define MSG_SHORT_HOUR _UxGT("h")
|
||||
#define MSG_SHORT_MINUTE _UxGT("m")
|
||||
#define MSG_HEATING _UxGT("Zahrivani...")
|
||||
#define MSG_HEATING_COMPLETE _UxGT("Zahrati hotovo.")
|
||||
#define MSG_BED_HEATING _UxGT("Zahrivani podl.")
|
||||
#define MSG_BED_DONE _UxGT("Podlozka hotova.")
|
||||
#define MSG_DELTA_CALIBRATE _UxGT("Delta Kalibrace")
|
||||
#define MSG_DELTA_CALIBRATE_X _UxGT("Kalibrovat X")
|
||||
#define MSG_DELTA_CALIBRATE_Y _UxGT("Kalibrovat Y")
|
||||
#define MSG_DELTA_CALIBRATE_Z _UxGT("Kalibrovat Z")
|
||||
#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Kalibrovat Stred")
|
||||
#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Autokalibrace")
|
||||
#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Nast.vysku delty")
|
||||
#define MSG_INFO_MENU _UxGT("O tiskarne")
|
||||
#define MSG_INFO_PRINTER_MENU _UxGT("Info o tiskarne")
|
||||
#define MSG_INFO_STATS_MENU _UxGT("Statistika")
|
||||
#define MSG_INFO_BOARD_MENU _UxGT("Info o desce")
|
||||
#define MSG_INFO_THERMISTOR_MENU _UxGT("Termistory")
|
||||
#define MSG_INFO_EXTRUDERS _UxGT("Extrudery")
|
||||
#define MSG_INFO_BAUDRATE _UxGT("Rychlost")
|
||||
#define MSG_INFO_PROTOCOL _UxGT("Protokol")
|
||||
#define MSG_CASE_LIGHT _UxGT("Osvetleni")
|
||||
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_INFO_PRINT_COUNT _UxGT("Pocet tisku")
|
||||
#define MSG_INFO_COMPLETED_PRINTS _UxGT("Dokonceno")
|
||||
#define MSG_INFO_PRINT_TIME _UxGT("Celkovy cas")
|
||||
#define MSG_INFO_PRINT_LONGEST _UxGT("Nejdelsi tisk")
|
||||
#define MSG_INFO_PRINT_FILAMENT _UxGT("Celkem vytlaceno")
|
||||
#else
|
||||
#define MSG_INFO_PRINT_COUNT _UxGT("Tisky")
|
||||
#define MSG_INFO_COMPLETED_PRINTS _UxGT("Hotovo")
|
||||
#define MSG_INFO_PRINT_TIME _UxGT("Cas")
|
||||
#define MSG_INFO_PRINT_LONGEST _UxGT("Nejdelsi")
|
||||
#define MSG_INFO_PRINT_FILAMENT _UxGT("Vytlaceno")
|
||||
#endif
|
||||
|
||||
#define MSG_INFO_MIN_TEMP _UxGT("Teplota min")
|
||||
#define MSG_INFO_MAX_TEMP _UxGT("Teplota max")
|
||||
#define MSG_INFO_PSU _UxGT("Nap. zdroj")
|
||||
#define MSG_DRIVE_STRENGTH _UxGT("Buzeni motoru")
|
||||
#define MSG_DAC_PERCENT _UxGT("Motor %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Ulozit do EEPROM")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Jeste vytlacit")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Obnovit tisk")
|
||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Min. teplota je ")
|
||||
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Tryska: ")
|
||||
|
||||
#if LCD_HEIGHT >= 4
|
||||
// Up to 3 lines allowed
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Cekejte prosim")
|
||||
#define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("na zahajeni")
|
||||
#define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("vymeny filamentu")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Cekejte prosim")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("na vysunuti")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_3 _UxGT("filamentu")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Vlozte filament")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("a stisknete")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("tlacitko...")
|
||||
#define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Kliknete pro")
|
||||
#define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("nahrati trysky")
|
||||
#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Cekejte prosim")
|
||||
#define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("na nahrati tr.")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Cekejte prosim")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("na zavedeni")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("filamentu")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Cekejte prosim")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("na vytlaceni")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_3 _UxGT("filamentu")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Cekejte prosim")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("na pokracovani")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("tisku")
|
||||
#else // LCD_HEIGHT < 4
|
||||
// Up to 2 lines allowed
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Cekejte...")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Vysouvani...")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Vlozte, kliknete")
|
||||
#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Nahrivani...")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Zavadeni...")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Vytlacovani...")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Pokracovani...")
|
||||
#endif // LCD_HEIGHT < 4
|
||||
|
||||
#endif // LANGUAGE_CZ_H
|
||||
@@ -1,270 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* French
|
||||
*
|
||||
* LCD Menu Messages
|
||||
* See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
|
||||
*
|
||||
*/
|
||||
#ifndef LANGUAGE_FR_H
|
||||
#define LANGUAGE_FR_H
|
||||
|
||||
#define MAPPER_C2C3
|
||||
#define DISPLAY_CHARSET_ISO10646_1
|
||||
|
||||
#define WELCOME_MSG MACHINE_NAME _UxGT(" prête.")
|
||||
#define MSG_BACK _UxGT("Retour")
|
||||
#define MSG_SD_INSERTED _UxGT("Carte insérée")
|
||||
#define MSG_SD_REMOVED _UxGT("Carte retirée")
|
||||
#define MSG_LCD_ENDSTOPS _UxGT("Butées") // Max length 8 characters
|
||||
#define MSG_MAIN _UxGT("Menu principal")
|
||||
#define MSG_AUTOSTART _UxGT("Demarrage auto")
|
||||
#define MSG_DISABLE_STEPPERS _UxGT("Arrêter moteurs")
|
||||
#define MSG_DEBUG_MENU _UxGT("Menu debug")
|
||||
#define MSG_PROGRESS_BAR_TEST _UxGT("Test barre progression")
|
||||
#define MSG_AUTO_HOME _UxGT("Origine auto.")
|
||||
#define MSG_AUTO_HOME_X _UxGT("Origine X Auto.")
|
||||
#define MSG_AUTO_HOME_Y _UxGT("Origine Y Auto.")
|
||||
#define MSG_AUTO_HOME_Z _UxGT("Origine Z Auto.")
|
||||
#define MSG_LEVEL_BED_HOMING _UxGT("Origine XYZ")
|
||||
#define MSG_LEVEL_BED_WAITING _UxGT("Clic pour commencer")
|
||||
#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Point suivant")
|
||||
#define MSG_LEVEL_BED_DONE _UxGT("Mise à niveau OK!")
|
||||
#define MSG_SET_HOME_OFFSETS _UxGT("Regl. décal. origine")
|
||||
#define MSG_HOME_OFFSETS_APPLIED _UxGT("Décalages appliqués")
|
||||
#define MSG_SET_ORIGIN _UxGT("Régler origine")
|
||||
#define MSG_PREHEAT_1 _UxGT("Préchauffage PLA")
|
||||
#define MSG_PREHEAT_1_N _UxGT("Préchauff. PLA ")
|
||||
#define MSG_PREHEAT_1_ALL _UxGT("Préch. PLA Tout")
|
||||
#define MSG_PREHEAT_1_END MSG_PREHEAT_1 _UxGT(" fini")
|
||||
#define MSG_PREHEAT_1_BEDONLY _UxGT("Préch. PLA lit")
|
||||
#define MSG_PREHEAT_1_SETTINGS _UxGT("Regl. prech. PLA")
|
||||
#define MSG_PREHEAT_2 _UxGT("Préchauffage ABS")
|
||||
#define MSG_PREHEAT_2_N _UxGT("Préchauff. ABS ")
|
||||
#define MSG_PREHEAT_2_ALL _UxGT("Préch. ABS Tout")
|
||||
#define MSG_PREHEAT_2_END MSG_PREHEAT_2 _UxGT(" fini")
|
||||
#define MSG_PREHEAT_2_BEDONLY _UxGT("Préch. ABS lit")
|
||||
#define MSG_PREHEAT_2_SETTINGS _UxGT("Regl. prech. ABS")
|
||||
#define MSG_COOLDOWN _UxGT("Refroidir")
|
||||
#define MSG_SWITCH_PS_ON _UxGT("Allumer alim.")
|
||||
#define MSG_SWITCH_PS_OFF _UxGT("Éteindre alim.")
|
||||
#define MSG_EXTRUDE _UxGT("Éxtrusion")
|
||||
#define MSG_RETRACT _UxGT("Rétraction")
|
||||
#define MSG_MOVE_AXIS _UxGT("Déplacer un axe")
|
||||
#define MSG_BED_LEVELING _UxGT("Règl. Niv. lit")
|
||||
#define MSG_LEVEL_BED _UxGT("Règl. Niv. lit")
|
||||
#define MSG_MOVING _UxGT("Déplacement...")
|
||||
#define MSG_FREE_XY _UxGT("Débloquer XY")
|
||||
#define MSG_MOVE_X _UxGT("Dépl. X")
|
||||
#define MSG_MOVE_Y _UxGT("Dépl. Y")
|
||||
#define MSG_MOVE_Z _UxGT("Dépl. Z")
|
||||
#define MSG_MOVE_E _UxGT("Extruder")
|
||||
#define MSG_MOVE_01MM _UxGT("Dépl. 0.1mm")
|
||||
#define MSG_MOVE_1MM _UxGT("Dépl. 1mm")
|
||||
#define MSG_MOVE_10MM _UxGT("Dépl. 10mm")
|
||||
#define MSG_SPEED _UxGT(" Vitesse")
|
||||
#define MSG_BED_Z _UxGT("Lit Z")
|
||||
#define MSG_NOZZLE _UxGT("Buse")
|
||||
#define MSG_BED _UxGT("Lit")
|
||||
#define MSG_FAN_SPEED _UxGT("Vitesse ventil.")
|
||||
#define MSG_FLOW _UxGT("Flux")
|
||||
#define MSG_CONTROL _UxGT("Contrôler")
|
||||
#define MSG_MIN LCD_STR_THERMOMETER _UxGT(" Min")
|
||||
#define MSG_MAX LCD_STR_THERMOMETER _UxGT(" Max")
|
||||
#define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Facteur")
|
||||
#define MSG_AUTOTEMP _UxGT("Temp. Auto.")
|
||||
#define MSG_ON _UxGT("Marche ")
|
||||
#define MSG_OFF _UxGT("Arrêt")
|
||||
#define MSG_PID_P _UxGT("PID-P")
|
||||
#define MSG_PID_I _UxGT("PID-I")
|
||||
#define MSG_PID_D _UxGT("PID-D")
|
||||
#define MSG_PID_C _UxGT("PID-C")
|
||||
#define MSG_SELECT _UxGT("Sélectionner")
|
||||
#define MSG_ACC _UxGT("Accélération")
|
||||
#define MSG_JERK _UxGT("Jerk")
|
||||
#define MSG_VX_JERK _UxGT("Vx-jerk")
|
||||
#define MSG_VY_JERK _UxGT("Vy-jerk")
|
||||
#define MSG_VZ_JERK _UxGT("Vz-jerk")
|
||||
#define MSG_VE_JERK _UxGT("Ve-jerk")
|
||||
#define MSG_VMAX _UxGT("Vmax")
|
||||
#define MSG_VMIN _UxGT("Vmin")
|
||||
#define MSG_VTRAV_MIN _UxGT("Vdepl min")
|
||||
#define MSG_AMAX _UxGT("Amax ")
|
||||
#define MSG_A_RETRACT _UxGT("A-retract")
|
||||
#define MSG_A_TRAVEL _UxGT("A-Dépl.")
|
||||
#define MSG_STEPS_PER_MM _UxGT("Pas/mm")
|
||||
#define MSG_XSTEPS _UxGT("Xpas/mm")
|
||||
#define MSG_YSTEPS _UxGT("Ypas/mm")
|
||||
#define MSG_ZSTEPS _UxGT("Zpas/mm")
|
||||
#define MSG_ESTEPS _UxGT("Epas/mm")
|
||||
#define MSG_E1STEPS _UxGT("E1pas/mm")
|
||||
#define MSG_E2STEPS _UxGT("E2pas/mm")
|
||||
#define MSG_E3STEPS _UxGT("E3pas/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4pas/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5pas/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Température")
|
||||
#define MSG_MOTION _UxGT("Mouvement")
|
||||
#define MSG_FILAMENT _UxGT("Filament")
|
||||
#define MSG_VOLUMETRIC_ENABLED _UxGT("E en mm3")
|
||||
#define MSG_FILAMENT_DIAM _UxGT("Diam. Fil.")
|
||||
#define MSG_ADVANCE_K _UxGT("Advance K")
|
||||
#define MSG_CONTRAST _UxGT("Contraste LCD")
|
||||
#define MSG_STORE_EEPROM _UxGT("Sauver config")
|
||||
#define MSG_LOAD_EEPROM _UxGT("Lire config")
|
||||
#define MSG_RESTORE_FAILSAFE _UxGT("Restaurer défauts")
|
||||
#define MSG_REFRESH _UxGT("Actualiser")
|
||||
#define MSG_WATCH _UxGT("Surveiller")
|
||||
#define MSG_PREPARE _UxGT("Préparer")
|
||||
#define MSG_TUNE _UxGT("Régler")
|
||||
#define MSG_PAUSE_PRINT _UxGT("Interrompre impr.")
|
||||
#define MSG_RESUME_PRINT _UxGT("Reprendre impr.")
|
||||
#define MSG_STOP_PRINT _UxGT("Arrêter impr.")
|
||||
#define MSG_CARD_MENU _UxGT("Impr. depuis SD")
|
||||
#define MSG_NO_CARD _UxGT("Pas de carte")
|
||||
#define MSG_DWELL _UxGT("Repos...")
|
||||
#define MSG_USERWAIT _UxGT("Atten. de l'util.")
|
||||
#define MSG_RESUMING _UxGT("Repri. de l'impr.")
|
||||
#define MSG_PRINT_ABORTED _UxGT("Impr. Annulée")
|
||||
#define MSG_NO_MOVE _UxGT("Moteurs bloqués.")
|
||||
#define MSG_KILLED _UxGT("MORT.")
|
||||
#define MSG_STOPPED _UxGT("STOPPÉ.")
|
||||
#define MSG_CONTROL_RETRACT _UxGT("Retraction mm")
|
||||
#define MSG_CONTROL_RETRACT_SWAP _UxGT("Ech. Retr. mm")
|
||||
#define MSG_CONTROL_RETRACTF _UxGT("Rétraction V")
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT _UxGT("Saut Z mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Ech. UnRet mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
|
||||
#define MSG_AUTORETRACT _UxGT("Rétract. Auto.")
|
||||
#define MSG_FILAMENTCHANGE _UxGT("Changer filament")
|
||||
#define MSG_INIT_SDCARD _UxGT("Init. la carte SD")
|
||||
#define MSG_CNG_SDCARD _UxGT("Changer de carte")
|
||||
#define MSG_ZPROBE_OUT _UxGT("Z sonde extè. lit")
|
||||
#define MSG_BLTOUCH_SELFTEST _UxGT("Autotest BLTouch")
|
||||
#define MSG_BLTOUCH_RESET _UxGT("RaZ BLTouch")
|
||||
#define MSG_BLTOUCH_DEPLOY _UxGT("Déployer BLTouch")
|
||||
#define MSG_BLTOUCH_STOW _UxGT("Ranger BLTouch")
|
||||
#define MSG_HOME _UxGT("Origine") // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
|
||||
#define MSG_FIRST _UxGT("Premier")
|
||||
#define MSG_ZPROBE_ZOFFSET _UxGT("Décalage Z")
|
||||
#define MSG_BABYSTEP_X _UxGT("Babystep X")
|
||||
#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
|
||||
#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
|
||||
#define MSG_ENDSTOP_ABORT _UxGT("Butée abandon")
|
||||
#define MSG_HEATING_FAILED_LCD _UxGT("Erreur de chauffe")
|
||||
#define MSG_ERR_REDUNDANT_TEMP _UxGT("Err: TEMP. REDONDANT")
|
||||
#define MSG_THERMAL_RUNAWAY _UxGT("EMBALLEMENT THERM.")
|
||||
#define MSG_ERR_MAXTEMP _UxGT("Err: TEMP. MAX")
|
||||
#define MSG_ERR_MINTEMP _UxGT("Err: TEMP. MIN")
|
||||
#define MSG_ERR_MAXTEMP_BED _UxGT("Err: TEMP. MAX LIT")
|
||||
#define MSG_ERR_MINTEMP_BED _UxGT("Err: TEMP. MIN LIT")
|
||||
#define MSG_ERR_Z_HOMING _UxGT("G28 Z interdit")
|
||||
|
||||
#define MSG_HALTED _UxGT("IMPR. STOPPÉE")
|
||||
#define MSG_PLEASE_RESET _UxGT("RaZ. SVP")
|
||||
#define MSG_SHORT_DAY _UxGT("j") // One character only
|
||||
#define MSG_SHORT_HOUR _UxGT("h") // One character only
|
||||
#define MSG_SHORT_MINUTE _UxGT("m") // One character only
|
||||
|
||||
#define MSG_HEATING _UxGT("En chauffe...")
|
||||
#define MSG_HEATING_COMPLETE _UxGT("Chauffe terminée")
|
||||
#define MSG_BED_HEATING _UxGT("Lit en chauffe..")
|
||||
#define MSG_BED_DONE _UxGT("Chauffe lit terminée")
|
||||
#define MSG_DELTA_CALIBRATE _UxGT("Calibration Delta")
|
||||
#define MSG_DELTA_CALIBRATE_X _UxGT("Calibrer X")
|
||||
#define MSG_DELTA_CALIBRATE_Y _UxGT("Calibrer Y")
|
||||
#define MSG_DELTA_CALIBRATE_Z _UxGT("Calibrer Z")
|
||||
#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Calibrer centre")
|
||||
#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Calibration Auto")
|
||||
#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Hauteur Delta")
|
||||
|
||||
#define MSG_INFO_MENU _UxGT("Infos imprimante")
|
||||
#define MSG_INFO_PRINTER_MENU _UxGT("Infos imprimante")
|
||||
#define MSG_INFO_STATS_MENU _UxGT("Stats. imprimante")
|
||||
#define MSG_INFO_BOARD_MENU _UxGT("Infos carte")
|
||||
#define MSG_INFO_THERMISTOR_MENU _UxGT("Thermistors")
|
||||
#define MSG_INFO_EXTRUDERS _UxGT("Extrudeurs")
|
||||
#define MSG_INFO_BAUDRATE _UxGT("Baud")
|
||||
#define MSG_INFO_PROTOCOL _UxGT("Protocole")
|
||||
#define MSG_CASE_LIGHT _UxGT("Lumière")
|
||||
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_INFO_PRINT_COUNT _UxGT("Nbre impressions")
|
||||
#define MSG_INFO_COMPLETED_PRINTS _UxGT("Terminées")
|
||||
#define MSG_INFO_PRINT_TIME _UxGT("Tps impr. total")
|
||||
#define MSG_INFO_PRINT_LONGEST _UxGT("Impr. la + longue")
|
||||
#define MSG_INFO_PRINT_FILAMENT _UxGT("Total filament")
|
||||
#else
|
||||
#define MSG_INFO_PRINT_COUNT _UxGT("Impressions")
|
||||
#define MSG_INFO_COMPLETED_PRINTS _UxGT("Terminées")
|
||||
#define MSG_INFO_PRINT_TIME _UxGT("Total")
|
||||
#define MSG_INFO_PRINT_LONGEST _UxGT("+ long")
|
||||
#define MSG_INFO_PRINT_FILAMENT _UxGT("Filament")
|
||||
#endif
|
||||
|
||||
#define MSG_INFO_MIN_TEMP _UxGT("Temp Min")
|
||||
#define MSG_INFO_MAX_TEMP _UxGT("Temp Max")
|
||||
#define MSG_INFO_PSU _UxGT("Alimentation")
|
||||
#define MSG_DRIVE_STRENGTH _UxGT("Puiss. moteur ")
|
||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("DAC EEPROM sauv.")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("+ extrusion")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Reprendre impr.")
|
||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("La temp. minimum est ")
|
||||
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Buse: ")
|
||||
|
||||
#if LCD_HEIGHT >= 4
|
||||
// Up to 3 lines allowed
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Attente Démarrage")
|
||||
#define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("du filament")
|
||||
#define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("changer")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("attente de")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("décharger filament")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("insérer filament")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("et app. bouton")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("pour continuer...")
|
||||
#define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Appuyer sur le bouton...")
|
||||
#define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("Pour chauffer la buse.")
|
||||
#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Buse en chauffe")
|
||||
#define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Patientez SVP...")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("attente de")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("chargement filament")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("attente de")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("extrusion filament")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("attente impression")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("pour reprendre")
|
||||
#else // LCD_HEIGHT < 4
|
||||
// Up to 2 lines allowed
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Patientez...")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Ejection...")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Insérer et clic")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Chargement...")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Extrusion...")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Reprise...")
|
||||
#endif // LCD_HEIGHT < 4
|
||||
|
||||
#endif // LANGUAGE_FR_H
|
||||
@@ -1,289 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Italian
|
||||
*
|
||||
* LCD Menu Messages
|
||||
* See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
|
||||
*
|
||||
*/
|
||||
#ifndef LANGUAGE_IT_H
|
||||
#define LANGUAGE_IT_H
|
||||
|
||||
#define DISPLAY_CHARSET_ISO10646_1
|
||||
|
||||
#define WELCOME_MSG MACHINE_NAME _UxGT(" pronto.")
|
||||
#define MSG_BACK _UxGT("Indietro")
|
||||
#define MSG_SD_INSERTED _UxGT("SD Card inserita")
|
||||
#define MSG_SD_REMOVED _UxGT("SD Card rimossa")
|
||||
#define MSG_LCD_ENDSTOPS _UxGT("Endstop")
|
||||
#define MSG_MAIN _UxGT("Menu principale")
|
||||
#define MSG_AUTOSTART _UxGT("Autostart")
|
||||
#define MSG_DISABLE_STEPPERS _UxGT("Disabilita Motori")
|
||||
#define MSG_DEBUG_MENU _UxGT("Menu di debug")
|
||||
#define MSG_PROGRESS_BAR_TEST _UxGT("Test barra avanzamento")
|
||||
#define MSG_AUTO_HOME _UxGT("Auto Home")
|
||||
#define MSG_AUTO_HOME_X _UxGT("Home asse X")
|
||||
#define MSG_AUTO_HOME_Y _UxGT("Home asse Y")
|
||||
#define MSG_AUTO_HOME_Z _UxGT("Home asse Z")
|
||||
#define MSG_LEVEL_BED_HOMING _UxGT("Home assi XYZ")
|
||||
#define MSG_LEVEL_BED_WAITING _UxGT("Premi per iniziare")
|
||||
#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Punto successivo")
|
||||
#define MSG_LEVEL_BED_DONE _UxGT("Livel. terminato!")
|
||||
#define MSG_SET_HOME_OFFSETS _UxGT("Imp. offset home")
|
||||
#define MSG_HOME_OFFSETS_APPLIED _UxGT("Offset applicato")
|
||||
#define MSG_SET_ORIGIN _UxGT("Imposta Origine")
|
||||
#define MSG_PREHEAT_1 _UxGT("Preriscalda PLA")
|
||||
#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
|
||||
#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" Tutto")
|
||||
#define MSG_PREHEAT_1_END MSG_PREHEAT_1 _UxGT(" Fine")
|
||||
#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" Piatto")
|
||||
#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" conf")
|
||||
#define MSG_PREHEAT_2 _UxGT("Preriscalda ABS")
|
||||
#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
|
||||
#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" Tutto")
|
||||
#define MSG_PREHEAT_2_END MSG_PREHEAT_2 _UxGT(" Fine")
|
||||
#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" Piatto")
|
||||
#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" conf")
|
||||
#define MSG_COOLDOWN _UxGT("Raffredda")
|
||||
#define MSG_SWITCH_PS_ON _UxGT("Accendi aliment.")
|
||||
#define MSG_SWITCH_PS_OFF _UxGT("Spegni aliment.")
|
||||
#define MSG_EXTRUDE _UxGT("Estrudi")
|
||||
#define MSG_RETRACT _UxGT("Ritrai")
|
||||
#define MSG_MOVE_AXIS _UxGT("Muovi Asse")
|
||||
#define MSG_BED_LEVELING _UxGT("Livella piano")
|
||||
#define MSG_LEVEL_BED _UxGT("Livella piano")
|
||||
#define MSG_MOVING _UxGT("In movimento...")
|
||||
#define MSG_FREE_XY _UxGT("XY liberi")
|
||||
#define MSG_MOVE_X _UxGT("Muovi X")
|
||||
#define MSG_MOVE_Y _UxGT("Muovi Y")
|
||||
#define MSG_MOVE_Z _UxGT("Muovi Z")
|
||||
#define MSG_MOVE_E _UxGT("Estrusore")
|
||||
#define MSG_MOVE_01MM _UxGT("Muovi di 0.1mm")
|
||||
#define MSG_MOVE_1MM _UxGT("Muovi di 1mm")
|
||||
#define MSG_MOVE_10MM _UxGT("Muovi di 10mm")
|
||||
#if ENABLED(DOGLCD)
|
||||
#define MSG_SPEED _UxGT("Velocità")
|
||||
#else
|
||||
#define MSG_SPEED _UxGT("Velocita")
|
||||
#endif
|
||||
#define MSG_BED_Z _UxGT("piatto Z")
|
||||
#define MSG_NOZZLE _UxGT("Ugello")
|
||||
#define MSG_BED _UxGT("Piatto")
|
||||
#if ENABLED(DOGLCD)
|
||||
#define MSG_FAN_SPEED _UxGT("Velocità ventola")
|
||||
#else
|
||||
#define MSG_FAN_SPEED _UxGT("Velocita ventola")
|
||||
#endif
|
||||
#define MSG_FLOW _UxGT("Flusso")
|
||||
#define MSG_CONTROL _UxGT("Controllo")
|
||||
#define MSG_MIN LCD_STR_THERMOMETER _UxGT(" Min")
|
||||
#define MSG_MAX LCD_STR_THERMOMETER _UxGT(" Max")
|
||||
#define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Fact")
|
||||
#define MSG_AUTOTEMP _UxGT("Autotemp")
|
||||
#define MSG_ON _UxGT("On ")
|
||||
#define MSG_OFF _UxGT("Off")
|
||||
#define MSG_PID_P _UxGT("PID-P")
|
||||
#define MSG_PID_I _UxGT("PID-I")
|
||||
#define MSG_PID_D _UxGT("PID-D")
|
||||
#define MSG_PID_C _UxGT("PID-C")
|
||||
#define MSG_SELECT _UxGT("Seleziona")
|
||||
#define MSG_ACC _UxGT("Accel")
|
||||
#define MSG_JERK _UxGT("Jerk")
|
||||
#define MSG_VX_JERK _UxGT("Vx-jerk")
|
||||
#define MSG_VY_JERK _UxGT("Vy-jerk")
|
||||
#define MSG_VZ_JERK _UxGT("Vz-jerk")
|
||||
#define MSG_VE_JERK _UxGT("Ve-jerk")
|
||||
#define MSG_VMAX _UxGT("Vmax ")
|
||||
#define MSG_VMIN _UxGT("Vmin")
|
||||
#define MSG_VTRAV_MIN _UxGT("VTrav min")
|
||||
#define MSG_AMAX _UxGT("Amax ")
|
||||
#define MSG_A_RETRACT _UxGT("A-retract")
|
||||
#define MSG_A_TRAVEL _UxGT("A-Spostamento")
|
||||
#define MSG_STEPS_PER_MM _UxGT("Passi/mm")
|
||||
#define MSG_XSTEPS _UxGT("Xpassi/mm")
|
||||
#define MSG_YSTEPS _UxGT("Ypassi/mm")
|
||||
#define MSG_ZSTEPS _UxGT("Zpassi/mm")
|
||||
#define MSG_ESTEPS _UxGT("Epassi/mm")
|
||||
#define MSG_E1STEPS _UxGT("E1passi/mm")
|
||||
#define MSG_E2STEPS _UxGT("E2passi/mm")
|
||||
#define MSG_E3STEPS _UxGT("E3passi/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4passi/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5passi/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatura")
|
||||
#define MSG_MOTION _UxGT("Movimento")
|
||||
#define MSG_FILAMENT _UxGT("Filamento")
|
||||
#define MSG_VOLUMETRIC_ENABLED _UxGT("E in mm3")
|
||||
#define MSG_FILAMENT_DIAM _UxGT("Diam. filo")
|
||||
#define MSG_ADVANCE_K _UxGT("K avanzato")
|
||||
#define MSG_CONTRAST _UxGT("Contrasto LCD")
|
||||
#define MSG_STORE_EEPROM _UxGT("Salva in memoria")
|
||||
#define MSG_LOAD_EEPROM _UxGT("Carica da memoria")
|
||||
#define MSG_RESTORE_FAILSAFE _UxGT("Ripristina imp.")
|
||||
#define MSG_REFRESH _UxGT("Aggiorna")
|
||||
#define MSG_WATCH _UxGT("Guarda")
|
||||
#define MSG_PREPARE _UxGT("Prepara")
|
||||
#define MSG_TUNE _UxGT("Regola")
|
||||
#define MSG_PAUSE_PRINT _UxGT("Pausa")
|
||||
#define MSG_RESUME_PRINT _UxGT("Riprendi stampa")
|
||||
#define MSG_STOP_PRINT _UxGT("Arresta stampa")
|
||||
#define MSG_CARD_MENU _UxGT("Stampa da SD")
|
||||
#define MSG_NO_CARD _UxGT("SD non presente")
|
||||
#define MSG_DWELL _UxGT("Sospensione...")
|
||||
#define MSG_USERWAIT _UxGT("Attendi Utente..")
|
||||
#define MSG_RESUMING _UxGT("Riprendi Stampa")
|
||||
#define MSG_PRINT_ABORTED _UxGT("Stampa annullata")
|
||||
#define MSG_NO_MOVE _UxGT("Nessun Movimento")
|
||||
#define MSG_KILLED _UxGT("UCCISO. ")
|
||||
#define MSG_STOPPED _UxGT("ARRESTATO. ")
|
||||
#define MSG_CONTROL_RETRACT _UxGT("Ritrai mm")
|
||||
#define MSG_CONTROL_RETRACT_SWAP _UxGT("Scamb. Ritrai mm")
|
||||
#define MSG_CONTROL_RETRACTF _UxGT("Ritrai V")
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT _UxGT("Salta mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Scamb. UnRet mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
|
||||
#define MSG_AUTORETRACT _UxGT("AutoRitrai")
|
||||
#define MSG_FILAMENTCHANGE _UxGT("Cambia filamento")
|
||||
#define MSG_INIT_SDCARD _UxGT("Iniz. SD-Card")
|
||||
#define MSG_CNG_SDCARD _UxGT("Cambia SD-Card")
|
||||
#define MSG_ZPROBE_OUT _UxGT("Z probe out. bed")
|
||||
#define MSG_BLTOUCH_SELFTEST _UxGT("Autotest BLTouch")
|
||||
#define MSG_BLTOUCH_RESET _UxGT("Resetta BLTouch")
|
||||
#define MSG_HOME _UxGT("Home") // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
|
||||
#define MSG_FIRST _UxGT("prima")
|
||||
#define MSG_ZPROBE_ZOFFSET _UxGT("Z Offset")
|
||||
#define MSG_BABYSTEP_X _UxGT("Babystep X")
|
||||
#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
|
||||
#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
|
||||
#define MSG_ENDSTOP_ABORT _UxGT("Finecorsa abort")
|
||||
#define MSG_HEATING_FAILED_LCD _UxGT("Riscald. Fallito")
|
||||
#define MSG_ERR_REDUNDANT_TEMP _UxGT("Err: TEMP RIDONDANTI")
|
||||
#define MSG_THERMAL_RUNAWAY _UxGT("TEMP FUORI CONTROLLO")
|
||||
#define MSG_ERR_MAXTEMP _UxGT("Err: TEMP MASSIMA")
|
||||
#define MSG_ERR_MINTEMP _UxGT("Err: TEMP MINIMA")
|
||||
#define MSG_ERR_MAXTEMP_BED _UxGT("Err: TEMP MASSIMA PIATTO")
|
||||
#define MSG_ERR_MINTEMP_BED _UxGT("Err: TEMP MINIMA PIATTO")
|
||||
#define MSG_ERR_Z_HOMING _UxGT("G28 Z Vietato")
|
||||
#define MSG_HALTED _UxGT("STAMPANTE FERMATA")
|
||||
#define MSG_PLEASE_RESET _UxGT("Riavviare prego")
|
||||
#define MSG_SHORT_DAY _UxGT("g") // One character only
|
||||
#define MSG_SHORT_HOUR _UxGT("h") // One character only
|
||||
#define MSG_SHORT_MINUTE _UxGT("m") // One character only
|
||||
#define MSG_HEATING _UxGT("Riscaldamento..")
|
||||
#define MSG_HEATING_COMPLETE _UxGT("Risc. completato")
|
||||
#define MSG_BED_HEATING _UxGT("Risc. Piatto..")
|
||||
#define MSG_BED_DONE _UxGT("Piatto Pronto")
|
||||
#define MSG_DELTA_CALIBRATE _UxGT("Calibraz. Delta")
|
||||
#define MSG_DELTA_CALIBRATE_X _UxGT("Calibra X")
|
||||
#define MSG_DELTA_CALIBRATE_Y _UxGT("Calibra Y")
|
||||
#define MSG_DELTA_CALIBRATE_Z _UxGT("Calibra Z")
|
||||
#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Calibra Center")
|
||||
#define MSG_DELTA_AUTO_CALIBRATE _UxGT("Auto calibrazione")
|
||||
#define MSG_DELTA_HEIGHT_CALIBRATE _UxGT("Imp. altezza Delta")
|
||||
#define MSG_INFO_MENU _UxGT("Riguardo stampante")
|
||||
#define MSG_INFO_PRINTER_MENU _UxGT("Info. stampante")
|
||||
#define MSG_INFO_STATS_MENU _UxGT("Statistiche")
|
||||
#define MSG_INFO_BOARD_MENU _UxGT("Info. scheda")
|
||||
#define MSG_INFO_THERMISTOR_MENU _UxGT("Termistori")
|
||||
#define MSG_INFO_EXTRUDERS _UxGT("Estrusori")
|
||||
#define MSG_INFO_BAUDRATE _UxGT("Baud")
|
||||
#define MSG_INFO_PROTOCOL _UxGT("Protocollo")
|
||||
#define MSG_CASE_LIGHT _UxGT("Luci Case")
|
||||
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_INFO_PRINT_COUNT _UxGT("Contat. stampa")
|
||||
#define MSG_INFO_COMPLETED_PRINTS _UxGT("Completati")
|
||||
#define MSG_INFO_PRINT_TIME _UxGT("Tempo totale")
|
||||
#if ENABLED(DOGLCD)
|
||||
#define MSG_INFO_PRINT_LONGEST _UxGT("Lavoro più lungo")
|
||||
#else
|
||||
#define MSG_INFO_PRINT_LONGEST _UxGT("Lavoro piu lungo")
|
||||
#endif
|
||||
#define MSG_INFO_PRINT_FILAMENT _UxGT("Totale estruso")
|
||||
#else
|
||||
#define MSG_INFO_PRINT_COUNT _UxGT("Stampe")
|
||||
#define MSG_INFO_COMPLETED_PRINTS _UxGT("Completati")
|
||||
#define MSG_INFO_PRINT_TIME _UxGT("Durata")
|
||||
#if ENABLED(DOGLCD)
|
||||
#define MSG_INFO_PRINT_LONGEST _UxGT("Più lungo")
|
||||
#else
|
||||
#define MSG_INFO_PRINT_LONGEST _UxGT("Piu lungo")
|
||||
#endif
|
||||
#define MSG_INFO_PRINT_FILAMENT _UxGT("Estruso")
|
||||
#endif
|
||||
#define MSG_INFO_MIN_TEMP _UxGT("Temp min")
|
||||
#define MSG_INFO_MAX_TEMP _UxGT("Temp max")
|
||||
#define MSG_INFO_PSU _UxGT("Alimentatore")
|
||||
|
||||
#define MSG_DRIVE_STRENGTH _UxGT("Potenza Drive")
|
||||
#define MSG_DAC_PERCENT _UxGT("Driver %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Scrivi DAC EEPROM")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Estrusione")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Riprendi stampa")
|
||||
#if ENABLED(DOGLCD)
|
||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Temp minima è ")
|
||||
#else
|
||||
#define MSG_FILAMENT_CHANGE_MINTEMP _UxGT("Temp minima e ")
|
||||
#endif
|
||||
#define MSG_FILAMENT_CHANGE_NOZZLE _UxGT(" Ugello: ")
|
||||
|
||||
#if LCD_HEIGHT >= 4
|
||||
// Up to 3 lines allowed
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Attendere avvio")
|
||||
#define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("del cambio")
|
||||
#define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("di filamento")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Attendere")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("l'espulsione")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_3 _UxGT("del filamento")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Inserisci il")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("filamento e")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("premi per cont")
|
||||
#define MSG_FILAMENT_CHANGE_HEAT_1 _UxGT("Premi per")
|
||||
#define MSG_FILAMENT_CHANGE_HEAT_2 _UxGT("riscald ugello.")
|
||||
#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Riscald. ugello")
|
||||
#define MSG_FILAMENT_CHANGE_HEATING_2 _UxGT("Attendere...")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Attendere")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("il caricamento")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("del filamento")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Attendere")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("l'estrusione")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_3 _UxGT("del filamento")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Attendere")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("la ripresa")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("della stampa")
|
||||
#else // LCD_HEIGHT < 4
|
||||
// Up to 2 lines allowed
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Attendere...")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Espulsione...")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Inserisci e premi")
|
||||
#define MSG_FILAMENT_CHANGE_HEATING_1 _UxGT("Riscaldamento...")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Caricamento...")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Estrusione...")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Ripresa...")
|
||||
#endif // LCD_HEIGHT < 4
|
||||
|
||||
#endif // LANGUAGE_IT_H
|
||||
@@ -1,322 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Japanese (Kana)
|
||||
*
|
||||
* LCD Menu Messages
|
||||
* See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LANGUAGE_KANA_H
|
||||
#define LANGUAGE_KANA_H
|
||||
|
||||
// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
|
||||
#define SIMULATE_ROMFONT
|
||||
#define DISPLAY_CHARSET_ISO10646_KANA
|
||||
|
||||
// 片仮名表示定義
|
||||
#define WELCOME_MSG MACHINE_NAME " ready."
|
||||
#define MSG_SD_INSERTED "\xb6\xb0\xc4\xde\xb6\xde\xbf\xb3\xc6\xad\xb3\xbb\xda\xcf\xbc\xc0" // "カードガソウニュウサレマシタ" ("Card inserted")
|
||||
#define MSG_SD_REMOVED "\xb6\xb0\xc4\xde\xb6\xde\xb1\xd8\xcf\xbe\xdd" // "カードガアリマセン" ("Card removed")
|
||||
#define MSG_LCD_ENDSTOPS "Endstops" // Max length 8 characters
|
||||
#define MSG_MAIN "\xd2\xb2\xdd" // "メイン" ("Main")
|
||||
#define MSG_AUTOSTART "\xbc\xde\xc4\xde\xb3\xb6\xb2\xbc" // "ジドウカイシ" ("Autostart")
|
||||
#define MSG_DISABLE_STEPPERS "\xd3\xb0\xc0\xb0\xc3\xde\xdd\xb9\xde\xdd\x20\xb5\xcc" // "モーターデンゲン オフ" ("Disable steppers")
|
||||
#define MSG_DEBUG_MENU "\xc3\xde\xca\xde\xaf\xb8\xde\xd2\xc6\xad\xb0" // "デバッグメニュー" ("Debug Menu")
|
||||
#define MSG_PROGRESS_BAR_TEST "\xcc\xdf\xdb\xb8\xde\xda\xbd\xca\xde\xb0\x20\xc3\xbd\xc4" // "プログレスバー テスト" ("Progress Bar Test")
|
||||
#define MSG_AUTO_HOME "\xb9\xde\xdd\xc3\xdd\xcc\xaf\xb7" // "ゲンテンフッキ" ("Auto home")
|
||||
#define MSG_AUTO_HOME_X "X\xbc\xde\xb8\x20\xb9\xde\xdd\xc3\xdd\xcc\xaf\xb7" // "Xジク ゲンテンフッキ" ("Home X")
|
||||
#define MSG_AUTO_HOME_Y "Y\xbc\xde\xb8\x20\xb9\xde\xdd\xc3\xdd\xcc\xaf\xb7" // "Yジク ゲンテンフッキ" ("Home Y")
|
||||
#define MSG_AUTO_HOME_Z "Z\xbc\xde\xb8\x20\xb9\xde\xdd\xc3\xdd\xcc\xaf\xb7" // "Zジク ゲンテンフッキ" ("Home Z")
|
||||
#define MSG_LEVEL_BED_HOMING "\xb9\xde\xdd\xc3\xdd\xcc\xaf\xb7\xc1\xad\xb3" // "ゲンテンフッキチュウ" ("Homing XYZ")
|
||||
#define MSG_LEVEL_BED_WAITING "\xda\xcd\xde\xd8\xdd\xb8\xde\xb6\xb2\xbc" // "レベリングカイシ" ("Click to Begin")
|
||||
#define MSG_LEVEL_BED_NEXT_POINT "\xc2\xb7\xde\xc9\xbf\xb8\xc3\xb2\xc3\xdd\xcd" // "ツギノソクテイテンヘ" ("Next Point")
|
||||
#define MSG_LEVEL_BED_DONE "\xda\xcd\xde\xd8\xdd\xb8\xde\xb6\xdd\xd8\xae\xb3" // "レベリングカンリョウ" ("Leveling Done!")
|
||||
#define MSG_SET_HOME_OFFSETS "\xb7\xbc\xde\xad\xdd\xb5\xcc\xbe\xaf\xc4\xbe\xaf\xc3\xb2" // "キジュンオフセットセッテイ" ("Set home offsets")
|
||||
#define MSG_HOME_OFFSETS_APPLIED "\xb5\xcc\xbe\xaf\xc4\xb6\xde\xc3\xb7\xd6\xb3\xbb\xda\xcf\xbc\xc0" // "オフセットガテキヨウサレマシタ" ("Offsets applied")
|
||||
#define MSG_SET_ORIGIN "\xb7\xbc\xde\xad\xdd\xbe\xaf\xc4" // "キジュンセット" ("Set origin")
|
||||
#define MSG_PREHEAT_1 "PLA \xd6\xc8\xc2" // "PLA ヨネツ" ("Preheat PLA")
|
||||
#define MSG_PREHEAT_1_N MSG_PREHEAT_1 " "
|
||||
#define MSG_PREHEAT_1_ALL "PLA \xbd\xcd\xde\xc3\xd6\xc8\xc2" // "PLA スベテヨネツ" (" All")
|
||||
#define MSG_PREHEAT_1_BEDONLY "PLA \xcd\xde\xaf\xc4\xde\xd6\xc8\xc2" // "PLA ベッドヨネツ" (" Bed")
|
||||
#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 "\xbe\xaf\xc3\xb2" // "セッテイ" (" conf")
|
||||
#define MSG_PREHEAT_2 "ABS \xd6\xc8\xc2" // "ABS ヨネツ" ("Preheat ABS")
|
||||
#define MSG_PREHEAT_2_N MSG_PREHEAT_2 " "
|
||||
#define MSG_PREHEAT_2_ALL "ABS \xbd\xcd\xde\xc3\xd6\xc8\xc2" // "ABS スベテヨネツ" (" All")
|
||||
#define MSG_PREHEAT_2_BEDONLY "ABS \xcd\xde\xaf\xc4\xde\xd6\xc8\xc2" // "ABS ベッドヨネツ" (" Bed")
|
||||
#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 "\xbe\xaf\xc3\xb2" // "セッテイ" (" conf")
|
||||
#define MSG_COOLDOWN "\xb6\xc8\xc2\xc3\xb2\xbc" // "カネツテイシ" ("Cooldown")
|
||||
#define MSG_SWITCH_PS_ON "\xc3\xde\xdd\xb9\xde\xdd\x20\xb5\xdd" // "デンゲン オン" ("Switch power on")
|
||||
#define MSG_SWITCH_PS_OFF "\xc3\xde\xdd\xb9\xde\xdd\x20\xb5\xcc" // "デンゲン オフ" ("Switch power off")
|
||||
#define MSG_EXTRUDE "\xb5\xbc\xc0\xde\xbc" // "オシダシ" ("Extrude")
|
||||
#define MSG_RETRACT "\xcb\xb7\xba\xd0\xbe\xaf\xc3\xb2" // "ヒキコミセッテイ" ("Retract")
|
||||
#define MSG_MOVE_AXIS "\xbc\xde\xb8\xb2\xc4\xde\xb3" // "ジクイドウ" ("Move axis")
|
||||
#define MSG_BED_LEVELING "\xcd\xde\xaf\xc4\xde\xda\xcd\xde\xd8\xdd\xb8\xde" // "ベッドレベリング" ("Bed Leveling")
|
||||
#define MSG_LEVEL_BED "\xcd\xde\xaf\xc4\xde\xda\xcd\xde\xd8\xdd\xb8\xde" // "ベッドレベリング" ("Level bed")
|
||||
#define MSG_MOVING "\xb2\xc4\xde\xb3\xc1\xad\xb3" // "イドウチュウ" ("Moving...")
|
||||
#define MSG_FREE_XY "XY\xbc\xde\xb8\x20\xb6\xb2\xce\xb3" // "XYジク カイホウ" ("Free XY")
|
||||
#define MSG_MOVE_X "X\xbc\xde\xb8\x20\xb2\xc4\xde\xb3" // "Xジク イドウ" ("Move X")
|
||||
#define MSG_MOVE_Y "Y\xbc\xde\xb8\x20\xb2\xc4\xde\xb3" // "Yジク イドウ" ("Move Y")
|
||||
#define MSG_MOVE_Z "Z\xbc\xde\xb8\x20\xb2\xc4\xde\xb3" // "Zジク イドウ" ("Move Z")
|
||||
#define MSG_MOVE_E "\xb4\xb8\xbd\xc4\xd9\xb0\xc0\xde\xb0" // "エクストルーダー" ("Extruder")
|
||||
#define MSG_MOVE_01MM "0.1mm \xb2\xc4\xde\xb3" // "0.1mm イドウ" ("Move 0.1mm")
|
||||
#define MSG_MOVE_1MM " 1mm \xb2\xc4\xde\xb3" // " 1mm イドウ" ("Move 1mm")
|
||||
#define MSG_MOVE_10MM " 10mm \xb2\xc4\xde\xb3" // " 10mm イドウ" ("Move 10mm")
|
||||
#define MSG_SPEED "\xbf\xb8\xc4\xde" // "ソクド" ("Speed")
|
||||
#define MSG_BED_Z "Z\xb5\xcc\xbe\xaf\xc4" // "Zオフセット" ("Bed Z")
|
||||
#define MSG_NOZZLE "\xc9\xbd\xde\xd9" // "ノズル" ("Nozzle")
|
||||
#define MSG_BED "\xcd\xde\xaf\xc4\xde" // "ベッド" ("Bed")
|
||||
#define MSG_FAN_SPEED "\xcc\xa7\xdd\xbf\xb8\xc4\xde" // "ファンソクド" ("Fan speed")
|
||||
#define MSG_FLOW "\xc4\xbc\xad\xc2\xd8\xae\xb3" // "トシュツリョウ" ("Flow")
|
||||
#define MSG_CONTROL "\xbe\xb2\xb7\xde\xae" // "セイギョ" ("Control")
|
||||
#define MSG_MIN LCD_STR_THERMOMETER " \xbb\xb2\xc3\xb2" // " サイテイ" (" Min")
|
||||
#define MSG_MAX LCD_STR_THERMOMETER " \xbb\xb2\xba\xb3" // " サイコウ" (" Max")
|
||||
#define MSG_FACTOR LCD_STR_THERMOMETER " \xcc\xa7\xb8\xc0\xb0" // " ファクター" (" Fact")
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_AUTOTEMP "\xbc\xde\xc4\xde\xb3\xb5\xdd\xc4\xde\xbe\xb2\xb7\xde\xae" // "ジドウオンドセイギョ" ("Autotemp")
|
||||
#else
|
||||
#define MSG_AUTOTEMP "\xbc\xde\xc4\xde\xb3\xb5\xdd\xc4\xde" // "ジドウオンド" ("Autotemp")
|
||||
#endif
|
||||
#define MSG_ON "\xb5\xdd " // "オン " ("On ")
|
||||
#define MSG_OFF "\xb5\xcc " // "オフ " ("Off")
|
||||
#define MSG_PID_P "PID-P"
|
||||
#define MSG_PID_I "PID-I"
|
||||
#define MSG_PID_D "PID-D"
|
||||
#define MSG_PID_C "PID-C"
|
||||
#define MSG_SELECT "\xbe\xdd\xc0\xb8" // "センタク" ("Select")
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_ACC "\xb6\xbf\xb8\xc4\xde mm/s2" // "カソクド mm/s2" ("Accel")
|
||||
#define MSG_VX_JERK "X\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s" // "Xジク ヤクド mm/s" ("Vx-jerk")
|
||||
#define MSG_VY_JERK "Y\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s" // "Yジク ヤクド mm/s" ("Vy-jerk")
|
||||
#define MSG_VZ_JERK "Z\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s" // "Zジク ヤクド mm/s" ("Vz-jerk")
|
||||
#define MSG_VE_JERK "\xb4\xb8\xbd\xc4\xd9\xb0\xc0\xde\xb0\x20\xd4\xb8\xc4\xde" // "エクストルーダー ヤクド" ("Ve-jerk")
|
||||
#define MSG_VMAX "\xbb\xb2\xc0\xde\xb2\xb5\xb8\xd8\xbf\xb8\xc4\xde " // "サイダイオクリソクド " ("Vmax ")
|
||||
#define MSG_VMIN "\xbb\xb2\xbc\xae\xb3\xb5\xb8\xd8\xbf\xb8\xc4\xde" // "サイショウオクリソクド" ("Vmin")
|
||||
#define MSG_VTRAV_MIN "\xbb\xb2\xbc\xae\xb3\xb2\xc4\xde\xb3\xbf\xb8\xc4\xde" // "サイショウイドウソクド" ("VTrav min")
|
||||
#define MSG_AMAX "\xbb\xb2\xc0\xde\xb2\xb6\xbf\xb8\xc4\xde " // "サイダイカソクド " ("Amax ")
|
||||
#else
|
||||
#define MSG_ACC "\xb6\xbf\xb8\xc4\xde" // "カソクド" ("Accel")
|
||||
#define MSG_VX_JERK "X\xbc\xde\xb8\x20\xd4\xb8\xc4\xde" // "XYジク ヤクド" ("Vx-jerk")
|
||||
#define MSG_VY_JERK "Y\xbc\xde\xb8\x20\xd4\xb8\xc4\xde" // "XYジク ヤクド" ("Vy-jerk")
|
||||
#define MSG_VZ_JERK "Z\xbc\xde\xb8\x20\xd4\xb8\xc4\xde" // "Zジク ヤクド" ("Vz-jerk")
|
||||
#define MSG_VE_JERK "E\x20\xd4\xb8\xc4\xde" // "E ヤクド" ("Ve-jerk")
|
||||
#define MSG_VMAX "max\xb5\xb8\xd8\xbf\xb8\xc4\xde " // "maxオクリソクド" ("Vmax ")
|
||||
#define MSG_VMIN "min\xb5\xb8\xd8\xbf\xb8\xc4\xde" // "minオクリソクド" ("Vmin")
|
||||
#define MSG_VTRAV_MIN "min\xb2\xc4\xde\xb3\xbf\xb8\xc4\xde" // "minイドウソクド" ("VTrav min")
|
||||
#define MSG_AMAX "max\xb6\xbf\xb8 " // "maxカソク " ("Amax ")
|
||||
#endif
|
||||
#define MSG_A_RETRACT "\xcb\xb7\xba\xd0\xb6\xbf\xb8\xc4\xde" // "ヒキコミカソクド" ("A-retract")
|
||||
#define MSG_A_TRAVEL "\xb2\xc4\xde\xb3\xb6\xbf\xb8\xc4\xde" // "イドウカソクド" ("A-travel")
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_STEPS_PER_MM "Steps/mm"
|
||||
#define MSG_XSTEPS "Xsteps/mm"
|
||||
#define MSG_YSTEPS "Ysteps/mm"
|
||||
#define MSG_ZSTEPS "Zsteps/mm"
|
||||
#define MSG_ESTEPS "Esteps/mm"
|
||||
#define MSG_E1STEPS "E1steps/mm"
|
||||
#define MSG_E2STEPS "E2steps/mm"
|
||||
#define MSG_E3STEPS "E3steps/mm"
|
||||
#define MSG_E4STEPS "E4steps/mm"
|
||||
#define MSG_E5STEPS "E5steps/mm"
|
||||
#else
|
||||
#define MSG_STEPS_PER_MM "Steps"
|
||||
#define MSG_XSTEPS "Xsteps"
|
||||
#define MSG_YSTEPS "Ysteps"
|
||||
#define MSG_ZSTEPS "Zsteps"
|
||||
#define MSG_ESTEPS "Esteps"
|
||||
#define MSG_E1STEPS "E1steps"
|
||||
#define MSG_E2STEPS "E2steps"
|
||||
#define MSG_E3STEPS "E3steps"
|
||||
#define MSG_E4STEPS "E4steps"
|
||||
#define MSG_E5STEPS "E5steps"
|
||||
#endif
|
||||
#define MSG_TEMPERATURE "\xb5\xdd\xc4\xde" // "オンド" ("Temperature")
|
||||
#define MSG_MOTION "\xb3\xba\xde\xb7\xbe\xaf\xc3\xb2" // "ウゴキセッテイ" ("Motion")
|
||||
#define MSG_FILAMENT "\xcc\xa8\xd7\xd2\xdd\xc4" // "フィラメント" ("Filament")
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm3"
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_FILAMENT_DIAM "\xcc\xa8\xd7\xd2\xdd\xc4\xc1\xae\xaf\xb9\xb2" // "フィラメントチョッケイ" ("Fil. Dia.")
|
||||
#else
|
||||
#define MSG_FILAMENT_DIAM "\xcc\xa8\xd7\xd2\xdd\xc4\xb9\xb2" // "フィラメントケイ" ("Fil. Dia.")
|
||||
#endif
|
||||
#define MSG_CONTRAST "LCD\xba\xdd\xc4\xd7\xbd\xc4" // "LCDコントラスト" ("LCD contrast")
|
||||
#define MSG_STORE_EEPROM "\xd2\xd3\xd8\xcd\xb6\xb8\xc9\xb3" // "メモリヘカクノウ" ("Store memory")
|
||||
#define MSG_LOAD_EEPROM "\xd2\xd3\xd8\xb6\xd7\xd6\xd0\xba\xd0" // "メモリカラヨミコミ" ("Load memory")
|
||||
#define MSG_RESTORE_FAILSAFE "\xbe\xaf\xc3\xb2\xd8\xbe\xaf\xc4" // "セッテイリセット" ("Restore failsafe")
|
||||
#define MSG_REFRESH "\xd8\xcc\xda\xaf\xbc\xad" // "リフレッシュ" ("Refresh")
|
||||
#define MSG_WATCH "\xbc\xde\xae\xb3\xce\xb3\xb6\xde\xd2\xdd" // "ジョウホウガメン" ("Info screen")
|
||||
#define MSG_PREPARE "\xbc\xde\xad\xdd\xcb\xde\xbe\xaf\xc3\xb2" // "ジュンビセッテイ" ("Prepare")
|
||||
#define MSG_TUNE "\xc1\xae\xb3\xbe\xb2" // "チョウセイ" ("Tune")
|
||||
#define MSG_PAUSE_PRINT "\xb2\xc1\xbc\xde\xc3\xb2\xbc" // "イチジテイシ" ("Pause print")
|
||||
#define MSG_RESUME_PRINT "\xcc\xdf\xd8\xdd\xc4\xbb\xb2\xb6\xb2" // "プリントサイカイ" ("Resume print")
|
||||
#define MSG_STOP_PRINT "\xcc\xdf\xd8\xdd\xc4\xc3\xb2\xbc" // "プリントテイシ" ("Stop print")
|
||||
#define MSG_CARD_MENU "SD\xb6\xb0\xc4\xde\xb6\xd7\xcc\xdf\xd8\xdd\xc4" // "SDカードカラプリント" ("Print from SD")
|
||||
#define MSG_NO_CARD "SD\xb6\xb0\xc4\xde\xb6\xde\xb1\xd8\xcf\xbe\xdd" // "SDカードガアリマセン" ("No SD card")
|
||||
#define MSG_DWELL "\xb7\xad\xb3\xbc" // "キュウシ" ("Sleep...")
|
||||
#define MSG_USERWAIT "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオマチクダサイ" ("Wait for user...")
|
||||
#define MSG_RESUMING "\xcc\xdf\xd8\xdd\xc4\xbb\xb2\xb6\xb2" // "プリントサイカイ" ("Resuming print")
|
||||
#define MSG_PRINT_ABORTED "\xcc\xdf\xd8\xdd\xc4\xb6\xde\xc1\xad\xb3\xbc\xbb\xda\xcf\xbc\xc0" // "プリントガチュウシサレマシタ" ("Print aborted")
|
||||
#define MSG_NO_MOVE "\xb3\xba\xde\xb7\xcf\xbe\xdd" // "ウゴキマセン" ("No move.")
|
||||
#define MSG_KILLED "\xcb\xbc\xde\xae\xb3\xc3\xb2\xbc" // "ヒジョウテイシ" ("KILLED. ")
|
||||
#define MSG_STOPPED "\xc3\xb2\xbc\xbc\xcf\xbc\xc0" // "テイシシマシタ" ("STOPPED. ")
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_CONTROL_RETRACT "\xcb\xb7\xba\xd0\xd8\xae\xb3 mm" // "ヒキコミリョウ mm" ("Retract mm")
|
||||
#define MSG_CONTROL_RETRACT_SWAP "\xcb\xb7\xba\xd0\xd8\xae\xb3S mm" // "ヒキコミリョウS mm" ("Swap Re.mm")
|
||||
#define MSG_CONTROL_RETRACTF "\xcb\xb7\xba\xd0\xbf\xb8\xc4\xde mm/s" // "ヒキコミソクド mm/s" ("Retract V")
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT "\xc9\xbd\xde\xd9\xc0\xb2\xcb mm" // "ノズルタイヒ mm" ("Hop mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER "\xce\xbc\xae\xb3\xd8\xae\xb3 mm" // "ホショウリョウ mm" ("UnRet mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP "\xce\xbc\xae\xb3\xd8\xae\xb3S mm" // "ホショウリョウS mm" ("S UnRet mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF "\xce\xbc\xae\xb3\xbf\xb8\xc4\xde mm/s" // "ホショウソクド mm/s" ("UnRet V")
|
||||
#else
|
||||
#define MSG_CONTROL_RETRACT "\xcb\xb7\xba\xd0\xd8\xae\xb3" // "ヒキコミリョウ" ("Retract mm")
|
||||
#define MSG_CONTROL_RETRACT_SWAP "\xcb\xb7\xba\xd0\xd8\xae\xb3S" // "ヒキコミリョウS" ("Swap Re.mm")
|
||||
#define MSG_CONTROL_RETRACTF "\xcb\xb7\xba\xd0\xbf\xb8\xc4\xde" // "ヒキコミソクド" ("Retract V")
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT "\xc9\xbd\xde\xd9\xc0\xb2\xcb" // "ノズルタイヒ" ("Hop mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER "\xce\xbc\xae\xb3\xd8\xae\xb3" // "ホショウリョウ" ("UnRet mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP "\xce\xbc\xae\xb3\xd8\xae\xb3S" // "ホショウリョウS" ("S UnRet mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF "\xce\xbc\xae\xb3\xbf\xb8\xc4\xde" // "ホショウソクド" ("UnRet V")
|
||||
#endif
|
||||
#define MSG_AUTORETRACT "\xbc\xde\xc4\xde\xb3\xcb\xb7\xba\xd0" // "ジドウヒキコミ" ("AutoRetr.")
|
||||
#define MSG_FILAMENTCHANGE "\xcc\xa8\xd7\xd2\xdd\xc4\xba\xb3\xb6\xdd" // "フィラメントコウカン" ("Change filament")
|
||||
#define MSG_INIT_SDCARD "SD\xb6\xb0\xc4\xde\xbb\xb2\xd6\xd0\xba\xd0" // "SDカードサイヨミコミ" ("Init. SD card")
|
||||
#define MSG_CNG_SDCARD "SD\xb6\xb0\xc4\xde\xba\xb3\xb6\xdd" // "SDカードコウカン" ("Change SD card")
|
||||
#define MSG_ZPROBE_OUT "Z\xcc\xdf\xdb\xb0\xcc\xde\x20\xcd\xde\xaf\xc4\xde\xb6\xde\xb2" // "Zプローブ ベッドガイ" ("Z probe out. bed")
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_BLTOUCH_SELFTEST "BLTouch \xbc\xde\xba\xbc\xdd\xc0\xde\xdd" // "BLTouch ジコシンダン" ("BLTouch Self-Test")
|
||||
#else
|
||||
#define MSG_BLTOUCH_SELFTEST "BLTouch \xbe\xd9\xcc\xc3\xbd\xc4" // "BLTouch セルフテスト" ("BLTouch Self-Test")
|
||||
#endif
|
||||
#define MSG_BLTOUCH_RESET "BLTouch \xd8\xbe\xaf\xc4" // "BLTouch リセット" ("Reset BLTouch")
|
||||
#define MSG_HOME "\xbb\xb7\xc6" // "サキニ" ("Home") // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_FIRST "\xa6\xcc\xaf\xb7\xbb\xbe\xc3\xb8\xc0\xde\xbb\xb2" // "ヲフッキサセテクダサイ" ("first")
|
||||
#else
|
||||
#define MSG_FIRST "\xa6\xcc\xaf\xb7\xbb\xbe\xd6" // "ヲフッキサセヨ" ("first")
|
||||
#endif
|
||||
#define MSG_ZPROBE_ZOFFSET "Z\xb5\xcc\xbe\xaf\xc4" // "Zオフセット" ("Z Offset")
|
||||
#define MSG_BABYSTEP_X "X\xbc\xde\xb8\x20\xcb\xde\xc4\xde\xb3" // "Xジク ビドウ" ("Babystep X")
|
||||
#define MSG_BABYSTEP_Y "Y\xbc\xde\xb8\x20\xcb\xde\xc4\xde\xb3" // "Yジク ビドウ" ("Babystep Y")
|
||||
#define MSG_BABYSTEP_Z "Z\xbc\xde\xb8\x20\xcb\xde\xc4\xde\xb3" // "Zジク ビドウ" ("Babystep Z")
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_ENDSTOP_ABORT "\xb2\xc4\xde\xb3\xb9\xde\xdd\xb6\xb2\xb9\xdd\xc1\xb7\xc9\xb3" // "イドウゲンカイケンチキノウ" ("Endstop abort")
|
||||
#else
|
||||
#define MSG_ENDSTOP_ABORT "\xb2\xc4\xde\xb3\xb9\xde\xdd\xb6\xb2\xb9\xdd\xc1" // "イドウゲンカイケンチ" ("Endstop abort")
|
||||
#endif
|
||||
#define MSG_HEATING_FAILED_LCD "\xb6\xc8\xc2\xbc\xaf\xca\xdf\xb2" // "カネツシッパイ" ("Heating failed")
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_ERR_REDUNDANT_TEMP "\xb4\xd7\xb0:\xbc\xde\xae\xb3\xc1\xae\xb3\xbb\xb0\xd0\xbd\xc0\xb0\xb7\xc9\xb3" // "エラー:ジョウチョウサーミスターキノウ" ("Err: REDUNDANT TEMP")
|
||||
#else
|
||||
#define MSG_ERR_REDUNDANT_TEMP "\xb4\xd7\xb0:\xbc\xde\xae\xb3\xc1\xae\xb3\xbb\xb0\xd0\xbd\xc0" // "エラー:ジョウチョウサーミスタ" ("Err: REDUNDANT TEMP")
|
||||
#endif
|
||||
#define MSG_THERMAL_RUNAWAY "\xc8\xc2\xce\xde\xb3\xbf\xb3" // "ネツボウソウ" ("THERMAL RUNAWAY")
|
||||
#define MSG_ERR_MAXTEMP "\xb4\xd7\xb0:\xbb\xb2\xba\xb3\xb5\xdd\xc1\xae\xb3\xb6" // "エラー:サイコウオンチョウカ" ("Err: MAXTEMP")
|
||||
#define MSG_ERR_MINTEMP "\xb4\xd7\xb0:\xbb\xb2\xc3\xb2\xb5\xdd\xd0\xcf\xdd" // "エラー:サイテイオンミマン" ("Err: MINTEMP")
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_ERR_MAXTEMP_BED "\xb4\xd7\xb0:\xcd\xde\xaf\xc4\xde\x20\xbb\xb2\xba\xb3\xb5\xdd\xc1\xae\xb3\xb6" // "エラー:ベッド サイコウオンチョウカ" ("Err: MAXTEMP BED")
|
||||
#define MSG_ERR_MINTEMP_BED "\xb4\xd7\xb0:\xcd\xde\xaf\xc4\xde\x20\xbb\xb2\xc3\xb2\xb5\xdd\xd0\xcf\xdd" // "エラー:ベッド サイテイオンミマン" ("Err: MINTEMP BED")
|
||||
#else
|
||||
#define MSG_ERR_MAXTEMP_BED "\xb4\xd7\xb0:\xcd\xde\xaf\xc4\xde\x20\xbb\xb2\xba\xb3\xb5\xdd" // "エラー:ベッド サイコウオン" ("Err: MAXTEMP BED")
|
||||
#define MSG_ERR_MINTEMP_BED "\xb4\xd7\xb0:\xcd\xde\xaf\xc4\xde\x20\xbb\xb2\xc3\xb2\xb5\xdd" // "エラー:ベッド サイテイオン" ("Err: MINTEMP BED")
|
||||
#endif
|
||||
#define MSG_ERR_Z_HOMING MSG_HOME " " MSG_X MSG_Y " " MSG_FIRST // "サキニ XY ヲフッキサセテクダサイ" or "サキニ XY ヲフッキサセヨ" ("G28 Z Forbidden")
|
||||
#define MSG_HALTED "\xcc\xdf\xd8\xdd\xc0\xb0\xca\xc3\xb2\xbc\xbc\xcf\xbc\xc0" // "プリンターハテイシシマシタ" ("PRINTER HALTED")
|
||||
#define MSG_PLEASE_RESET "\xd8\xbe\xaf\xc4\xbc\xc3\xb8\xc0\xde\xbb\xb2" // "リセットシテクダサイ" ("Please reset")
|
||||
#define MSG_SHORT_DAY "d" // One character only
|
||||
#define MSG_SHORT_HOUR "h" // One character only
|
||||
#define MSG_SHORT_MINUTE "m" // One character only
|
||||
#define MSG_HEATING "\xb6\xc8\xc2\xc1\xad\xb3" // "カネツチュウ" ("Heating...")
|
||||
#define MSG_HEATING_COMPLETE "\xb6\xc8\xc2\xb6\xdd\xd8\xae\xb3" // "カネツカンリョウ" ("Heating done.")
|
||||
#define MSG_BED_HEATING "\xcd\xde\xaf\xc4\xde\x20\xb6\xc8\xc2\xc1\xad\xb3" // "ベッド カネツチュウ" ("Bed Heating.")
|
||||
#define MSG_BED_DONE "\xcd\xde\xaf\xc4\xde\x20\xb6\xc8\xc2\xb6\xdd\xd8\xae\xb3" // "ベッド カネツカンリョウ" ("Bed done.")
|
||||
#define MSG_DELTA_CALIBRATE "\xc3\xde\xd9\xc0\x20\xba\xb3\xbe\xb2" // "デルタ コウセイ" ("Delta Calibration")
|
||||
#define MSG_DELTA_CALIBRATE_X "X\xbc\xde\xb8\x20\xba\xb3\xbe\xb2" // "Xジク コウセイ" ("Calibrate X")
|
||||
#define MSG_DELTA_CALIBRATE_Y "Y\xbc\xde\xb8\x20\xba\xb3\xbe\xb2" // "Yジク コウセイ" ("Calibrate Y")
|
||||
#define MSG_DELTA_CALIBRATE_Z "Z\xbc\xde\xb8\x20\xba\xb3\xbe\xb2" // "Zジク コウセイ" ("Calibrate Z")
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "\xc1\xad\xb3\xbc\xdd\x20\xba\xb3\xbe\xb2" // "チュウシン コウセイ" ("Calibrate Center")
|
||||
#define MSG_INFO_MENU "\xba\xc9\xcc\xdf\xd8\xdd\xc0\xb0\xc6\xc2\xb2\xc3" // "コノプリンターニツイテ" ("About Printer")
|
||||
#define MSG_INFO_PRINTER_MENU "\xcc\xdf\xd8\xdd\xc0\xb0\xbc\xde\xae\xb3\xce\xb3" // "プリンタージョウホウ" ("Printer Info")
|
||||
#define MSG_INFO_STATS_MENU "\xcc\xdf\xd8\xdd\xc4\xbc\xde\xae\xb3\xb7\xae\xb3" // "プリントジョウキョウ" ("Printer Stats")
|
||||
#define MSG_INFO_BOARD_MENU "\xbe\xb2\xb7\xde\xae\xb9\xb2\xbc\xde\xae\xb3\xce\xb3" // "セイギョケイジョウホウ" ("Board Info")
|
||||
#define MSG_INFO_THERMISTOR_MENU "\xbb\xb0\xd0\xbd\xc0\xb0" // "サーミスター" ("Thermistors")
|
||||
#define MSG_INFO_EXTRUDERS "\xb4\xb8\xbd\xc4\xd9\xb0\xc0\xde\xb0\xbd\xb3" // "エクストルーダースウ" ("Extruders")
|
||||
#define MSG_INFO_BAUDRATE "\xce\xde\xb0\xda\xb0\xc4" // "ボーレート" ("Baud")
|
||||
#define MSG_INFO_PROTOCOL "\xcc\xdf\xdb\xc4\xba\xd9" // "プロトコル" ("Protocol")
|
||||
#define MSG_CASE_LIGHT "\xb7\xae\xb3\xc0\xb2\xc5\xb2\xbc\xae\xb3\xd2\xb2" // "キョウタイナイショウメイ" ("Case light")
|
||||
#define MSG_INFO_PRINT_COUNT "\xcc\xdf\xd8\xdd\xc4\xbd\xb3" // "プリントスウ" ("Print Count")
|
||||
#define MSG_INFO_COMPLETED_PRINTS "\xb6\xdd\xd8\xae\xb3\xbd\xb3" // "カンリョウスウ" ("Completed")
|
||||
#define MSG_INFO_PRINT_TIME "\xcc\xdf\xd8\xdd\xc4\xbc\xde\xb6\xdd\xd9\xb2\xb9\xb2" // "プリントジカンルイケイ" ("Total print time")
|
||||
#define MSG_INFO_PRINT_LONGEST "\xbb\xb2\xc1\xae\xb3\xcc\xdf\xd8\xdd\xc4\xbc\xde\xb6\xdd" // "サイチョウプリントジカン" ("Longest job time")
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_INFO_PRINT_FILAMENT "\xcc\xa8\xd7\xd2\xdd\xc4\xbc\xd6\xb3\xd8\xae\xb3\xd9\xb2\xb9\xb2" // "フィラメントシヨウリョウルイケイ" ("Extruded total")
|
||||
#else
|
||||
#define MSG_INFO_PRINT_FILAMENT "\xcc\xa8\xd7\xd2\xdd\xc4\xbf\xb3\xbc\xd6\xb3\xd8\xae\xb3" // "フィラメントソウシヨウリョウ" ("Extruded")
|
||||
#endif
|
||||
#define MSG_INFO_MIN_TEMP "\xbe\xaf\xc3\xb2\xbb\xb2\xc3\xb2\xb5\xdd" // "セッテイサイテイオン" ("Min Temp")
|
||||
#define MSG_INFO_MAX_TEMP "\xbe\xaf\xc3\xb2\xbb\xb2\xba\xb3\xb5\xdd" // "セッテイサイコウオン" ("Max Temp")
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_INFO_PSU "\xc3\xde\xdd\xb9\xde\xdd\xbc\xad\xcd\xde\xc2" // "デンゲンシュベツ" ("Power Supply")
|
||||
#else
|
||||
#define MSG_INFO_PSU "\xc3\xde\xdd\xb9\xde\xdd" // "デンゲン" ("Power Supply")
|
||||
#endif
|
||||
#define MSG_DRIVE_STRENGTH "\xd3\xb0\xc0\xb0\xb8\xc4\xde\xb3\xd8\xae\xb8" // "モータークドウリョク" ("Drive Strength")
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_DAC_PERCENT "DAC\xbc\xad\xc2\xd8\xae\xb8 %" // "DACシュツリョク %" ("Driver %")
|
||||
#else
|
||||
#define MSG_DAC_PERCENT "DAC\xbc\xad\xc2\xd8\xae\xb8" // "DACシュツリョク" ("Driver %")
|
||||
#endif
|
||||
#define MSG_DAC_EEPROM_WRITE MSG_STORE_EPROM // "メモリヘカクノウ" ("DAC EEPROM Write")
|
||||
#define MSG_FILAMENT_CHANGE_HEADER "PRINT PAUSED"
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER "RESUME OPTIONS:"
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE "\xbb\xd7\xc6\xb5\xbc\xc0\xde\xbd" // "サラニオシダス" ("Extrude more")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME "\xcc\xdf\xd8\xdd\xc4\xbb\xb2\xb6\xb2" // "プリントサイカイ" ("Resume print")
|
||||
|
||||
#if LCD_HEIGHT >= 4
|
||||
// Up to 3 lines allowed
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 "\xba\xb3\xb6\xdd\xa6\xb6\xb2\xbc\xbc\xcf\xbd" // "コウカンヲカイシシマス" ("Wait for start")
|
||||
#define MSG_FILAMENT_CHANGE_INIT_2 "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオマチクダサイ" ("of the filament")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xc7\xb7\xc0\xde\xbc\xc1\xad\xb3" // "フィラメントヌキダシチュウ" ("Wait for")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_2 "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオマチクダサイ" ("filament unload")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xa6\xbf\xb3\xc6\xad\xb3\xbc," // "フィラメントヲソウニュウシ," ("Insert filament")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_2 "\xb8\xd8\xaf\xb8\xbd\xd9\xc4\xbf\xde\xaf\xba\xb3\xbc\xcf\xbd" // "クリックスルトゾッコウシマス" ("and press button")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xbf\xb3\xc3\xdd\xc1\xad\xb3" // "フィラメントソウテンチュウ" ("Wait for")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_2 "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオマチクダサイ" ("filament load")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xb5\xbc\xc0\xde\xbc\xc1\xad\xb3" // "フィラメントオシダシチュウ" ("Wait for")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_2 "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオマチクダサイ" ("filament extrude")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 "\xcc\xdf\xd8\xdd\xc4\xa6\xbb\xb2\xb6\xb2\xbc\xcf\xbd" // "プリントヲサイカイシマス" ("Wait for print")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_2 "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオマチクダサイ" ("to resume")
|
||||
#else // LCD_HEIGHT < 4
|
||||
// Up to 2 lines allowed
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 "\xba\xb3\xb6\xdd\xa6\xb6\xb2\xbc\xbc\xcf\xbd" // "コウカンヲカイシシマス" ("Please wait...")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xc7\xb7\xc0\xde\xbc\xc1\xad\xb3" // "フィラメントヌキダシチュウ" ("Ejecting...")
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 "\xbf\xb3\xc6\xad\xb3\xbc\x2c\xb8\xd8\xaf\xb8\xbc\xc3\xb8\xc0\xde\xbb\xb2" // "ソウニュウシ,クリックシテクダサイ" ("Insert and Click")
|
||||
#else
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 "\xbf\xb3\xc6\xad\xb3\xbc\x2c\xb8\xd8\xaf\xb8\xbe\xd6" // "ソウニュウシ,クリックセヨ" ("Insert and Click")
|
||||
#endif
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xbf\xb3\xc3\xdd\xc1\xad\xb3" // "フィラメントソウテンチュウ" ("Loading...")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xb5\xbc\xc0\xde\xbc\xc1\xad\xb3" // "フィラメントオシダシチュウ" ("Extruding...")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 "\xcc\xdf\xd8\xdd\xc4\xa6\xbb\xb2\xb6\xb2\xbc\xcf\xbd" // "プリントヲサイカイシマス" ("Resuming...")
|
||||
#endif // LCD_HEIGHT < 4
|
||||
|
||||
#endif // LANGUAGE_KANA_H
|
||||
@@ -1,265 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Polish for HD44780 display - no accented characters
|
||||
*/
|
||||
|
||||
#define WELCOME_MSG MACHINE_NAME _UxGT(" gotowy.")
|
||||
#define MSG_SD_INSERTED _UxGT("Karta wlozona")
|
||||
#define MSG_SD_REMOVED _UxGT("Karta usunieta")
|
||||
#define MSG_LCD_ENDSTOPS _UxGT("Krancow.") // Max length 8 characters
|
||||
#define MSG_MAIN _UxGT("Menu glowne")
|
||||
#define MSG_AUTOSTART _UxGT("Autostart")
|
||||
#define MSG_DISABLE_STEPPERS _UxGT("Wylacz silniki")
|
||||
#define MSG_AUTO_HOME _UxGT("Pozycja zerowa")
|
||||
#define MSG_AUTO_HOME_X _UxGT("Zeruj X")
|
||||
#define MSG_AUTO_HOME_Y _UxGT("Zeruj Y")
|
||||
#define MSG_AUTO_HOME_Z _UxGT("Zeruj Z")
|
||||
#define MSG_LEVEL_BED _UxGT("Poziom. stolu")
|
||||
#define MSG_LEVEL_BED_HOMING _UxGT("Pozycja zerowa")
|
||||
#define MSG_LEVEL_BED_WAITING _UxGT("Kliknij by rozp.")
|
||||
#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Nastepny punkt")
|
||||
#define MSG_LEVEL_BED_DONE _UxGT("Wypoziomowano!")
|
||||
#define MSG_SET_HOME_OFFSETS _UxGT("Ust. poz. zer.")
|
||||
#define MSG_HOME_OFFSETS_APPLIED _UxGT("Poz. zerowa ust.")
|
||||
#define MSG_SET_ORIGIN _UxGT("Ustaw punkt zero")
|
||||
#define MSG_PREHEAT_1 _UxGT("Rozgrzej PLA")
|
||||
#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ")
|
||||
#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" wsz.")
|
||||
#define MSG_PREHEAT_1_BEDONLY _UxGT("Rozgrzej stol PLA")
|
||||
#define MSG_PREHEAT_1_SETTINGS _UxGT("Ustaw. rozg. PLA")
|
||||
#define MSG_PREHEAT_2 _UxGT("Rozgrzej ABS")
|
||||
#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ")
|
||||
#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" wsz.")
|
||||
#define MSG_PREHEAT_2_BEDONLY _UxGT("Rozgrzej stol ABS")
|
||||
#define MSG_PREHEAT_2_SETTINGS _UxGT("Ustaw. rozg. ABS")
|
||||
#define MSG_COOLDOWN _UxGT("Chlodzenie")
|
||||
#define MSG_SWITCH_PS_ON _UxGT("Wlacz zasilacz")
|
||||
#define MSG_SWITCH_PS_OFF _UxGT("Wylacz zasilacz")
|
||||
#define MSG_EXTRUDE _UxGT("Ekstruzja")
|
||||
#define MSG_RETRACT _UxGT("Wycofanie")
|
||||
#define MSG_MOVE_AXIS _UxGT("Ruch osi")
|
||||
#define MSG_BED_LEVELING _UxGT("Poziom. stolu")
|
||||
#define MSG_MOVE_X _UxGT("Przesun w X")
|
||||
#define MSG_MOVE_Y _UxGT("Przesun w Y")
|
||||
#define MSG_MOVE_Z _UxGT("Przesun w Z")
|
||||
#define MSG_MOVE_E _UxGT("Ekstruzja (os E)")
|
||||
#define MSG_MOVE_01MM _UxGT("Przesun co .1mm")
|
||||
#define MSG_MOVE_1MM _UxGT("Przesun co 1mm")
|
||||
#define MSG_MOVE_10MM _UxGT("Przesun co 10mm")
|
||||
#define MSG_SPEED _UxGT("Predkosc")
|
||||
#define MSG_BED_Z _UxGT("Stol Z")
|
||||
#define MSG_NOZZLE _UxGT("Dysza")
|
||||
#define MSG_BED _UxGT("Stol")
|
||||
#define MSG_FAN_SPEED _UxGT("Obroty wiatraka")
|
||||
#define MSG_FLOW _UxGT("Przeplyw")
|
||||
#define MSG_CONTROL _UxGT("Ustawienia")
|
||||
#define MSG_MIN LCD_STR_THERMOMETER _UxGT(" Min")
|
||||
#define MSG_MAX LCD_STR_THERMOMETER _UxGT(" Max")
|
||||
#define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Mnoznik")
|
||||
#define MSG_AUTOTEMP _UxGT("Auto. temperatura")
|
||||
#define MSG_ON _UxGT("Wl. ")
|
||||
#define MSG_OFF _UxGT("Wyl.")
|
||||
#define MSG_PID_P _UxGT("PID-P")
|
||||
#define MSG_PID_I _UxGT("PID-I")
|
||||
#define MSG_PID_D _UxGT("PID-D")
|
||||
#define MSG_PID_C _UxGT("PID-C")
|
||||
#define MSG_SELECT _UxGT("Select")
|
||||
#define MSG_ACC _UxGT("Przyspieszenie")
|
||||
#define MSG_JERK _UxGT("Zryw")
|
||||
#define MSG_VX_JERK _UxGT("Zryw Vx")
|
||||
#define MSG_VY_JERK _UxGT("Zryw Vy")
|
||||
#define MSG_VZ_JERK _UxGT("Zryw Vz")
|
||||
#define MSG_VE_JERK _UxGT("Zryw Ve")
|
||||
#define MSG_VMAX _UxGT("Vmax ")
|
||||
#define MSG_VMIN _UxGT("Vmin")
|
||||
#define MSG_VTRAV_MIN _UxGT("Vskok min")
|
||||
#define MSG_ACCELERATION MSG_ACC
|
||||
#define MSG_AMAX _UxGT("Amax")
|
||||
#define MSG_A_RETRACT _UxGT("A-wycofanie")
|
||||
#define MSG_A_TRAVEL _UxGT("A-przesun.")
|
||||
#define MSG_STEPS_PER_MM _UxGT("kroki/mm")
|
||||
#define MSG_XSTEPS _UxGT("krokiX/mm")
|
||||
#define MSG_YSTEPS _UxGT("krokiY/mm")
|
||||
#define MSG_ZSTEPS _UxGT("krokiZ/mm")
|
||||
#define MSG_ESTEPS _UxGT("krokiE/mm")
|
||||
#define MSG_E1STEPS _UxGT("krokiE1/mm")
|
||||
#define MSG_E2STEPS _UxGT("krokiE2/mm")
|
||||
#define MSG_E3STEPS _UxGT("krokiE3/mm")
|
||||
#define MSG_E4STEPS _UxGT("krokiE4/mm")
|
||||
#define MSG_E5STEPS _UxGT("krokiE5/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatura")
|
||||
#define MSG_MOTION _UxGT("Ruch")
|
||||
#define MSG_FILAMENT _UxGT("Filament")
|
||||
#define MSG_VOLUMETRIC_ENABLED _UxGT("E w mm3")
|
||||
#define MSG_FILAMENT_DIAM _UxGT("Sr. fil.")
|
||||
#define MSG_CONTRAST _UxGT("Kontrast LCD")
|
||||
#define MSG_STORE_EEPROM _UxGT("Zapisz w pamieci")
|
||||
#define MSG_LOAD_EEPROM _UxGT("Wczytaj z pamieci")
|
||||
#define MSG_RESTORE_FAILSAFE _UxGT("Ustaw. fabryczne")
|
||||
#define MSG_REFRESH _UxGT("Odswiez")
|
||||
#define MSG_WATCH _UxGT("Ekran glowny")
|
||||
#define MSG_PREPARE _UxGT("Przygotuj")
|
||||
#define MSG_TUNE _UxGT("Strojenie")
|
||||
#define MSG_PAUSE_PRINT _UxGT("Pauza")
|
||||
#define MSG_RESUME_PRINT _UxGT("Wznowienie")
|
||||
#define MSG_STOP_PRINT _UxGT("Stop")
|
||||
#define MSG_CARD_MENU _UxGT("Karta SD")
|
||||
#define MSG_NO_CARD _UxGT("Brak karty")
|
||||
#define MSG_DWELL _UxGT("Uspij...")
|
||||
#define MSG_USERWAIT _UxGT("Oczekiwanie...")
|
||||
#define MSG_RESUMING _UxGT("Wznawianie druku")
|
||||
#define MSG_PRINT_ABORTED _UxGT("Druk przerwany")
|
||||
#define MSG_NO_MOVE _UxGT("Brak ruchu")
|
||||
#define MSG_KILLED _UxGT("Ubity. ")
|
||||
#define MSG_STOPPED _UxGT("Zatrzymany. ")
|
||||
#define MSG_CONTROL_RETRACT _UxGT("Wycofaj mm")
|
||||
#define MSG_CONTROL_RETRACT_SWAP _UxGT("Z Wycof. mm")
|
||||
#define MSG_CONTROL_RETRACTF _UxGT("Wycofaj V")
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT _UxGT("Skok Z mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER _UxGT("Cof. wycof. mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Z Cof. wyc. mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("Cof. wycof. V")
|
||||
#define MSG_AUTORETRACT _UxGT("Auto. wycofanie")
|
||||
#define MSG_FILAMENTCHANGE _UxGT("Zmien filament")
|
||||
#define MSG_INIT_SDCARD _UxGT("Inicjal. karty SD")
|
||||
#define MSG_CNG_SDCARD _UxGT("Zmiana karty SD")
|
||||
#define MSG_ZPROBE_OUT _UxGT("Sonda Z za stolem")
|
||||
#define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Self-Test")
|
||||
#define MSG_BLTOUCH_RESET _UxGT("Reset BLTouch")
|
||||
#define MSG_HOME _UxGT("Home") // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
|
||||
#define MSG_FIRST _UxGT("first")
|
||||
#define MSG_ZPROBE_ZOFFSET _UxGT("Offset Z")
|
||||
#define MSG_BABYSTEP_X _UxGT("Babystep X")
|
||||
#define MSG_BABYSTEP_Y _UxGT("Babystep Y")
|
||||
#define MSG_BABYSTEP_Z _UxGT("Babystep Z")
|
||||
#define MSG_ENDSTOP_ABORT _UxGT("Blad krancowki")
|
||||
#define MSG_HEATING_FAILED_LCD _UxGT("Rozgrz. nieudane")
|
||||
#define MSG_ERR_REDUNDANT_TEMP _UxGT("Blad temperatury")
|
||||
#define MSG_THERMAL_RUNAWAY _UxGT("Zanik temp.")
|
||||
#define MSG_ERR_MAXTEMP _UxGT("Err max temp")
|
||||
#define MSG_ERR_MINTEMP _UxGT("Err min temp")
|
||||
#define MSG_ERR_MAXTEMP_BED _UxGT("Err max temp stolu")
|
||||
#define MSG_ERR_MINTEMP_BED _UxGT("Err min temp stolu")
|
||||
#define MSG_ERR_Z_HOMING _UxGT("G28 Z Forbidden")
|
||||
#define MSG_HALTED _UxGT("Drukarka zatrzym.")
|
||||
#define MSG_PLEASE_RESET _UxGT("Prosze zresetowac")
|
||||
#define MSG_SHORT_DAY _UxGT("d") // One character only
|
||||
#define MSG_SHORT_HOUR _UxGT("g") // One character only
|
||||
#define MSG_SHORT_MINUTE _UxGT("m") // One character only
|
||||
#define MSG_HEATING _UxGT("Rozgrzewanie...")
|
||||
#define MSG_HEATING_COMPLETE _UxGT("Rozgrzano")
|
||||
#define MSG_BED_HEATING _UxGT("Rozgrzewanie stolu...")
|
||||
#define MSG_BED_DONE _UxGT("Rozgrzano stol")
|
||||
#define MSG_DELTA_CALIBRATE _UxGT("Kalibrowanie Delty")
|
||||
#define MSG_DELTA_CALIBRATE_X _UxGT("Kalibruj X")
|
||||
#define MSG_DELTA_CALIBRATE_Y _UxGT("Kalibruj Y")
|
||||
#define MSG_DELTA_CALIBRATE_Z _UxGT("Kalibruj Z")
|
||||
#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Kalibruj srodek")
|
||||
|
||||
#define MSG_INFO_MENU _UxGT("O drukarce")
|
||||
#define MSG_INFO_PRINTER_MENU _UxGT("Info drukarki")
|
||||
#define MSG_INFO_STATS_MENU _UxGT("Statystyki")
|
||||
#define MSG_INFO_BOARD_MENU _UxGT("Board Info")
|
||||
#define MSG_INFO_THERMISTOR_MENU _UxGT("Thermistory")
|
||||
#define MSG_INFO_EXTRUDERS _UxGT("Ekstrudery")
|
||||
#define MSG_INFO_BAUDRATE _UxGT("Predkosc USB")
|
||||
#define MSG_INFO_PROTOCOL _UxGT("Protokol")
|
||||
#define MSG_CASE_LIGHT _UxGT("Oswietlenie")
|
||||
|
||||
#if LCD_WIDTH >= 20
|
||||
#define MSG_INFO_PRINT_COUNT _UxGT("Wydrukowano")
|
||||
#define MSG_INFO_COMPLETED_PRINTS _UxGT("Ukonczono")
|
||||
#define MSG_INFO_PRINT_TIME _UxGT("Czas druku")
|
||||
#define MSG_INFO_PRINT_LONGEST _UxGT("Najdl. druk")
|
||||
#define MSG_INFO_PRINT_FILAMENT _UxGT("Uzyty fil.")
|
||||
#else
|
||||
#define MSG_INFO_PRINT_COUNT _UxGT("Wydrukowano")
|
||||
#define MSG_INFO_COMPLETED_PRINTS _UxGT("Ukonczono")
|
||||
#define MSG_INFO_PRINT_TIME _UxGT("Razem")
|
||||
#define MSG_INFO_PRINT_LONGEST _UxGT("Najdl. druk")
|
||||
#define MSG_INFO_PRINT_FILAMENT _UxGT("Uzyty fil.")
|
||||
#endif
|
||||
|
||||
#define MSG_INFO_MIN_TEMP _UxGT("Min Temp")
|
||||
#define MSG_INFO_MAX_TEMP _UxGT("Max Temp")
|
||||
#define MSG_INFO_PSU _UxGT("Zasilacz")
|
||||
|
||||
#define MSG_DRIVE_STRENGTH _UxGT("Sila silnika")
|
||||
#define MSG_DAC_PERCENT _UxGT("Sila %")
|
||||
#define MSG_DAC_EEPROM_WRITE _UxGT("Zapisz DAC EEPROM")
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("ZMIEN FILAMENT")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("ZMIEN OPCJE:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("Ekstruduj wiecej")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("Wznow drukowanie")
|
||||
|
||||
#if LCD_HEIGHT >= 4
|
||||
// Up to 3 lines allowed
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Czekam na ")
|
||||
#define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("zmiane filamentu")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Czekam na")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("wyjecie filamentu")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Wloz filament")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("i nacisnij przycisk")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("aby kontynuowac...")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Czekam na")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("wlozenie filamentu")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Czekam na")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("ekstruzje filamentu")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Czekam na")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("wznowienie druku")
|
||||
#else // LCD_HEIGHT < 4
|
||||
// Up to 2 lines allowed
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Prosze czekac...")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Wysuwanie...")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Wloz i nacisnij prz.")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Ladowanie...")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Ekstruzja...")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wznowienie...")
|
||||
#endif // LCD_HEIGHT < 4
|
||||
|
||||
#if LCD_HEIGHT >= 4
|
||||
// Up to 3 lines allowed
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Czekam na ")
|
||||
#define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("zmiane filamentu")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Czekam na")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("wyjecie filamentu")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Wloz filament")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("i nacisnij przycisk")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("aby kontynuowac...")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Czekam na")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("wlozenie filamentu")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Czekam na")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("ekstruzje filamentu")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Czekam na")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("wznowienie druku")
|
||||
#else // LCD_HEIGHT < 4
|
||||
// Up to 2 lines allowed
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("Prosze czekac...")
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("Wysuwanie...")
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("Wloz i nacisnij prz.")
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("Ladowanie...")
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("Ekstruzja...")
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("Wznowienie...")
|
||||
#endif // LCD_HEIGHT < 4
|
||||
@@ -1,171 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Portuguese (Brazil)
|
||||
*
|
||||
* LCD Menu Messages
|
||||
* See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
|
||||
*
|
||||
*/
|
||||
#ifndef LANGUAGE_PT_BR_H
|
||||
#define LANGUAGE_PT_BR_H
|
||||
|
||||
#define DISPLAY_CHARSET_ISO10646_1
|
||||
|
||||
#define WELCOME_MSG MACHINE_NAME " pronto."
|
||||
#define MSG_SD_INSERTED "Cartao inserido"
|
||||
#define MSG_SD_REMOVED "Cartao removido"
|
||||
#define MSG_MAIN "Menu principal"
|
||||
#define MSG_AUTOSTART "Autostart"
|
||||
#define MSG_DISABLE_STEPPERS "Desabi. motores"
|
||||
#define MSG_AUTO_HOME "Ir para origen"
|
||||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_SET_HOME_OFFSETS "Ajustar Jogo"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Ajustar orig."
|
||||
#define MSG_PREHEAT_1 "Pre-aquecer PLA"
|
||||
#define MSG_PREHEAT_1_N "Pre-aquecer PLA"
|
||||
#define MSG_PREHEAT_1_ALL "Pre-aq.Todo PLA"
|
||||
#define MSG_PREHEAT_1_BEDONLY "Pre-aq. PLA " LCD_STR_THERMOMETER "Base"
|
||||
#define MSG_PREHEAT_1_SETTINGS "Ajustar PLA"
|
||||
#define MSG_PREHEAT_2 "Pre-aquecer ABS"
|
||||
#define MSG_PREHEAT_2_N "Pre-aquecer ABS"
|
||||
#define MSG_PREHEAT_2_ALL "Pre-aq.Todo ABS"
|
||||
#define MSG_PREHEAT_2_BEDONLY "Pre-aq. ABS " LCD_STR_THERMOMETER "Base"
|
||||
#define MSG_PREHEAT_2_SETTINGS "Ajustar ABS"
|
||||
#define MSG_COOLDOWN "Esfriar"
|
||||
#define MSG_SWITCH_PS_ON "Ligar"
|
||||
#define MSG_SWITCH_PS_OFF "Desligar"
|
||||
#define MSG_EXTRUDE "Extrudar"
|
||||
#define MSG_RETRACT "Retrair"
|
||||
#define MSG_MOVE_AXIS "Mover eixo"
|
||||
#define MSG_MOVE_X "Mover X"
|
||||
#define MSG_MOVE_Y "Mover Y"
|
||||
#define MSG_MOVE_Z "Mover Z"
|
||||
#define MSG_MOVE_E "Mover Extrusor"
|
||||
#define MSG_MOVE_01MM "Mover 0.1mm"
|
||||
#define MSG_MOVE_1MM "Mover 1mm"
|
||||
#define MSG_MOVE_10MM "Mover 10mm"
|
||||
#define MSG_SPEED "Velocidade"
|
||||
#define MSG_BED_Z "Base Z"
|
||||
#define MSG_NOZZLE LCD_STR_THERMOMETER " Bocal"
|
||||
#define MSG_BED LCD_STR_THERMOMETER " Base"
|
||||
#define MSG_FAN_SPEED "Vel. Ventoinha"
|
||||
#define MSG_FLOW "Fluxo"
|
||||
#define MSG_CONTROL "Controle"
|
||||
#define MSG_MIN LCD_STR_THERMOMETER " Min"
|
||||
#define MSG_MAX LCD_STR_THERMOMETER " Max"
|
||||
#define MSG_FACTOR LCD_STR_THERMOMETER " Fact"
|
||||
#define MSG_AUTOTEMP "Temp. Automatica"
|
||||
#define MSG_ON "Ligado "
|
||||
#define MSG_OFF "Desligado"
|
||||
#define MSG_PID_P "PID-P"
|
||||
#define MSG_PID_I "PID-I"
|
||||
#define MSG_PID_D "PID-D"
|
||||
#define MSG_PID_C "PID-C"
|
||||
#define MSG_ACC "Acc"
|
||||
#define MSG_JERK "Jogo"
|
||||
#define MSG_VX_JERK "jogo VX"
|
||||
#define MSG_VY_JERK "jogo VY"
|
||||
#define MSG_VZ_JERK "jogo VZ"
|
||||
#define MSG_VE_JERK "jogo VE"
|
||||
#define MSG_VMAX " Vmax "
|
||||
#define MSG_VMIN "Vmin"
|
||||
#define MSG_VTRAV_MIN "VTrav min"
|
||||
#define MSG_AMAX "Amax "
|
||||
#define MSG_A_RETRACT "Retrair A"
|
||||
#define MSG_A_TRAVEL "A-movimento"
|
||||
#define MSG_STEPS_PER_MM "Passo/mm"
|
||||
#define MSG_XSTEPS "Passo X/mm"
|
||||
#define MSG_YSTEPS "Passo Y/mm"
|
||||
#define MSG_ZSTEPS "Passo Z/mm"
|
||||
#define MSG_ESTEPS "E/mm"
|
||||
#define MSG_E1STEPS "E1/mm"
|
||||
#define MSG_E2STEPS "E2/mm"
|
||||
#define MSG_E3STEPS "E3/mm"
|
||||
#define MSG_E4STEPS "E4/mm"
|
||||
#define MSG_E5STEPS "E5/mm"
|
||||
#define MSG_TEMPERATURE "Temperatura"
|
||||
#define MSG_MOTION "Movimento"
|
||||
#define MSG_FILAMENT "Filamento"
|
||||
#define MSG_VOLUMETRIC_ENABLED "Extr. em mm3"
|
||||
#define MSG_FILAMENT_DIAM "Diametro Fil."
|
||||
#define MSG_CONTRAST "Contraste"
|
||||
#define MSG_STORE_EEPROM "Salvar"
|
||||
#define MSG_LOAD_EEPROM "Ler"
|
||||
#define MSG_RESTORE_FAILSAFE "Rest. de emerg."
|
||||
#define MSG_REFRESH LCD_STR_REFRESH " Restaurar"
|
||||
#define MSG_WATCH "Monitorar"
|
||||
#define MSG_PREPARE "Preparar"
|
||||
#define MSG_TUNE "Afinar"
|
||||
#define MSG_PAUSE_PRINT "Pausar impressao"
|
||||
#define MSG_RESUME_PRINT "Resumir impressao"
|
||||
#define MSG_STOP_PRINT "Parar impressao"
|
||||
#define MSG_CARD_MENU "Imprimir do SD"
|
||||
#define MSG_NO_CARD "Sem cartao SD"
|
||||
#define MSG_DWELL "Repouso..."
|
||||
#define MSG_USERWAIT "Esperando ordem"
|
||||
#define MSG_RESUMING "Resumindo Impres."
|
||||
#define MSG_PRINT_ABORTED "Impres. Abortada."
|
||||
#define MSG_NO_MOVE "Sem movimento"
|
||||
#define MSG_KILLED "PARADA DE EMERG."
|
||||
#define MSG_STOPPED "PARADA. "
|
||||
#define MSG_CONTROL_RETRACT "Retrair mm"
|
||||
#define MSG_CONTROL_RETRACT_SWAP "Retrair Troca mm"
|
||||
#define MSG_CONTROL_RETRACTF "Retrair V"
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT "Levantar mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER "Des Retrair mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Des RetTroca mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF "Des Retrair V"
|
||||
#define MSG_AUTORETRACT "Retracao Autom."
|
||||
#define MSG_FILAMENTCHANGE "Trocar Filamento"
|
||||
#define MSG_INIT_SDCARD "Iniciar SD"
|
||||
#define MSG_CNG_SDCARD "Trocar SD"
|
||||
#define MSG_ZPROBE_OUT "Son. fora da mesa"
|
||||
#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
|
||||
#define MSG_FIRST "first"
|
||||
#define MSG_ZPROBE_ZOFFSET "Deslocamento no Z"
|
||||
#define MSG_BABYSTEP_X "Passinho X"
|
||||
#define MSG_BABYSTEP_Y "Passinho Y"
|
||||
#define MSG_BABYSTEP_Z "Passinho Z"
|
||||
#define MSG_ENDSTOP_ABORT "Fim de Curso"
|
||||
#define MSG_HEATING_FAILED_LCD "Aquecimento falhou"
|
||||
#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP"
|
||||
#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY"
|
||||
#define MSG_ERR_MAXTEMP "Err: T Maxima"
|
||||
#define MSG_ERR_MINTEMP "Err: T Minima"
|
||||
#define MSG_ERR_MAXTEMP_BED "Err: T Base Maxima"
|
||||
#define MSG_ERR_MINTEMP_BED "Err: T Base Minima"
|
||||
#define MSG_HEATING "Aquecendo..."
|
||||
#define MSG_HEATING_COMPLETE "Aquecida."
|
||||
#define MSG_BED_HEATING "Aquecendo base.."
|
||||
#define MSG_BED_DONE "Base aquecida."
|
||||
#define MSG_DELTA_CALIBRATE "Calibrar Delta"
|
||||
#define MSG_DELTA_CALIBRATE_X "Calibrar X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Calibrar Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Calibrar Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Calibrar Centro"
|
||||
|
||||
#endif // LANGUAGE_PT_BR_H
|
||||
@@ -1,171 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Portuguese (Brazil)
|
||||
*
|
||||
* LCD Menu Messages
|
||||
* See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
|
||||
*
|
||||
*/
|
||||
#ifndef LANGUAGE_PT_BR_UTF_H
|
||||
#define LANGUAGE_PT_BR_UTF_H
|
||||
|
||||
#define DISPLAY_CHARSET_ISO10646_1
|
||||
|
||||
#define WELCOME_MSG MACHINE_NAME _UxGT(" pronto.")
|
||||
#define MSG_SD_INSERTED _UxGT("Cartão inserido")
|
||||
#define MSG_SD_REMOVED _UxGT("Cartão removido")
|
||||
#define MSG_MAIN _UxGT("Menu principal")
|
||||
#define MSG_AUTOSTART _UxGT("Autostart")
|
||||
#define MSG_DISABLE_STEPPERS _UxGT("Desabi. motores")
|
||||
#define MSG_AUTO_HOME _UxGT("Ir para origen")
|
||||
#define MSG_LEVEL_BED_HOMING _UxGT("Indo para origem")
|
||||
#define MSG_LEVEL_BED_WAITING _UxGT("Click to Begin")
|
||||
#define MSG_LEVEL_BED_DONE _UxGT("Leveling Done!")
|
||||
#define MSG_SET_HOME_OFFSETS _UxGT("Ajustar Jogo")
|
||||
#define MSG_HOME_OFFSETS_APPLIED _UxGT("Offsets applied")
|
||||
#define MSG_SET_ORIGIN _UxGT("Ajustar orig.")
|
||||
#define MSG_PREHEAT_1 _UxGT("Pre-aquecer PLA")
|
||||
#define MSG_PREHEAT_1_N _UxGT("Pre-aquecer PLA")
|
||||
#define MSG_PREHEAT_1_ALL _UxGT("Pre-aq.Todo PLA")
|
||||
#define MSG_PREHEAT_1_BEDONLY _UxGT("Pre-aq. PLA ") LCD_STR_THERMOMETER _UxGT("Base")
|
||||
#define MSG_PREHEAT_1_SETTINGS _UxGT("Ajustar PLA")
|
||||
#define MSG_PREHEAT_2 _UxGT("Pre-aquecer ABS")
|
||||
#define MSG_PREHEAT_2_N _UxGT("Pre-aquecer ABS")
|
||||
#define MSG_PREHEAT_2_ALL _UxGT("Pre-aq.Todo ABS")
|
||||
#define MSG_PREHEAT_2_BEDONLY _UxGT("Pre-aq. ABS ") LCD_STR_THERMOMETER _UxGT("Base")
|
||||
#define MSG_PREHEAT_2_SETTINGS _UxGT("Ajustar ABS")
|
||||
#define MSG_COOLDOWN _UxGT("Esfriar")
|
||||
#define MSG_SWITCH_PS_ON _UxGT("Ligar")
|
||||
#define MSG_SWITCH_PS_OFF _UxGT("Desligar")
|
||||
#define MSG_EXTRUDE _UxGT("Extrudar")
|
||||
#define MSG_RETRACT _UxGT("Retrair")
|
||||
#define MSG_MOVE_AXIS _UxGT("Mover eixo")
|
||||
#define MSG_MOVE_X _UxGT("Mover X")
|
||||
#define MSG_MOVE_Y _UxGT("Mover Y")
|
||||
#define MSG_MOVE_Z _UxGT("Mover Z")
|
||||
#define MSG_MOVE_E _UxGT("Mover Extrusor")
|
||||
#define MSG_MOVE_01MM _UxGT("Mover 0.1mm")
|
||||
#define MSG_MOVE_1MM _UxGT("Mover 1mm")
|
||||
#define MSG_MOVE_10MM _UxGT("Mover 10mm")
|
||||
#define MSG_SPEED _UxGT("Velocidade")
|
||||
#define MSG_BED_Z _UxGT("Base Z")
|
||||
#define MSG_NOZZLE LCD_STR_THERMOMETER _UxGT(" Bocal")
|
||||
#define MSG_BED LCD_STR_THERMOMETER _UxGT(" Base")
|
||||
#define MSG_FAN_SPEED _UxGT("Vel. Ventoinha")
|
||||
#define MSG_FLOW _UxGT("Fluxo")
|
||||
#define MSG_CONTROL _UxGT("Controle")
|
||||
#define MSG_MIN LCD_STR_THERMOMETER _UxGT(" Min")
|
||||
#define MSG_MAX LCD_STR_THERMOMETER _UxGT(" Max")
|
||||
#define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Fact")
|
||||
#define MSG_AUTOTEMP _UxGT("Temp. Automática")
|
||||
#define MSG_ON _UxGT("Ligado ")
|
||||
#define MSG_OFF _UxGT("Desligado")
|
||||
#define MSG_PID_P _UxGT("PID-P")
|
||||
#define MSG_PID_I _UxGT("PID-I")
|
||||
#define MSG_PID_D _UxGT("PID-D")
|
||||
#define MSG_PID_C _UxGT("PID-C")
|
||||
#define MSG_ACC _UxGT("Acc")
|
||||
#define MSG_JERK _UxGT("Jogo")
|
||||
#define MSG_VX_JERK _UxGT("jogo VX")
|
||||
#define MSG_VY_JERK _UxGT("jogo VY")
|
||||
#define MSG_VZ_JERK _UxGT("jogo VZ")
|
||||
#define MSG_VE_JERK _UxGT("jogo VE")
|
||||
#define MSG_VMAX _UxGT(" Vmax ")
|
||||
#define MSG_VMIN _UxGT("Vmin")
|
||||
#define MSG_VTRAV_MIN _UxGT("VTrav min")
|
||||
#define MSG_AMAX _UxGT("Amax ")
|
||||
#define MSG_A_RETRACT _UxGT("Retrair A")
|
||||
#define MSG_A_TRAVEL _UxGT("A-movimento")
|
||||
#define MSG_STEPS_PER_MM _UxGT("Passo/mm")
|
||||
#define MSG_XSTEPS _UxGT("Passo X/mm")
|
||||
#define MSG_YSTEPS _UxGT("Passo Y/mm")
|
||||
#define MSG_ZSTEPS _UxGT("Passo Z/mm")
|
||||
#define MSG_ESTEPS _UxGT("E/mm")
|
||||
#define MSG_E1STEPS _UxGT("E1/mm")
|
||||
#define MSG_E2STEPS _UxGT("E2/mm")
|
||||
#define MSG_E3STEPS _UxGT("E3/mm")
|
||||
#define MSG_E4STEPS _UxGT("E4/mm")
|
||||
#define MSG_E5STEPS _UxGT("E5/mm")
|
||||
#define MSG_TEMPERATURE _UxGT("Temperatura")
|
||||
#define MSG_MOTION _UxGT("Movimento")
|
||||
#define MSG_FILAMENT _UxGT("Filamento")
|
||||
#define MSG_VOLUMETRIC_ENABLED _UxGT("Extr. em mm3")
|
||||
#define MSG_FILAMENT_DIAM _UxGT("Diametro Fil.")
|
||||
#define MSG_CONTRAST _UxGT("Contraste")
|
||||
#define MSG_STORE_EEPROM _UxGT("Salvar")
|
||||
#define MSG_LOAD_EEPROM _UxGT("Ler")
|
||||
#define MSG_RESTORE_FAILSAFE _UxGT("Rest. de emerg.")
|
||||
#define MSG_REFRESH LCD_STR_REFRESH _UxGT(" Restaurar")
|
||||
#define MSG_WATCH _UxGT("Monitorar")
|
||||
#define MSG_PREPARE _UxGT("Preparar")
|
||||
#define MSG_TUNE _UxGT("Afinar")
|
||||
#define MSG_PAUSE_PRINT _UxGT("Pausar impressão")
|
||||
#define MSG_RESUME_PRINT _UxGT("Resumir impressão")
|
||||
#define MSG_STOP_PRINT _UxGT("Parar impressão")
|
||||
#define MSG_CARD_MENU _UxGT("Imprimir do SD")
|
||||
#define MSG_NO_CARD _UxGT("Sem cartão SD")
|
||||
#define MSG_DWELL _UxGT("Repouso...")
|
||||
#define MSG_USERWAIT _UxGT("Esperando ordem")
|
||||
#define MSG_RESUMING _UxGT("Resumindo Impres.")
|
||||
#define MSG_PRINT_ABORTED _UxGT("Impres. Abortada.")
|
||||
#define MSG_NO_MOVE _UxGT("Sem movimento")
|
||||
#define MSG_KILLED _UxGT("PARADA DE EMERG.")
|
||||
#define MSG_STOPPED _UxGT("PARADA. ")
|
||||
#define MSG_CONTROL_RETRACT _UxGT("Retrair mm")
|
||||
#define MSG_CONTROL_RETRACT_SWAP _UxGT("Retrair Troca mm")
|
||||
#define MSG_CONTROL_RETRACTF _UxGT("Retrair V")
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT _UxGT("Levantar mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER _UxGT("Des Retrair mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Des RetTroca mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("Des Retrair V")
|
||||
#define MSG_AUTORETRACT _UxGT("Retração Autom.")
|
||||
#define MSG_FILAMENTCHANGE _UxGT("Trocar Filamento")
|
||||
#define MSG_INIT_SDCARD _UxGT("Iniciar SD")
|
||||
#define MSG_CNG_SDCARD _UxGT("Trocar SD")
|
||||
#define MSG_ZPROBE_OUT _UxGT("Son. fora da mesa")
|
||||
#define MSG_HOME _UxGT("Home") // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
|
||||
#define MSG_FIRST _UxGT("first")
|
||||
#define MSG_ZPROBE_ZOFFSET _UxGT("Deslocamento no Z")
|
||||
#define MSG_BABYSTEP_X _UxGT("Passinho X")
|
||||
#define MSG_BABYSTEP_Y _UxGT("Passinho Y")
|
||||
#define MSG_BABYSTEP_Z _UxGT("Passinho Z")
|
||||
#define MSG_ENDSTOP_ABORT _UxGT("Fim de Curso")
|
||||
#define MSG_HEATING_FAILED_LCD _UxGT("Aquecimento falhou")
|
||||
#define MSG_ERR_REDUNDANT_TEMP _UxGT("Err: REDUNDANT TEMP")
|
||||
#define MSG_THERMAL_RUNAWAY _UxGT("THERMAL RUNAWAY")
|
||||
#define MSG_ERR_MAXTEMP _UxGT("Err: T Máxima")
|
||||
#define MSG_ERR_MINTEMP _UxGT("Err: T Mínima")
|
||||
#define MSG_ERR_MAXTEMP_BED _UxGT("Err: T Base Máxima")
|
||||
#define MSG_ERR_MINTEMP_BED _UxGT("Err: T Base Mínima")
|
||||
#define MSG_HEATING _UxGT("Aquecendo...")
|
||||
#define MSG_HEATING_COMPLETE _UxGT("Aquecida.")
|
||||
#define MSG_BED_HEATING _UxGT("Aquecendo base..")
|
||||
#define MSG_BED_DONE _UxGT("Base aquecida.")
|
||||
#define MSG_DELTA_CALIBRATE _UxGT("Calibrar Delta")
|
||||
#define MSG_DELTA_CALIBRATE_X _UxGT("Calibrar X")
|
||||
#define MSG_DELTA_CALIBRATE_Y _UxGT("Calibrar Y")
|
||||
#define MSG_DELTA_CALIBRATE_Z _UxGT("Calibrar Z")
|
||||
#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Calibrar Centro")
|
||||
|
||||
#endif // LANGUAGE_PT_BR_UTF_H
|
||||
@@ -1,177 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Portuguese
|
||||
*
|
||||
* LCD Menu Messages
|
||||
* See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
|
||||
*
|
||||
*/
|
||||
#ifndef LANGUAGE_PT_H
|
||||
#define LANGUAGE_PT_H
|
||||
|
||||
#define DISPLAY_CHARSET_ISO10646_1
|
||||
|
||||
#define WELCOME_MSG MACHINE_NAME " pronto."
|
||||
#define MSG_SD_INSERTED "Cartao inserido"
|
||||
#define MSG_SD_REMOVED "Cartao removido"
|
||||
#define MSG_MAIN "Menu principal"
|
||||
#define MSG_AUTOSTART "Autostart"
|
||||
#define MSG_DISABLE_STEPPERS "Desactivar motores"
|
||||
#define MSG_AUTO_HOME "Ir para origem"
|
||||
#define MSG_AUTO_HOME_X "Ir para origem X"
|
||||
#define MSG_AUTO_HOME_Y "Ir para origem Y"
|
||||
#define MSG_AUTO_HOME_Z "Ir para origem Z"
|
||||
#define MSG_LEVEL_BED_HOMING "Indo para origem"
|
||||
#define MSG_LEVEL_BED_WAITING "Click para iniciar"
|
||||
#define MSG_LEVEL_BED_NEXT_POINT "Proximo ponto"
|
||||
#define MSG_LEVEL_BED_DONE "Pronto !"
|
||||
#define MSG_SET_HOME_OFFSETS "Definir desvio"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Definir origem"
|
||||
#define MSG_PREHEAT_1 "Pre-aquecer PLA"
|
||||
#define MSG_PREHEAT_1_N "Pre-aquecer PLA"
|
||||
#define MSG_PREHEAT_1_ALL "Pre-aq. PLA Tudo"
|
||||
#define MSG_PREHEAT_1_BEDONLY "Pre-aq. PLA " LCD_STR_THERMOMETER "Base"
|
||||
#define MSG_PREHEAT_1_SETTINGS "Definicoes PLA"
|
||||
#define MSG_PREHEAT_2 "Pre-aquecer ABS"
|
||||
#define MSG_PREHEAT_2_N "Pre-aquecer ABS "
|
||||
#define MSG_PREHEAT_2_ALL "Pre-aq. ABS Tudo"
|
||||
#define MSG_PREHEAT_2_BEDONLY "Pre-aq. ABS " LCD_STR_THERMOMETER "Base"
|
||||
#define MSG_PREHEAT_2_SETTINGS "Definicoes ABS"
|
||||
#define MSG_COOLDOWN "Arrefecer"
|
||||
#define MSG_SWITCH_PS_ON "Ligar"
|
||||
#define MSG_SWITCH_PS_OFF "Desligar"
|
||||
#define MSG_EXTRUDE "Extrudir"
|
||||
#define MSG_RETRACT "Retrair"
|
||||
#define MSG_MOVE_AXIS "Mover eixo"
|
||||
#define MSG_MOVE_X "Mover X"
|
||||
#define MSG_MOVE_Y "Mover Y"
|
||||
#define MSG_MOVE_Z "Mover Z"
|
||||
#define MSG_MOVE_E "Mover Extrusor"
|
||||
#define MSG_MOVE_01MM "Mover 0.1mm"
|
||||
#define MSG_MOVE_1MM "Mover 1mm"
|
||||
#define MSG_MOVE_10MM "Mover 10mm"
|
||||
#define MSG_SPEED "Velocidade"
|
||||
#define MSG_BED_Z "Base Z"
|
||||
#define MSG_NOZZLE LCD_STR_THERMOMETER " Bico"
|
||||
#define MSG_BED LCD_STR_THERMOMETER " Base"
|
||||
#define MSG_FAN_SPEED "Vel. ventoinha"
|
||||
#define MSG_FLOW "Fluxo"
|
||||
#define MSG_CONTROL "Controlo"
|
||||
#define MSG_MIN LCD_STR_THERMOMETER " Min"
|
||||
#define MSG_MAX LCD_STR_THERMOMETER " Max"
|
||||
#define MSG_FACTOR LCD_STR_THERMOMETER " Fact"
|
||||
#define MSG_AUTOTEMP "Temp. Automatica"
|
||||
#define MSG_ON "On "
|
||||
#define MSG_OFF "Off"
|
||||
#define MSG_PID_P "PID-P"
|
||||
#define MSG_PID_I "PID-I"
|
||||
#define MSG_PID_D "PID-D"
|
||||
#define MSG_PID_C "PID-C"
|
||||
#define MSG_ACC "Acc"
|
||||
#define MSG_JERK _UxGT("Jerk")
|
||||
#define MSG_VX_JERK "Vx-jerk"
|
||||
#define MSG_VY_JERK "Vy-jerk"
|
||||
#define MSG_VZ_JERK "Vz-jerk"
|
||||
#define MSG_VE_JERK "Ve-jerk"
|
||||
#define MSG_VMAX " Vmax "
|
||||
#define MSG_VMIN "Vmin"
|
||||
#define MSG_VTRAV_MIN "VTrav min"
|
||||
#define MSG_AMAX "Amax "
|
||||
#define MSG_A_RETRACT "A-retraccao"
|
||||
#define MSG_A_TRAVEL "A-movimento"
|
||||
#define MSG_STEPS_PER_MM "Passo/mm"
|
||||
#define MSG_XSTEPS "X passo/mm"
|
||||
#define MSG_YSTEPS "Y passo/mm"
|
||||
#define MSG_ZSTEPS "Z passo/mm"
|
||||
#define MSG_ESTEPS "E passo/mm"
|
||||
#define MSG_E1STEPS "E1 passo/mm"
|
||||
#define MSG_E2STEPS "E2 passo/mm"
|
||||
#define MSG_E3STEPS "E3 passo/mm"
|
||||
#define MSG_E4STEPS "E4 passo/mm"
|
||||
#define MSG_E5STEPS "E5 passo/mm"
|
||||
#define MSG_TEMPERATURE "Temperatura"
|
||||
#define MSG_MOTION "Movimento"
|
||||
#define MSG_FILAMENT "Filamento"
|
||||
#define MSG_VOLUMETRIC_ENABLED "E em mm3"
|
||||
#define MSG_FILAMENT_DIAM "Fil. Diam."
|
||||
#define MSG_CONTRAST "Contraste"
|
||||
#define MSG_STORE_EEPROM "Guardar na memoria"
|
||||
#define MSG_LOAD_EEPROM "Carregar da memoria"
|
||||
#define MSG_RESTORE_FAILSAFE "Rest. de emergen."
|
||||
#define MSG_REFRESH LCD_STR_REFRESH " Recarregar"
|
||||
#define MSG_WATCH "Monitorizar"
|
||||
#define MSG_PREPARE "Preparar"
|
||||
#define MSG_TUNE "Afinar"
|
||||
#define MSG_PAUSE_PRINT "Pausar impressao"
|
||||
#define MSG_RESUME_PRINT "Retomar impressao"
|
||||
#define MSG_STOP_PRINT "Parar impressao"
|
||||
#define MSG_CARD_MENU "Imprimir do SD"
|
||||
#define MSG_NO_CARD "Sem cartao SD"
|
||||
#define MSG_DWELL "Em espera..."
|
||||
#define MSG_USERWAIT "A espera de ordem"
|
||||
#define MSG_RESUMING "Retomando impressao"
|
||||
#define MSG_PRINT_ABORTED "Impressao cancelada"
|
||||
#define MSG_NO_MOVE "Sem movimento"
|
||||
#define MSG_KILLED "EMERGENCIA. "
|
||||
#define MSG_STOPPED "PARADO. "
|
||||
#define MSG_CONTROL_RETRACT " Retrair mm"
|
||||
#define MSG_CONTROL_RETRACT_SWAP "Troca Retrair mm"
|
||||
#define MSG_CONTROL_RETRACTF " Retrair V"
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT " Levantar mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER " DesRet mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Troca DesRet mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF " DesRet V"
|
||||
#define MSG_AUTORETRACT " AutoRetr."
|
||||
#define MSG_FILAMENTCHANGE "Trocar filamento"
|
||||
#define MSG_INIT_SDCARD "Inici. cartao SD"
|
||||
#define MSG_CNG_SDCARD "Trocar cartao SD"
|
||||
#define MSG_ZPROBE_OUT "Sensor fora/base"
|
||||
#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
|
||||
#define MSG_FIRST "first"
|
||||
#define MSG_ZPROBE_ZOFFSET "Desvio Z"
|
||||
#define MSG_BABYSTEP_X "Babystep X"
|
||||
#define MSG_BABYSTEP_Y "Babystep Y"
|
||||
#define MSG_BABYSTEP_Z "Babystep Z"
|
||||
#define MSG_ENDSTOP_ABORT "Fim de curso"
|
||||
#define MSG_HEATING_FAILED_LCD "Aquecimento falhou"
|
||||
#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP"
|
||||
#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY"
|
||||
#define MSG_ERR_MAXTEMP "Err: T Maxima"
|
||||
#define MSG_ERR_MINTEMP "Err: T Minima"
|
||||
#define MSG_ERR_MAXTEMP_BED "Err: T Base Maxima"
|
||||
#define MSG_ERR_MINTEMP_BED "Err: T Base Minima"
|
||||
#define MSG_HEATING "Aquecendo..."
|
||||
#define MSG_HEATING_COMPLETE "Aquecida."
|
||||
#define MSG_BED_HEATING "Aquecendo base.."
|
||||
#define MSG_BED_DONE "Base aquecida."
|
||||
#define MSG_DELTA_CALIBRATE "Calibracao Delta"
|
||||
#define MSG_DELTA_CALIBRATE_X "Calibrar X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Calibrar Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Calibrar Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Calibrar Centro"
|
||||
|
||||
#define MSG_LCD_ENDSTOPS "Fim de curso"
|
||||
|
||||
#endif // LANGUAGE_PT_H
|
||||
@@ -1,175 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Russian
|
||||
*
|
||||
* LCD Menu Messages
|
||||
* See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
|
||||
*
|
||||
*/
|
||||
#ifndef LANGUAGE_RU_H
|
||||
#define LANGUAGE_RU_H
|
||||
|
||||
#define MAPPER_D0D1 // For Cyrillic
|
||||
#define DISPLAY_CHARSET_ISO10646_5
|
||||
|
||||
#define WELCOME_MSG MACHINE_NAME _UxGT(" Готов.")
|
||||
#define MSG_SD_INSERTED _UxGT("Карта вставлена")
|
||||
#define MSG_SD_REMOVED _UxGT("Карта извлечена")
|
||||
#define MSG_MAIN _UxGT("Меню")
|
||||
#define MSG_LCD_ENDSTOPS _UxGT("концевик")
|
||||
#define MSG_AUTOSTART _UxGT("Автостарт")
|
||||
#define MSG_DISABLE_STEPPERS _UxGT("Выкл. двигатели")
|
||||
#define MSG_AUTO_HOME _UxGT("Парковка")
|
||||
#define MSG_LEVEL_BED_HOMING _UxGT("Нулевое полож")
|
||||
#define MSG_LEVEL_BED_WAITING _UxGT("Нажмите начать")
|
||||
#define MSG_LEVEL_BED_NEXT_POINT _UxGT("Следующая точка")
|
||||
#define MSG_LEVEL_BED_DONE _UxGT("Уровень!")
|
||||
#define MSG_SET_HOME_OFFSETS _UxGT("Запомнить парковку")
|
||||
#define MSG_HOME_OFFSETS_APPLIED _UxGT("Коррекции примен")
|
||||
#define MSG_SET_ORIGIN _UxGT("Запомнить ноль")
|
||||
#define MSG_PREHEAT_1 _UxGT("Преднагрев PLA")
|
||||
#define MSG_PREHEAT_1_N _UxGT("Греть PLA Сопло ")
|
||||
#define MSG_PREHEAT_1_ALL _UxGT("Греть PLA Все")
|
||||
#define MSG_PREHEAT_1_BEDONLY _UxGT("Греть PLA Стол")
|
||||
#define MSG_PREHEAT_1_SETTINGS _UxGT("Настройки PLA")
|
||||
#define MSG_PREHEAT_2 _UxGT("Преднагрев ABS")
|
||||
#define MSG_PREHEAT_2_N _UxGT("Греть ABS Сопло ")
|
||||
#define MSG_PREHEAT_2_ALL _UxGT("Греть ABS Все")
|
||||
#define MSG_PREHEAT_2_BEDONLY _UxGT("Греть ABS Стол")
|
||||
#define MSG_PREHEAT_2_SETTINGS _UxGT("Настройки ABS")
|
||||
#define MSG_COOLDOWN _UxGT("Охлаждение")
|
||||
#define MSG_SWITCH_PS_ON _UxGT("Включить Питание")
|
||||
#define MSG_SWITCH_PS_OFF _UxGT("Отключить Питание")
|
||||
#define MSG_EXTRUDE _UxGT("Экструзия")
|
||||
#define MSG_RETRACT _UxGT("Втягивание")
|
||||
#define MSG_MOVE_AXIS _UxGT("Движение по осям")
|
||||
#define MSG_BED_LEVELING _UxGT("Калибровать стол")
|
||||
#define MSG_LEVEL_BED _UxGT("Калибровать стол")
|
||||
#define MSG_MOVE_X _UxGT("Движение по X")
|
||||
#define MSG_MOVE_Y _UxGT("Движение по Y")
|
||||
#define MSG_MOVE_Z _UxGT("Движение по Z")
|
||||
#define MSG_MOVE_E _UxGT("Экструдер")
|
||||
#define MSG_MOVE_01MM _UxGT("Движение XYZ 0.1mm")
|
||||
#define MSG_MOVE_1MM _UxGT("Движение XYZ 1mm")
|
||||
#define MSG_MOVE_10MM _UxGT("Движение XY 10mm")
|
||||
#define MSG_SPEED _UxGT("Скорость")
|
||||
#define MSG_BED_Z _UxGT("Z стола")
|
||||
#define MSG_NOZZLE LCD_STR_THERMOMETER _UxGT(" Сопло")
|
||||
#define MSG_BED LCD_STR_THERMOMETER _UxGT(" Стол")
|
||||
#define MSG_FAN_SPEED _UxGT("Кулер")
|
||||
#define MSG_FLOW _UxGT("Поток")
|
||||
#define MSG_CONTROL _UxGT("Настройки")
|
||||
#define MSG_MIN LCD_STR_THERMOMETER _UxGT(" Минимум")
|
||||
#define MSG_MAX LCD_STR_THERMOMETER _UxGT(" Максимум")
|
||||
#define MSG_FACTOR LCD_STR_THERMOMETER _UxGT(" Фактор")
|
||||
#define MSG_AUTOTEMP _UxGT("Автотемпература")
|
||||
#define MSG_ON _UxGT("Вкл. ")
|
||||
#define MSG_OFF _UxGT("Откл. ")
|
||||
#define MSG_PID_P _UxGT("PID-P")
|
||||
#define MSG_PID_I _UxGT("PID-I")
|
||||
#define MSG_PID_D _UxGT("PID-D")
|
||||
#define MSG_PID_C _UxGT("PID-C")
|
||||
#define MSG_ACC _UxGT("Acc")
|
||||
#define MSG_JERK _UxGT("Рывок")
|
||||
#define MSG_VX_JERK _UxGT("Vx-рывок")
|
||||
#define MSG_VY_JERK _UxGT("Vy-рывок")
|
||||
#define MSG_VZ_JERK _UxGT("Vz-рывок")
|
||||
#define MSG_VE_JERK _UxGT("Ve-рывок")
|
||||
#define MSG_VMAX _UxGT("Vмакс ")
|
||||
#define MSG_VMIN _UxGT("Vмин")
|
||||
#define MSG_VTRAV_MIN _UxGT("Vпутеш. мин")
|
||||
#define MSG_AMAX _UxGT("Aмакс")
|
||||
#define MSG_A_RETRACT _UxGT("A-втягивание")
|
||||
#define MSG_A_TRAVEL _UxGT("A-путеш.")
|
||||
#define MSG_STEPS_PER_MM _UxGT("Шаг/мм")
|
||||
#define MSG_XSTEPS _UxGT("X шаг/мм")
|
||||
#define MSG_YSTEPS _UxGT("Y шаг/мм")
|
||||
#define MSG_ZSTEPS _UxGT("Z шаг/мм")
|
||||
#define MSG_ESTEPS _UxGT("E шаг/мм")
|
||||
#define MSG_E1STEPS _UxGT("E1 шаг/мм")
|
||||
#define MSG_E2STEPS _UxGT("E2 шаг/мм")
|
||||
#define MSG_E3STEPS _UxGT("E3 шаг/мм")
|
||||
#define MSG_E4STEPS _UxGT("E4 шаг/мм")
|
||||
#define MSG_TEMPERATURE _UxGT("Температура")
|
||||
#define MSG_MOTION _UxGT("Механика")
|
||||
#define MSG_FILAMENT _UxGT("Пруток")
|
||||
#define MSG_VOLUMETRIC_ENABLED _UxGT("E в mm3")
|
||||
#define MSG_FILAMENT_DIAM _UxGT("Диаметр прутка")
|
||||
#define MSG_CONTRAST _UxGT("Контраст LCD")
|
||||
#define MSG_STORE_EEPROM _UxGT("Сохранить в EEPROM")
|
||||
#define MSG_LOAD_EEPROM _UxGT("Считать из EEPROM")
|
||||
#define MSG_RESTORE_FAILSAFE _UxGT("Сброс EEPROM")
|
||||
#define MSG_REFRESH _UxGT("Обновить")
|
||||
#define MSG_WATCH _UxGT("Обзор")
|
||||
#define MSG_PREPARE _UxGT("Действия")
|
||||
#define MSG_TUNE _UxGT("Настройки")
|
||||
#define MSG_PAUSE_PRINT _UxGT("Пауза печати")
|
||||
#define MSG_RESUME_PRINT _UxGT("Продолжить печать")
|
||||
#define MSG_STOP_PRINT _UxGT("Остановить печать")
|
||||
#define MSG_CARD_MENU _UxGT("Обзор карты")
|
||||
#define MSG_NO_CARD _UxGT("Нет карты")
|
||||
#define MSG_DWELL _UxGT("Сон...")
|
||||
#define MSG_USERWAIT _UxGT("Ожиданиие")
|
||||
#define MSG_RESUMING _UxGT("Возобновление...")
|
||||
#define MSG_PRINT_ABORTED _UxGT("Отмена печати")
|
||||
#define MSG_NO_MOVE _UxGT("Нет движения.")
|
||||
#define MSG_KILLED _UxGT("УБИТО.")
|
||||
#define MSG_STOPPED _UxGT("ОСТАНОВЛЕНО.")
|
||||
#define MSG_CONTROL_RETRACT _UxGT("Втягивание mm")
|
||||
#define MSG_CONTROL_RETRACT_SWAP _UxGT("Втяг. смены mm")
|
||||
#define MSG_CONTROL_RETRACTF _UxGT("Втягивание V")
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT _UxGT("Втяг. прыжка mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER _UxGT("Возврат mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Возврат смены mm")
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("Возврат V")
|
||||
#define MSG_AUTORETRACT _UxGT("Авто Втягивание")
|
||||
#define MSG_FILAMENTCHANGE _UxGT("Смена прутка")
|
||||
#define MSG_INIT_SDCARD _UxGT("Иниц. карту")
|
||||
#define MSG_CNG_SDCARD _UxGT("Сменить карту")
|
||||
#define MSG_ZPROBE_OUT _UxGT("Z датчик вне стола")
|
||||
#define MSG_HOME _UxGT("Паркуй X/Y перед Z")
|
||||
#define MSG_FIRST _UxGT("первый")
|
||||
#define MSG_ZPROBE_ZOFFSET _UxGT("Смещение Z")
|
||||
#define MSG_BABYSTEP_X _UxGT("Микрошаг X")
|
||||
#define MSG_BABYSTEP_Y _UxGT("Микрошаг Y")
|
||||
#define MSG_BABYSTEP_Z _UxGT("Микрошаг Z")
|
||||
#define MSG_ENDSTOP_ABORT _UxGT("Сработал концевик")
|
||||
#define MSG_HEATING_FAILED_LCD _UxGT("Разогрев не удался")
|
||||
#define MSG_ERR_REDUNDANT_TEMP _UxGT("Ошибка:Слишком горячо")
|
||||
#define MSG_THERMAL_RUNAWAY _UxGT("ТЕПЛО УБЕГАНИЯ!")
|
||||
#define MSG_ERR_MAXTEMP _UxGT("Ошибка: Т макс.")
|
||||
#define MSG_ERR_MINTEMP _UxGT("Ошибка: Т мин.")
|
||||
#define MSG_ERR_MAXTEMP_BED _UxGT("Ошибка:Т макс.стол")
|
||||
#define MSG_ERR_MINTEMP_BED _UxGT("Ошибка:Т мин.стол")
|
||||
#define MSG_HEATING _UxGT("Нагреваю сопло...")
|
||||
#define MSG_HEATING_COMPLETE _UxGT("Нагрев выполнен")
|
||||
#define MSG_BED_HEATING _UxGT("Нагреваю стол")
|
||||
#define MSG_BED_DONE _UxGT("Стол разогрет")
|
||||
#define MSG_DELTA_CALIBRATE _UxGT("Калибровка Delta")
|
||||
#define MSG_DELTA_CALIBRATE_X _UxGT("Калибровать X")
|
||||
#define MSG_DELTA_CALIBRATE_Y _UxGT("Калибровать Y")
|
||||
#define MSG_DELTA_CALIBRATE_Z _UxGT("Калибровать Z")
|
||||
#define MSG_DELTA_CALIBRATE_CENTER _UxGT("Калибровать центр")
|
||||
|
||||
#endif // LANGUAGE_RU_H
|
||||
@@ -1,238 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Traditional Chinese
|
||||
*
|
||||
* LCD Menu Messages
|
||||
* See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
|
||||
*
|
||||
*/
|
||||
#ifndef LANGUAGE_ZH_TW_H
|
||||
#define LANGUAGE_ZH_TW_H
|
||||
|
||||
#define WELCOME_MSG MACHINE_NAME _UxGT("已就緒.") //" ready."
|
||||
#define MSG_SD_INSERTED _UxGT("記憶卡已插入") //"Card inserted"
|
||||
#define MSG_SD_REMOVED _UxGT("記憶卡被拔出") //"Card removed"
|
||||
#define MSG_LCD_ENDSTOPS _UxGT("擋塊") //"Endstops" // Max length 8 characters
|
||||
#define MSG_MAIN _UxGT("主選單") //"Main"
|
||||
#define MSG_AUTOSTART _UxGT("自動開始") //"Autostart"
|
||||
#define MSG_DISABLE_STEPPERS _UxGT("關閉步進驅動") //"Disable steppers"
|
||||
#define MSG_AUTO_HOME _UxGT("自動回原點") //"Auto home"
|
||||
#define MSG_AUTO_HOME_X _UxGT("回X原位") //"Home X"
|
||||
#define MSG_AUTO_HOME_Y _UxGT("回Y原位") //"Home Y"
|
||||
#define MSG_AUTO_HOME_Z _UxGT("回Z原位") //"Home Z"
|
||||
#define MSG_LEVEL_BED_HOMING _UxGT("平台調平XYZ歸原位") //"Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING _UxGT("單擊開始熱床調平") //"Click to Begin"
|
||||
#define MSG_LEVEL_BED_NEXT_POINT _UxGT("下個熱床調平點") //"Next Point"
|
||||
#define MSG_LEVEL_BED_DONE _UxGT("完成熱床調平") //"Leveling Done!"
|
||||
#define MSG_SET_HOME_OFFSETS _UxGT("設置原點偏移") //"Set home offsets"
|
||||
#define MSG_HOME_OFFSETS_APPLIED _UxGT("偏移已啟用") //"Offsets applied"
|
||||
#define MSG_SET_ORIGIN _UxGT("設置原點") //"Set origin"
|
||||
#define MSG_PREHEAT_1 _UxGT("預熱PLA") //"Preheat PLA"
|
||||
#define MSG_PREHEAT_1_N MSG_PREHEAT_1 _UxGT(" ") //MSG_PREHEAT_1 " "
|
||||
#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 _UxGT(" 全部") //MSG_PREHEAT_1 " All"
|
||||
#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 _UxGT(" 熱床") //MSG_PREHEAT_1 " Bed"
|
||||
#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 _UxGT(" 設置") //MSG_PREHEAT_1 " conf"
|
||||
#define MSG_PREHEAT_2 _UxGT("預熱ABS") //"Preheat ABS"
|
||||
#define MSG_PREHEAT_2_N MSG_PREHEAT_2 _UxGT(" ") //MSG_PREHEAT_2 " "
|
||||
#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 _UxGT(" 全部") //MSG_PREHEAT_2 " All"
|
||||
#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 _UxGT(" 熱床") //MSG_PREHEAT_2 " Bed"
|
||||
#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 _UxGT(" 設置") //MSG_PREHEAT_2 " conf"
|
||||
#define MSG_COOLDOWN _UxGT("降溫") //"Cooldown"
|
||||
#define MSG_SWITCH_PS_ON _UxGT("電源打開") //"Switch power on"
|
||||
#define MSG_SWITCH_PS_OFF _UxGT("電源關閉") //"Switch power off"
|
||||
#define MSG_EXTRUDE _UxGT("擠出") //"Extrude"
|
||||
#define MSG_RETRACT _UxGT("回抽") //"Retract"
|
||||
#define MSG_MOVE_AXIS _UxGT("移動軸") //"Move axis"
|
||||
#define MSG_BED_LEVELING _UxGT("調平熱床") //"Bed leveling"
|
||||
#define MSG_LEVEL_BED _UxGT("調平熱床") //"Level bed"
|
||||
#define MSG_MOVE_X _UxGT("移動X") //"Move X"
|
||||
#define MSG_MOVE_Y _UxGT("移動Y") //"Move Y"
|
||||
#define MSG_MOVE_Z _UxGT("移動Z") //"Move Z"
|
||||
#define MSG_MOVE_E _UxGT("擠出機") //"Extruder"
|
||||
#define MSG_MOVE_01MM _UxGT("移動 0.1 mm") //"Move 0.1mm"
|
||||
#define MSG_MOVE_1MM _UxGT("移動 1 mm") //"Move 1mm"
|
||||
#define MSG_MOVE_10MM _UxGT("移動 10 mm") //"Move 10mm"
|
||||
#define MSG_SPEED _UxGT("速率") //"Speed"
|
||||
#define MSG_BED_Z _UxGT("熱床Z") //"Bed Z"
|
||||
#define MSG_NOZZLE _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 噴嘴") //"Nozzle" 噴嘴
|
||||
#define MSG_BED _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 熱床") //"Bed"
|
||||
#define MSG_FAN_SPEED _UxGT("風扇速率") //"Fan speed"
|
||||
#define MSG_FLOW _UxGT("擠出速率") //"Flow"
|
||||
#define MSG_CONTROL _UxGT("控制") //"Control"
|
||||
#define MSG_MIN _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 最小") //" " LCD_STR_THERMOMETER " Min"
|
||||
#define MSG_MAX _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 最大") //" " LCD_STR_THERMOMETER " Max"
|
||||
#define MSG_FACTOR _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" 系數") //" " LCD_STR_THERMOMETER " Fact"
|
||||
#define MSG_AUTOTEMP _UxGT("自動控溫") //"Autotemp"
|
||||
#define MSG_ON _UxGT("開 ") //"On "
|
||||
#define MSG_OFF _UxGT("關 ") //"Off"
|
||||
#define MSG_PID_P _UxGT("PID-P") //"PID-P"
|
||||
#define MSG_PID_I _UxGT("PID-I") //"PID-I"
|
||||
#define MSG_PID_D _UxGT("PID-D") //"PID-D"
|
||||
#define MSG_PID_C _UxGT("PID-C") //"PID-C"
|
||||
#define MSG_SELECT _UxGT("選擇") //"Select"
|
||||
#define MSG_ACC _UxGT("加速度") //"Accel" acceleration
|
||||
#define MSG_JERK _UxGT("抖動速率") //"Jerk"
|
||||
#define MSG_VX_JERK _UxGT("X軸抖動速率") //"Vx-jerk"
|
||||
#define MSG_VY_JERK _UxGT("Y軸抖動速率") //"Vy-jerk"
|
||||
#define MSG_VZ_JERK _UxGT("Z軸抖動速率") //"Vz-jerk"
|
||||
#define MSG_VE_JERK _UxGT("擠出機抖動速率") //"Ve-jerk"
|
||||
#define MSG_VMAX _UxGT("最大進料速率") //"Vmax " max_feedrate_mm_s
|
||||
#define MSG_VMIN _UxGT("最小進料速率") //"Vmin" min_feedrate_mm_s
|
||||
#define MSG_VTRAV_MIN _UxGT("最小移動速率") //"VTrav min" min_travel_feedrate_mm_s, (target) speed of the move
|
||||
#define MSG_AMAX _UxGT("最大列印加速度") //"Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves
|
||||
#define MSG_A_RETRACT _UxGT("收進加速度") //"A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
|
||||
#define MSG_A_TRAVEL _UxGT("非列印移動加速度") //"A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
|
||||
#define MSG_STEPS_PER_MM _UxGT("軸步數/mm") //"Steps/mm" axis_steps_per_mm, axis steps-per-unit G92
|
||||
#define MSG_XSTEPS _UxGT("X軸步數/mm") //"Xsteps/mm" axis_steps_per_mm, axis steps-per-unit G92
|
||||
#define MSG_YSTEPS _UxGT("Y軸步數/mm") //"Ysteps/mm"
|
||||
#define MSG_ZSTEPS _UxGT("Z軸步數/mm") //"Zsteps/mm"
|
||||
#define MSG_ESTEPS _UxGT("擠出機步數/mm") //"Esteps/mm"
|
||||
#define MSG_TEMPERATURE _UxGT("溫度") //"Temperature"
|
||||
#define MSG_MOTION _UxGT("運動") //"Motion"
|
||||
#define MSG_FILAMENT _UxGT("絲料測容") //"Filament" lcd_control_volumetric_menu
|
||||
#define MSG_VOLUMETRIC_ENABLED _UxGT("測容積mm³") //"E in mm3" volumetric_enabled
|
||||
#define MSG_FILAMENT_DIAM _UxGT("絲料直徑") //"Fil. Dia."
|
||||
#define MSG_CONTRAST _UxGT("LCD對比度") //"LCD contrast"
|
||||
#define MSG_STORE_EEPROM _UxGT("保存設置") //"Store memory"
|
||||
#define MSG_LOAD_EEPROM _UxGT("裝載設置") //"Load memory"
|
||||
#define MSG_RESTORE_FAILSAFE _UxGT("恢複安全值") //"Restore failsafe"
|
||||
#define MSG_REFRESH _UxGT("刷新") //"Refresh"
|
||||
#define MSG_WATCH _UxGT("資訊界面") //"Info screen"
|
||||
#define MSG_PREPARE _UxGT("準備") //"Prepare"
|
||||
#define MSG_TUNE _UxGT("調整") //"Tune"
|
||||
#define MSG_PAUSE_PRINT _UxGT("暫停列印") //"Pause print"
|
||||
#define MSG_RESUME_PRINT _UxGT("恢複列印") //"Resume print"
|
||||
#define MSG_STOP_PRINT _UxGT("停止列印") //"Stop print"
|
||||
#define MSG_CARD_MENU _UxGT("從記憶卡上列印") //"Print from SD"
|
||||
#define MSG_NO_CARD _UxGT("無記憶卡") //"No SD card"
|
||||
#define MSG_DWELL _UxGT("休眠 ...") //"Sleep..."
|
||||
#define MSG_USERWAIT _UxGT("等待用戶 ...") //"Wait for user..."
|
||||
#define MSG_RESUMING _UxGT("恢複列印中") //"Resuming print"
|
||||
#define MSG_PRINT_ABORTED _UxGT("列印已取消") //"Print aborted"
|
||||
#define MSG_NO_MOVE _UxGT("無移動") //"No move."
|
||||
#define MSG_KILLED _UxGT("已殺掉") //"KILLED. "
|
||||
#define MSG_STOPPED _UxGT("已停止") //"STOPPED. "
|
||||
#define MSG_CONTROL_RETRACT _UxGT("回抽長度mm") //"Retract mm" retract_length, retract length (positive mm)
|
||||
#define MSG_CONTROL_RETRACT_SWAP _UxGT("換手回抽長度mm") //"Swap Re.mm" retract_length_swap, swap retract length (positive mm), for extruder change
|
||||
#define MSG_CONTROL_RETRACTF _UxGT("回抽速率mm/s") //"Retract V" retract_feedrate_mm_s, feedrate for retracting (mm/s)
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT _UxGT("Hop mm") //"Hop mm" retract_zlift, retract Z-lift
|
||||
#define MSG_CONTROL_RETRACT_RECOVER _UxGT("回抽恢複長度mm") //"UnRet +mm" retract_recover_length, additional recover length (mm, added to retract length when recovering)
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("換手回抽恢複長度mm") //"S UnRet+mm" retract_recover_length_swap, additional swap recover length (mm, added to retract length when recovering from extruder change)
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("回抽恢複後進料速率mm/s") //"UnRet V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s)
|
||||
#define MSG_AUTORETRACT _UxGT("自動抽回") //"AutoRetr." autoretract_enabled,
|
||||
#define MSG_FILAMENTCHANGE _UxGT("更換絲料") //"Change filament"
|
||||
#define MSG_INIT_SDCARD _UxGT("初始化記憶卡") //"Init. SD card"
|
||||
#define MSG_CNG_SDCARD _UxGT("更換記憶卡") //"Change SD card"
|
||||
#define MSG_ZPROBE_OUT _UxGT("Z探針在熱床之外") //"Z probe out. bed" Z probe is not within the physical limits
|
||||
#define MSG_HOME _UxGT("歸位") //"Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
|
||||
#define MSG_FIRST _UxGT("先") //"first"
|
||||
#define MSG_ZPROBE_ZOFFSET _UxGT("Z偏移") //"Z Offset"
|
||||
#define MSG_BABYSTEP_X _UxGT("微量調整X軸") //"Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts
|
||||
#define MSG_BABYSTEP_Y _UxGT("微量調整Y軸") //"Babystep Y"
|
||||
#define MSG_BABYSTEP_Z _UxGT("微量調整Z軸") //"Babystep Z"
|
||||
#define MSG_ENDSTOP_ABORT _UxGT("擋塊終止") //"Endstop abort"
|
||||
#define MSG_HEATING_FAILED_LCD _UxGT("加熱失敗") //"Heating failed"
|
||||
#define MSG_ERR_REDUNDANT_TEMP _UxGT("錯誤:REDUNDANT TEMP") //"Err: REDUNDANT TEMP"
|
||||
#define MSG_THERMAL_RUNAWAY _UxGT("溫控失控") //"THERMAL RUNAWAY"
|
||||
#define MSG_ERR_MAXTEMP _UxGT("錯誤:最高溫度") //"Err: MAXTEMP"
|
||||
#define MSG_ERR_MINTEMP _UxGT("錯誤:最低溫度") //"Err: MINTEMP"
|
||||
#define MSG_ERR_MAXTEMP_BED _UxGT("錯誤:最高熱床溫度") //"Err: MAXTEMP BED"
|
||||
#define MSG_ERR_MINTEMP_BED _UxGT("錯誤:最低熱床溫度") //"Err: MINTEMP BED"
|
||||
#define MSG_HALTED _UxGT("印表機停機") //"PRINTER HALTED"
|
||||
#define MSG_PLEASE_RESET _UxGT("請重置") //"Please reset"
|
||||
#define MSG_SHORT_DAY _UxGT("天") //"d" // One character only
|
||||
#define MSG_SHORT_HOUR _UxGT("時") //"h" // One character only
|
||||
#define MSG_SHORT_MINUTE _UxGT("分") //"m" // One character only
|
||||
#define MSG_HEATING _UxGT("加熱中 ...") //"Heating..."
|
||||
#define MSG_HEATING_COMPLETE _UxGT("完成加熱") //"Heating done."
|
||||
#define MSG_BED_HEATING _UxGT("加熱熱床中") //"Bed Heating."
|
||||
#define MSG_BED_DONE _UxGT("完成加熱熱床") //"Bed done."
|
||||
#define MSG_DELTA_CALIBRATE _UxGT("⊿校準") //"Delta Calibration"
|
||||
#define MSG_DELTA_CALIBRATE_X _UxGT("校準X") //"Calibrate X"
|
||||
#define MSG_DELTA_CALIBRATE_Y _UxGT("校準Y") //"Calibrate Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z _UxGT("校準Z") //"Calibrate Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER _UxGT("校準中心") //"Calibrate Center"
|
||||
|
||||
#define MSG_INFO_MENU _UxGT("關於印表機") //"About Printer"
|
||||
#define MSG_INFO_PRINTER_MENU _UxGT("印表機信息") //"Printer Info"
|
||||
#define MSG_INFO_STATS_MENU _UxGT("印表機統計") //"Printer Stats"
|
||||
#define MSG_INFO_BOARD_MENU _UxGT("主板信息") //"Board Info"
|
||||
#define MSG_INFO_THERMISTOR_MENU _UxGT("溫度計") //"Thermistors"
|
||||
#define MSG_INFO_EXTRUDERS _UxGT("擠出機") //"Extruders"
|
||||
#define MSG_INFO_BAUDRATE _UxGT("波特率") //"Baud"
|
||||
#define MSG_INFO_PROTOCOL _UxGT("協議") //"Protocol"
|
||||
|
||||
#if LCD_WIDTH > 19
|
||||
#define MSG_INFO_PRINT_COUNT _UxGT("列印計數") //"Print Count"
|
||||
#define MSG_INFO_COMPLETED_PRINTS _UxGT("完成了") //"Completed"
|
||||
#define MSG_INFO_PRINT_TIME _UxGT("總列印時間") //"Total print time"
|
||||
#define MSG_INFO_PRINT_LONGEST _UxGT("最長工作時間") //"Longest job time"
|
||||
#define MSG_INFO_PRINT_FILAMENT _UxGT("總計擠出") //"Extruded total"
|
||||
#else
|
||||
#define MSG_INFO_PRINT_COUNT _UxGT("列印數") //"Prints"
|
||||
#define MSG_INFO_COMPLETED_PRINTS _UxGT("完成") //"Completed"
|
||||
#define MSG_INFO_PRINT_TIME _UxGT("總共") //"Total"
|
||||
#define MSG_INFO_PRINT_LONGEST _UxGT("最長") //"Longest"
|
||||
#define MSG_INFO_PRINT_FILAMENT _UxGT("已擠出") //"Extruded"
|
||||
#endif
|
||||
|
||||
#define MSG_INFO_MIN_TEMP _UxGT("最低溫度") //"Min Temp"
|
||||
#define MSG_INFO_MAX_TEMP _UxGT("最高溫度") //"Max Temp"
|
||||
#define MSG_INFO_PSU _UxGT("電源供應") //"Power Supply"
|
||||
|
||||
#define MSG_FILAMENT_CHANGE_HEADER _UxGT("PRINT PAUSED")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_HEADER _UxGT("RESUME OPTIONS:")
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE _UxGT("擠出更多") //"Extrude more"
|
||||
#define MSG_FILAMENT_CHANGE_OPTION_RESUME _UxGT("恢複列印") //"Resume print"
|
||||
|
||||
#if LCD_HEIGHT >= 4
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("等待開始") //"Wait for start"
|
||||
#define MSG_FILAMENT_CHANGE_INIT_2 _UxGT("絲料") //"of the filament"
|
||||
#define MSG_FILAMENT_CHANGE_INIT_3 _UxGT("變更") //"change"
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("等待") //"Wait for"
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_2 _UxGT("卸下絲料") //"filament unload"
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_3 _UxGT("") //""
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("插入絲料") //"Insert filament"
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_2 _UxGT("並按鍵") //"and press button"
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_3 _UxGT("來繼續 ...") //"to continue..."
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("等待") //"Wait for"
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_2 _UxGT("進料") //"filament load"
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_3 _UxGT("") //""
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("等待") //"Wait for"
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_2 _UxGT("絲料擠出") //"filament extrude"
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_3 _UxGT("") //""
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("等待列印") //"Wait for print"
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_2 _UxGT("恢複") //"to resume"
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_3 _UxGT("") //""
|
||||
|
||||
#else // LCD_HEIGHT < 4
|
||||
#define MSG_FILAMENT_CHANGE_INIT_1 _UxGT("請等待 ...") //"Please wait..."
|
||||
#define MSG_FILAMENT_CHANGE_UNLOAD_1 _UxGT("退出中 ...") //"Ejecting..."
|
||||
#define MSG_FILAMENT_CHANGE_INSERT_1 _UxGT("插入並單擊") //"Insert and Click"
|
||||
#define MSG_FILAMENT_CHANGE_LOAD_1 _UxGT("裝載中 ...") //"Loading..."
|
||||
#define MSG_FILAMENT_CHANGE_EXTRUDE_1 _UxGT("擠出中 ...") //"Extruding..."
|
||||
#define MSG_FILAMENT_CHANGE_RESUME_1 _UxGT("恢複中 ...") //"Resuming..."
|
||||
#endif // LCD_HEIGHT < 4
|
||||
|
||||
#endif // LANGUAGE_ZH_TW_H
|
||||
36
Marlin/lib/readme.txt
Normal file
36
Marlin/lib/readme.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
|
||||
This directory is intended for the project specific (private) libraries.
|
||||
PlatformIO will compile them to static libraries and link to executable file.
|
||||
|
||||
The source code of each library should be placed in separate directory, like
|
||||
"lib/private_lib/[here are source files]".
|
||||
|
||||
For example, see how can be organized `Foo` and `Bar` libraries:
|
||||
|
||||
|--lib
|
||||
| |--Bar
|
||||
| | |--docs
|
||||
| | |--examples
|
||||
| | |--src
|
||||
| | |- Bar.c
|
||||
| | |- Bar.h
|
||||
| |--Foo
|
||||
| | |- Foo.c
|
||||
| | |- Foo.h
|
||||
| |- readme.txt --> THIS FILE
|
||||
|- platformio.ini
|
||||
|--src
|
||||
|- main.c
|
||||
|
||||
Then in `src/main.c` you should use:
|
||||
|
||||
#include <Foo.h>
|
||||
#include <Bar.h>
|
||||
|
||||
// rest H/C/CPP code
|
||||
|
||||
PlatformIO will find your libraries automatically, configure preprocessor's
|
||||
include paths and build them.
|
||||
|
||||
More information about PlatformIO Library Dependency Finder
|
||||
- http://docs.platformio.org/page/librarymanager/ldf.html
|
||||
195
Marlin/macros.h
195
Marlin/macros.h
@@ -1,195 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef MACROS_H
|
||||
#define MACROS_H
|
||||
|
||||
#define NUM_AXIS 4
|
||||
#define XYZE 4
|
||||
#define ABC 3
|
||||
#define XYZ 3
|
||||
|
||||
#define FORCE_INLINE __attribute__((always_inline)) inline
|
||||
#define _UNUSED __attribute__((unused))
|
||||
#define _O0 __attribute__((optimize("O0")))
|
||||
#define _Os __attribute__((optimize("Os")))
|
||||
#define _O1 __attribute__((optimize("O1")))
|
||||
#define _O2 __attribute__((optimize("O2")))
|
||||
#define _O3 __attribute__((optimize("O3")))
|
||||
|
||||
// Bracket code that shouldn't be interrupted
|
||||
#ifndef CRITICAL_SECTION_START
|
||||
#define CRITICAL_SECTION_START unsigned char _sreg = SREG; cli();
|
||||
#define CRITICAL_SECTION_END SREG = _sreg;
|
||||
#endif
|
||||
|
||||
// Clock speed factors
|
||||
#define CYCLES_PER_MICROSECOND (F_CPU / 1000000L) // 16 or 20
|
||||
#define INT0_PRESCALER 8
|
||||
|
||||
// Highly granular delays for step pulses, etc.
|
||||
#define DELAY_0_NOP NOOP
|
||||
#define DELAY_1_NOP __asm__("nop\n\t")
|
||||
#define DELAY_2_NOP DELAY_1_NOP; DELAY_1_NOP
|
||||
#define DELAY_3_NOP DELAY_1_NOP; DELAY_2_NOP
|
||||
#define DELAY_4_NOP DELAY_1_NOP; DELAY_3_NOP
|
||||
#define DELAY_5_NOP DELAY_1_NOP; DELAY_4_NOP
|
||||
|
||||
#define DELAY_NOPS(X) \
|
||||
switch (X) { \
|
||||
case 20: DELAY_1_NOP; case 19: DELAY_1_NOP; \
|
||||
case 18: DELAY_1_NOP; case 17: DELAY_1_NOP; \
|
||||
case 16: DELAY_1_NOP; case 15: DELAY_1_NOP; \
|
||||
case 14: DELAY_1_NOP; case 13: DELAY_1_NOP; \
|
||||
case 12: DELAY_1_NOP; case 11: DELAY_1_NOP; \
|
||||
case 10: DELAY_1_NOP; case 9: DELAY_1_NOP; \
|
||||
case 8: DELAY_1_NOP; case 7: DELAY_1_NOP; \
|
||||
case 6: DELAY_1_NOP; case 5: DELAY_1_NOP; \
|
||||
case 4: DELAY_1_NOP; case 3: DELAY_1_NOP; \
|
||||
case 2: DELAY_1_NOP; case 1: DELAY_1_NOP; \
|
||||
}
|
||||
|
||||
#define DELAY_10_NOP DELAY_5_NOP; DELAY_5_NOP
|
||||
#define DELAY_20_NOP DELAY_10_NOP; DELAY_10_NOP
|
||||
|
||||
#if CYCLES_PER_MICROSECOND == 16
|
||||
#define DELAY_1US DELAY_10_NOP; DELAY_5_NOP; DELAY_1_NOP
|
||||
#else
|
||||
#define DELAY_1US DELAY_20_NOP
|
||||
#endif
|
||||
#define DELAY_2US DELAY_1US; DELAY_1US
|
||||
#define DELAY_3US DELAY_1US; DELAY_2US
|
||||
#define DELAY_4US DELAY_1US; DELAY_3US
|
||||
#define DELAY_5US DELAY_1US; DELAY_4US
|
||||
#define DELAY_6US DELAY_1US; DELAY_5US
|
||||
#define DELAY_7US DELAY_1US; DELAY_6US
|
||||
#define DELAY_8US DELAY_1US; DELAY_7US
|
||||
#define DELAY_9US DELAY_1US; DELAY_8US
|
||||
#define DELAY_10US DELAY_1US; DELAY_9US
|
||||
|
||||
// Remove compiler warning on an unused variable
|
||||
#define UNUSED(x) (void) (x)
|
||||
|
||||
// Macros to make a string from a macro
|
||||
#define STRINGIFY_(M) #M
|
||||
#define STRINGIFY(M) STRINGIFY_(M)
|
||||
|
||||
// Macros for bit masks
|
||||
#define TEST(n,b) (((n)&_BV(b))!=0)
|
||||
#define SBI(n,b) (n |= _BV(b))
|
||||
#define CBI(n,b) (n &= ~_BV(b))
|
||||
#define SET_BIT(n,b,value) (n) ^= ((-value)^(n)) & (_BV(b))
|
||||
|
||||
// Macros for maths shortcuts
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.14159265358979323846
|
||||
#endif
|
||||
#define RADIANS(d) ((d)*M_PI/180.0)
|
||||
#define DEGREES(r) ((r)*180.0/M_PI)
|
||||
#define HYPOT2(x,y) (sq(x)+sq(y))
|
||||
#define HYPOT(x,y) sqrt(HYPOT2(x,y))
|
||||
|
||||
// Macros to contrain values
|
||||
#define NOLESS(v,n) do{ if (v < n) v = n; }while(0)
|
||||
#define NOMORE(v,n) do{ if (v > n) v = n; }while(0)
|
||||
|
||||
// Macros to support option testing
|
||||
#define _CAT(a, ...) a ## __VA_ARGS__
|
||||
#define SWITCH_ENABLED_false 0
|
||||
#define SWITCH_ENABLED_true 1
|
||||
#define SWITCH_ENABLED_0 0
|
||||
#define SWITCH_ENABLED_1 1
|
||||
#define SWITCH_ENABLED_ 1
|
||||
#define ENABLED(b) _CAT(SWITCH_ENABLED_, b)
|
||||
#define DISABLED(b) (!_CAT(SWITCH_ENABLED_, b))
|
||||
|
||||
#define WITHIN(V,L,H) ((V) >= (L) && (V) <= (H))
|
||||
#define NUMERIC(a) WITHIN(a, '0', '9')
|
||||
#define DECIMAL(a) (NUMERIC(a) || a == '.')
|
||||
#define NUMERIC_SIGNED(a) (NUMERIC(a) || (a) == '-' || (a) == '+')
|
||||
#define DECIMAL_SIGNED(a) (DECIMAL(a) || (a) == '-' || (a) == '+')
|
||||
#define PRINTABLE(C) (((C) & 0xC0u) != 0x80u)
|
||||
#define COUNT(a) (sizeof(a)/sizeof(*a))
|
||||
#define ZERO(a) memset(a,0,sizeof(a))
|
||||
#define COPY(a,b) memcpy(a,b,min(sizeof(a),sizeof(b)))
|
||||
|
||||
// Macros for initializing arrays
|
||||
#define ARRAY_6(v1, v2, v3, v4, v5, v6, ...) { v1, v2, v3, v4, v5, v6 }
|
||||
#define ARRAY_5(v1, v2, v3, v4, v5, ...) { v1, v2, v3, v4, v5 }
|
||||
#define ARRAY_4(v1, v2, v3, v4, ...) { v1, v2, v3, v4 }
|
||||
#define ARRAY_3(v1, v2, v3, ...) { v1, v2, v3 }
|
||||
#define ARRAY_2(v1, v2, ...) { v1, v2 }
|
||||
#define ARRAY_1(v1, ...) { v1 }
|
||||
|
||||
#define _ARRAY_N(N, ...) ARRAY_ ##N(__VA_ARGS__)
|
||||
#define ARRAY_N(N, ...) _ARRAY_N(N, __VA_ARGS__)
|
||||
|
||||
// Macros for adding
|
||||
#define INC_0 1
|
||||
#define INC_1 2
|
||||
#define INC_2 3
|
||||
#define INC_3 4
|
||||
#define INC_4 5
|
||||
#define INC_5 6
|
||||
#define INC_6 7
|
||||
#define INC_7 8
|
||||
#define INC_8 9
|
||||
#define INCREMENT_(n) INC_ ##n
|
||||
#define INCREMENT(n) INCREMENT_(n)
|
||||
|
||||
// Macros for subtracting
|
||||
#define DEC_1 0
|
||||
#define DEC_2 1
|
||||
#define DEC_3 2
|
||||
#define DEC_4 3
|
||||
#define DEC_5 4
|
||||
#define DEC_6 5
|
||||
#define DEC_7 6
|
||||
#define DEC_8 7
|
||||
#define DEC_9 8
|
||||
#define DECREMENT_(n) DEC_ ##n
|
||||
#define DECREMENT(n) DECREMENT_(n)
|
||||
|
||||
#define PIN_EXISTS(PN) (defined(PN ##_PIN) && PN ##_PIN >= 0)
|
||||
|
||||
#define PENDING(NOW,SOON) ((long)(NOW-(SOON))<0)
|
||||
#define ELAPSED(NOW,SOON) (!PENDING(NOW,SOON))
|
||||
|
||||
#define NOOP do{} while(0)
|
||||
|
||||
#define CEILING(x,y) (((x) + (y) - 1) / (y))
|
||||
|
||||
#define MIN3(a, b, c) min(min(a, b), c)
|
||||
#define MIN4(a, b, c, d) min(MIN3(a, b, c), d)
|
||||
#define MIN5(a, b, c, d, e) min(MIN4(a, b, c, d), e)
|
||||
#define MAX3(a, b, c) max(max(a, b), c)
|
||||
#define MAX4(a, b, c, d) max(MAX3(a, b, c), d)
|
||||
#define MAX5(a, b, c, d, e) max(MAX4(a, b, c, d), e)
|
||||
|
||||
#define UNEAR_ZERO(x) ((x) < 0.000001)
|
||||
#define NEAR_ZERO(x) WITHIN(x, -0.000001, 0.000001)
|
||||
#define NEAR(x,y) NEAR_ZERO((x)-(y))
|
||||
|
||||
#define RECIPROCAL(x) (NEAR_ZERO(x) ? 0.0 : 1.0 / (x))
|
||||
#define FIXFLOAT(f) (f + 0.00001)
|
||||
|
||||
#endif // __MACROS_H
|
||||
@@ -1,122 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "Marlin.h"
|
||||
|
||||
#if ENABLED(MESH_BED_LEVELING)
|
||||
|
||||
enum MeshLevelingState {
|
||||
MeshReport,
|
||||
MeshStart,
|
||||
MeshNext,
|
||||
MeshSet,
|
||||
MeshSetZOffset,
|
||||
MeshReset
|
||||
};
|
||||
|
||||
enum MBLStatus {
|
||||
MBL_STATUS_NONE = 0,
|
||||
MBL_STATUS_HAS_MESH_BIT = 0,
|
||||
MBL_STATUS_ACTIVE_BIT = 1
|
||||
};
|
||||
|
||||
#define MESH_X_DIST ((MESH_MAX_X - (MESH_MIN_X)) / (GRID_MAX_POINTS_X - 1))
|
||||
#define MESH_Y_DIST ((MESH_MAX_Y - (MESH_MIN_Y)) / (GRID_MAX_POINTS_Y - 1))
|
||||
|
||||
class mesh_bed_leveling {
|
||||
public:
|
||||
static uint8_t status; // Has Mesh and Is Active bits
|
||||
static float z_offset,
|
||||
z_values[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y],
|
||||
index_to_xpos[GRID_MAX_POINTS_X],
|
||||
index_to_ypos[GRID_MAX_POINTS_Y];
|
||||
|
||||
mesh_bed_leveling();
|
||||
|
||||
static void reset();
|
||||
|
||||
static void set_z(const int8_t px, const int8_t py, const float &z) { z_values[px][py] = z; }
|
||||
|
||||
static bool active() { return TEST(status, MBL_STATUS_ACTIVE_BIT); }
|
||||
static void set_active(const bool onOff) { onOff ? SBI(status, MBL_STATUS_ACTIVE_BIT) : CBI(status, MBL_STATUS_ACTIVE_BIT); }
|
||||
static bool has_mesh() { return TEST(status, MBL_STATUS_HAS_MESH_BIT); }
|
||||
static void set_has_mesh(const bool onOff) { onOff ? SBI(status, MBL_STATUS_HAS_MESH_BIT) : CBI(status, MBL_STATUS_HAS_MESH_BIT); }
|
||||
|
||||
static inline void zigzag(const int8_t index, int8_t &px, int8_t &py) {
|
||||
px = index % (GRID_MAX_POINTS_X);
|
||||
py = index / (GRID_MAX_POINTS_X);
|
||||
if (py & 1) px = (GRID_MAX_POINTS_X - 1) - px; // Zig zag
|
||||
}
|
||||
|
||||
static void set_zigzag_z(const int8_t index, const float &z) {
|
||||
int8_t px, py;
|
||||
zigzag(index, px, py);
|
||||
set_z(px, py, z);
|
||||
}
|
||||
|
||||
static int8_t cell_index_x(const float &x) {
|
||||
int8_t cx = (x - (MESH_MIN_X)) * (1.0 / (MESH_X_DIST));
|
||||
return constrain(cx, 0, (GRID_MAX_POINTS_X) - 2);
|
||||
}
|
||||
|
||||
static int8_t cell_index_y(const float &y) {
|
||||
int8_t cy = (y - (MESH_MIN_Y)) * (1.0 / (MESH_Y_DIST));
|
||||
return constrain(cy, 0, (GRID_MAX_POINTS_Y) - 2);
|
||||
}
|
||||
|
||||
static int8_t probe_index_x(const float &x) {
|
||||
int8_t px = (x - (MESH_MIN_X) + 0.5 * (MESH_X_DIST)) * (1.0 / (MESH_X_DIST));
|
||||
return WITHIN(px, 0, GRID_MAX_POINTS_X - 1) ? px : -1;
|
||||
}
|
||||
|
||||
static int8_t probe_index_y(const float &y) {
|
||||
int8_t py = (y - (MESH_MIN_Y) + 0.5 * (MESH_Y_DIST)) * (1.0 / (MESH_Y_DIST));
|
||||
return WITHIN(py, 0, GRID_MAX_POINTS_Y - 1) ? py : -1;
|
||||
}
|
||||
|
||||
static float calc_z0(const float &a0, const float &a1, const float &z1, const float &a2, const float &z2) {
|
||||
const float delta_z = (z2 - z1) / (a2 - a1);
|
||||
const float delta_a = a0 - a1;
|
||||
return z1 + delta_a * delta_z;
|
||||
}
|
||||
|
||||
static float get_z(const float &x0, const float &y0
|
||||
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
||||
, const float &factor
|
||||
#endif
|
||||
) {
|
||||
const int8_t cx = cell_index_x(x0), cy = cell_index_y(y0);
|
||||
const float z1 = calc_z0(x0, index_to_xpos[cx], z_values[cx][cy], index_to_xpos[cx + 1], z_values[cx + 1][cy]),
|
||||
z2 = calc_z0(x0, index_to_xpos[cx], z_values[cx][cy + 1], index_to_xpos[cx + 1], z_values[cx + 1][cy + 1]),
|
||||
z0 = calc_z0(y0, index_to_ypos[cy], z1, index_to_ypos[cy + 1], z2);
|
||||
|
||||
return z_offset + z0
|
||||
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
||||
* factor
|
||||
#endif
|
||||
;
|
||||
}
|
||||
};
|
||||
|
||||
extern mesh_bed_leveling mbl;
|
||||
|
||||
#endif // MESH_BED_LEVELING
|
||||
@@ -1,236 +0,0 @@
|
||||
#include "nozzle.h"
|
||||
|
||||
#include "Marlin.h"
|
||||
#include "point_t.h"
|
||||
|
||||
/**
|
||||
* @brief Stroke clean pattern
|
||||
* @details Wipes the nozzle back and forth in a linear movement
|
||||
*
|
||||
* @param start point_t defining the starting point
|
||||
* @param end point_t defining the ending point
|
||||
* @param strokes number of strokes to execute
|
||||
*/
|
||||
void Nozzle::stroke(
|
||||
_UNUSED point_t const &start,
|
||||
_UNUSED point_t const &end,
|
||||
_UNUSED uint8_t const &strokes
|
||||
) {
|
||||
#if ENABLED(NOZZLE_CLEAN_FEATURE)
|
||||
|
||||
#if ENABLED(NOZZLE_CLEAN_GOBACK)
|
||||
// Store the current coords
|
||||
point_t const initial = {
|
||||
current_position[X_AXIS],
|
||||
current_position[Y_AXIS],
|
||||
current_position[Z_AXIS],
|
||||
current_position[E_AXIS]
|
||||
};
|
||||
#endif // NOZZLE_CLEAN_GOBACK
|
||||
|
||||
// Move to the starting point
|
||||
do_blocking_move_to_xy(start.x, start.y);
|
||||
do_blocking_move_to_z(start.z);
|
||||
|
||||
// Start the stroke pattern
|
||||
for (uint8_t i = 0; i < (strokes >>1); i++) {
|
||||
do_blocking_move_to_xy(end.x, end.y);
|
||||
do_blocking_move_to_xy(start.x, start.y);
|
||||
}
|
||||
|
||||
#if ENABLED(NOZZLE_CLEAN_GOBACK)
|
||||
// Move the nozzle to the initial point
|
||||
do_blocking_move_to(initial.x, initial.y, initial.z);
|
||||
#endif // NOZZLE_CLEAN_GOBACK
|
||||
|
||||
#endif // NOZZLE_CLEAN_FEATURE
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Zig-zag clean pattern
|
||||
* @details Apply a zig-zag cleanning pattern
|
||||
*
|
||||
* @param start point_t defining the starting point
|
||||
* @param end point_t defining the ending point
|
||||
* @param strokes number of strokes to execute
|
||||
* @param objects number of objects to create
|
||||
*/
|
||||
void Nozzle::zigzag(
|
||||
_UNUSED point_t const &start,
|
||||
_UNUSED point_t const &end,
|
||||
_UNUSED uint8_t const &strokes,
|
||||
_UNUSED uint8_t const &objects
|
||||
) {
|
||||
#if ENABLED(NOZZLE_CLEAN_FEATURE)
|
||||
const float A = nozzle_clean_horizontal ? nozzle_clean_height : nozzle_clean_length, // [twice the] Amplitude
|
||||
P = (nozzle_clean_horizontal ? nozzle_clean_length : nozzle_clean_height) / (objects << 1); // Period
|
||||
|
||||
// Don't allow impossible triangles
|
||||
if (A <= 0.0f || P <= 0.0f ) return;
|
||||
|
||||
#if ENABLED(NOZZLE_CLEAN_GOBACK)
|
||||
// Store the current coords
|
||||
point_t const initial = {
|
||||
current_position[X_AXIS],
|
||||
current_position[Y_AXIS],
|
||||
current_position[Z_AXIS],
|
||||
current_position[E_AXIS]
|
||||
};
|
||||
#endif // NOZZLE_CLEAN_GOBACK
|
||||
|
||||
for (uint8_t j = 0; j < strokes; j++) {
|
||||
for (uint8_t i = 0; i < (objects << 1); i++) {
|
||||
float const x = start.x + ( nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) );
|
||||
float const y = start.y + (!nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) );
|
||||
|
||||
do_blocking_move_to_xy(x, y);
|
||||
if (i == 0) do_blocking_move_to_z(start.z);
|
||||
}
|
||||
|
||||
for (int i = (objects << 1); i > -1; i--) {
|
||||
float const x = start.x + ( nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) );
|
||||
float const y = start.y + (!nozzle_clean_horizontal ? i * P : (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)) );
|
||||
|
||||
do_blocking_move_to_xy(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
#if ENABLED(NOZZLE_CLEAN_GOBACK)
|
||||
// Move the nozzle to the initial point
|
||||
do_blocking_move_to_z(initial.z);
|
||||
do_blocking_move_to_xy(initial.x, initial.y);
|
||||
#endif // NOZZLE_CLEAN_GOBACK
|
||||
|
||||
#endif // NOZZLE_CLEAN_FEATURE
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Circular clean pattern
|
||||
* @details Apply a circular cleaning pattern
|
||||
*
|
||||
* @param start point_t defining the middle of circle
|
||||
* @param strokes number of strokes to execute
|
||||
* @param radius radius of circle
|
||||
*/
|
||||
void Nozzle::circle(
|
||||
_UNUSED point_t const &start,
|
||||
_UNUSED point_t const &middle,
|
||||
_UNUSED uint8_t const &strokes,
|
||||
_UNUSED float const &radius
|
||||
) {
|
||||
#if ENABLED(NOZZLE_CLEAN_FEATURE)
|
||||
if (strokes == 0) return;
|
||||
|
||||
#if ENABLED(NOZZLE_CLEAN_GOBACK)
|
||||
// Store the current coords
|
||||
point_t const initial = {
|
||||
current_position[X_AXIS],
|
||||
current_position[Y_AXIS],
|
||||
current_position[Z_AXIS],
|
||||
current_position[E_AXIS]
|
||||
};
|
||||
#endif // NOZZLE_CLEAN_GOBACK
|
||||
|
||||
if (start.z <= current_position[Z_AXIS]) {
|
||||
// Order of movement is pretty darn important here
|
||||
do_blocking_move_to_xy(start.x, start.y);
|
||||
do_blocking_move_to_z(start.z);
|
||||
} else {
|
||||
do_blocking_move_to_z(start.z);
|
||||
do_blocking_move_to_xy(start.x, start.y);
|
||||
}
|
||||
|
||||
float x, y;
|
||||
for (uint8_t s = 0; s < strokes; s++) {
|
||||
for (uint8_t i = 0; i < NOZZLE_CLEAN_CIRCLE_FN; i++) {
|
||||
x = middle.x + sin((M_2_PI / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius;
|
||||
y = middle.y + cos((M_2_PI / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius;
|
||||
|
||||
do_blocking_move_to_xy(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
// Let's be safe
|
||||
do_blocking_move_to_xy(start.x, start.y);
|
||||
|
||||
#if ENABLED(NOZZLE_CLEAN_GOBACK)
|
||||
// Move the nozzle to the initial point
|
||||
if (start.z <= initial.z) {
|
||||
// As above order is important
|
||||
do_blocking_move_to_z(initial.z);
|
||||
do_blocking_move_to_xy(initial.x, initial.y);
|
||||
} else {
|
||||
do_blocking_move_to_xy(initial.x, initial.y);
|
||||
do_blocking_move_to_z(initial.z);
|
||||
}
|
||||
#endif // NOZZLE_CLEAN_GOBACK
|
||||
|
||||
#endif // NOZZLE_CLEAN_FEATURE
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Clean the nozzle
|
||||
* @details Starts the selected clean procedure pattern
|
||||
*
|
||||
* @param pattern one of the available patterns
|
||||
* @param argument depends on the cleaning pattern
|
||||
*/
|
||||
void Nozzle::clean(
|
||||
_UNUSED uint8_t const &pattern,
|
||||
_UNUSED uint8_t const &strokes,
|
||||
_UNUSED float const &radius,
|
||||
_UNUSED uint8_t const &objects
|
||||
) {
|
||||
#if ENABLED(NOZZLE_CLEAN_FEATURE)
|
||||
#if ENABLED(DELTA)
|
||||
if (current_position[Z_AXIS] > delta_clip_start_height)
|
||||
do_blocking_move_to_z(delta_clip_start_height);
|
||||
#endif
|
||||
switch (pattern) {
|
||||
case 1:
|
||||
Nozzle::zigzag(
|
||||
NOZZLE_CLEAN_START_POINT,
|
||||
NOZZLE_CLEAN_END_POINT, strokes, objects);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
Nozzle::circle(
|
||||
NOZZLE_CLEAN_START_POINT,
|
||||
NOZZLE_CLEAN_CIRCLE_MIDDLE, strokes, radius);
|
||||
break;
|
||||
|
||||
default:
|
||||
Nozzle::stroke(
|
||||
NOZZLE_CLEAN_START_POINT,
|
||||
NOZZLE_CLEAN_END_POINT, strokes);
|
||||
}
|
||||
#endif // NOZZLE_CLEAN_FEATURE
|
||||
}
|
||||
|
||||
void Nozzle::park(
|
||||
_UNUSED uint8_t const &z_action
|
||||
) {
|
||||
#if ENABLED(NOZZLE_PARK_FEATURE)
|
||||
float const z = current_position[Z_AXIS];
|
||||
point_t const park = NOZZLE_PARK_POINT;
|
||||
|
||||
switch(z_action) {
|
||||
case 1: // force Z-park height
|
||||
do_blocking_move_to_z(park.z);
|
||||
break;
|
||||
|
||||
case 2: // Raise by Z-park height
|
||||
do_blocking_move_to_z(
|
||||
(z + park.z > Z_MAX_POS) ? Z_MAX_POS : z + park.z);
|
||||
break;
|
||||
|
||||
default: // Raise to Z-park height if lower
|
||||
if (current_position[Z_AXIS] < park.z)
|
||||
do_blocking_move_to_z(park.z);
|
||||
}
|
||||
|
||||
do_blocking_move_to_xy(park.x, park.y);
|
||||
|
||||
#endif // NOZZLE_PARK_FEATURE
|
||||
}
|
||||
571
Marlin/pins.h
571
Marlin/pins.h
@@ -1,571 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef PINS_H
|
||||
#define PINS_H
|
||||
|
||||
#if MB(GEN7_CUSTOM)
|
||||
#include "pins_GEN7_CUSTOM.h"
|
||||
#elif MB(GEN7_12)
|
||||
#include "pins_GEN7_12.h"
|
||||
#elif MB(GEN7_13)
|
||||
#include "pins_GEN7_13.h"
|
||||
#elif MB(GEN7_14)
|
||||
#include "pins_GEN7_14.h"
|
||||
#elif MB(CNCONTROLS_11)
|
||||
#include "pins_CNCONTROLS_11.h"
|
||||
#elif MB(CNCONTROLS_12)
|
||||
#include "pins_CNCONTROLS_12.h"
|
||||
#elif MB(CHEAPTRONIC)
|
||||
#include "pins_CHEAPTRONIC.h"
|
||||
#elif MB(CHEAPTRONIC_V2)
|
||||
#include "pins_CHEAPTRONICv2.h"
|
||||
#elif MB(SETHI)
|
||||
#include "pins_SETHI.h"
|
||||
#elif MB(MIGHTYBOARD_REVE)
|
||||
#include "pins_MIGHTYBOARD_REVE.h"
|
||||
#elif MB(RAMPS_OLD)
|
||||
#include "pins_RAMPS_OLD.h"
|
||||
#elif MB(RAMPS_13_EFB)
|
||||
#define IS_RAMPS_EFB
|
||||
#include "pins_RAMPS_13.h"
|
||||
#elif MB(RAMPS_13_EEB)
|
||||
#define IS_RAMPS_EEB
|
||||
#include "pins_RAMPS_13.h"
|
||||
#elif MB(RAMPS_13_EFF)
|
||||
#define IS_RAMPS_EFF
|
||||
#include "pins_RAMPS_13.h"
|
||||
#elif MB(RAMPS_13_EEF)
|
||||
#define IS_RAMPS_EEF
|
||||
#include "pins_RAMPS_13.h"
|
||||
#elif MB(RAMPS_13_SF)
|
||||
#define IS_RAMPS_SF
|
||||
#include "pins_RAMPS_13.h"
|
||||
#elif MB(RAMPS_14_EFB)
|
||||
#define IS_RAMPS_EFB
|
||||
#include "pins_RAMPS.h"
|
||||
#elif MB(RAMPS_14_EEB)
|
||||
#define IS_RAMPS_EEB
|
||||
#include "pins_RAMPS.h"
|
||||
#elif MB(RAMPS_14_EFF)
|
||||
#define IS_RAMPS_EFF
|
||||
#include "pins_RAMPS.h"
|
||||
#elif MB(RAMPS_14_EEF)
|
||||
#define IS_RAMPS_EEF
|
||||
#include "pins_RAMPS.h"
|
||||
#elif MB(RAMPS_14_SF)
|
||||
#define IS_RAMPS_SF
|
||||
#include "pins_RAMPS.h"
|
||||
#elif MB(GEN6)
|
||||
#include "pins_GEN6.h"
|
||||
#elif MB(GEN6_DELUXE)
|
||||
#include "pins_GEN6_DELUXE.h"
|
||||
#elif MB(SANGUINOLOLU_11)
|
||||
#include "pins_SANGUINOLOLU_11.h"
|
||||
#elif MB(SANGUINOLOLU_12)
|
||||
#include "pins_SANGUINOLOLU_12.h"
|
||||
#elif MB(MELZI)
|
||||
#include "pins_MELZI.h"
|
||||
#elif MB(STB_11)
|
||||
#include "pins_STB_11.h"
|
||||
#elif MB(AZTEEG_X1)
|
||||
#include "pins_AZTEEG_X1.h"
|
||||
#elif MB(MELZI_MAKR3D)
|
||||
#include "pins_MELZI_MAKR3D.h"
|
||||
#elif MB(AZTEEG_X3)
|
||||
#include "pins_AZTEEG_X3.h"
|
||||
#elif MB(AZTEEG_X3_PRO)
|
||||
#include "pins_AZTEEG_X3_PRO.h"
|
||||
#elif MB(ULTIMAKER)
|
||||
#include "pins_ULTIMAKER.h"
|
||||
#elif MB(ULTIMAKER_OLD)
|
||||
#include "pins_ULTIMAKER_OLD.h"
|
||||
#elif MB(ULTIMAIN_2)
|
||||
#include "pins_ULTIMAIN_2.h"
|
||||
#elif MB(3DRAG)
|
||||
#include "pins_3DRAG.h"
|
||||
#elif MB(K8200)
|
||||
#include "pins_K8200.h"
|
||||
#elif MB(K8400)
|
||||
#include "pins_K8400.h"
|
||||
#elif MB(TEENSYLU)
|
||||
#include "pins_TEENSYLU.h"
|
||||
#elif MB(RUMBA)
|
||||
#include "pins_RUMBA.h"
|
||||
#elif MB(PRINTRBOARD)
|
||||
#include "pins_PRINTRBOARD.h"
|
||||
#elif MB(PRINTRBOARD_REVF)
|
||||
#include "pins_PRINTRBOARD_REVF.h"
|
||||
#elif MB(BRAINWAVE)
|
||||
#include "pins_BRAINWAVE.h"
|
||||
#elif MB(BRAINWAVE_PRO)
|
||||
#include "pins_BRAINWAVE_PRO.h"
|
||||
#elif MB(SAV_MKI)
|
||||
#include "pins_SAV_MKI.h"
|
||||
#elif MB(TEENSY2)
|
||||
#include "pins_TEENSY2.h"
|
||||
#elif MB(GEN3_PLUS)
|
||||
#include "pins_GEN3_PLUS.h"
|
||||
#elif MB(GEN3_MONOLITHIC)
|
||||
#include "pins_GEN3_MONOLITHIC.h"
|
||||
#elif MB(MEGATRONICS)
|
||||
#include "pins_MEGATRONICS.h"
|
||||
#elif MB(MINITRONICS)
|
||||
#include "pins_MINITRONICS.h"
|
||||
#elif MB(MEGATRONICS_2)
|
||||
#include "pins_MEGATRONICS_2.h"
|
||||
#elif MB(MEGATRONICS_3)
|
||||
#include "pins_MEGATRONICS_3.h"
|
||||
#elif MB(MEGATRONICS_31)
|
||||
#define MEGATRONICS_31
|
||||
#include "pins_MEGATRONICS_3.h"
|
||||
#elif MB(OMCA_A)
|
||||
#include "pins_OMCA_A.h"
|
||||
#elif MB(OMCA)
|
||||
#include "pins_OMCA.h"
|
||||
#elif MB(RAMBO)
|
||||
#include "pins_RAMBO.h"
|
||||
#elif MB(MINIRAMBO)
|
||||
#include "pins_MINIRAMBO.h"
|
||||
#elif MB(ELEFU_3)
|
||||
#include "pins_ELEFU_3.h"
|
||||
#elif MB(5DPRINT)
|
||||
#include "pins_5DPRINT.h"
|
||||
#elif MB(LEAPFROG)
|
||||
#include "pins_LEAPFROG.h"
|
||||
#elif MB(BAM_DICE)
|
||||
#include "pins_RAMPS.h"
|
||||
#elif MB(BAM_DICE_DUE)
|
||||
#include "pins_BAM_DICE_DUE.h"
|
||||
#elif MB(FELIX2)
|
||||
#include "pins_FELIX2.h"
|
||||
#elif MB(MKS_BASE)
|
||||
#include "pins_MKS_BASE.h"
|
||||
#elif MB(RIGIDBOARD)
|
||||
#include "pins_RIGIDBOARD.h"
|
||||
#elif MB(RIGIDBOARD_V2)
|
||||
#include "pins_RIGIDBOARD_V2.h"
|
||||
#elif MB(MEGACONTROLLER)
|
||||
#include "pins_MEGACONTROLLER.h"
|
||||
#elif MB(BQ_ZUM_MEGA_3D)
|
||||
#include "pins_BQ_ZUM_MEGA_3D.h"
|
||||
#elif MB(SCOOVO_X9H)
|
||||
#include "pins_SCOOVO_X9H.h"
|
||||
#elif MB(MKS_13)
|
||||
#include "pins_MKS_13.h"
|
||||
#elif MB(SAINSMART_2IN1)
|
||||
#include "pins_SAINSMART_2IN1.h"
|
||||
#else
|
||||
#error "Unknown MOTHERBOARD value set in Configuration.h"
|
||||
#endif
|
||||
|
||||
// Define certain undefined pins
|
||||
#ifndef X_MS1_PIN
|
||||
#define X_MS1_PIN -1
|
||||
#endif
|
||||
#ifndef X_MS2_PIN
|
||||
#define X_MS2_PIN -1
|
||||
#endif
|
||||
#ifndef Y_MS1_PIN
|
||||
#define Y_MS1_PIN -1
|
||||
#endif
|
||||
#ifndef Y_MS2_PIN
|
||||
#define Y_MS2_PIN -1
|
||||
#endif
|
||||
#ifndef Z_MS1_PIN
|
||||
#define Z_MS1_PIN -1
|
||||
#endif
|
||||
#ifndef Z_MS2_PIN
|
||||
#define Z_MS2_PIN -1
|
||||
#endif
|
||||
#ifndef E0_MS1_PIN
|
||||
#define E0_MS1_PIN -1
|
||||
#endif
|
||||
#ifndef E0_MS2_PIN
|
||||
#define E0_MS2_PIN -1
|
||||
#endif
|
||||
#ifndef E1_MS1_PIN
|
||||
#define E1_MS1_PIN -1
|
||||
#endif
|
||||
#ifndef E1_MS2_PIN
|
||||
#define E1_MS2_PIN -1
|
||||
#endif
|
||||
|
||||
#ifndef FAN_PIN
|
||||
#define FAN_PIN -1
|
||||
#endif
|
||||
#ifndef FAN1_PIN
|
||||
#define FAN1_PIN -1
|
||||
#endif
|
||||
#ifndef FAN2_PIN
|
||||
#define FAN2_PIN -1
|
||||
#endif
|
||||
#ifndef CONTROLLER_FAN_PIN
|
||||
#define CONTROLLER_FAN_PIN -1
|
||||
#endif
|
||||
|
||||
#ifndef HEATER_0_PIN
|
||||
#define HEATER_0_PIN -1
|
||||
#endif
|
||||
#ifndef HEATER_1_PIN
|
||||
#define HEATER_1_PIN -1
|
||||
#endif
|
||||
#ifndef HEATER_2_PIN
|
||||
#define HEATER_2_PIN -1
|
||||
#endif
|
||||
#ifndef HEATER_3_PIN
|
||||
#define HEATER_3_PIN -1
|
||||
#endif
|
||||
#ifndef HEATER_4_PIN
|
||||
#define HEATER_4_PIN -1
|
||||
#endif
|
||||
#ifndef HEATER_BED_PIN
|
||||
#define HEATER_BED_PIN -1
|
||||
#endif
|
||||
|
||||
#ifndef TEMP_0_PIN
|
||||
#define TEMP_0_PIN -1
|
||||
#endif
|
||||
#ifndef TEMP_1_PIN
|
||||
#define TEMP_1_PIN -1
|
||||
#endif
|
||||
#ifndef TEMP_2_PIN
|
||||
#define TEMP_2_PIN -1
|
||||
#endif
|
||||
#ifndef TEMP_3_PIN
|
||||
#define TEMP_3_PIN -1
|
||||
#endif
|
||||
#ifndef TEMP_4_PIN
|
||||
#define TEMP_4_PIN -1
|
||||
#endif
|
||||
#ifndef TEMP_BED_PIN
|
||||
#define TEMP_BED_PIN -1
|
||||
#endif
|
||||
|
||||
#ifndef SD_DETECT_PIN
|
||||
#define SD_DETECT_PIN -1
|
||||
#endif
|
||||
#ifndef SDPOWER
|
||||
#define SDPOWER -1
|
||||
#endif
|
||||
#ifndef SDSS
|
||||
#define SDSS -1
|
||||
#endif
|
||||
#ifndef LED_PIN
|
||||
#define LED_PIN -1
|
||||
#endif
|
||||
#ifndef PS_ON_PIN
|
||||
#define PS_ON_PIN -1
|
||||
#endif
|
||||
#ifndef KILL_PIN
|
||||
#define KILL_PIN -1
|
||||
#endif
|
||||
#ifndef SUICIDE_PIN
|
||||
#define SUICIDE_PIN -1
|
||||
#endif
|
||||
|
||||
#ifndef MAX_EXTRUDERS
|
||||
#define MAX_EXTRUDERS 5
|
||||
#endif
|
||||
|
||||
// Marlin needs to account for pins that equal -1
|
||||
#define marlinAnalogInputToDigitalPin(p) ((p) == -1 ? -1 : analogInputToDigitalPin(p))
|
||||
|
||||
//
|
||||
// Assign auto fan pins if needed
|
||||
//
|
||||
#if !defined(E0_AUTO_FAN_PIN) && defined(ORIG_E0_AUTO_FAN_PIN)
|
||||
#define E0_AUTO_FAN_PIN ORIG_E0_AUTO_FAN_PIN
|
||||
#endif
|
||||
#if !defined(E1_AUTO_FAN_PIN) && defined(ORIG_E1_AUTO_FAN_PIN)
|
||||
#define E1_AUTO_FAN_PIN ORIG_E1_AUTO_FAN_PIN
|
||||
#endif
|
||||
#if !defined(E2_AUTO_FAN_PIN) && defined(ORIG_E2_AUTO_FAN_PIN)
|
||||
#define E2_AUTO_FAN_PIN ORIG_E2_AUTO_FAN_PIN
|
||||
#endif
|
||||
#if !defined(E3_AUTO_FAN_PIN) && defined(ORIG_E3_AUTO_FAN_PIN)
|
||||
#define E3_AUTO_FAN_PIN ORIG_E3_AUTO_FAN_PIN
|
||||
#endif
|
||||
#if !defined(E4_AUTO_FAN_PIN) && defined(ORIG_E4_AUTO_FAN_PIN)
|
||||
#define E4_AUTO_FAN_PIN ORIG_E4_AUTO_FAN_PIN
|
||||
#endif
|
||||
|
||||
// List of pins which to ignore when asked to change by gcode, 0 and 1 are RX and TX, do not mess with those!
|
||||
#define _E0_PINS E0_STEP_PIN, E0_DIR_PIN, E0_ENABLE_PIN, E0_MS1_PIN, E0_MS2_PIN,
|
||||
#define _E1_PINS
|
||||
#define _E2_PINS
|
||||
#define _E3_PINS
|
||||
#define _E4_PINS
|
||||
|
||||
#if EXTRUDERS > 1
|
||||
#undef _E1_PINS
|
||||
#define _E1_PINS E1_STEP_PIN, E1_DIR_PIN, E1_ENABLE_PIN, E1_MS1_PIN, E1_MS2_PIN,
|
||||
#if EXTRUDERS > 2
|
||||
#undef _E2_PINS
|
||||
#define _E2_PINS E2_STEP_PIN, E2_DIR_PIN, E2_ENABLE_PIN,
|
||||
#if EXTRUDERS > 3
|
||||
#undef _E3_PINS
|
||||
#define _E3_PINS E3_STEP_PIN, E3_DIR_PIN, E3_ENABLE_PIN,
|
||||
#if EXTRUDERS > 4
|
||||
#undef _E4_PINS
|
||||
#define _E4_PINS E4_STEP_PIN, E4_DIR_PIN, E4_ENABLE_PIN,
|
||||
#endif // EXTRUDERS > 4
|
||||
#endif // EXTRUDERS > 3
|
||||
#endif // EXTRUDERS > 2
|
||||
#endif // EXTRUDERS > 1
|
||||
|
||||
#define _H0_PINS HEATER_0_PIN, E0_AUTO_FAN_PIN, marlinAnalogInputToDigitalPin(TEMP_0_PIN),
|
||||
#define _H1_PINS
|
||||
#define _H2_PINS
|
||||
#define _H3_PINS
|
||||
#define _H4_PINS
|
||||
|
||||
#if HOTENDS > 1
|
||||
#undef _H1_PINS
|
||||
#define _H1_PINS HEATER_1_PIN, E1_AUTO_FAN_PIN, marlinAnalogInputToDigitalPin(TEMP_1_PIN),
|
||||
#if HOTENDS > 2
|
||||
#undef _H2_PINS
|
||||
#define _H2_PINS HEATER_2_PIN, E2_AUTO_FAN_PIN, marlinAnalogInputToDigitalPin(TEMP_2_PIN),
|
||||
#if HOTENDS > 3
|
||||
#undef _H3_PINS
|
||||
#define _H3_PINS HEATER_3_PIN, E3_AUTO_FAN_PIN, marlinAnalogInputToDigitalPin(TEMP_3_PIN),
|
||||
#if HOTENDS > 4
|
||||
#undef _H4_PINS
|
||||
#define _H4_PINS HEATER_4_PIN, marlinAnalogInputToDigitalPin(TEMP_4_PIN),
|
||||
#endif // HOTENDS > 4
|
||||
#endif // HOTENDS > 3
|
||||
#endif // HOTENDS > 2
|
||||
#elif ENABLED(MIXING_EXTRUDER)
|
||||
#undef _E1_PINS
|
||||
#define _E1_PINS E1_STEP_PIN, E1_DIR_PIN, E1_ENABLE_PIN,
|
||||
#if MIXING_STEPPERS > 2
|
||||
#undef _E2_PINS
|
||||
#define _E2_PINS E2_STEP_PIN, E2_DIR_PIN, E2_ENABLE_PIN,
|
||||
#if MIXING_STEPPERS > 3
|
||||
#undef _E3_PINS
|
||||
#define _E3_PINS E3_STEP_PIN, E3_DIR_PIN, E3_ENABLE_PIN,
|
||||
#if MIXING_STEPPERS > 4
|
||||
#undef _E4_PINS
|
||||
#define _E4_PINS E4_STEP_PIN, E4_DIR_PIN, E4_ENABLE_PIN,
|
||||
#endif // MIXING_STEPPERS > 4
|
||||
#endif // MIXING_STEPPERS > 3
|
||||
#endif // MIXING_STEPPERS > 2
|
||||
#endif // MIXING_STEPPERS > 1
|
||||
|
||||
#define BED_PINS HEATER_BED_PIN, marlinAnalogInputToDigitalPin(TEMP_BED_PIN),
|
||||
|
||||
//
|
||||
// Assign endstop pins for boards with only 3 connectors
|
||||
//
|
||||
#ifdef X_STOP_PIN
|
||||
#if X_HOME_DIR < 0
|
||||
#define X_MIN_PIN X_STOP_PIN
|
||||
#define X_MAX_PIN -1
|
||||
#else
|
||||
#define X_MIN_PIN -1
|
||||
#define X_MAX_PIN X_STOP_PIN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef Y_STOP_PIN
|
||||
#if Y_HOME_DIR < 0
|
||||
#define Y_MIN_PIN Y_STOP_PIN
|
||||
#define Y_MAX_PIN -1
|
||||
#else
|
||||
#define Y_MIN_PIN -1
|
||||
#define Y_MAX_PIN Y_STOP_PIN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef Z_STOP_PIN
|
||||
#if Z_HOME_DIR < 0
|
||||
#define Z_MIN_PIN Z_STOP_PIN
|
||||
#define Z_MAX_PIN -1
|
||||
#else
|
||||
#define Z_MIN_PIN -1
|
||||
#define Z_MAX_PIN Z_STOP_PIN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//
|
||||
// Disable unused endstop / probe pins
|
||||
//
|
||||
#if DISABLED(Z_MIN_PROBE_ENDSTOP)
|
||||
#undef Z_MIN_PROBE_PIN
|
||||
#define Z_MIN_PROBE_PIN -1
|
||||
#endif
|
||||
|
||||
#if DISABLED(USE_XMAX_PLUG)
|
||||
#undef X_MAX_PIN
|
||||
#define X_MAX_PIN -1
|
||||
#endif
|
||||
|
||||
#if DISABLED(USE_YMAX_PLUG)
|
||||
#undef Y_MAX_PIN
|
||||
#define Y_MAX_PIN -1
|
||||
#endif
|
||||
|
||||
#if DISABLED(USE_ZMAX_PLUG)
|
||||
#undef Z_MAX_PIN
|
||||
#define Z_MAX_PIN -1
|
||||
#endif
|
||||
|
||||
#if DISABLED(USE_XMIN_PLUG)
|
||||
#undef X_MIN_PIN
|
||||
#define X_MIN_PIN -1
|
||||
#endif
|
||||
|
||||
#if DISABLED(USE_YMIN_PLUG)
|
||||
#undef Y_MIN_PIN
|
||||
#define Y_MIN_PIN -1
|
||||
#endif
|
||||
|
||||
#if DISABLED(USE_ZMIN_PLUG)
|
||||
#undef Z_MIN_PIN
|
||||
#define Z_MIN_PIN -1
|
||||
#endif
|
||||
|
||||
//
|
||||
// Dual X-carriage, Dual Y, Dual Z support
|
||||
//
|
||||
|
||||
#define _X2_PINS
|
||||
#define _Y2_PINS
|
||||
#define _Z2_PINS
|
||||
|
||||
#define __EPIN(p,q) E##p##_##q##_PIN
|
||||
#define _EPIN(p,q) __EPIN(p,q)
|
||||
|
||||
// The X2 axis, if any, should be the next open extruder port
|
||||
#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(X_DUAL_STEPPER_DRIVERS)
|
||||
#ifndef X2_STEP_PIN
|
||||
#define X2_STEP_PIN _EPIN(E_STEPPERS, STEP)
|
||||
#define X2_DIR_PIN _EPIN(E_STEPPERS, DIR)
|
||||
#define X2_ENABLE_PIN _EPIN(E_STEPPERS, ENABLE)
|
||||
#if X2_ENABLE_PIN == 0
|
||||
#error "No E stepper plug left for X2!"
|
||||
#endif
|
||||
#endif
|
||||
#undef _X2_PINS
|
||||
#define _X2_PINS X2_STEP_PIN, X2_DIR_PIN, X2_ENABLE_PIN,
|
||||
#define Y2_E_INDEX INCREMENT(E_STEPPERS)
|
||||
#else
|
||||
#define Y2_E_INDEX E_STEPPERS
|
||||
#endif
|
||||
|
||||
// The Y2 axis, if any, should be the next open extruder port
|
||||
#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
|
||||
#ifndef Y2_STEP_PIN
|
||||
#define Y2_STEP_PIN _EPIN(Y2_E_INDEX, STEP)
|
||||
#define Y2_DIR_PIN _EPIN(Y2_E_INDEX, DIR)
|
||||
#define Y2_ENABLE_PIN _EPIN(Y2_E_INDEX, ENABLE)
|
||||
#if Y2_ENABLE_PIN == 0
|
||||
#error "No E stepper plug left for Y2!"
|
||||
#endif
|
||||
#endif
|
||||
#undef _Y2_PINS
|
||||
#define _Y2_PINS Y2_STEP_PIN, Y2_DIR_PIN, Y2_ENABLE_PIN,
|
||||
#define Z2_E_INDEX INCREMENT(Y2_E_INDEX)
|
||||
#else
|
||||
#define Z2_E_INDEX Y2_E_INDEX
|
||||
#endif
|
||||
|
||||
// The Z2 axis, if any, should be the next open extruder port
|
||||
#if ENABLED(Z_DUAL_STEPPER_DRIVERS)
|
||||
#ifndef Z2_STEP_PIN
|
||||
#define Z2_STEP_PIN _EPIN(Z2_E_INDEX, STEP)
|
||||
#define Z2_DIR_PIN _EPIN(Z2_E_INDEX, DIR)
|
||||
#define Z2_ENABLE_PIN _EPIN(Z2_E_INDEX, ENABLE)
|
||||
#if Z2_ENABLE_PIN == 0
|
||||
#error "No E stepper plug left for Z2!"
|
||||
#endif
|
||||
#endif
|
||||
#undef _Z2_PINS
|
||||
#define _Z2_PINS Z2_STEP_PIN, Z2_DIR_PIN, Z2_ENABLE_PIN,
|
||||
#endif
|
||||
|
||||
#define SENSITIVE_PINS { 0, 1, \
|
||||
X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, \
|
||||
Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, \
|
||||
Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, Z_MIN_PROBE_PIN, \
|
||||
PS_ON_PIN, HEATER_BED_PIN, FAN_PIN, FAN1_PIN, FAN2_PIN, CONTROLLER_FAN_PIN, \
|
||||
_E0_PINS _E1_PINS _E2_PINS _E3_PINS _E4_PINS BED_PINS \
|
||||
_H0_PINS _H1_PINS _H2_PINS _H3_PINS _H4_PINS \
|
||||
_X2_PINS _Y2_PINS _Z2_PINS \
|
||||
X_MS1_PIN, X_MS2_PIN, Y_MS1_PIN, Y_MS2_PIN, Z_MS1_PIN, Z_MS2_PIN \
|
||||
}
|
||||
|
||||
#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS))
|
||||
|
||||
/**
|
||||
* Define SPI Pins: SCK, MISO, MOSI, SS
|
||||
*/
|
||||
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__)
|
||||
#define AVR_SCK_PIN 13
|
||||
#define AVR_MISO_PIN 12
|
||||
#define AVR_MOSI_PIN 11
|
||||
#define AVR_SS_PIN 10
|
||||
#elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__)
|
||||
#define AVR_SCK_PIN 7
|
||||
#define AVR_MISO_PIN 6
|
||||
#define AVR_MOSI_PIN 5
|
||||
#define AVR_SS_PIN 4
|
||||
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
||||
#define AVR_SCK_PIN 52
|
||||
#define AVR_MISO_PIN 50
|
||||
#define AVR_MOSI_PIN 51
|
||||
#define AVR_SS_PIN 53
|
||||
#elif defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__)
|
||||
#if ENABLED(AT90USBxx_TEENSYPP_ASSIGNMENTS)
|
||||
// Teensy pin assignments
|
||||
#define AVR_SCK_PIN 21
|
||||
#define AVR_MISO_PIN 23
|
||||
#define AVR_MOSI_PIN 22
|
||||
#define AVR_SS_PIN 20
|
||||
#else
|
||||
// Traditional pin assignments
|
||||
#define AVR_SCK_PIN 9
|
||||
#define AVR_MISO_PIN 11
|
||||
#define AVR_MOSI_PIN 10
|
||||
#define AVR_SS_PIN 8
|
||||
#endif
|
||||
#elif defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
|
||||
#define AVR_SCK_PIN 10
|
||||
#define AVR_MISO_PIN 12
|
||||
#define AVR_MOSI_PIN 11
|
||||
#define AVR_SS_PIN 16
|
||||
#endif
|
||||
|
||||
#ifndef SCK_PIN
|
||||
#define SCK_PIN AVR_SCK_PIN
|
||||
#endif
|
||||
#ifndef MISO_PIN
|
||||
#define MISO_PIN AVR_MISO_PIN
|
||||
#endif
|
||||
#ifndef MOSI_PIN
|
||||
#define MOSI_PIN AVR_MOSI_PIN
|
||||
#endif
|
||||
#ifndef SS_PIN
|
||||
#define SS_PIN AVR_SS_PIN
|
||||
#endif
|
||||
|
||||
#endif // __PINS_H
|
||||
@@ -1,492 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
bool endstop_monitor_flag = false;
|
||||
|
||||
#define NAME_FORMAT "%-28s" // one place to specify the format of all the sources of names
|
||||
// "-" left justify, "28" minimum width of name, pad with blanks
|
||||
|
||||
#define IS_ANALOG(P) ((P) >= analogInputToDigitalPin(0) && ((P) <= analogInputToDigitalPin(15) || (P) <= analogInputToDigitalPin(7)))
|
||||
|
||||
#define AVR_ATmega2560_FAMILY (defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__))
|
||||
#define AVR_AT90USB1286_FAMILY (defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1286P__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB646P__) || defined(__AVR_AT90USB647__))
|
||||
#define AVR_ATmega1284_FAMILY (defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__))
|
||||
|
||||
/**
|
||||
* This routine minimizes RAM usage by creating a FLASH resident array to
|
||||
* store the pin names, pin numbers and analog/digital flag.
|
||||
*
|
||||
* Creating the array in FLASH is a two pass process. The first pass puts the
|
||||
* name strings into FLASH. The second pass actually creates the array.
|
||||
*
|
||||
* Both passes use the same pin list. The list contains two macro names. The
|
||||
* actual macro definitions are changed depending on which pass is being done.
|
||||
*
|
||||
*/
|
||||
|
||||
// first pass - put the name strings into FLASH
|
||||
|
||||
#define _ADD_PIN_2(PIN_NAME, ENTRY_NAME) static const unsigned char ENTRY_NAME[] PROGMEM = { PIN_NAME };
|
||||
#define _ADD_PIN(PIN_NAME, COUNTER) _ADD_PIN_2(PIN_NAME, entry_NAME_##COUNTER)
|
||||
#define REPORT_NAME_DIGITAL(NAME, COUNTER) _ADD_PIN(#NAME, COUNTER)
|
||||
#define REPORT_NAME_ANALOG(NAME, COUNTER) _ADD_PIN(#NAME, COUNTER)
|
||||
|
||||
#include "pinsDebug_list.h"
|
||||
#line 56
|
||||
|
||||
// manually add pins that have names that are macros which don't play well with these macros
|
||||
#if SERIAL_PORT == 0 && (AVR_ATmega2560_FAMILY || AVR_ATmega1284_FAMILY)
|
||||
static const char RXD_NAME[] PROGMEM = { "RXD" };
|
||||
static const char TXD_NAME[] PROGMEM = { "TXD" };
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// second pass - create the array
|
||||
|
||||
#undef _ADD_PIN_2
|
||||
#undef _ADD_PIN
|
||||
#undef REPORT_NAME_DIGITAL
|
||||
#undef REPORT_NAME_ANALOG
|
||||
|
||||
#define _ADD_PIN_2(ENTRY_NAME, NAME, IS_DIGITAL) { (const char*)ENTRY_NAME, (const char*)NAME, (const char*)IS_DIGITAL },
|
||||
#define _ADD_PIN(NAME, COUNTER, IS_DIGITAL) _ADD_PIN_2(entry_NAME_##COUNTER, NAME, IS_DIGITAL)
|
||||
#define REPORT_NAME_DIGITAL(NAME, COUNTER) _ADD_PIN(NAME, COUNTER, (uint8_t)1)
|
||||
#define REPORT_NAME_ANALOG(NAME, COUNTER) _ADD_PIN(analogInputToDigitalPin(NAME), COUNTER, 0)
|
||||
|
||||
const char* const pin_array[][3] PROGMEM = {
|
||||
|
||||
/**
|
||||
* [pin name] [pin number] [is digital or analog] 1 = digital, 0 = analog
|
||||
* Each entry takes up 6 bytes in FLASH:
|
||||
* 2 byte pointer to location of the name string
|
||||
* 2 bytes containing the pin number
|
||||
* analog pin numbers were convereted to digital when the array was created
|
||||
* 2 bytes containing the digital/analog bool flag
|
||||
*/
|
||||
|
||||
// manually add pins ...
|
||||
#if SERIAL_PORT == 0
|
||||
#if AVR_ATmega2560_FAMILY
|
||||
{ RXD_NAME, "0", "1" },
|
||||
{ TXD_NAME, "1", "1" },
|
||||
#elif AVR_ATmega1284_FAMILY
|
||||
{ RXD_NAME, "8", "1" },
|
||||
{ TXD_NAME, "9", "1" },
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "pinsDebug_list.h"
|
||||
#line 101
|
||||
|
||||
};
|
||||
|
||||
#define n_array (sizeof(pin_array) / sizeof(char*)) / 3
|
||||
|
||||
#ifndef TIMER1B
|
||||
// working with Teensyduino extension so need to re-define some things
|
||||
#include "pinsDebug_Teensyduino.h"
|
||||
#endif
|
||||
|
||||
#define PWM_PRINT(V) do{ sprintf(buffer, "PWM: %4d", V); SERIAL_ECHO(buffer); }while(0)
|
||||
#define PWM_CASE(N,Z) \
|
||||
case TIMER##N##Z: \
|
||||
if (TCCR##N##A & (_BV(COM##N##Z##1) | _BV(COM##N##Z##0))) { \
|
||||
PWM_PRINT(OCR##N##Z); \
|
||||
return true; \
|
||||
} else return false
|
||||
|
||||
/**
|
||||
* Print a pin's PWM status.
|
||||
* Return true if it's currently a PWM pin.
|
||||
*/
|
||||
static bool pwm_status(uint8_t pin) {
|
||||
char buffer[20]; // for the sprintf statements
|
||||
|
||||
switch (digitalPinToTimer(pin)) {
|
||||
|
||||
#if defined(TCCR0A) && defined(COM0A1)
|
||||
#ifdef TIMER0A
|
||||
PWM_CASE(0, A);
|
||||
#endif
|
||||
PWM_CASE(0, B);
|
||||
#endif
|
||||
|
||||
#if defined(TCCR1A) && defined(COM1A1)
|
||||
PWM_CASE(1, A);
|
||||
PWM_CASE(1, B);
|
||||
#if defined(COM1C1) && defined(TIMER1C)
|
||||
PWM_CASE(1, C);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(TCCR2A) && defined(COM2A1)
|
||||
PWM_CASE(2, A);
|
||||
PWM_CASE(2, B);
|
||||
#endif
|
||||
|
||||
#if defined(TCCR3A) && defined(COM3A1)
|
||||
PWM_CASE(3, A);
|
||||
PWM_CASE(3, B);
|
||||
#ifdef COM3C1
|
||||
PWM_CASE(3, C);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef TCCR4A
|
||||
PWM_CASE(4, A);
|
||||
PWM_CASE(4, B);
|
||||
PWM_CASE(4, C);
|
||||
#endif
|
||||
|
||||
#if defined(TCCR5A) && defined(COM5A1)
|
||||
PWM_CASE(5, A);
|
||||
PWM_CASE(5, B);
|
||||
PWM_CASE(5, C);
|
||||
#endif
|
||||
|
||||
case NOT_ON_TIMER:
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
SERIAL_PROTOCOL_SP(2);
|
||||
} // pwm_status
|
||||
|
||||
|
||||
const volatile uint8_t* const PWM_other[][3] PROGMEM = {
|
||||
{ &TCCR0A, &TCCR0B, &TIMSK0 },
|
||||
{ &TCCR1A, &TCCR1B, &TIMSK1 },
|
||||
#if defined(TCCR2A) && defined(COM2A1)
|
||||
{ &TCCR2A, &TCCR2B, &TIMSK2 },
|
||||
#endif
|
||||
#if defined(TCCR3A) && defined(COM3A1)
|
||||
{ &TCCR3A, &TCCR3B, &TIMSK3 },
|
||||
#endif
|
||||
#ifdef TCCR4A
|
||||
{ &TCCR4A, &TCCR4B, &TIMSK4 },
|
||||
#endif
|
||||
#if defined(TCCR5A) && defined(COM5A1)
|
||||
{ &TCCR5A, &TCCR5B, &TIMSK5 },
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
const volatile uint8_t* const PWM_OCR[][3] PROGMEM = {
|
||||
|
||||
#ifdef TIMER0A
|
||||
{ &OCR0A, &OCR0B, 0 },
|
||||
#else
|
||||
{ 0, &OCR0B, 0 },
|
||||
#endif
|
||||
|
||||
#if defined(COM1C1) && defined(TIMER1C)
|
||||
{ (const uint8_t*)&OCR1A, (const uint8_t*)&OCR1B, (const uint8_t*)&OCR1C },
|
||||
#else
|
||||
{ (const uint8_t*)&OCR1A, (const uint8_t*)&OCR1B, 0 },
|
||||
#endif
|
||||
|
||||
#if defined(TCCR2A) && defined(COM2A1)
|
||||
{ &OCR2A, &OCR2B, 0 },
|
||||
#endif
|
||||
|
||||
#if defined(TCCR3A) && defined(COM3A1)
|
||||
#ifdef COM3C1
|
||||
{ (const uint8_t*)&OCR3A, (const uint8_t*)&OCR3B, (const uint8_t*)&OCR3C },
|
||||
#else
|
||||
{ (const uint8_t*)&OCR3A, (const uint8_t*)&OCR3B, 0 },
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef TCCR4A
|
||||
{ (const uint8_t*)&OCR4A, (const uint8_t*)&OCR4B, (const uint8_t*)&OCR4C },
|
||||
#endif
|
||||
|
||||
#if defined(TCCR5A) && defined(COM5A1)
|
||||
{ (const uint8_t*)&OCR5A, (const uint8_t*)&OCR5B, (const uint8_t*)&OCR5C },
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
#define TCCR_A(T) pgm_read_word(&PWM_other[T][0])
|
||||
#define TCCR_B(T) pgm_read_word(&PWM_other[T][1])
|
||||
#define TIMSK(T) pgm_read_word(&PWM_other[T][2])
|
||||
#define CS_0 0
|
||||
#define CS_1 1
|
||||
#define CS_2 2
|
||||
#define WGM_0 0
|
||||
#define WGM_1 1
|
||||
#define WGM_2 3
|
||||
#define WGM_3 4
|
||||
#define TOIE 0
|
||||
|
||||
#define OCR_VAL(T, L) pgm_read_word(&PWM_OCR[T][L])
|
||||
|
||||
static void err_is_counter() { SERIAL_PROTOCOLPGM(" non-standard PWM mode"); }
|
||||
static void err_is_interrupt() { SERIAL_PROTOCOLPGM(" compare interrupt enabled"); }
|
||||
static void err_prob_interrupt() { SERIAL_PROTOCOLPGM(" overflow interrupt enabled"); }
|
||||
|
||||
void com_print(uint8_t N, uint8_t Z) {
|
||||
uint8_t *TCCRA = (uint8_t*)TCCR_A(N);
|
||||
SERIAL_PROTOCOLPGM(" COM");
|
||||
SERIAL_PROTOCOLCHAR(N + '0');
|
||||
switch (Z) {
|
||||
case 'A':
|
||||
SERIAL_PROTOCOLPAIR("A: ", ((*TCCRA & (_BV(7) | _BV(6))) >> 6));
|
||||
break;
|
||||
case 'B':
|
||||
SERIAL_PROTOCOLPAIR("B: ", ((*TCCRA & (_BV(5) | _BV(4))) >> 4));
|
||||
break;
|
||||
case 'C':
|
||||
SERIAL_PROTOCOLPAIR("C: ", ((*TCCRA & (_BV(3) | _BV(2))) >> 2));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N - WGM bit layout
|
||||
char buffer[20]; // for the sprintf statements
|
||||
uint8_t *TCCRB = (uint8_t*)TCCR_B(T);
|
||||
uint8_t *TCCRA = (uint8_t*)TCCR_A(T);
|
||||
uint8_t WGM = (((*TCCRB & _BV(WGM_2)) >> 1) | (*TCCRA & (_BV(WGM_0) | _BV(WGM_1))));
|
||||
if (N == 4) WGM |= ((*TCCRB & _BV(WGM_3)) >> 1);
|
||||
|
||||
SERIAL_PROTOCOLPGM(" TIMER");
|
||||
SERIAL_PROTOCOLCHAR(T + '0');
|
||||
SERIAL_PROTOCOLCHAR(L);
|
||||
SERIAL_PROTOCOL_SP(3);
|
||||
|
||||
if (N == 3) {
|
||||
uint8_t *OCRVAL8 = (uint8_t*)OCR_VAL(T, L - 'A');
|
||||
PWM_PRINT(*OCRVAL8);
|
||||
}
|
||||
else {
|
||||
uint16_t *OCRVAL16 = (uint16_t*)OCR_VAL(T, L - 'A');
|
||||
PWM_PRINT(*OCRVAL16);
|
||||
}
|
||||
SERIAL_PROTOCOLPAIR(" WGM: ", WGM);
|
||||
com_print(T,L);
|
||||
SERIAL_PROTOCOLPAIR(" CS: ", (*TCCRB & (_BV(CS_0) | _BV(CS_1) | _BV(CS_2)) ));
|
||||
|
||||
SERIAL_PROTOCOLPGM(" TCCR");
|
||||
SERIAL_PROTOCOLCHAR(T + '0');
|
||||
SERIAL_PROTOCOLPAIR("A: ", *TCCRA);
|
||||
|
||||
SERIAL_PROTOCOLPGM(" TCCR");
|
||||
SERIAL_PROTOCOLCHAR(T + '0');
|
||||
SERIAL_PROTOCOLPAIR("B: ", *TCCRB);
|
||||
|
||||
uint8_t *TMSK = (uint8_t*)TIMSK(T);
|
||||
SERIAL_PROTOCOLPGM(" TIMSK");
|
||||
SERIAL_PROTOCOLCHAR(T + '0');
|
||||
SERIAL_PROTOCOLPAIR(": ", *TMSK);
|
||||
|
||||
uint8_t OCIE = L - 'A' + 1;
|
||||
if (N == 3) { if (WGM == 0 || WGM == 2 || WGM == 4 || WGM == 6) err_is_counter(); }
|
||||
else { if (WGM == 0 || WGM == 4 || WGM == 12 || WGM == 13) err_is_counter(); }
|
||||
if (TEST(*TMSK, OCIE)) err_is_interrupt();
|
||||
if (TEST(*TMSK, TOIE)) err_prob_interrupt();
|
||||
}
|
||||
|
||||
static void pwm_details(uint8_t pin) {
|
||||
switch (digitalPinToTimer(pin)) {
|
||||
|
||||
#if defined(TCCR0A) && defined(COM0A1)
|
||||
#ifdef TIMER0A
|
||||
case TIMER0A: timer_prefix(0, 'A', 3); break;
|
||||
#endif
|
||||
case TIMER0B: timer_prefix(0, 'B', 3); break;
|
||||
#endif
|
||||
|
||||
#if defined(TCCR1A) && defined(COM1A1)
|
||||
case TIMER1A: timer_prefix(1, 'A', 4); break;
|
||||
case TIMER1B: timer_prefix(1, 'B', 4); break;
|
||||
#if defined(COM1C1) && defined(TIMER1C)
|
||||
case TIMER1C: timer_prefix(1, 'C', 4); break;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(TCCR2A) && defined(COM2A1)
|
||||
case TIMER2A: timer_prefix(2, 'A', 3); break;
|
||||
case TIMER2B: timer_prefix(2, 'B', 3); break;
|
||||
#endif
|
||||
|
||||
#if defined(TCCR3A) && defined(COM3A1)
|
||||
case TIMER3A: timer_prefix(3, 'A', 4); break;
|
||||
case TIMER3B: timer_prefix(3, 'B', 4); break;
|
||||
#ifdef COM3C1
|
||||
case TIMER3C: timer_prefix(3, 'C', 4); break;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef TCCR4A
|
||||
case TIMER4A: timer_prefix(4, 'A', 4); break;
|
||||
case TIMER4B: timer_prefix(4, 'B', 4); break;
|
||||
case TIMER4C: timer_prefix(4, 'C', 4); break;
|
||||
#endif
|
||||
|
||||
#if defined(TCCR5A) && defined(COM5A1)
|
||||
case TIMER5A: timer_prefix(5, 'A', 4); break;
|
||||
case TIMER5B: timer_prefix(5, 'B', 4); break;
|
||||
case TIMER5C: timer_prefix(5, 'C', 4); break;
|
||||
#endif
|
||||
|
||||
case NOT_ON_TIMER: break;
|
||||
|
||||
}
|
||||
SERIAL_PROTOCOLPGM(" ");
|
||||
|
||||
// on pins that have two PWMs, print info on second PWM
|
||||
#if AVR_ATmega2560_FAMILY || AVR_AT90USB1286_FAMILY
|
||||
// looking for port B7 - PWMs 0A and 1C
|
||||
if (digitalPinToPort(pin) == 2 && digitalPinToBitMask(pin) == 0x80) {
|
||||
#ifndef TEENSYDUINO_IDE
|
||||
SERIAL_PROTOCOLPGM("\n .");
|
||||
SERIAL_PROTOCOL_SP(18);
|
||||
SERIAL_PROTOCOLPGM("TIMER1C is also tied to this pin");
|
||||
SERIAL_PROTOCOL_SP(13);
|
||||
timer_prefix(1, 'C', 4);
|
||||
#else
|
||||
SERIAL_PROTOCOLPGM("\n .");
|
||||
SERIAL_PROTOCOL_SP(18);
|
||||
SERIAL_PROTOCOLPGM("TIMER0A is also tied to this pin");
|
||||
SERIAL_PROTOCOL_SP(13);
|
||||
timer_prefix(0, 'A', 3);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
} // pwm_details
|
||||
|
||||
bool get_pinMode(int8_t pin) { return *portModeRegister(digitalPinToPort(pin)) & digitalPinToBitMask(pin); }
|
||||
|
||||
#ifndef digitalRead_mod // use Teensyduino's version of digitalRead - it doesn't disable the PWMs
|
||||
int digitalRead_mod(int8_t pin) { // same as digitalRead except the PWM stop section has been removed
|
||||
uint8_t port = digitalPinToPort(pin);
|
||||
return (port != NOT_A_PIN) && (*portInputRegister(port) & digitalPinToBitMask(pin)) ? HIGH : LOW;
|
||||
}
|
||||
#endif
|
||||
|
||||
void print_port(int8_t pin) { // print port number
|
||||
#ifdef digitalPinToPort
|
||||
SERIAL_PROTOCOLPGM(" Port: ");
|
||||
uint8_t x = digitalPinToPort(pin) + 64;
|
||||
SERIAL_CHAR(x);
|
||||
uint8_t temp = digitalPinToBitMask(pin);
|
||||
for (x = '0'; x < '9' && temp != 1; x++) temp >>= 1;
|
||||
SERIAL_CHAR(x);
|
||||
#else
|
||||
SERIAL_PROTOCOL_SP(10);
|
||||
#endif
|
||||
}
|
||||
|
||||
// pretty report with PWM info
|
||||
inline void report_pin_state_extended(int8_t pin, bool ignore, bool extended = true) {
|
||||
uint8_t temp_char;
|
||||
char *name_mem_pointer;
|
||||
char buffer[30]; // for the sprintf statements
|
||||
bool found = false,
|
||||
multi_name_pin = false;
|
||||
for (uint8_t x = 0; x < n_array; x++) { // scan entire array and report all instances of this pin
|
||||
if (pgm_read_byte(&pin_array[x][1]) == pin) {
|
||||
if (found) multi_name_pin = true;
|
||||
found = true;
|
||||
if (!multi_name_pin) { // report digitial and analog pin number only on the first time through
|
||||
sprintf(buffer, "PIN: %3d ", pin); // digital pin number
|
||||
SERIAL_ECHO(buffer);
|
||||
print_port(pin);
|
||||
if (IS_ANALOG(pin)) {
|
||||
sprintf(buffer, " (A%2d) ", int(pin - analogInputToDigitalPin(0))); // analog pin number
|
||||
SERIAL_ECHO(buffer);
|
||||
}
|
||||
else SERIAL_ECHO_SP(8); // add padding if not an analog pin
|
||||
}
|
||||
else {
|
||||
SERIAL_CHAR('.');
|
||||
SERIAL_ECHO_SP(25); // add padding if not the first instance found
|
||||
}
|
||||
name_mem_pointer = (char*)pgm_read_word(&pin_array[x][0]);
|
||||
for (uint8_t y = 0; y < 28; y++) { // always print pin name
|
||||
temp_char = pgm_read_byte(name_mem_pointer + y);
|
||||
if (temp_char != 0) MYSERIAL.write(temp_char);
|
||||
else {
|
||||
for (uint8_t i = 0; i < 28 - y; i++) MYSERIAL.write(' ');
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (pin_is_protected(pin) && !ignore)
|
||||
SERIAL_ECHOPGM("protected ");
|
||||
else {
|
||||
if (!(pgm_read_byte(&pin_array[x][2]))) {
|
||||
sprintf(buffer, "Analog in = %5d", analogRead(pin - analogInputToDigitalPin(0)));
|
||||
SERIAL_ECHO(buffer);
|
||||
}
|
||||
else {
|
||||
if (!get_pinMode(pin)) {
|
||||
//pinMode(pin, INPUT_PULLUP); // make sure input isn't floating - stopped doing this
|
||||
// because this could interfere with inductive/capacitive
|
||||
// sensors (high impedance voltage divider) and with PT100 amplifier
|
||||
SERIAL_PROTOCOLPAIR("Input = ", digitalRead_mod(pin));
|
||||
}
|
||||
else if (pwm_status(pin)) {
|
||||
// do nothing
|
||||
}
|
||||
else SERIAL_PROTOCOLPAIR("Output = ", digitalRead_mod(pin));
|
||||
}
|
||||
if (!multi_name_pin && extended) pwm_details(pin); // report PWM capabilities only on the first pass & only if doing an extended report
|
||||
}
|
||||
SERIAL_EOL;
|
||||
} // end of IF
|
||||
} // end of for loop
|
||||
|
||||
if (!found) {
|
||||
sprintf(buffer, "PIN: %3d ", pin);
|
||||
SERIAL_ECHO(buffer);
|
||||
print_port(pin);
|
||||
if (IS_ANALOG(pin)) {
|
||||
sprintf(buffer, " (A%2d) ", int(pin - analogInputToDigitalPin(0))); // analog pin number
|
||||
SERIAL_ECHO(buffer);
|
||||
}
|
||||
else
|
||||
SERIAL_ECHO_SP(8); // add padding if not an analog pin
|
||||
SERIAL_ECHOPGM("<unused/unknown>");
|
||||
if (get_pinMode(pin)) {
|
||||
SERIAL_PROTOCOL_SP(12);
|
||||
SERIAL_PROTOCOLPAIR("Output = ", digitalRead_mod(pin));
|
||||
}
|
||||
else {
|
||||
if (IS_ANALOG(pin)) {
|
||||
sprintf(buffer, " Analog in = %5d", analogRead(pin - analogInputToDigitalPin(0)));
|
||||
SERIAL_ECHO(buffer);
|
||||
}
|
||||
else
|
||||
SERIAL_ECHO_SP(9); // add padding if not an analog pin
|
||||
|
||||
SERIAL_PROTOCOLPAIR(" Input = ", digitalRead_mod(pin));
|
||||
}
|
||||
//if (!pwm_status(pin)) SERIAL_CHAR(' '); // add padding if it's not a PWM pin
|
||||
if (extended) pwm_details(pin); // report PWM capabilities only if doing an extended report
|
||||
SERIAL_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
inline void report_pin_state(int8_t pin) {
|
||||
report_pin_state_extended(pin, false, false);
|
||||
}
|
||||
@@ -1,751 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
// Please update this list when adding new pins to Marlin.
|
||||
// The order doesn't matter.
|
||||
// Following this pattern is a must.
|
||||
// If the new pin name is over 28 characters long then pinsDebug.h will need to be modified.
|
||||
|
||||
// Pin list updated from 18 FEB 2017 RCBugfix branch - max length of pin name is 24
|
||||
|
||||
#line 0 // set __LINE__ to a known value for both passes
|
||||
|
||||
#if defined(__FD) && __FD >= 0
|
||||
REPORT_NAME_DIGITAL(__FD, __LINE__ )
|
||||
#endif
|
||||
#if defined(__FS) && __FS >= 0
|
||||
REPORT_NAME_DIGITAL(__FS, __LINE__ )
|
||||
#endif
|
||||
#if defined(__GD) && __GD >= 0
|
||||
REPORT_NAME_DIGITAL(__GD, __LINE__ )
|
||||
#endif
|
||||
#if defined(__GS) && __GS >= 0
|
||||
REPORT_NAME_DIGITAL(__GS, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(AVR_MISO)
|
||||
REPORT_NAME_DIGITAL(AVR_MISO_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(AVR_MOSI)
|
||||
REPORT_NAME_DIGITAL(AVR_MOSI_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(AVR_SCK)
|
||||
REPORT_NAME_DIGITAL(AVR_SCK_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(AVR_SS)
|
||||
REPORT_NAME_DIGITAL(AVR_SS_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(BEEPER)
|
||||
REPORT_NAME_DIGITAL(BEEPER_PIN, __LINE__ )
|
||||
#endif
|
||||
#if defined(BTN_CENTER) && BTN_CENTER >= 0
|
||||
REPORT_NAME_DIGITAL(BTN_CENTER, __LINE__ )
|
||||
#endif
|
||||
#if defined(BTN_DOWN) && BTN_DOWN >= 0
|
||||
REPORT_NAME_DIGITAL(BTN_DOWN, __LINE__ )
|
||||
#endif
|
||||
#if defined(BTN_DWN) && BTN_DWN >= 0
|
||||
REPORT_NAME_DIGITAL(BTN_DWN, __LINE__ )
|
||||
#endif
|
||||
#if defined(BTN_EN1) && BTN_EN1 >= 0
|
||||
REPORT_NAME_DIGITAL(BTN_EN1, __LINE__ )
|
||||
#endif
|
||||
#if defined(BTN_EN2) && BTN_EN2 >= 0
|
||||
REPORT_NAME_DIGITAL(BTN_EN2, __LINE__ )
|
||||
#endif
|
||||
#if defined(BTN_ENC) && BTN_ENC >= 0
|
||||
REPORT_NAME_DIGITAL(BTN_ENC, __LINE__ )
|
||||
#endif
|
||||
#if defined(BTN_HOME) && BTN_HOME >= 0
|
||||
REPORT_NAME_DIGITAL(BTN_HOME, __LINE__ )
|
||||
#endif
|
||||
#if defined(BTN_LEFT) && BTN_LEFT >= 0
|
||||
REPORT_NAME_DIGITAL(BTN_LEFT, __LINE__ )
|
||||
#endif
|
||||
#if defined(BTN_LFT) && BTN_LFT >= 0
|
||||
REPORT_NAME_DIGITAL(BTN_LFT, __LINE__ )
|
||||
#endif
|
||||
#if defined(BTN_RIGHT) && BTN_RIGHT >= 0
|
||||
REPORT_NAME_DIGITAL(BTN_RIGHT, __LINE__ )
|
||||
#endif
|
||||
#if defined(BTN_RT) && BTN_RT >= 0
|
||||
REPORT_NAME_DIGITAL(BTN_RT, __LINE__ )
|
||||
#endif
|
||||
#if defined(BTN_UP) && BTN_UP >= 0
|
||||
REPORT_NAME_DIGITAL(BTN_UP, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(CASE_LIGHT)
|
||||
REPORT_NAME_DIGITAL(CASE_LIGHT_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(CONTROLLER_FAN)
|
||||
REPORT_NAME_DIGITAL(CONTROLLER_FAN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(CUTOFF_RESET)
|
||||
REPORT_NAME_DIGITAL(CUTOFF_RESET_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(CUTOFF_TEST)
|
||||
REPORT_NAME_DIGITAL(CUTOFF_TEST_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(DAC_DISABLE)
|
||||
REPORT_NAME_DIGITAL(DAC_DISABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if defined(DAC_STEPPER_VREF) && DAC_STEPPER_VREF >= 0
|
||||
REPORT_NAME_DIGITAL(DAC_STEPPER_VREF, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(DEBUG)
|
||||
REPORT_NAME_DIGITAL(DEBUG_PIN, __LINE__ )
|
||||
#endif
|
||||
#if defined(DIGIPOTS_I2C_SCL) && DIGIPOTS_I2C_SCL >= 0
|
||||
REPORT_NAME_DIGITAL(DIGIPOTS_I2C_SCL, __LINE__ )
|
||||
#endif
|
||||
#if defined(DIGIPOTS_I2C_SDA_E0) && DIGIPOTS_I2C_SDA_E0 >= 0
|
||||
REPORT_NAME_DIGITAL(DIGIPOTS_I2C_SDA_E0, __LINE__ )
|
||||
#endif
|
||||
#if defined(DIGIPOTS_I2C_SDA_E1) && DIGIPOTS_I2C_SDA_E1 >= 0
|
||||
REPORT_NAME_DIGITAL(DIGIPOTS_I2C_SDA_E1, __LINE__ )
|
||||
#endif
|
||||
#if defined(DIGIPOTS_I2C_SDA_X) && DIGIPOTS_I2C_SDA_X >= 0
|
||||
REPORT_NAME_DIGITAL(DIGIPOTS_I2C_SDA_X, __LINE__ )
|
||||
#endif
|
||||
#if defined(DIGIPOTS_I2C_SDA_Y) && DIGIPOTS_I2C_SDA_Y >= 0
|
||||
REPORT_NAME_DIGITAL(DIGIPOTS_I2C_SDA_Y, __LINE__ )
|
||||
#endif
|
||||
#if defined(DIGIPOTS_I2C_SDA_Z) && DIGIPOTS_I2C_SDA_Z >= 0
|
||||
REPORT_NAME_DIGITAL(DIGIPOTS_I2C_SDA_Z, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(DIGIPOTSS)
|
||||
REPORT_NAME_DIGITAL(DIGIPOTSS_PIN, __LINE__ )
|
||||
#endif
|
||||
#if defined(DOGLCD_A0) && DOGLCD_A0 >= 0
|
||||
REPORT_NAME_DIGITAL(DOGLCD_A0, __LINE__ )
|
||||
#endif
|
||||
#if defined(DOGLCD_CS) && DOGLCD_CS >= 0
|
||||
REPORT_NAME_DIGITAL(DOGLCD_CS, __LINE__ )
|
||||
#endif
|
||||
#if defined(DOGLCD_MOSI) && DOGLCD_MOSI >= 0
|
||||
REPORT_NAME_DIGITAL(DOGLCD_MOSI, __LINE__ )
|
||||
#endif
|
||||
#if defined(DOGLCD_SCK) && DOGLCD_SCK >= 0
|
||||
REPORT_NAME_DIGITAL(DOGLCD_SCK, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E0_ATT)
|
||||
REPORT_NAME_DIGITAL(E0_ATT_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E0_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(E0_AUTO_FAN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E0_CS)
|
||||
REPORT_NAME_DIGITAL(E0_CS_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E0_DIR)
|
||||
REPORT_NAME_DIGITAL(E0_DIR_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E0_ENABLE)
|
||||
REPORT_NAME_DIGITAL(E0_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E0_MS1)
|
||||
REPORT_NAME_DIGITAL(E0_MS1_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E0_MS2)
|
||||
REPORT_NAME_DIGITAL(E0_MS2_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E0_STEP)
|
||||
REPORT_NAME_DIGITAL(E0_STEP_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E1_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(E1_AUTO_FAN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E1_CS)
|
||||
REPORT_NAME_DIGITAL(E1_CS_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E1_DIR)
|
||||
REPORT_NAME_DIGITAL(E1_DIR_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E1_ENABLE)
|
||||
REPORT_NAME_DIGITAL(E1_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E1_MS1)
|
||||
REPORT_NAME_DIGITAL(E1_MS1_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E1_MS2)
|
||||
REPORT_NAME_DIGITAL(E1_MS2_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E1_STEP)
|
||||
REPORT_NAME_DIGITAL(E1_STEP_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E2_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(E2_AUTO_FAN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E2_DIR)
|
||||
REPORT_NAME_DIGITAL(E2_DIR_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E2_ENABLE)
|
||||
REPORT_NAME_DIGITAL(E2_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E2_STEP)
|
||||
REPORT_NAME_DIGITAL(E2_STEP_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E3_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(E3_AUTO_FAN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E3_DIR)
|
||||
REPORT_NAME_DIGITAL(E3_DIR_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E3_ENABLE)
|
||||
REPORT_NAME_DIGITAL(E3_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E3_STEP)
|
||||
REPORT_NAME_DIGITAL(E3_STEP_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E4_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(E4_AUTO_FAN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E4_DIR)
|
||||
REPORT_NAME_DIGITAL(E4_DIR_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E4_ENABLE)
|
||||
REPORT_NAME_DIGITAL(E4_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(E4_STEP)
|
||||
REPORT_NAME_DIGITAL(E4_STEP_PIN, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A0) && EXT_AUX_A0 >= 0 && EXT_AUX_A0 < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(EXT_AUX_A0, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A0) && EXT_AUX_A0 >= 0 && EXT_AUX_A0 >= NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_A0, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A0_IO) && EXT_AUX_A0_IO >= 0
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_A0_IO, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A1) && EXT_AUX_A1 >= 0 && EXT_AUX_A1 < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(EXT_AUX_A1, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A1) && EXT_AUX_A1 >= 0 && EXT_AUX_A1 >= NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_A1, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A1_IO) && EXT_AUX_A1_IO >= 0
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_A1_IO, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A2) && EXT_AUX_A2 >= 0 && EXT_AUX_A2 < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(EXT_AUX_A2, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A2) && EXT_AUX_A2 >= 0 && EXT_AUX_A2 >= NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_A2, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A2_IO) && EXT_AUX_A2_IO >= 0
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_A2_IO, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A3) && EXT_AUX_A3 >= 0 && EXT_AUX_A3 < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(EXT_AUX_A3, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A3) && EXT_AUX_A3 >= 0 && EXT_AUX_A3 >= NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_A3, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A3_IO) && EXT_AUX_A3_IO >= 0
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_A3_IO, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A4) && EXT_AUX_A4 >= 0 && EXT_AUX_A4 < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(EXT_AUX_A4, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A4) && EXT_AUX_A4 >= 0 && EXT_AUX_A4 >= NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_A4, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_A4_IO) && EXT_AUX_A4_IO >= 0
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_A4_IO, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_PWM_D24) && EXT_AUX_PWM_D24 >= 0
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_PWM_D24, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_RX1_D2) && EXT_AUX_RX1_D2 >= 0
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_RX1_D2, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_SCL_D0) && EXT_AUX_SCL_D0 >= 0
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_SCL_D0, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_SDA_D1) && EXT_AUX_SDA_D1 >= 0
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_SDA_D1, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXT_AUX_TX1_D3) && EXT_AUX_TX1_D3 >= 0
|
||||
REPORT_NAME_DIGITAL(EXT_AUX_TX1_D3, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXTRUDER_0_AUTO_FAN) && EXTRUDER_0_AUTO_FAN >= 0
|
||||
REPORT_NAME_DIGITAL(EXTRUDER_0_AUTO_FAN, __LINE__ )
|
||||
#endif
|
||||
#if defined(EXTRUDER_1_AUTO_FAN) && EXTRUDER_1_AUTO_FAN >= 0
|
||||
REPORT_NAME_DIGITAL(EXTRUDER_1_AUTO_FAN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(FAN)
|
||||
REPORT_NAME_DIGITAL(FAN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(FAN1)
|
||||
REPORT_NAME_DIGITAL(FAN1_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(FAN2)
|
||||
REPORT_NAME_DIGITAL(FAN2_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(FIL_RUNOUT)
|
||||
REPORT_NAME_DIGITAL(FIL_RUNOUT_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(FILWIDTH) && FILWIDTH_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(FILWIDTH_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(HEATER_0)
|
||||
REPORT_NAME_DIGITAL(HEATER_0_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(HEATER_1)
|
||||
REPORT_NAME_DIGITAL(HEATER_1_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(HEATER_2)
|
||||
REPORT_NAME_DIGITAL(HEATER_2_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(HEATER_3)
|
||||
REPORT_NAME_DIGITAL(HEATER_3_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(HEATER_4)
|
||||
REPORT_NAME_DIGITAL(HEATER_4_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(HEATER_5)
|
||||
REPORT_NAME_DIGITAL(HEATER_5_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(HEATER_6)
|
||||
REPORT_NAME_DIGITAL(HEATER_6_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(HEATER_7)
|
||||
REPORT_NAME_DIGITAL(HEATER_7_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(HEATER_BED)
|
||||
REPORT_NAME_DIGITAL(HEATER_BED_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(HOME)
|
||||
REPORT_NAME_DIGITAL(HOME_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(I2C_SCL)
|
||||
REPORT_NAME_DIGITAL(I2C_SCL_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(I2C_SDA)
|
||||
REPORT_NAME_DIGITAL(I2C_SDA_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(KILL)
|
||||
REPORT_NAME_DIGITAL(KILL_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(LCD_BACKLIGHT)
|
||||
REPORT_NAME_DIGITAL(LCD_BACKLIGHT_PIN, __LINE__ )
|
||||
#endif
|
||||
#if defined(LCD_CONTRAST) && LCD_CONTRAST >= 0
|
||||
REPORT_NAME_DIGITAL(LCD_CONTRAST, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(LCD)
|
||||
REPORT_NAME_DIGITAL(LCD_PINS_D4, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(LCD)
|
||||
REPORT_NAME_DIGITAL(LCD_PINS_D5, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(LCD)
|
||||
REPORT_NAME_DIGITAL(LCD_PINS_D6, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(LCD)
|
||||
REPORT_NAME_DIGITAL(LCD_PINS_D7, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(LCD)
|
||||
REPORT_NAME_DIGITAL(LCD_PINS_ENABLE, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(LCD)
|
||||
REPORT_NAME_DIGITAL(LCD_PINS_RS, __LINE__ )
|
||||
#endif
|
||||
#if defined(LCD_SDSS) && LCD_SDSS >= 0
|
||||
REPORT_NAME_DIGITAL(LCD_SDSS, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(LED)
|
||||
REPORT_NAME_DIGITAL(LED_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(MAIN_VOLTAGE_MEASURE) && MAIN_VOLTAGE_MEASURE_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(MAIN_VOLTAGE_MEASURE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if defined(MAX6675_SS) && MAX6675_SS >= 0
|
||||
REPORT_NAME_DIGITAL(MAX6675_SS, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(MISO)
|
||||
REPORT_NAME_DIGITAL(MISO_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(MOSFET_A)
|
||||
REPORT_NAME_DIGITAL(MOSFET_A_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(MOSFET_B)
|
||||
REPORT_NAME_DIGITAL(MOSFET_B_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(MOSFET_C)
|
||||
REPORT_NAME_DIGITAL(MOSFET_C_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(MOSFET_D)
|
||||
REPORT_NAME_DIGITAL(MOSFET_D_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(MOSI)
|
||||
REPORT_NAME_DIGITAL(MOSI_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(MOTOR_CURRENT_PWM_E)
|
||||
REPORT_NAME_DIGITAL(MOTOR_CURRENT_PWM_E_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
|
||||
REPORT_NAME_DIGITAL(MOTOR_CURRENT_PWM_XY_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
|
||||
REPORT_NAME_DIGITAL(MOTOR_CURRENT_PWM_Z_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(ORIG_E0_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(ORIG_E0_AUTO_FAN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(ORIG_E1_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(ORIG_E1_AUTO_FAN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(ORIG_E2_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(ORIG_E2_AUTO_FAN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(ORIG_E3_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(ORIG_E3_AUTO_FAN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(ORIG_E4_AUTO_FAN)
|
||||
REPORT_NAME_DIGITAL(ORIG_E4_AUTO_FAN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(PHOTOGRAPH)
|
||||
REPORT_NAME_DIGITAL(PHOTOGRAPH_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(PS_ON)
|
||||
REPORT_NAME_DIGITAL(PS_ON_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(PWM_1)
|
||||
REPORT_NAME_DIGITAL(PWM_1_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(PWM_2)
|
||||
REPORT_NAME_DIGITAL(PWM_2_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(RAMPS_D10)
|
||||
REPORT_NAME_DIGITAL(RAMPS_D10_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(RAMPS_D8)
|
||||
REPORT_NAME_DIGITAL(RAMPS_D8_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(RAMPS_D9)
|
||||
REPORT_NAME_DIGITAL(RAMPS_D9_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(RX_ENABLE)
|
||||
REPORT_NAME_DIGITAL(RX_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SAFETY_TRIGGERED)
|
||||
REPORT_NAME_DIGITAL(SAFETY_TRIGGERED_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SCK)
|
||||
REPORT_NAME_DIGITAL(SCK_PIN, __LINE__ )
|
||||
#endif
|
||||
#if defined(SCL) && SCL >= 0
|
||||
REPORT_NAME_DIGITAL(SCL, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SD_DETECT)
|
||||
REPORT_NAME_DIGITAL(SD_DETECT_PIN, __LINE__ )
|
||||
#endif
|
||||
#if defined(SDA) && SDA >= 0
|
||||
REPORT_NAME_DIGITAL(SDA, __LINE__ )
|
||||
#endif
|
||||
#if defined(SDPOWER) && SDPOWER >= 0
|
||||
REPORT_NAME_DIGITAL(SDPOWER, __LINE__ )
|
||||
#endif
|
||||
#if defined(SDSS) && SDSS >= 0
|
||||
REPORT_NAME_DIGITAL(SDSS, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SERVO0)
|
||||
REPORT_NAME_DIGITAL(SERVO0_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SERVO1)
|
||||
REPORT_NAME_DIGITAL(SERVO1_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SERVO2)
|
||||
REPORT_NAME_DIGITAL(SERVO2_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SERVO3)
|
||||
REPORT_NAME_DIGITAL(SERVO3_PIN, __LINE__ )
|
||||
#endif
|
||||
#if defined(SHIFT_CLK) && SHIFT_CLK >= 0
|
||||
REPORT_NAME_DIGITAL(SHIFT_CLK, __LINE__ )
|
||||
#endif
|
||||
#if defined(SHIFT_EN) && SHIFT_EN >= 0
|
||||
REPORT_NAME_DIGITAL(SHIFT_EN, __LINE__ )
|
||||
#endif
|
||||
#if defined(SHIFT_LD) && SHIFT_LD >= 0
|
||||
REPORT_NAME_DIGITAL(SHIFT_LD, __LINE__ )
|
||||
#endif
|
||||
#if defined(SHIFT_OUT) && SHIFT_OUT >= 0
|
||||
REPORT_NAME_DIGITAL(SHIFT_OUT, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SLED)
|
||||
REPORT_NAME_DIGITAL(SLED_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SLEEP_WAKE)
|
||||
REPORT_NAME_DIGITAL(SLEEP_WAKE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SOL1)
|
||||
REPORT_NAME_DIGITAL(SOL1_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SOL2)
|
||||
REPORT_NAME_DIGITAL(SOL2_PIN, __LINE__ )
|
||||
#endif
|
||||
#if defined(SPARE_IO) && SPARE_IO >= 0
|
||||
REPORT_NAME_DIGITAL(SPARE_IO, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SPINDLE_DIR)
|
||||
REPORT_NAME_DIGITAL(SPINDLE_DIR_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SPINDLE_LASER_ENABLE)
|
||||
REPORT_NAME_DIGITAL(SPINDLE_LASER_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SPINDLE_LASER_PWM)
|
||||
REPORT_NAME_DIGITAL(SPINDLE_LASER_PWM_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SR_CLK)
|
||||
REPORT_NAME_DIGITAL(SR_CLK_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SR_DATA)
|
||||
REPORT_NAME_DIGITAL(SR_DATA_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SR_STROBE)
|
||||
REPORT_NAME_DIGITAL(SR_STROBE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SS)
|
||||
REPORT_NAME_DIGITAL(SS_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(STAT_LED_BLUE)
|
||||
REPORT_NAME_DIGITAL(STAT_LED_BLUE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(STAT_LED_RED)
|
||||
REPORT_NAME_DIGITAL(STAT_LED_RED_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(STEPPER_RESET)
|
||||
REPORT_NAME_DIGITAL(STEPPER_RESET_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(SUICIDE)
|
||||
REPORT_NAME_DIGITAL(SUICIDE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if defined(TC1) && TC1 >= 0 && TC1 < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(TC1, __LINE__ )
|
||||
#endif
|
||||
#if defined(TC2) && TC2 >= 0 && TC2 < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(TC2, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TEMP_0) && TEMP_0_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(TEMP_0_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TEMP_1) && TEMP_1_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(TEMP_1_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TEMP_2) && TEMP_2_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(TEMP_2_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TEMP_3) && TEMP_3_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(TEMP_3_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TEMP_4) && TEMP_4_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(TEMP_4_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TEMP_BED) && TEMP_BED_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(TEMP_BED_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TEMP_CHAMBER) && TEMP_CHAMBER_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(TEMP_CHAMBER_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TEMP_X) && TEMP_X_PIN < NUM_ANALOG_INPUTS
|
||||
REPORT_NAME_ANALOG(TEMP_X_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(THERMO_DO)
|
||||
REPORT_NAME_DIGITAL(THERMO_DO_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(THERMO_SCK)
|
||||
REPORT_NAME_DIGITAL(THERMO_SCK_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TLC_BLANK)
|
||||
REPORT_NAME_DIGITAL(TLC_BLANK_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TLC_CLOCK)
|
||||
REPORT_NAME_DIGITAL(TLC_CLOCK_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TLC_DATA)
|
||||
REPORT_NAME_DIGITAL(TLC_DATA_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TLC_XLAT)
|
||||
REPORT_NAME_DIGITAL(TLC_XLAT_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TOOL_0)
|
||||
REPORT_NAME_DIGITAL(TOOL_0_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TOOL_0_PWM)
|
||||
REPORT_NAME_DIGITAL(TOOL_0_PWM_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TOOL_1)
|
||||
REPORT_NAME_DIGITAL(TOOL_1_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TOOL_1_PWM)
|
||||
REPORT_NAME_DIGITAL(TOOL_1_PWM_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TOOL_2)
|
||||
REPORT_NAME_DIGITAL(TOOL_2_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TOOL_2_PWM)
|
||||
REPORT_NAME_DIGITAL(TOOL_2_PWM_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TOOL_3)
|
||||
REPORT_NAME_DIGITAL(TOOL_3_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TOOL_3_PWM)
|
||||
REPORT_NAME_DIGITAL(TOOL_3_PWM_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TOOL_PWM)
|
||||
REPORT_NAME_DIGITAL(TOOL_PWM_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(TX_ENABLE)
|
||||
REPORT_NAME_DIGITAL(TX_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if defined(UI1) && UI1 >= 0
|
||||
REPORT_NAME_DIGITAL(UI1, __LINE__ )
|
||||
#endif
|
||||
#if defined(UI2) && UI2 >= 0
|
||||
REPORT_NAME_DIGITAL(UI2, __LINE__ )
|
||||
#endif
|
||||
#if defined(UNUSED_PWM) && UNUSED_PWM >= 0
|
||||
REPORT_NAME_DIGITAL(UNUSED_PWM, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(X_ATT)
|
||||
REPORT_NAME_DIGITAL(X_ATT_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(X_CS)
|
||||
REPORT_NAME_DIGITAL(X_CS_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(X_DIR)
|
||||
REPORT_NAME_DIGITAL(X_DIR_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(X_ENABLE)
|
||||
REPORT_NAME_DIGITAL(X_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(X_MAX)
|
||||
REPORT_NAME_DIGITAL(X_MAX_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(X_MIN)
|
||||
REPORT_NAME_DIGITAL(X_MIN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(X_MS1)
|
||||
REPORT_NAME_DIGITAL(X_MS1_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(X_MS2)
|
||||
REPORT_NAME_DIGITAL(X_MS2_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(X_STEP)
|
||||
REPORT_NAME_DIGITAL(X_STEP_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(X_STOP)
|
||||
REPORT_NAME_DIGITAL(X_STOP_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(X2_DIR)
|
||||
REPORT_NAME_DIGITAL(X2_DIR_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(X2_ENABLE)
|
||||
REPORT_NAME_DIGITAL(X2_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(X2_STEP)
|
||||
REPORT_NAME_DIGITAL(X2_STEP_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_ATT)
|
||||
REPORT_NAME_DIGITAL(Y_ATT_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_CS)
|
||||
REPORT_NAME_DIGITAL(Y_CS_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_DIR)
|
||||
REPORT_NAME_DIGITAL(Y_DIR_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_ENABLE)
|
||||
REPORT_NAME_DIGITAL(Y_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_MAX)
|
||||
REPORT_NAME_DIGITAL(Y_MAX_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_MIN)
|
||||
REPORT_NAME_DIGITAL(Y_MIN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_MS1)
|
||||
REPORT_NAME_DIGITAL(Y_MS1_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_MS2)
|
||||
REPORT_NAME_DIGITAL(Y_MS2_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_STEP)
|
||||
REPORT_NAME_DIGITAL(Y_STEP_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Y_STOP)
|
||||
REPORT_NAME_DIGITAL(Y_STOP_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Y2_DIR)
|
||||
REPORT_NAME_DIGITAL(Y2_DIR_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Y2_ENABLE)
|
||||
REPORT_NAME_DIGITAL(Y2_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Y2_STEP)
|
||||
REPORT_NAME_DIGITAL(Y2_STEP_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_ATT)
|
||||
REPORT_NAME_DIGITAL(Z_ATT_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_CS)
|
||||
REPORT_NAME_DIGITAL(Z_CS_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_DIR)
|
||||
REPORT_NAME_DIGITAL(Z_DIR_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_ENABLE)
|
||||
REPORT_NAME_DIGITAL(Z_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_MAX)
|
||||
REPORT_NAME_DIGITAL(Z_MAX_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_MIN)
|
||||
REPORT_NAME_DIGITAL(Z_MIN_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_MIN_PROBE)
|
||||
REPORT_NAME_DIGITAL(Z_MIN_PROBE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_MS1)
|
||||
REPORT_NAME_DIGITAL(Z_MS1_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_MS2)
|
||||
REPORT_NAME_DIGITAL(Z_MS2_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_STEP)
|
||||
REPORT_NAME_DIGITAL(Z_STEP_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z_STOP)
|
||||
REPORT_NAME_DIGITAL(Z_STOP_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z2_DIR)
|
||||
REPORT_NAME_DIGITAL(Z2_DIR_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z2_ENABLE)
|
||||
REPORT_NAME_DIGITAL(Z2_ENABLE_PIN, __LINE__ )
|
||||
#endif
|
||||
#if PIN_EXISTS(Z2_STEP)
|
||||
REPORT_NAME_DIGITAL(Z2_STEP_PIN, __LINE__ )
|
||||
#endif
|
||||
@@ -1,94 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* 5DPrint D8 Driver board pin assignments
|
||||
*
|
||||
* https://bitbucket.org/makible/5dprint-d8-controller-board
|
||||
*/
|
||||
|
||||
#ifndef __AVR_AT90USB1286__
|
||||
#error "Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu."
|
||||
#endif
|
||||
|
||||
#define DEFAULT_MACHINE_NAME "Makibox"
|
||||
#define BOARD_NAME "5DPrint D8"
|
||||
|
||||
#define USBCON 1286 // Disable MarlinSerial etc.
|
||||
#define LARGE_FLASH true
|
||||
|
||||
//
|
||||
// Limit Switches
|
||||
//
|
||||
#define X_STOP_PIN 37
|
||||
#define Y_STOP_PIN 36
|
||||
#define Z_STOP_PIN 39
|
||||
|
||||
//
|
||||
// Steppers
|
||||
//
|
||||
#define X_STEP_PIN 0
|
||||
#define X_DIR_PIN 1
|
||||
#define X_ENABLE_PIN 23
|
||||
|
||||
#define Y_STEP_PIN 2
|
||||
#define Y_DIR_PIN 3
|
||||
#define Y_ENABLE_PIN 19
|
||||
|
||||
#define Z_STEP_PIN 4
|
||||
#define Z_DIR_PIN 5
|
||||
#define Z_ENABLE_PIN 18
|
||||
|
||||
#define E0_STEP_PIN 6
|
||||
#define E0_DIR_PIN 7
|
||||
#define E0_ENABLE_PIN 17
|
||||
|
||||
// Microstepping pins - Mapping not from fastio.h (?)
|
||||
#define X_MS1_PIN 25
|
||||
#define X_MS2_PIN 26
|
||||
#define Y_MS1_PIN 9
|
||||
#define Y_MS2_PIN 8
|
||||
#define Z_MS1_PIN 7
|
||||
#define Z_MS2_PIN 6
|
||||
#define E0_MS1_PIN 5
|
||||
#define E0_MS2_PIN 4
|
||||
|
||||
//
|
||||
// Temperature Sensors
|
||||
//
|
||||
#define TEMP_0_PIN 1 // Analog Input
|
||||
#define TEMP_BED_PIN 0 // Analog Input
|
||||
|
||||
//
|
||||
// Heaters / Fans
|
||||
//
|
||||
#define HEATER_0_PIN 21
|
||||
#define HEATER_BED_PIN 20
|
||||
|
||||
// You may need to change FAN_PIN to 16 because Marlin isn't using fastio.h
|
||||
// for the fan and Teensyduino uses a different pin mapping.
|
||||
#define FAN_PIN 16
|
||||
|
||||
//
|
||||
// Misc. Functions
|
||||
//
|
||||
#define SDSS 20
|
||||
@@ -1,153 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Brainwave Pro pin assignments (AT90USB1286)
|
||||
*
|
||||
* Requires hardware bundle for Arduino:
|
||||
* https://github.com/unrepentantgeek/brainwave-arduino
|
||||
*/
|
||||
|
||||
/**
|
||||
* Rev B 16 JAN 2017
|
||||
*
|
||||
* Added pointers to currently available Arduino IDE extensions that will
|
||||
* allow this board to use the latest Marlin software
|
||||
*/
|
||||
|
||||
/**
|
||||
* There are three Arduino IDE extensions that are compatible with this board
|
||||
* and with the mainstream Marlin software. All have been used with Arduino 1.6.12
|
||||
*
|
||||
* Teensyduino - http://www.pjrc.com/teensy/teensyduino.html
|
||||
* Select Teensy++ 2.0 in Arduino IDE from the 'Tools -> Boards' menu
|
||||
*
|
||||
* Installation instructions are at the above URL. Don't bother loading the
|
||||
* libraries - they are not used with the Marlin software.
|
||||
*
|
||||
* Printrboard - https://github.com/scwimbush/Printrboard-HID-Arduino-IDE-Support
|
||||
* This is basically Teensyduino but with a bootloader that can handle image sizes
|
||||
* larger than 64K.
|
||||
*
|
||||
* Installation:
|
||||
*
|
||||
* 1. Go to the above URL, click on the "Clone or Download" button and then
|
||||
* click on "Download ZIP" button.
|
||||
* 2. Unzip the file, find the "printrboard" directory and then copy it to the
|
||||
* hardware directory in Arduino. The Arduino hardware directory will probably
|
||||
* be located in a path similar to this: C:\Program Files (x86)\Arduino\hardware.
|
||||
* 3. Restart Arduino.
|
||||
* 4. Select "Printrboard" from the 'Tools -> Boards' menu.
|
||||
*
|
||||
* Marlin_AT90USB - https://github.com/Bob-the-Kuhn/Marlin_AT90USB
|
||||
* Uses the bootloader from Printerboard above.
|
||||
*
|
||||
* "Marlin_AT90USB" makes PWM0A available rather than the usual PWM1C. These PWMs share
|
||||
* the same physical pin. Marlin uses TIMER1 to generate interrupts and sets it up such
|
||||
* that PWM1A, PWM1B & PWM1C can't be used.
|
||||
*
|
||||
* Installation:
|
||||
*
|
||||
* 1. In the Arduino IDE, under Files -> Preferences paste the following URL
|
||||
* https://rawgit.com/Bob-the-Kuhn/Marlin_AT90USB/master/package_MARLIN_AT90USB_index.json
|
||||
* 2. Under Tools -> Board -> Boards manager, scroll to the bottom, click on MARLIN_AT90USB
|
||||
* and then click on "Install"
|
||||
* 3. Select "AT90USB1286_TEENSYPP" from the 'Tools -> Boards' menu.
|
||||
*/
|
||||
|
||||
/**
|
||||
* To burn the bootloader that comes with Printrboard and Marlin_AT90USB:
|
||||
*
|
||||
* 1. Connect your programmer to the board.
|
||||
* 2. In the Arduino IDE select "Printrboard" or "AT90USB1286_TEENSYPP" and then select the programmer.
|
||||
* 3. In the Arduino IDE click on "burn bootloader". Don't worry about the "verify failed at 1F000" error message.
|
||||
* 4. The programmer is no longer needed. Remove it.
|
||||
*/
|
||||
|
||||
#ifndef __AVR_AT90USB1286__
|
||||
#error "Oops! Make sure you have 'Teensy++ 2.0', 'AT90USB1286_TEENSYPP', or 'Printrboard' selected from the 'Tools -> Boards' menu."
|
||||
#endif
|
||||
|
||||
#include "fastio.h"
|
||||
|
||||
#if DISABLED(AT90USBxx_TEENSYPP_ASSIGNMENTS) // use Teensyduino Teensy++2.0 pin assignments instead of Marlin alphabetical.
|
||||
#error "Uncomment '#define AT90USBxx_TEENSYPP_ASSIGNMENTS' in fastio.h for this config"
|
||||
#endif
|
||||
|
||||
#define BOARD_NAME "Brainwave Pro"
|
||||
|
||||
#define USBCON 1286 // Disable MarlinSerial etc.
|
||||
#define LARGE_FLASH true
|
||||
|
||||
//
|
||||
// Limit Switches
|
||||
//
|
||||
#define X_STOP_PIN 47
|
||||
#define Y_STOP_PIN 18
|
||||
#define Z_MAX_PIN 36
|
||||
|
||||
//
|
||||
// Z Probe (when not Z_MIN_PIN)
|
||||
//
|
||||
#ifndef Z_MIN_PROBE_PIN
|
||||
#define Z_MIN_PROBE_PIN 17
|
||||
#endif
|
||||
|
||||
//
|
||||
// Steppers
|
||||
//
|
||||
#define X_STEP_PIN 33
|
||||
#define X_DIR_PIN 32
|
||||
#define X_ENABLE_PIN 11
|
||||
|
||||
#define Y_STEP_PIN 31
|
||||
#define Y_DIR_PIN 30
|
||||
#define Y_ENABLE_PIN 8
|
||||
|
||||
#define Z_STEP_PIN 29
|
||||
#define Z_DIR_PIN 28
|
||||
#define Z_ENABLE_PIN 37
|
||||
|
||||
#define E0_STEP_PIN 35
|
||||
#define E0_DIR_PIN 34
|
||||
#define E0_ENABLE_PIN 13
|
||||
|
||||
//
|
||||
// Temperature Sensors
|
||||
//
|
||||
#define TEMP_0_PIN 2 // Analog Input
|
||||
#define TEMP_1_PIN 1 // Analog Input
|
||||
#define TEMP_BED_PIN 0 // Analog Input
|
||||
|
||||
//
|
||||
// Heaters / Fans
|
||||
//
|
||||
#define HEATER_0_PIN 15
|
||||
#define HEATER_BED_PIN 14 // Bed
|
||||
#define FAN_PIN 16 // Fan, PWM
|
||||
|
||||
//
|
||||
// Misc. Functions
|
||||
//
|
||||
#define SDSS 20
|
||||
#define SD_DETECT_PIN 12
|
||||
#define LED_PIN 19
|
||||
@@ -1,154 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Printrboard pin assignments (AT90USB1286)
|
||||
* Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE!
|
||||
* http://www.pjrc.com/teensy/teensyduino.html
|
||||
* See http://reprap.org/wiki/Printrboard for more info
|
||||
*/
|
||||
|
||||
#ifndef __AVR_AT90USB1286__
|
||||
#error "Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu."
|
||||
#endif
|
||||
|
||||
#if ENABLED(AT90USBxx_TEENSYPP_ASSIGNMENTS) // use Teensyduino Teensy++2.0 pin assignments instead of Marlin traditional.
|
||||
#error "These Printrboard assignments depend on traditional Marlin assignments, not AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h"
|
||||
#endif
|
||||
|
||||
#define BOARD_NAME "Printrboard"
|
||||
|
||||
#define USBCON 1286 // Disable MarlinSerial etc.
|
||||
#define LARGE_FLASH true
|
||||
|
||||
// Disable JTAG pins so they can be used for the Extrudrboard
|
||||
#define DISABLE_JTAG true
|
||||
|
||||
//
|
||||
// Limit Switches
|
||||
//
|
||||
#define X_STOP_PIN 35
|
||||
#if ENABLED(SDSUPPORT)
|
||||
#define Y_STOP_PIN 37 // Move Ystop to Estop socket
|
||||
#else
|
||||
#define Y_STOP_PIN 8 // Ystop in Ystop socket
|
||||
#endif
|
||||
#define Z_STOP_PIN 36
|
||||
|
||||
//
|
||||
// Steppers
|
||||
//
|
||||
#define X_STEP_PIN 0
|
||||
#define X_DIR_PIN 1
|
||||
#define X_ENABLE_PIN 39
|
||||
|
||||
#define Y_STEP_PIN 2
|
||||
#define Y_DIR_PIN 3
|
||||
#define Y_ENABLE_PIN 38
|
||||
|
||||
#define Z_STEP_PIN 4
|
||||
#define Z_DIR_PIN 5
|
||||
#define Z_ENABLE_PIN 23
|
||||
|
||||
#define E0_STEP_PIN 6
|
||||
#define E0_DIR_PIN 7
|
||||
#define E0_ENABLE_PIN 19
|
||||
|
||||
//
|
||||
// Temperature Sensors
|
||||
//
|
||||
#define TEMP_0_PIN 1 // Analog Input
|
||||
#define TEMP_BED_PIN 0 // Analog Input
|
||||
|
||||
//
|
||||
// Heaters / Fans
|
||||
//
|
||||
#define HEATER_0_PIN 21 // Extruder
|
||||
#define HEATER_1_PIN 46
|
||||
#define HEATER_2_PIN 47
|
||||
#define HEATER_BED_PIN 20
|
||||
|
||||
// If soft or fast PWM is off then use Teensyduino pin numbering, Marlin
|
||||
// fastio pin numbering otherwise
|
||||
#if ENABLED(FAN_SOFT_PWM) || ENABLED(FAST_PWM_FAN)
|
||||
#define FAN_PIN 22
|
||||
#else
|
||||
#define FAN_PIN 16
|
||||
#endif
|
||||
|
||||
//
|
||||
// Misc. Functions
|
||||
//
|
||||
#define SDSS 26
|
||||
#define FILWIDTH_PIN 2 // Analog Input
|
||||
|
||||
//
|
||||
// LCD / Controller
|
||||
//
|
||||
#if ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL)
|
||||
// we have no buzzer installed
|
||||
#define BEEPER_PIN -1
|
||||
|
||||
// LCD Pins
|
||||
#if ENABLED(LCD_I2C_PANELOLU2)
|
||||
#define BTN_EN1 27 // RX1 - fastio.h pin mapping 27
|
||||
#define BTN_EN2 26 // TX1 - fastio.h pin mapping 26
|
||||
#define BTN_ENC 43 // A3 - fastio.h pin mapping 43
|
||||
#define SDSS 40 // use SD card on Panelolu2 (Teensyduino pin mapping)
|
||||
#else
|
||||
#define BTN_EN1 16
|
||||
#define BTN_EN2 17
|
||||
#define BTN_ENC 18 // the click
|
||||
#endif // LCD_I2C_PANELOLU2
|
||||
|
||||
// not connected to a pin
|
||||
#define SD_DETECT_PIN -1
|
||||
|
||||
#define LCD_PINS_RS 9
|
||||
#define LCD_PINS_ENABLE 8
|
||||
#define LCD_PINS_D4 7
|
||||
#define LCD_PINS_D5 6
|
||||
#define LCD_PINS_D6 5
|
||||
#define LCD_PINS_D7 4
|
||||
|
||||
#endif // ULTRA_LCD && NEWPANEL
|
||||
|
||||
#if ENABLED(VIKI2) || ENABLED(miniVIKI)
|
||||
// FastIO
|
||||
#define BEEPER_PIN 32
|
||||
// Pins for DOGM SPI LCD Support
|
||||
#define DOGLCD_A0 42 // Non-FastIO
|
||||
#define DOGLCD_CS 43 // Non-FastIO
|
||||
#define LCD_SCREEN_ROT_180
|
||||
|
||||
// The encoder and click button (FastIO Pins)
|
||||
#define BTN_EN1 26
|
||||
#define BTN_EN2 27
|
||||
#define BTN_ENC 47
|
||||
|
||||
#define SDSS 45
|
||||
#define SD_DETECT_PIN -1 // FastIO (Manual says 72 I'm not certain cause I can't test)
|
||||
|
||||
#define STAT_LED_RED_PIN 12 // Non-FastIO
|
||||
#define STAT_LED_BLUE_PIN 10 // Non-FastIO
|
||||
|
||||
#endif
|
||||
@@ -1,149 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Printrboard pin assignments (AT90USB1286)
|
||||
* Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE!
|
||||
* http://www.pjrc.com/teensy/teensyduino.html
|
||||
* See http://reprap.org/wiki/Printrboard for more info
|
||||
*/
|
||||
|
||||
#ifndef __AVR_AT90USB1286__
|
||||
#error "Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu."
|
||||
#endif
|
||||
|
||||
#if ENABLED(AT90USBxx_TEENSYPP_ASSIGNMENTS) // use Teensyduino Teensy++2.0 pin assignments instead of Marlin traditional.
|
||||
#error "These Printrboard assignments depend on traditional Marlin assignments, not AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h"
|
||||
#endif
|
||||
|
||||
#define BOARD_NAME "Printrboard Rev F"
|
||||
#define LARGE_FLASH true
|
||||
|
||||
//
|
||||
// Limit Switches
|
||||
//
|
||||
#define X_STOP_PIN 35
|
||||
#define Y_STOP_PIN 12
|
||||
#define Z_STOP_PIN 36
|
||||
|
||||
//
|
||||
// Steppers
|
||||
//
|
||||
#define X_STEP_PIN 0
|
||||
#define X_DIR_PIN 1
|
||||
#define X_ENABLE_PIN 39
|
||||
|
||||
#define Y_STEP_PIN 2
|
||||
#define Y_DIR_PIN 3
|
||||
#define Y_ENABLE_PIN 38
|
||||
|
||||
#define Z_STEP_PIN 4
|
||||
#define Z_DIR_PIN 5
|
||||
#define Z_ENABLE_PIN 23
|
||||
|
||||
#define E0_STEP_PIN 6
|
||||
#define E0_DIR_PIN 7
|
||||
#define E0_ENABLE_PIN 19
|
||||
|
||||
// uncomment to enable an I2C based DAC like on the Printrboard REVF
|
||||
#define DAC_STEPPER_CURRENT
|
||||
// Number of channels available for DAC, For Printrboar REVF there are 4
|
||||
#define DAC_STEPPER_ORDER { 3, 2, 1, 0 }
|
||||
|
||||
#define DAC_STEPPER_SENSE 0.11
|
||||
#define DAC_STEPPER_ADDRESS 0
|
||||
#define DAC_STEPPER_MAX 3520
|
||||
#define DAC_STEPPER_VREF 1 // internal Vref, gain 1x = 2.048V
|
||||
#define DAC_STEPPER_GAIN 0
|
||||
#define DAC_OR_ADDRESS 0x00
|
||||
|
||||
//
|
||||
// Temperature Sensors
|
||||
//
|
||||
#define TEMP_0_PIN 1 // Analog Input (Extruder)
|
||||
#define TEMP_BED_PIN 0 // Analog Input (Bed)
|
||||
|
||||
//
|
||||
// Heaters / Fans
|
||||
//
|
||||
#define HEATER_0_PIN 21 // Extruder
|
||||
#define HEATER_1_PIN 46
|
||||
#define HEATER_2_PIN 47
|
||||
#define HEATER_BED_PIN 20
|
||||
|
||||
// If soft or fast PWM is off then use Teensyduino pin numbering, Marlin
|
||||
// fastio pin numbering otherwise
|
||||
#if ENABLED(FAN_SOFT_PWM) || ENABLED(FAST_PWM_FAN)
|
||||
#define FAN_PIN 22
|
||||
#else
|
||||
#define FAN_PIN 16
|
||||
#endif
|
||||
|
||||
//
|
||||
// Misc. Functions
|
||||
//
|
||||
#define SDSS 20 // Teensylu pin mapping
|
||||
#define FILWIDTH_PIN 2 // Analog Input
|
||||
|
||||
//
|
||||
// LCD / Controller
|
||||
//
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
#define BEEPER_PIN -1
|
||||
|
||||
#define LCD_PINS_RS 9
|
||||
#define LCD_PINS_ENABLE 8
|
||||
#define LCD_PINS_D4 7
|
||||
#define LCD_PINS_D5 6
|
||||
#define LCD_PINS_D6 5
|
||||
#define LCD_PINS_D7 4
|
||||
|
||||
#define BTN_EN1 16
|
||||
#define BTN_EN2 17
|
||||
#define BTN_ENC 18 // the click
|
||||
|
||||
#define SD_DETECT_PIN -1
|
||||
|
||||
// encoder rotation values
|
||||
#define encrot0 0
|
||||
#define encrot1 2
|
||||
#define encrot2 3
|
||||
#define encrot3 1
|
||||
#endif
|
||||
|
||||
#if ENABLED(VIKI2) || ENABLED(miniVIKI)
|
||||
#define BEEPER_PIN 32 // FastIO
|
||||
#define DOGLCD_A0 42 // Non-FastIO
|
||||
#define DOGLCD_CS 43 // Non-FastIO
|
||||
#define LCD_SCREEN_ROT_180
|
||||
|
||||
// (FastIO Pins)
|
||||
#define BTN_EN1 26
|
||||
#define BTN_EN2 27
|
||||
#define BTN_ENC 47
|
||||
|
||||
#define SDSS 45
|
||||
#define SD_DETECT_PIN -1 // FastIO (Manual says 72)
|
||||
|
||||
#define STAT_LED_RED_PIN 12 // Non-FastIO
|
||||
#define STAT_LED_BLUE_PIN 10 // Non-FastIO
|
||||
#endif
|
||||
@@ -1,389 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Arduino Mega with RAMPS v1.4 (or v1.3) pin assignments
|
||||
*
|
||||
* Applies to the following boards:
|
||||
*
|
||||
* RAMPS_14_EFB (Hotend, Fan, Bed)
|
||||
* RAMPS_14_EEB (Hotend0, Hotend1, Bed)
|
||||
* RAMPS_14_EFF (Hotend, Fan0, Fan1)
|
||||
* RAMPS_14_EEF (Hotend0, Hotend1, Fan)
|
||||
* RAMPS_14_SF (Spindle, Controller Fan)
|
||||
*
|
||||
* RAMPS_13_EFB (Hotend, Fan, Bed)
|
||||
* RAMPS_13_EEB (Hotend0, Hotend1, Bed)
|
||||
* RAMPS_13_EFF (Hotend, Fan0, Fan1)
|
||||
* RAMPS_13_EEF (Hotend0, Hotend1, Fan)
|
||||
* RAMPS_13_SF (Spindle, Controller Fan)
|
||||
*
|
||||
* Other pins_MYBOARD.h files may override these defaults
|
||||
*
|
||||
* Differences between
|
||||
* RAMPS_13 | RAMPS_14
|
||||
* 7 | 11
|
||||
*/
|
||||
|
||||
#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__)
|
||||
#error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu."
|
||||
#endif
|
||||
|
||||
#ifndef BOARD_NAME
|
||||
#define BOARD_NAME "RAMPS 1.4"
|
||||
#endif
|
||||
|
||||
#define LARGE_FLASH true
|
||||
|
||||
//
|
||||
// Servos
|
||||
//
|
||||
#ifdef IS_RAMPS_13
|
||||
#define SERVO0_PIN 7 // RAMPS_13 // Will conflict with BTN_EN2 on LCD_I2C_VIKI
|
||||
#else
|
||||
#define SERVO0_PIN 11
|
||||
#endif
|
||||
#define SERVO1_PIN 6
|
||||
#define SERVO2_PIN 5
|
||||
#define SERVO3_PIN 4
|
||||
|
||||
//
|
||||
// Limit Switches
|
||||
//
|
||||
#define X_MIN_PIN 3
|
||||
#ifndef X_MAX_PIN
|
||||
#define X_MAX_PIN 2
|
||||
#endif
|
||||
#define Y_MIN_PIN 14
|
||||
#define Y_MAX_PIN 15
|
||||
#define Z_MIN_PIN 18
|
||||
#define Z_MAX_PIN 19
|
||||
|
||||
//
|
||||
// Z Probe (when not Z_MIN_PIN)
|
||||
//
|
||||
#ifndef Z_MIN_PROBE_PIN
|
||||
#define Z_MIN_PROBE_PIN 32
|
||||
#endif
|
||||
|
||||
//
|
||||
// Steppers
|
||||
//
|
||||
#define X_STEP_PIN 54
|
||||
#define X_DIR_PIN 55
|
||||
#define X_ENABLE_PIN 38
|
||||
#define X_CS_PIN 53
|
||||
|
||||
#define Y_STEP_PIN 60
|
||||
#define Y_DIR_PIN 61
|
||||
#define Y_ENABLE_PIN 56
|
||||
#define Y_CS_PIN 49
|
||||
|
||||
#define Z_STEP_PIN 46
|
||||
#define Z_DIR_PIN 48
|
||||
#define Z_ENABLE_PIN 62
|
||||
#define Z_CS_PIN 40
|
||||
|
||||
#define E0_STEP_PIN 26
|
||||
#define E0_DIR_PIN 28
|
||||
#define E0_ENABLE_PIN 24
|
||||
#define E0_CS_PIN 42
|
||||
|
||||
#define E1_STEP_PIN 36
|
||||
#define E1_DIR_PIN 34
|
||||
#define E1_ENABLE_PIN 30
|
||||
#define E1_CS_PIN 44
|
||||
|
||||
//
|
||||
// Temperature Sensors
|
||||
//
|
||||
#define TEMP_0_PIN 13 // Analog Input
|
||||
#define TEMP_1_PIN 15 // Analog Input
|
||||
#define TEMP_BED_PIN 14 // Analog Input
|
||||
|
||||
// SPI for Max6675 or Max31855 Thermocouple
|
||||
#if DISABLED(SDSUPPORT)
|
||||
#define MAX6675_SS 66 // Do not use pin 53 if there is even the remote possibility of using Display/SD card
|
||||
#else
|
||||
#define MAX6675_SS 66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
|
||||
#endif
|
||||
|
||||
//
|
||||
// Augmentation for auto-assigning RAMPS plugs
|
||||
//
|
||||
#if DISABLED(IS_RAMPS_EEB) && DISABLED(IS_RAMPS_EEF) && DISABLED(IS_RAMPS_EFB) && DISABLED(IS_RAMPS_EFF) && DISABLED(IS_RAMPS_SF) && !PIN_EXISTS(MOSFET_D)
|
||||
#if HOTENDS > 1
|
||||
#if TEMP_SENSOR_BED
|
||||
#define IS_RAMPS_EEB
|
||||
#else
|
||||
#define IS_RAMPS_EEF
|
||||
#endif
|
||||
#elif TEMP_SENSOR_BED
|
||||
#define IS_RAMPS_EFB
|
||||
#else
|
||||
#define IS_RAMPS_EFF
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//
|
||||
// Heaters / Fans
|
||||
//
|
||||
#ifndef MOSFET_D_PIN
|
||||
#define MOSFET_D_PIN -1
|
||||
#endif
|
||||
#ifndef RAMPS_D8_PIN
|
||||
#define RAMPS_D8_PIN 8
|
||||
#endif
|
||||
#ifndef RAMPS_D9_PIN
|
||||
#define RAMPS_D9_PIN 9
|
||||
#endif
|
||||
#ifndef RAMPS_D10_PIN
|
||||
#define RAMPS_D10_PIN 10
|
||||
#endif
|
||||
|
||||
#define HEATER_0_PIN RAMPS_D10_PIN
|
||||
|
||||
#if ENABLED(IS_RAMPS_EFB) // Hotend, Fan, Bed
|
||||
#define FAN_PIN RAMPS_D9_PIN
|
||||
#define HEATER_BED_PIN RAMPS_D8_PIN
|
||||
#elif ENABLED(IS_RAMPS_EEF) // Hotend, Hotend, Fan
|
||||
#define HEATER_1_PIN RAMPS_D9_PIN
|
||||
#define FAN_PIN RAMPS_D8_PIN
|
||||
#elif ENABLED(IS_RAMPS_EEB) // Hotend, Hotend, Bed
|
||||
#define HEATER_1_PIN RAMPS_D9_PIN
|
||||
#define HEATER_BED_PIN RAMPS_D8_PIN
|
||||
#elif ENABLED(IS_RAMPS_EFF) // Hotend, Fan, Fan
|
||||
#define FAN_PIN RAMPS_D9_PIN
|
||||
#define FAN1_PIN RAMPS_D8_PIN
|
||||
#elif ENABLED(IS_RAMPS_SF) // Spindle, Fan
|
||||
#define FAN_PIN RAMPS_D8_PIN
|
||||
#else // Non-specific are "EFB" (i.e., "EFBF" or "EFBE")
|
||||
#define FAN_PIN RAMPS_D9_PIN
|
||||
#define HEATER_BED_PIN RAMPS_D8_PIN
|
||||
#if HOTENDS == 1
|
||||
#define FAN1_PIN MOSFET_D_PIN
|
||||
#else
|
||||
#define HEATER_1_PIN MOSFET_D_PIN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef FAN_PIN
|
||||
#define FAN_PIN 4 // IO pin. Buffer needed
|
||||
#endif
|
||||
|
||||
//
|
||||
// Misc. Functions
|
||||
//
|
||||
#define SDSS 53
|
||||
#define LED_PIN 13
|
||||
|
||||
// Use the RAMPS 1.4 Analog input 5 on the AUX2 connector
|
||||
#define FILWIDTH_PIN 5 // Analog Input
|
||||
|
||||
// define digital pin 4 for the filament runout sensor. Use the RAMPS 1.4 digital input 4 on the servos connector
|
||||
#define FIL_RUNOUT_PIN 4
|
||||
|
||||
#define PS_ON_PIN 12
|
||||
|
||||
#if !PIN_EXISTS(CASE_LIGHT) && !defined(SPINDLE_LASER_ENABLE_PIN)
|
||||
#undef CASE_LIGHT_PIN
|
||||
#if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // try to use servo connector first
|
||||
#define CASE_LIGHT_PIN 6 // MUST BE HARDWARE PWM
|
||||
#elif !(ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) \
|
||||
&& (ENABLED(PANEL_ONE) || ENABLED(VIKI2) || ENABLED(miniVIKI) || ENABLED(MINIPANEL) || ENABLED(REPRAPWORLD_KEYPAD))) // try to use AUX 2
|
||||
#define CASE_LIGHT_PIN 44 // MUST BE HARDWARE PWM
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//
|
||||
// LCD / Controller
|
||||
//
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
|
||||
#if ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
|
||||
#define LCD_PINS_RS 49 // CS chip select /SS chip slave select
|
||||
#define LCD_PINS_ENABLE 51 // SID (MOSI)
|
||||
#define LCD_PINS_D4 52 // SCK (CLK) clock
|
||||
#elif ENABLED(NEWPANEL) && ENABLED(PANEL_ONE)
|
||||
#define LCD_PINS_RS 40
|
||||
#define LCD_PINS_ENABLE 42
|
||||
#define LCD_PINS_D4 65
|
||||
#define LCD_PINS_D5 66
|
||||
#define LCD_PINS_D6 44
|
||||
#define LCD_PINS_D7 64
|
||||
#else
|
||||
#define LCD_PINS_RS 16
|
||||
#define LCD_PINS_ENABLE 17
|
||||
#define LCD_PINS_D4 23
|
||||
#define LCD_PINS_D5 25
|
||||
#define LCD_PINS_D6 27
|
||||
#define LCD_PINS_D7 29
|
||||
#if DISABLED(NEWPANEL)
|
||||
#define BEEPER_PIN 33
|
||||
// Buttons are attached to a shift register
|
||||
// Not wired yet
|
||||
//#define SHIFT_CLK 38
|
||||
//#define SHIFT_LD 42
|
||||
//#define SHIFT_OUT 40
|
||||
//#define SHIFT_EN 17
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(NEWPANEL)
|
||||
|
||||
#if ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER)
|
||||
#define BEEPER_PIN 37
|
||||
|
||||
#define BTN_EN1 31
|
||||
#define BTN_EN2 33
|
||||
#define BTN_ENC 35
|
||||
|
||||
#define SD_DETECT_PIN 49
|
||||
#define KILL_PIN 41
|
||||
|
||||
#if ENABLED(BQ_LCD_SMART_CONTROLLER)
|
||||
#define LCD_BACKLIGHT_PIN 39
|
||||
#endif
|
||||
|
||||
#elif ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
|
||||
#define BTN_EN1 64
|
||||
#define BTN_EN2 59
|
||||
#define BTN_ENC 63
|
||||
#define SD_DETECT_PIN 42
|
||||
#elif ENABLED(LCD_I2C_PANELOLU2)
|
||||
#define BTN_EN1 47 // reverse if the encoder turns the wrong way.
|
||||
#define BTN_EN2 43
|
||||
#define BTN_ENC 32
|
||||
#define LCD_SDSS 53
|
||||
#define SD_DETECT_PIN -1
|
||||
#define KILL_PIN 41
|
||||
#elif ENABLED(LCD_I2C_VIKI)
|
||||
#define BTN_EN1 22 // reverse if the encoder turns the wrong way.
|
||||
#define BTN_EN2 7 // http://files.panucatt.com/datasheets/viki_wiring_diagram.pdf
|
||||
// tells about 40/42.
|
||||
// 22/7 are unused on RAMPS_14. 22 is unused and 7 the SERVO0_PIN on RAMPS_13.
|
||||
#define BTN_ENC -1
|
||||
#define LCD_SDSS 53
|
||||
#define SD_DETECT_PIN 49
|
||||
#elif ENABLED(VIKI2) || ENABLED(miniVIKI)
|
||||
#define BEEPER_PIN 33
|
||||
|
||||
// Pins for DOGM SPI LCD Support
|
||||
#define DOGLCD_A0 44
|
||||
#define DOGLCD_CS 45
|
||||
#define LCD_SCREEN_ROT_180
|
||||
|
||||
#define BTN_EN1 22
|
||||
#define BTN_EN2 7
|
||||
#define BTN_ENC 39
|
||||
|
||||
#define SDSS 53
|
||||
#define SD_DETECT_PIN -1 // Pin 49 for display sd interface, 72 for easy adapter board
|
||||
|
||||
#define KILL_PIN 31
|
||||
|
||||
#define STAT_LED_RED_PIN 32
|
||||
#define STAT_LED_BLUE_PIN 35
|
||||
|
||||
#elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
|
||||
#define BTN_EN1 35 // reverse if the encoder turns the wrong way.
|
||||
#define BTN_EN2 37
|
||||
#define BTN_ENC 31
|
||||
#define SD_DETECT_PIN 49
|
||||
#define LCD_SDSS 53
|
||||
#define KILL_PIN 41
|
||||
#define BEEPER_PIN 23
|
||||
#define DOGLCD_CS 29
|
||||
#define DOGLCD_A0 27
|
||||
#define LCD_BACKLIGHT_PIN 33
|
||||
#elif ENABLED(MINIPANEL)
|
||||
#define BEEPER_PIN 42
|
||||
// Pins for DOGM SPI LCD Support
|
||||
#define DOGLCD_A0 44
|
||||
#define DOGLCD_CS 66
|
||||
#define LCD_BACKLIGHT_PIN 65 // backlight LED on A11/D65
|
||||
#define SDSS 53
|
||||
|
||||
#define KILL_PIN 64
|
||||
// GLCD features
|
||||
//#define LCD_CONTRAST 190
|
||||
// Uncomment screen orientation
|
||||
//#define LCD_SCREEN_ROT_90
|
||||
//#define LCD_SCREEN_ROT_180
|
||||
//#define LCD_SCREEN_ROT_270
|
||||
// The encoder and click button
|
||||
#define BTN_EN1 40
|
||||
#define BTN_EN2 63
|
||||
#define BTN_ENC 59
|
||||
// not connected to a pin
|
||||
#define SD_DETECT_PIN 49
|
||||
|
||||
#else
|
||||
|
||||
// Beeper on AUX-4
|
||||
#define BEEPER_PIN 33
|
||||
|
||||
// buttons are directly attached using AUX-2
|
||||
#if ENABLED(REPRAPWORLD_KEYPAD)
|
||||
#define BTN_EN1 64 // encoder
|
||||
#define BTN_EN2 59 // encoder
|
||||
#define BTN_ENC 63 // enter button
|
||||
#define SHIFT_OUT 40 // shift register
|
||||
#define SHIFT_CLK 44 // shift register
|
||||
#define SHIFT_LD 42 // shift register
|
||||
#elif ENABLED(PANEL_ONE)
|
||||
#define BTN_EN1 59 // AUX2 PIN 3
|
||||
#define BTN_EN2 63 // AUX2 PIN 4
|
||||
#define BTN_ENC 49 // AUX3 PIN 7
|
||||
#else
|
||||
#define BTN_EN1 37
|
||||
#define BTN_EN2 35
|
||||
#define BTN_ENC 31 // the click
|
||||
#endif
|
||||
|
||||
#if ENABLED(G3D_PANEL)
|
||||
#define SD_DETECT_PIN 49
|
||||
#define KILL_PIN 41
|
||||
#else
|
||||
//#define SD_DETECT_PIN -1 // Ramps doesn't use this
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif // NEWPANEL
|
||||
|
||||
#endif // ULTRA_LCD
|
||||
|
||||
//
|
||||
// M3/M4/M5 - Spindle/Laser Control
|
||||
//
|
||||
#if ENABLED(SPINDLE_LASER_ENABLE) && !PIN_EXISTS(SPINDLE_LASER_ENABLE)
|
||||
#if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // try to use servo connector first
|
||||
#define SPINDLE_LASER_ENABLE_PIN 4 // Pin should have a pullup/pulldown!
|
||||
#define SPINDLE_LASER_PWM_PIN 6 // MUST BE HARDWARE PWM
|
||||
#define SPINDLE_DIR_PIN 5
|
||||
#elif !(ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) \
|
||||
&& (ENABLED(PANEL_ONE) || ENABLED(VIKI2) || ENABLED(miniVIKI) || ENABLED(MINIPANEL) || ENABLED(REPRAPWORLD_KEYPAD))) // try to use AUX 2
|
||||
#define SPINDLE_LASER_ENABLE_PIN 40 // Pin should have a pullup/pulldown!
|
||||
#define SPINDLE_LASER_PWM_PIN 44 // MUST BE HARDWARE PWM
|
||||
#define SPINDLE_DIR_PIN 65
|
||||
#endif
|
||||
#endif
|
||||
@@ -1,155 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* SAV MkI pin assignments (AT90USB1286)
|
||||
* Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE!
|
||||
* http://www.pjrc.com/teensy/teensyduino.html
|
||||
* RepRap Clone Wars project board.
|
||||
*/
|
||||
|
||||
#ifndef __AVR_AT90USB1286__
|
||||
#error "Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu."
|
||||
#endif
|
||||
|
||||
#define DEFAULT_MACHINE_NAME "SAV MkI"
|
||||
#define DEFAULT_SOURCE_CODE_URL "https://github.com/fmalpartida/Marlin/tree/SAV-MkI-config"
|
||||
#define BOARD_NAME "SAV MkI"
|
||||
|
||||
#define USBCON 1286 // Disable MarlinSerial etc.
|
||||
#define LARGE_FLASH true
|
||||
|
||||
//
|
||||
// Servos
|
||||
//
|
||||
#define SERVO0_PIN 41 // In teensy's pin definition for pinMode (in servo.cpp)
|
||||
|
||||
//
|
||||
// Limit Switches
|
||||
//
|
||||
#define X_STOP_PIN 13
|
||||
#define Y_STOP_PIN 14
|
||||
//#define Z_STOP_PIN 15
|
||||
#define Z_STOP_PIN 36 // For inductive sensor.
|
||||
|
||||
//
|
||||
// Steppers
|
||||
//
|
||||
#define X_STEP_PIN 0
|
||||
#define X_DIR_PIN 1
|
||||
#define X_ENABLE_PIN 39
|
||||
|
||||
#define Y_STEP_PIN 2
|
||||
#define Y_DIR_PIN 3
|
||||
#define Y_ENABLE_PIN 38
|
||||
|
||||
#define Z_STEP_PIN 4
|
||||
#define Z_DIR_PIN 5
|
||||
#define Z_ENABLE_PIN 23
|
||||
|
||||
#define E0_STEP_PIN 6
|
||||
#define E0_DIR_PIN 7
|
||||
#define E0_ENABLE_PIN 19
|
||||
|
||||
//
|
||||
// Temperature Sensors
|
||||
//
|
||||
#define TEMP_0_PIN 7 // Analog Input (Extruder)
|
||||
#define TEMP_BED_PIN 6 // Analog Input (Bed)
|
||||
|
||||
//
|
||||
// Heaters / Fans
|
||||
//
|
||||
#define HEATER_0_PIN 21 // Extruder
|
||||
#define HEATER_BED_PIN 20 // Bed
|
||||
|
||||
#define FAN_PIN 16 // Fan -- from Teensyduino environment.
|
||||
// For the fan and Teensyduino uses a different pin mapping.
|
||||
|
||||
//
|
||||
// Misc. Functions
|
||||
//
|
||||
#define SDSS 20 // PB0 - 8 in marlin env.
|
||||
|
||||
// Extension header pin mapping
|
||||
// ----------------------------
|
||||
// SCL (I2C)-D0 A0 (An), IO
|
||||
// SDA (I2C)-D1 A1 (An), IO
|
||||
// RX1-D2 A2 (An), IO
|
||||
// TX1-D3 A3 (An), IO
|
||||
// PWM-D24 A4 (An), IO
|
||||
// 5V GND
|
||||
// 12V GND
|
||||
#define EXT_AUX_SCL_D0 0 // 0 (teensy), 24 (marlin)
|
||||
#define EXT_AUX_SDA_D1 1 // 1 (teensy), 25 (marlin)
|
||||
#define EXT_AUX_RX1_D2 26 // 2 (teensy), 26 (marlin)
|
||||
#define EXT_AUX_TX1_D3 27 // 3 (teensy), 27 (marlin)
|
||||
#define EXT_AUX_PWM_D24 12 // 24 (teensy), 12 (marlin)
|
||||
#define EXT_AUX_A0 0 // Analog
|
||||
#define EXT_AUX_A0_IO 40 // Digital IO, 38 (teensy), 40 (marlin)
|
||||
#define EXT_AUX_A1 1 // Analog
|
||||
#define EXT_AUX_A1_IO 41 // Digital IO, 39 (teensy), 41 (marlin)
|
||||
#define EXT_AUX_A2 2 // Analog
|
||||
#define EXT_AUX_A2_IO 42 // Digital IO, 40 (teensy), 42 (marlin)
|
||||
#define EXT_AUX_A3 3 // Analog
|
||||
#define EXT_AUX_A3_IO 43 // Digital IO, 41 (teensy), 43 (marlin)
|
||||
#define EXT_AUX_A4 4 // Analog
|
||||
#define EXT_AUX_A4_IO 44 // Digital IO, 42 (teensy), 44 (marlin)
|
||||
|
||||
//
|
||||
// LCD / Controller
|
||||
//
|
||||
#define BEEPER_PIN -1
|
||||
#define LCD_PINS_RS -1
|
||||
#define LCD_PINS_ENABLE -1
|
||||
#define LCD_PINS_D4 -1
|
||||
#define LCD_PINS_D5 -1
|
||||
#define LCD_PINS_D6 -1
|
||||
#define LCD_PINS_D7 -1
|
||||
|
||||
#if ENABLED(SAV_3DLCD)
|
||||
// For LCD SHIFT register LCD
|
||||
#define SR_DATA_PIN EXT_AUX_SDA_D1
|
||||
#define SR_CLK_PIN EXT_AUX_SCL_D0
|
||||
#endif // SAV_3DLCD
|
||||
|
||||
#if ENABLED(SAV_3DLCD) || ENABLED(SAV_3DGLCD)
|
||||
|
||||
#define BTN_EN1 EXT_AUX_A1_IO
|
||||
#define BTN_EN2 EXT_AUX_A0_IO
|
||||
#define BTN_ENC EXT_AUX_PWM_D24
|
||||
|
||||
#define KILL_PIN EXT_AUX_A2_IO
|
||||
#define HOME_PIN EXT_AUX_A4_IO
|
||||
|
||||
#else // Try to use the expansion header for spindle control
|
||||
|
||||
//
|
||||
// M3/M4/M5 - Spindle/Laser Control
|
||||
//
|
||||
#define SPINDLE_LASER_PWM_PIN 24 // 12 AT90USB… pin #
|
||||
#define SPINDLE_LASER_ENABLE_PIN 39 // Pin should have a pullup! 41 AT90USB… pin #
|
||||
#define SPINDLE_DIR_PIN 40 // 42 AT90USB… pin #
|
||||
|
||||
#define CASE_LIGHT_PIN 0 // 24 AT90USB… pin #
|
||||
|
||||
#endif
|
||||
@@ -1,149 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Teensy++ 2.0 Breadboard pin assignments (AT90USB1286)
|
||||
* Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE!
|
||||
* http://www.pjrc.com/teensy/teensyduino.html
|
||||
* See http://reprap.org/wiki/Printrboard for more info
|
||||
*
|
||||
* CLI build: DEFINES=AT90USBxx_TEENSYPP_ASSIGNMENTS HARDWARE_MOTHERBOARD=84 make
|
||||
*
|
||||
* DaveX plan for Teensylu/printrboard-type pinouts for a TeensyBreadboard:
|
||||
* (ref teensylu & sprinter)
|
||||
*
|
||||
* USB
|
||||
* GND GND |-----#####-----| +5V ATX +5SB
|
||||
* ATX PS_ON PWM 27 |b7 ##### b6| 26 PWM* Stepper Enable
|
||||
* PWM 0 |d0 b5| 25 PWM*
|
||||
* PWM 1 |d1 b4| 24 PWM
|
||||
* X_MIN 2 |d2 b3| 23 MISO_PIN
|
||||
* Y_MIN 3 |d3 b2| 22 MOSI_PIN
|
||||
* Z_MIN 4 |d4 * * b1| 21 SCK_PIN
|
||||
* 5 |d5 e e b0| 20 SDSS
|
||||
* LED 6 |d6 5 4 e7| 19
|
||||
* 7 |d7 e6| 18
|
||||
* LCD RS 8 |e0 | GND
|
||||
* LCD EN 9 |e1 a4 a0 R| AREF
|
||||
* LCD D4 10 |c0 a5 a1 f0| 38 A0 ENC_1
|
||||
* LCD D5 11 |c1 a6 a2 f1| 39 A1 ENC_2
|
||||
* LCD D6 12 |c2 a7 a3 f2| 40 A2 ENC_CLK
|
||||
* LCD D6 13 |c3 f3| 41 A3
|
||||
* Bed Heat PWM 14 |c4 V G R f4| 42 A4
|
||||
* Extruder Heat PWM 15 |c5 c n S f5| 43 A5
|
||||
* Fan PWM 16 |c6 c d T f6| 44 A6 Bed TC
|
||||
* 17 |c7 * * * f7| 45 A7 Extruder TC * 4.7k * +5
|
||||
* -----------------
|
||||
*
|
||||
* Interior E4: 36, INT4
|
||||
* Interior E5: 37, INT5
|
||||
* Interior PA0-7: 28-35 -- Printrboard and Teensylu use these pins for step & direction:
|
||||
* T++ PA Signal Marlin
|
||||
*
|
||||
* Z STEP 32 a4 a0 28 X STEP
|
||||
* Z DIR 33 a5 a1 29 X DIR
|
||||
* E STEP 34 a6 a2 30 Y STEP
|
||||
* E DIR 35 a7 a3 31 Y DIR
|
||||
*/
|
||||
|
||||
#ifndef __AVR_AT90USB1286__
|
||||
#error "Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu."
|
||||
#endif
|
||||
|
||||
#if DISABLED(AT90USBxx_TEENSYPP_ASSIGNMENTS) // use Teensyduino Teensy++2.0 pin assignments instead of Marlin alphabetical.
|
||||
#error "Uncomment #define AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h for this config"
|
||||
// (or build from command line)
|
||||
#endif
|
||||
|
||||
#define BOARD_NAME "Teensy++2.0"
|
||||
|
||||
#define USBCON 1286 // Disable MarlinSerial etc.
|
||||
#define LARGE_FLASH true
|
||||
|
||||
//
|
||||
// Limit Switches
|
||||
//
|
||||
#define X_STOP_PIN 2
|
||||
#define Y_STOP_PIN 3
|
||||
#define Z_STOP_PIN 4
|
||||
|
||||
//
|
||||
// Steppers
|
||||
//
|
||||
#define X_STEP_PIN 28 // 0 Marlin
|
||||
#define X_DIR_PIN 29 // 1 Marlin
|
||||
#define X_ENABLE_PIN 26
|
||||
|
||||
#define Y_STEP_PIN 30 // 2 Marlin
|
||||
#define Y_DIR_PIN 31 // 3
|
||||
#define Y_ENABLE_PIN 26 // Shared w/x
|
||||
|
||||
#define Z_STEP_PIN 32 // 4
|
||||
#define Z_DIR_PIN 33 // 5
|
||||
#define Z_ENABLE_PIN 26 // Shared w/x
|
||||
|
||||
#define E0_STEP_PIN 34 // 6
|
||||
#define E0_DIR_PIN 35 // 7
|
||||
#define E0_ENABLE_PIN 26 // Shared w/x
|
||||
|
||||
//
|
||||
// Temperature Sensors
|
||||
//
|
||||
#define TEMP_0_PIN 7 // Analog Input (Extruder)
|
||||
#define TEMP_BED_PIN 6 // Analog Input (Bed)
|
||||
|
||||
//
|
||||
// Heaters / Fans
|
||||
//
|
||||
#define HEATER_0_PIN 15 // 21 // Extruder
|
||||
#define HEATER_BED_PIN 14 // 20 // Bed
|
||||
#define FAN_PIN 16 // 22 // Fan
|
||||
|
||||
//
|
||||
// Misc. Functions
|
||||
//
|
||||
#define SDSS 20 // 8
|
||||
#define LED_PIN 6
|
||||
#define PS_ON_PIN 27
|
||||
#define CASE_LIGHT_PIN 1 // MUST BE HARDWARE PWM
|
||||
|
||||
//
|
||||
// LCD / Controller
|
||||
//
|
||||
#if ENABLED(ULTIPANEL)
|
||||
#define LCD_PINS_RS 8
|
||||
#define LCD_PINS_ENABLE 9
|
||||
#define LCD_PINS_D4 10
|
||||
#define LCD_PINS_D5 11
|
||||
#define LCD_PINS_D6 12
|
||||
#define LCD_PINS_D7 13
|
||||
#define BTN_EN1 38
|
||||
#define BTN_EN2 39
|
||||
#define BTN_ENC 40
|
||||
#endif
|
||||
|
||||
//
|
||||
// M3/M4/M5 - Spindle/Laser Control
|
||||
//
|
||||
#define SPINDLE_LASER_ENABLE_PIN 5 // Pin should have a pullup!
|
||||
#define SPINDLE_LASER_PWM_PIN 0 // MUST BE HARDWARE PWM
|
||||
#define SPINDLE_DIR_PIN 7
|
||||
@@ -1,178 +0,0 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* rev B 30 DEC 2016
|
||||
*
|
||||
* The original version of this file did NOT result in a useful program because:
|
||||
* 1. The pin numbers assumed that the "#define AT90USBxx_TEENSYPP_ASSIGNMENTS" line
|
||||
* in FASTIO.h was commented out. There wasn't an Arduino IDE 1.6.x extension/package
|
||||
* that supported this pin map so the latest Marlin wouldn't compile.
|
||||
* 2. The silkscreen for the four end stops don't agree with the schematic. Activating
|
||||
* the X endstop would tell the software that the Y endstop just went active.
|
||||
* 3. The thermistor inputs also had heater names assigned to them. The result was
|
||||
* thermistor inputs that were set to digital outputs.
|
||||
*
|
||||
* Rev B corrects the above problems by:
|
||||
* 1. The "Marlin_AT90USB" extension/package was developed. This extension enables the
|
||||
* latest Marlin software to compile using Arduino IDE 1.6.x and 1.80.
|
||||
* 2. The endstop pin numbers in this file were changed to match the silkscreen. This
|
||||
* makes it a little confusing when trying to correlate the schematic with the pin
|
||||
* numbers used in this file.
|
||||
* 3. The offending heater names were deleted.
|
||||
*
|
||||
* To create a useable image for Teensylu do the following:
|
||||
* a) Install the Marlin_AT90USB extension with either of the following methods:
|
||||
* Automatic - paste this URL into preferences and then use Boards manager
|
||||
* https://rawgit.com/Bob-the-Kuhn/Marlin_AT90USB/master/package_MARLIN_AT90USB_index.json
|
||||
* Manual:
|
||||
* 1. Copy the following URL into Go to "https://github.com/Bob-the-Kuhn/Marlin_AT90USB",
|
||||
* click on the "Clone or Download" button and then click on "Download ZIP" button.
|
||||
* 2. Unzip the file, find the "Marlin_AT90USB" directory and then copy it to the
|
||||
* hardware directory in Arduino. The Arduino hardware directory will probably be
|
||||
* located in a path similar to this: C:\Program Files (x86)\Arduino\hardware
|
||||
* b) Connect the USBtinyISP to the board.
|
||||
* c) In the Arduino IDE select the "AT90USB1286_STANDARD" board in the of the "Marlin_AT90USB"
|
||||
* section and select the "USBtinyISP" programmer.
|
||||
* d) In the Arduino IDE click on "burn bootloader". Don't worry about the "verify
|
||||
* failed at 1F000" error message.
|
||||
* e) The USBtinyISP programmer is no longer needed. Remove it.
|
||||
* f) In FASTIO.h comment out the "#define AT90USBxx_TEENSYPP_ASSIGNMENTS" line.
|
||||
* g) To upload a sketch do the following:
|
||||
* 1. remove the jumper
|
||||
* 2. press reset
|
||||
* 3. click on the "upload" button in the Arduino IDE
|
||||
* 4. wait until the upload finishes (less than a minute)
|
||||
* 5. put the jumper back on
|
||||
* 6. press the reset button
|
||||
*
|
||||
*
|
||||
* NOTE - the "Marlin_AT90USB" pin maps make PWM0A available rather than the usual PWM1C.
|
||||
* These PWMs share the same physical pin. Marlin uses TIMER1 to generate
|
||||
* interrupts and sets it up such that PWM1A, PWM1B & PWM1C can't be used.
|
||||
*/
|
||||
|
||||
/**
|
||||
* SILKSCREEN ERROR
|
||||
*
|
||||
* The silkscreen for the endstops do NOT match the schematic. The silkscreen SHOULD
|
||||
* read (from left to right) X-STOP, Y-STOP, Z-STOP & E-STOP. The silkscreen actually
|
||||
* reads E-STOP, X-STOP, Y-STOP & Z-STOP.
|
||||
*
|
||||
* The pin assignments in this file match the silkscreen.
|
||||
*/
|
||||
|
||||
|
||||
#if !defined(__AVR_AT90USB1286__) && !defined(__AVR_AT90USB1286P__)
|
||||
#error "Oops! Make sure you have 'AT90USB1286_STANDARD' selected from the 'Tools -> Boards' menu."
|
||||
#endif
|
||||
|
||||
#if ENABLED(AT90USBxx_TEENSYPP_ASSIGNMENTS)
|
||||
#error "please disable (comment out) the AT90USBxx_TEENSYPP_ASSIGNMENTS flag in FASTIO.h "
|
||||
#endif
|
||||
|
||||
#define BOARD_NAME "Teensylu"
|
||||
|
||||
#define USBCON 1286 // Disable MarlinSerial etc.
|
||||
#define LARGE_FLASH true
|
||||
|
||||
|
||||
//
|
||||
// Limit Switche definitions that match the SCHEMATIC
|
||||
//
|
||||
//#define X_STOP_PIN 13
|
||||
//#define Y_STOP_PIN 14
|
||||
//#define Z_STOP_PIN 15
|
||||
//#define E_STOP_PIN 36
|
||||
|
||||
|
||||
//
|
||||
// Limit Switch definitions that match the SILKSCREEN
|
||||
//
|
||||
#define X_STOP_PIN 14
|
||||
#define Y_STOP_PIN 15
|
||||
#define Z_STOP_PIN 36
|
||||
//#define E_STOP_PIN 13
|
||||
|
||||
//
|
||||
// Steppers
|
||||
//
|
||||
#define X_STEP_PIN 0
|
||||
#define X_DIR_PIN 1
|
||||
#define X_ENABLE_PIN 39
|
||||
|
||||
#define Y_STEP_PIN 2
|
||||
#define Y_DIR_PIN 3
|
||||
#define Y_ENABLE_PIN 38
|
||||
|
||||
#define Z_STEP_PIN 4
|
||||
#define Z_DIR_PIN 5
|
||||
#define Z_ENABLE_PIN 23
|
||||
|
||||
#define E0_STEP_PIN 6
|
||||
#define E0_DIR_PIN 7
|
||||
#define E0_ENABLE_PIN 19
|
||||
|
||||
|
||||
// Temperature Sensors
|
||||
|
||||
#define TEMP_0_PIN 7 // Analog Input (Extruder)
|
||||
#define TEMP_BED_PIN 6 // Analog Input (Bed)
|
||||
|
||||
//
|
||||
// Heaters / Fans
|
||||
//
|
||||
#define HEATER_0_PIN 21 // Extruder
|
||||
#define HEATER_BED_PIN 20
|
||||
|
||||
#define FAN_PIN 22
|
||||
|
||||
//
|
||||
// Misc. Functions
|
||||
//
|
||||
#define SDSS 8
|
||||
#define CASE_LIGHT_PIN 24
|
||||
|
||||
//
|
||||
// LCD / Controller
|
||||
//
|
||||
#if ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL)
|
||||
|
||||
#define BEEPER_PIN -1
|
||||
|
||||
#if ENABLED(LCD_I2C_PANELOLU2)
|
||||
#define BTN_EN1 27
|
||||
#define BTN_EN2 26
|
||||
#define BTN_ENC 43
|
||||
#define SDSS 40 // use SD card on Panelolu2
|
||||
#endif // LCD_I2C_PANELOLU2
|
||||
|
||||
#define SD_DETECT_PIN -1
|
||||
|
||||
#endif // ULTRA_LCD && NEWPANEL
|
||||
|
||||
//
|
||||
// M3/M4/M5 - Spindle/Laser Control
|
||||
//
|
||||
#define SPINDLE_LASER_PWM_PIN 12 // MUST BE HARDWARE PWM
|
||||
#define SPINDLE_LASER_ENABLE_PIN 41 // Pin should have a pullup!
|
||||
#define SPINDLE_DIR_PIN 42
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user