fastio_644.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. /**
  2. * Marlin 3D Printer Firmware
  3. * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
  4. *
  5. * Based on Sprinter and grbl.
  6. * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
  7. *
  8. * This program is free software: you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License as published by
  10. * the Free Software Foundation, either version 3 of the License, or
  11. * (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  20. *
  21. */
  22. /**
  23. * Pin mapping for the 644, 644p, 644pa, and 1284p
  24. *
  25. * Logical Pin: 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
  26. * Port: B0 B1 B2 B3 B4 B5 B6 B7 D0 D1 D2 D3 D4 D5 D6 D7 C0 C1 C2 C3 C4 C5 C6 C7 A7 A6 A5 A4 A3 A2 A1 A0
  27. */
  28. /** ATMega644
  29. *
  30. * +---\/---+
  31. * (D 0) PB0 1| |40 PA0 (AI 0 / D31)
  32. * (D 1) PB1 2| |39 PA1 (AI 1 / D30)
  33. * INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29)
  34. * PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28)
  35. * PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27)
  36. * MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26)
  37. * MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25)
  38. * SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24)
  39. * RST 9| |32 AREF
  40. * VCC 10| |31 GND
  41. * GND 11| |30 AVCC
  42. * XTAL2 12| |29 PC7 (D 23)
  43. * XTAL1 13| |28 PC6 (D 22)
  44. * RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI
  45. * TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO
  46. * INT0 RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS
  47. * INT1 TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK
  48. * PWM (D 12) PD4 18| |23 PC1 (D 17) SDA
  49. * PWM (D 13) PD5 19| |22 PC0 (D 16) SCL
  50. * PWM (D 14) PD6 20| |21 PD7 (D 15) PWM
  51. * +--------+
  52. */
  53. #ifndef _FASTIO_644
  54. #define _FASTIO_644
  55. #include "fastio.h"
  56. #define DEBUG_LED DIO0
  57. // UART
  58. #define RXD DIO8
  59. #define TXD DIO9
  60. #define RXD0 DIO8
  61. #define TXD0 DIO9
  62. #define RXD1 DIO10
  63. #define TXD1 DIO11
  64. // SPI
  65. #define SCK DIO7
  66. #define MISO DIO6
  67. #define MOSI DIO5
  68. #define SS DIO4
  69. // TWI (I2C)
  70. #define SCL DIO16
  71. #define SDA DIO17
  72. // Timers and PWM
  73. #define OC0A DIO3
  74. #define OC0B DIO4
  75. #define OC1A DIO13
  76. #define OC1B DIO12
  77. #define OC2A DIO15
  78. #define OC2B DIO14
  79. // Digital I/O
  80. #define DIO0_PIN PINB0
  81. #define DIO0_RPORT PINB
  82. #define DIO0_WPORT PORTB
  83. #define DIO0_DDR DDRB
  84. #define DIO0_PWM NULL
  85. #define DIO1_PIN PINB1
  86. #define DIO1_RPORT PINB
  87. #define DIO1_WPORT PORTB
  88. #define DIO1_DDR DDRB
  89. #define DIO1_PWM NULL
  90. #define DIO2_PIN PINB2
  91. #define DIO2_RPORT PINB
  92. #define DIO2_WPORT PORTB
  93. #define DIO2_DDR DDRB
  94. #define DIO2_PWM NULL
  95. #define DIO3_PIN PINB3
  96. #define DIO3_RPORT PINB
  97. #define DIO3_WPORT PORTB
  98. #define DIO3_DDR DDRB
  99. #define DIO3_PWM OCR0A
  100. #define DIO4_PIN PINB4
  101. #define DIO4_RPORT PINB
  102. #define DIO4_WPORT PORTB
  103. #define DIO4_DDR DDRB
  104. #define DIO4_PWM OCR0B
  105. #define DIO5_PIN PINB5
  106. #define DIO5_RPORT PINB
  107. #define DIO5_WPORT PORTB
  108. #define DIO5_DDR DDRB
  109. #define DIO5_PWM NULL
  110. #define DIO6_PIN PINB6
  111. #define DIO6_RPORT PINB
  112. #define DIO6_WPORT PORTB
  113. #define DIO6_DDR DDRB
  114. #define DIO6_PWM NULL
  115. #define DIO7_PIN PINB7
  116. #define DIO7_RPORT PINB
  117. #define DIO7_WPORT PORTB
  118. #define DIO7_DDR DDRB
  119. #define DIO7_PWM NULL
  120. #define DIO8_PIN PIND0
  121. #define DIO8_RPORT PIND
  122. #define DIO8_WPORT PORTD
  123. #define DIO8_DDR DDRD
  124. #define DIO8_PWM NULL
  125. #define DIO9_PIN PIND1
  126. #define DIO9_RPORT PIND
  127. #define DIO9_WPORT PORTD
  128. #define DIO9_DDR DDRD
  129. #define DIO9_PWM NULL
  130. #define DIO10_PIN PIND2
  131. #define DIO10_RPORT PIND
  132. #define DIO10_WPORT PORTD
  133. #define DIO10_DDR DDRD
  134. #define DIO10_PWM NULL
  135. #define DIO11_PIN PIND3
  136. #define DIO11_RPORT PIND
  137. #define DIO11_WPORT PORTD
  138. #define DIO11_DDR DDRD
  139. #define DIO11_PWM NULL
  140. #define DIO12_PIN PIND4
  141. #define DIO12_RPORT PIND
  142. #define DIO12_WPORT PORTD
  143. #define DIO12_DDR DDRD
  144. #define DIO12_PWM OCR1B
  145. #define DIO13_PIN PIND5
  146. #define DIO13_RPORT PIND
  147. #define DIO13_WPORT PORTD
  148. #define DIO13_DDR DDRD
  149. #define DIO13_PWM OCR1A
  150. #define DIO14_PIN PIND6
  151. #define DIO14_RPORT PIND
  152. #define DIO14_WPORT PORTD
  153. #define DIO14_DDR DDRD
  154. #define DIO14_PWM OCR2B
  155. #define DIO15_PIN PIND7
  156. #define DIO15_RPORT PIND
  157. #define DIO15_WPORT PORTD
  158. #define DIO15_DDR DDRD
  159. #define DIO15_PWM OCR2A
  160. #define DIO16_PIN PINC0
  161. #define DIO16_RPORT PINC
  162. #define DIO16_WPORT PORTC
  163. #define DIO16_DDR DDRC
  164. #define DIO16_PWM NULL
  165. #define DIO17_PIN PINC1
  166. #define DIO17_RPORT PINC
  167. #define DIO17_WPORT PORTC
  168. #define DIO17_DDR DDRC
  169. #define DIO17_PWM NULL
  170. #define DIO18_PIN PINC2
  171. #define DIO18_RPORT PINC
  172. #define DIO18_WPORT PORTC
  173. #define DIO18_DDR DDRC
  174. #define DIO18_PWM NULL
  175. #define DIO19_PIN PINC3
  176. #define DIO19_RPORT PINC
  177. #define DIO19_WPORT PORTC
  178. #define DIO19_DDR DDRC
  179. #define DIO19_PWM NULL
  180. #define DIO20_PIN PINC4
  181. #define DIO20_RPORT PINC
  182. #define DIO20_WPORT PORTC
  183. #define DIO20_DDR DDRC
  184. #define DIO20_PWM NULL
  185. #define DIO21_PIN PINC5
  186. #define DIO21_RPORT PINC
  187. #define DIO21_WPORT PORTC
  188. #define DIO21_DDR DDRC
  189. #define DIO21_PWM NULL
  190. #define DIO22_PIN PINC6
  191. #define DIO22_RPORT PINC
  192. #define DIO22_WPORT PORTC
  193. #define DIO22_DDR DDRC
  194. #define DIO22_PWM NULL
  195. #define DIO23_PIN PINC7
  196. #define DIO23_RPORT PINC
  197. #define DIO23_WPORT PORTC
  198. #define DIO23_DDR DDRC
  199. #define DIO23_PWM NULL
  200. #define DIO24_PIN PINA7
  201. #define DIO24_RPORT PINA
  202. #define DIO24_WPORT PORTA
  203. #define DIO24_DDR DDRA
  204. #define DIO24_PWM NULL
  205. #define DIO25_PIN PINA6
  206. #define DIO25_RPORT PINA
  207. #define DIO25_WPORT PORTA
  208. #define DIO25_DDR DDRA
  209. #define DIO25_PWM NULL
  210. #define DIO26_PIN PINA5
  211. #define DIO26_RPORT PINA
  212. #define DIO26_WPORT PORTA
  213. #define DIO26_DDR DDRA
  214. #define DIO26_PWM NULL
  215. #define DIO27_PIN PINA4
  216. #define DIO27_RPORT PINA
  217. #define DIO27_WPORT PORTA
  218. #define DIO27_DDR DDRA
  219. #define DIO27_PWM NULL
  220. #define DIO28_PIN PINA3
  221. #define DIO28_RPORT PINA
  222. #define DIO28_WPORT PORTA
  223. #define DIO28_DDR DDRA
  224. #define DIO28_PWM NULL
  225. #define DIO29_PIN PINA2
  226. #define DIO29_RPORT PINA
  227. #define DIO29_WPORT PORTA
  228. #define DIO29_DDR DDRA
  229. #define DIO29_PWM NULL
  230. #define DIO30_PIN PINA1
  231. #define DIO30_RPORT PINA
  232. #define DIO30_WPORT PORTA
  233. #define DIO30_DDR DDRA
  234. #define DIO30_PWM NULL
  235. #define DIO31_PIN PINA0
  236. #define DIO31_RPORT PINA
  237. #define DIO31_WPORT PORTA
  238. #define DIO31_DDR DDRA
  239. #define DIO31_PWM NULL
  240. #define AIO0_PIN PINA0
  241. #define AIO0_RPORT PINA
  242. #define AIO0_WPORT PORTA
  243. #define AIO0_DDR DDRA
  244. #define AIO0_PWM NULL
  245. #define AIO1_PIN PINA1
  246. #define AIO1_RPORT PINA
  247. #define AIO1_WPORT PORTA
  248. #define AIO1_DDR DDRA
  249. #define AIO1_PWM NULL
  250. #define AIO2_PIN PINA2
  251. #define AIO2_RPORT PINA
  252. #define AIO2_WPORT PORTA
  253. #define AIO2_DDR DDRA
  254. #define AIO2_PWM NULL
  255. #define AIO3_PIN PINA3
  256. #define AIO3_RPORT PINA
  257. #define AIO3_WPORT PORTA
  258. #define AIO3_DDR DDRA
  259. #define AIO3_PWM NULL
  260. #define AIO4_PIN PINA4
  261. #define AIO4_RPORT PINA
  262. #define AIO4_WPORT PORTA
  263. #define AIO4_DDR DDRA
  264. #define AIO4_PWM NULL
  265. #define AIO5_PIN PINA5
  266. #define AIO5_RPORT PINA
  267. #define AIO5_WPORT PORTA
  268. #define AIO5_DDR DDRA
  269. #define AIO5_PWM NULL
  270. #define AIO6_PIN PINA6
  271. #define AIO6_RPORT PINA
  272. #define AIO6_WPORT PORTA
  273. #define AIO6_DDR DDRA
  274. #define AIO6_PWM NULL
  275. #define AIO7_PIN PINA7
  276. #define AIO7_RPORT PINA
  277. #define AIO7_WPORT PORTA
  278. #define AIO7_DDR DDRA
  279. #define AIO7_PWM NULL
  280. #undef PA0
  281. #define PA0_PIN PINA0
  282. #define PA0_RPORT PINA
  283. #define PA0_WPORT PORTA
  284. #define PA0_DDR DDRA
  285. #define PA0_PWM NULL
  286. #undef PA1
  287. #define PA1_PIN PINA1
  288. #define PA1_RPORT PINA
  289. #define PA1_WPORT PORTA
  290. #define PA1_DDR DDRA
  291. #define PA1_PWM NULL
  292. #undef PA2
  293. #define PA2_PIN PINA2
  294. #define PA2_RPORT PINA
  295. #define PA2_WPORT PORTA
  296. #define PA2_DDR DDRA
  297. #define PA2_PWM NULL
  298. #undef PA3
  299. #define PA3_PIN PINA3
  300. #define PA3_RPORT PINA
  301. #define PA3_WPORT PORTA
  302. #define PA3_DDR DDRA
  303. #define PA3_PWM NULL
  304. #undef PA4
  305. #define PA4_PIN PINA4
  306. #define PA4_RPORT PINA
  307. #define PA4_WPORT PORTA
  308. #define PA4_DDR DDRA
  309. #define PA4_PWM NULL
  310. #undef PA5
  311. #define PA5_PIN PINA5
  312. #define PA5_RPORT PINA
  313. #define PA5_WPORT PORTA
  314. #define PA5_DDR DDRA
  315. #define PA5_PWM NULL
  316. #undef PA6
  317. #define PA6_PIN PINA6
  318. #define PA6_RPORT PINA
  319. #define PA6_WPORT PORTA
  320. #define PA6_DDR DDRA
  321. #define PA6_PWM NULL
  322. #undef PA7
  323. #define PA7_PIN PINA7
  324. #define PA7_RPORT PINA
  325. #define PA7_WPORT PORTA
  326. #define PA7_DDR DDRA
  327. #define PA7_PWM NULL
  328. #undef PB0
  329. #define PB0_PIN PINB0
  330. #define PB0_RPORT PINB
  331. #define PB0_WPORT PORTB
  332. #define PB0_DDR DDRB
  333. #define PB0_PWM NULL
  334. #undef PB1
  335. #define PB1_PIN PINB1
  336. #define PB1_RPORT PINB
  337. #define PB1_WPORT PORTB
  338. #define PB1_DDR DDRB
  339. #define PB1_PWM NULL
  340. #undef PB2
  341. #define PB2_PIN PINB2
  342. #define PB2_RPORT PINB
  343. #define PB2_WPORT PORTB
  344. #define PB2_DDR DDRB
  345. #define PB2_PWM NULL
  346. #undef PB3
  347. #define PB3_PIN PINB3
  348. #define PB3_RPORT PINB
  349. #define PB3_WPORT PORTB
  350. #define PB3_DDR DDRB
  351. #define PB3_PWM OCR0A
  352. #undef PB4
  353. #define PB4_PIN PINB4
  354. #define PB4_RPORT PINB
  355. #define PB4_WPORT PORTB
  356. #define PB4_DDR DDRB
  357. #define PB4_PWM OCR0B
  358. #undef PB5
  359. #define PB5_PIN PINB5
  360. #define PB5_RPORT PINB
  361. #define PB5_WPORT PORTB
  362. #define PB5_DDR DDRB
  363. #define PB5_PWM NULL
  364. #undef PB6
  365. #define PB6_PIN PINB6
  366. #define PB6_RPORT PINB
  367. #define PB6_WPORT PORTB
  368. #define PB6_DDR DDRB
  369. #define PB6_PWM NULL
  370. #undef PB7
  371. #define PB7_PIN PINB7
  372. #define PB7_RPORT PINB
  373. #define PB7_WPORT PORTB
  374. #define PB7_DDR DDRB
  375. #define PB7_PWM NULL
  376. #undef PC0
  377. #define PC0_PIN PINC0
  378. #define PC0_RPORT PINC
  379. #define PC0_WPORT PORTC
  380. #define PC0_DDR DDRC
  381. #define PC0_PWM NULL
  382. #undef PC1
  383. #define PC1_PIN PINC1
  384. #define PC1_RPORT PINC
  385. #define PC1_WPORT PORTC
  386. #define PC1_DDR DDRC
  387. #define PC1_PWM NULL
  388. #undef PC2
  389. #define PC2_PIN PINC2
  390. #define PC2_RPORT PINC
  391. #define PC2_WPORT PORTC
  392. #define PC2_DDR DDRC
  393. #define PC2_PWM NULL
  394. #undef PC3
  395. #define PC3_PIN PINC3
  396. #define PC3_RPORT PINC
  397. #define PC3_WPORT PORTC
  398. #define PC3_DDR DDRC
  399. #define PC3_PWM NULL
  400. #undef PC4
  401. #define PC4_PIN PINC4
  402. #define PC4_RPORT PINC
  403. #define PC4_WPORT PORTC
  404. #define PC4_DDR DDRC
  405. #define PC4_PWM NULL
  406. #undef PC5
  407. #define PC5_PIN PINC5
  408. #define PC5_RPORT PINC
  409. #define PC5_WPORT PORTC
  410. #define PC5_DDR DDRC
  411. #define PC5_PWM NULL
  412. #undef PC6
  413. #define PC6_PIN PINC6
  414. #define PC6_RPORT PINC
  415. #define PC6_WPORT PORTC
  416. #define PC6_DDR DDRC
  417. #define PC6_PWM NULL
  418. #undef PC7
  419. #define PC7_PIN PINC7
  420. #define PC7_RPORT PINC
  421. #define PC7_WPORT PORTC
  422. #define PC7_DDR DDRC
  423. #define PC7_PWM NULL
  424. #undef PD0
  425. #define PD0_PIN PIND0
  426. #define PD0_RPORT PIND
  427. #define PD0_WPORT PORTD
  428. #define PD0_DDR DDRD
  429. #define PD0_PWM NULL
  430. #undef PD1
  431. #define PD1_PIN PIND1
  432. #define PD1_RPORT PIND
  433. #define PD1_WPORT PORTD
  434. #define PD1_DDR DDRD
  435. #define PD1_PWM NULL
  436. #undef PD2
  437. #define PD2_PIN PIND2
  438. #define PD2_RPORT PIND
  439. #define PD2_WPORT PORTD
  440. #define PD2_DDR DDRD
  441. #define PD2_PWM NULL
  442. #undef PD3
  443. #define PD3_PIN PIND3
  444. #define PD3_RPORT PIND
  445. #define PD3_WPORT PORTD
  446. #define PD3_DDR DDRD
  447. #define PD3_PWM NULL
  448. #undef PD4
  449. #define PD4_PIN PIND4
  450. #define PD4_RPORT PIND
  451. #define PD4_WPORT PORTD
  452. #define PD4_DDR DDRD
  453. #define PD4_PWM NULL
  454. #undef PD5
  455. #define PD5_PIN PIND5
  456. #define PD5_RPORT PIND
  457. #define PD5_WPORT PORTD
  458. #define PD5_DDR DDRD
  459. #define PD5_PWM NULL
  460. #undef PD6
  461. #define PD6_PIN PIND6
  462. #define PD6_RPORT PIND
  463. #define PD6_WPORT PORTD
  464. #define PD6_DDR DDRD
  465. #define PD6_PWM OCR2B
  466. #undef PD7
  467. #define PD7_PIN PIND7
  468. #define PD7_RPORT PIND
  469. #define PD7_WPORT PORTD
  470. #define PD7_DDR DDRD
  471. #define PD7_PWM OCR2A
  472. #endif // _FASTIO_644