Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
Repozitorijs ir arhivēts. Tam var aplūkot failus un to var klonēt, bet nevar iesūtīt jaunas izmaiņas, kā arī atvērt jaunas problēmas/izmaiņu pieprasījumus.

pins_arduino.h 6.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. /*
  2. pins_arduino.h - Pin definition functions for Arduino
  3. Part of Arduino - http://www.arduino.cc/
  4. Copyright (c) 2007 David A. Mellis
  5. This library is free software; you can redistribute it and/or
  6. modify it under the terms of the GNU Lesser General Public
  7. License as published by the Free Software Foundation; either
  8. version 2.1 of the License, or (at your option) any later version.
  9. This library is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. Lesser General Public License for more details.
  13. You should have received a copy of the GNU Lesser General
  14. Public License along with this library; if not, write to the
  15. Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  16. Boston, MA 02111-1307 USA
  17. $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
  18. */
  19. #ifndef Pins_Arduino_h
  20. #define Pins_Arduino_h
  21. #include <avr/pgmspace.h>
  22. #define TX_RX_LED_INIT DDRD |= (1<<5), DDRB |= (1<<0)
  23. #define TXLED0 PORTD |= (1<<5)
  24. #define TXLED1 PORTD &= ~(1<<5)
  25. #define RXLED0 PORTB |= (1<<0)
  26. #define RXLED1 PORTB &= ~(1<<0)
  27. static const uint8_t SDA = 2;
  28. static const uint8_t SCL = 3;
  29. // Map SPI port to 'new' pins D14..D17
  30. static const uint8_t SS = 17;
  31. static const uint8_t MOSI = 16;
  32. static const uint8_t MISO = 14;
  33. static const uint8_t SCK = 15;
  34. // Mapping of analog pins as digital I/O
  35. // A6-A11 share with digital pins
  36. static const uint8_t A0 = 18;
  37. static const uint8_t A1 = 19;
  38. static const uint8_t A2 = 20;
  39. static const uint8_t A3 = 21;
  40. static const uint8_t A4 = 22;
  41. static const uint8_t A5 = 23;
  42. static const uint8_t A6 = 24; // D4
  43. static const uint8_t A7 = 25; // D6
  44. static const uint8_t A8 = 26; // D8
  45. static const uint8_t A9 = 27; // D9
  46. static const uint8_t A10 = 28; // D10
  47. static const uint8_t A11 = 29; // D12
  48. #define digitalPinToPCICR(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0))
  49. #define digitalPinToPCICRbit(p) 0
  50. #define digitalPinToPCMSK(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0))
  51. #define digitalPinToPCMSKbit(p) ( ((p) >= 8 && (p) <= 11) ? (p) - 4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4))))))
  52. // __AVR_ATmega32U4__ has an unusual mapping of pins to channels
  53. extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
  54. #define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
  55. #ifdef ARDUINO_MAIN
  56. // On the Arduino board, digital pins are also used
  57. // for the analog output (software PWM). Analog input
  58. // pins are a separate set.
  59. // ATMEL ATMEGA32U4 / ARDUINO LEONARDO
  60. //
  61. // D0 PD2 RXD1/INT2
  62. // D1 PD3 TXD1/INT3
  63. // D2 PD1 SDA SDA/INT1
  64. // D3# PD0 PWM8/SCL OC0B/SCL/INT0
  65. // D4 A6 PD4 ADC8
  66. // D5# PC6 ??? OC3A/#OC4A
  67. // D6# A7 PD7 FastPWM #OC4D/ADC10
  68. // D7 PE6 INT6/AIN0
  69. //
  70. // D8 A8 PB4 ADC11/PCINT4
  71. // D9# A9 PB5 PWM16 OC1A/#OC4B/ADC12/PCINT5
  72. // D10# A10 PB6 PWM16 OC1B/0c4B/ADC13/PCINT6
  73. // D11# PB7 PWM8/16 0C0A/OC1C/#RTS/PCINT7
  74. // D12 A11 PD6 T1/#OC4D/ADC9
  75. // D13# PC7 PWM10 CLK0/OC4A
  76. //
  77. // A0 D18 PF7 ADC7
  78. // A1 D19 PF6 ADC6
  79. // A2 D20 PF5 ADC5
  80. // A3 D21 PF4 ADC4
  81. // A4 D22 PF1 ADC1
  82. // A5 D23 PF0 ADC0
  83. //
  84. // New pins D14..D17 to map SPI port to digital pins
  85. //
  86. // MISO D14 PB3 MISO,PCINT3
  87. // SCK D15 PB1 SCK,PCINT1
  88. // MOSI D16 PB2 MOSI,PCINT2
  89. // SS D17 PB0 RXLED,SS/PCINT0
  90. //
  91. // TXLED PD5
  92. // RXLED PB0
  93. // HWB PE2 HWB
  94. // these arrays map port names (e.g. port B) to the
  95. // appropriate addresses for various functions (e.g. reading
  96. // and writing)
  97. const uint16_t PROGMEM port_to_mode_PGM[] = {
  98. NOT_A_PORT,
  99. NOT_A_PORT,
  100. (uint16_t) &DDRB,
  101. (uint16_t) &DDRC,
  102. (uint16_t) &DDRD,
  103. (uint16_t) &DDRE,
  104. (uint16_t) &DDRF,
  105. };
  106. const uint16_t PROGMEM port_to_output_PGM[] = {
  107. NOT_A_PORT,
  108. NOT_A_PORT,
  109. (uint16_t) &PORTB,
  110. (uint16_t) &PORTC,
  111. (uint16_t) &PORTD,
  112. (uint16_t) &PORTE,
  113. (uint16_t) &PORTF,
  114. };
  115. const uint16_t PROGMEM port_to_input_PGM[] = {
  116. NOT_A_PORT,
  117. NOT_A_PORT,
  118. (uint16_t) &PINB,
  119. (uint16_t) &PINC,
  120. (uint16_t) &PIND,
  121. (uint16_t) &PINE,
  122. (uint16_t) &PINF,
  123. };
  124. const uint8_t PROGMEM digital_pin_to_port_PGM[30] = {
  125. PD, // D0 - PD2
  126. PD, // D1 - PD3
  127. PD, // D2 - PD1
  128. PD, // D3 - PD0
  129. PD, // D4 - PD4
  130. PC, // D5 - PC6
  131. PD, // D6 - PD7
  132. PE, // D7 - PE6
  133. PB, // D8 - PB4
  134. PB, // D9 - PB5
  135. PB, // D10 - PB6
  136. PB, // D11 - PB7
  137. PD, // D12 - PD6
  138. PC, // D13 - PC7
  139. PB, // D14 - MISO - PB3
  140. PB, // D15 - SCK - PB1
  141. PB, // D16 - MOSI - PB2
  142. PB, // D17 - SS - PB0
  143. PF, // D18 - A0 - PF7
  144. PF, // D19 - A1 - PF6
  145. PF, // D20 - A2 - PF5
  146. PF, // D21 - A3 - PF4
  147. PF, // D22 - A4 - PF1
  148. PF, // D23 - A5 - PF0
  149. PD, // D24 / D4 - A6 - PD4
  150. PD, // D25 / D6 - A7 - PD7
  151. PB, // D26 / D8 - A8 - PB4
  152. PB, // D27 / D9 - A9 - PB5
  153. PB, // D28 / D10 - A10 - PB6
  154. PD, // D29 / D12 - A11 - PD6
  155. };
  156. const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[30] = {
  157. _BV(2), // D0 - PD2
  158. _BV(3), // D1 - PD3
  159. _BV(1), // D2 - PD1
  160. _BV(0), // D3 - PD0
  161. _BV(4), // D4 - PD4
  162. _BV(6), // D5 - PC6
  163. _BV(7), // D6 - PD7
  164. _BV(6), // D7 - PE6
  165. _BV(4), // D8 - PB4
  166. _BV(5), // D9 - PB5
  167. _BV(6), // D10 - PB6
  168. _BV(7), // D11 - PB7
  169. _BV(6), // D12 - PD6
  170. _BV(7), // D13 - PC7
  171. _BV(3), // D14 - MISO - PB3
  172. _BV(1), // D15 - SCK - PB1
  173. _BV(2), // D16 - MOSI - PB2
  174. _BV(0), // D17 - SS - PB0
  175. _BV(7), // D18 - A0 - PF7
  176. _BV(6), // D19 - A1 - PF6
  177. _BV(5), // D20 - A2 - PF5
  178. _BV(4), // D21 - A3 - PF4
  179. _BV(1), // D22 - A4 - PF1
  180. _BV(0), // D23 - A5 - PF0
  181. _BV(4), // D24 / D4 - A6 - PD4
  182. _BV(7), // D25 / D6 - A7 - PD7
  183. _BV(4), // D26 / D8 - A8 - PB4
  184. _BV(5), // D27 / D9 - A9 - PB5
  185. _BV(6), // D28 / D10 - A10 - PB6
  186. _BV(6), // D29 / D12 - A11 - PD6
  187. };
  188. const uint8_t PROGMEM digital_pin_to_timer_PGM[16] = {
  189. NOT_ON_TIMER,
  190. NOT_ON_TIMER,
  191. NOT_ON_TIMER,
  192. TIMER0B, /* 3 */
  193. NOT_ON_TIMER,
  194. TIMER3A, /* 5 */
  195. TIMER4D, /* 6 */
  196. NOT_ON_TIMER,
  197. NOT_ON_TIMER,
  198. TIMER1A, /* 9 */
  199. TIMER1B, /* 10 */
  200. TIMER0A, /* 11 */
  201. NOT_ON_TIMER,
  202. TIMER4A, /* 13 */
  203. NOT_ON_TIMER,
  204. NOT_ON_TIMER,
  205. };
  206. const uint8_t PROGMEM analog_pin_to_channel_PGM[12] = {
  207. 7, // A0 PF7 ADC7
  208. 6, // A1 PF6 ADC6
  209. 5, // A2 PF5 ADC5
  210. 4, // A3 PF4 ADC4
  211. 1, // A4 PF1 ADC1
  212. 0, // A5 PF0 ADC0
  213. 8, // A6 D4 PD4 ADC8
  214. 10, // A7 D6 PD7 ADC10
  215. 11, // A8 D8 PB4 ADC11
  216. 12, // A9 D9 PB5 ADC12
  217. 13, // A10 D10 PB6 ADC13
  218. 9 // A11 D12 PD6 ADC9
  219. };
  220. #endif /* ARDUINO_MAIN */
  221. #endif /* Pins_Arduino_h */