My Marlin configs for Fabrikator Mini and CTC i3 Pro B
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

fastio.h 98KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070
  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. * Contributed by Triffid_Hunter, modified by Kliment, extended by the Marlin team
  24. * Why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
  25. */
  26. #ifndef _FASTIO_ARDUINO_H
  27. #define _FASTIO_ARDUINO_H
  28. #include <avr/io.h>
  29. #ifndef _BV
  30. #define _BV(PIN) (1 << PIN)
  31. #endif
  32. /**
  33. * Magic I/O routines
  34. *
  35. * Now you can simply SET_OUTPUT(PIN); WRITE(PIN, HIGH); WRITE(PIN, LOW);
  36. */
  37. #define _READ(IO) ((bool)(DIO ## IO ## _RPORT & _BV(DIO ## IO ## _PIN)))
  38. // On some boards pins > 0x100 are used. These are not converted to atomic actions. A critical section is needed.
  39. #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)
  40. #define _WRITE_C(IO, v) do { if (v) { \
  41. CRITICAL_SECTION_START; \
  42. {DIO ## IO ## _WPORT |= _BV(DIO ## IO ## _PIN); } \
  43. CRITICAL_SECTION_END; \
  44. } \
  45. else { \
  46. CRITICAL_SECTION_START; \
  47. {DIO ## IO ## _WPORT &= ~_BV(DIO ## IO ## _PIN); } \
  48. CRITICAL_SECTION_END; \
  49. } \
  50. } \
  51. while (0)
  52. #define _WRITE(IO, v) do { if (&(DIO ## IO ## _RPORT) >= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
  53. #define _TOGGLE(IO) do {DIO ## IO ## _RPORT ^= _BV(DIO ## IO ## _PIN); } while (0)
  54. #define _SET_INPUT(IO) do {DIO ## IO ## _DDR &= ~_BV(DIO ## IO ## _PIN); } while (0)
  55. #define _SET_OUTPUT(IO) do {DIO ## IO ## _DDR |= _BV(DIO ## IO ## _PIN); } while (0)
  56. #define _GET_INPUT(IO) ((DIO ## IO ## _DDR & _BV(DIO ## IO ## _PIN)) == 0)
  57. #define _GET_OUTPUT(IO) ((DIO ## IO ## _DDR & _BV(DIO ## IO ## _PIN)) != 0)
  58. #define _GET_TIMER(IO) (DIO ## IO ## _PWM)
  59. #define READ(IO) _READ(IO)
  60. #define WRITE(IO,V) _WRITE(IO,V)
  61. #define TOGGLE(IO) _TOGGLE(IO)
  62. #define SET_INPUT(IO) _SET_INPUT(IO)
  63. #define SET_INPUT_PULLUP(IO) do{ _SET_INPUT(IO); _WRITE(IO, HIGH); }while(0)
  64. #define SET_OUTPUT(IO) _SET_OUTPUT(IO)
  65. #define GET_INPUT(IO) _GET_INPUT(IO)
  66. #define GET_OUTPUT(IO) _GET_OUTPUT(IO)
  67. #define GET_TIMER(IO) _GET_TIMER(IO)
  68. #define OUT_WRITE(IO, v) do{ SET_OUTPUT(IO); WRITE(IO, v); }while(0)
  69. /**
  70. * Interrupt Control
  71. */
  72. // Waveform Generation Modes
  73. typedef enum {
  74. WGM_NORMAL, // 0
  75. WGM_PWM_PC_8, // 1
  76. WGM_PWM_PC_9, // 2
  77. WGM_PWM_PC_10, // 3
  78. WGM_CTC_OCRnA, // 4 COM OCnx
  79. WGM_FAST_PWM_8, // 5
  80. WGM_FAST_PWM_9, // 6
  81. WGM_FAST_PWM_10, // 7
  82. WGM_PWM_PC_FC_ICRn, // 8
  83. WGM_PWM_PC_FC_OCRnA, // 9 COM OCnA
  84. WGM_PWM_PC_ICRn, // 10
  85. WGM_PWM_PC_OCRnA, // 11 COM OCnA
  86. WGM_CTC_ICRn, // 12 COM OCnx
  87. WGM_reserved, // 13
  88. WGM_FAST_PWM_ICRn, // 14 COM OCnA
  89. WGM_FAST_PWM_OCRnA // 15 COM OCnA
  90. } WaveGenMode;
  91. // Compare Modes
  92. typedef enum {
  93. COM_NORMAL, // 0
  94. COM_TOGGLE, // 1 Non-PWM: OCnx ... Both PWM (WGM 9,11,14,15): OCnA only ... else NORMAL
  95. COM_CLEAR_SET, // 2 Non-PWM: OCnx ... Fast PWM: OCnx/Bottom ... PF-FC: OCnx Up/Down
  96. COM_SET_CLEAR // 3 Non-PWM: OCnx ... Fast PWM: OCnx/Bottom ... PF-FC: OCnx Up/Down
  97. } CompareMode;
  98. // Clock Sources
  99. typedef enum {
  100. CS_NONE, // 0
  101. CS_PRESCALER_1, // 1
  102. CS_PRESCALER_8, // 2
  103. CS_PRESCALER_64, // 3
  104. CS_PRESCALER_256, // 4
  105. CS_PRESCALER_1024, // 5
  106. CS_EXT_FALLING, // 6
  107. CS_EXT_RISING // 7
  108. } ClockSource;
  109. #define SET_WGM(T,V) do{ \
  110. TCCR##T##A = (TCCR##T##A & ~(0x3 << WGM##T##0)) | (( int(V) & 0x3) << WGM##T##0); \
  111. TCCR##T##B = (TCCR##T##B & ~(0x3 << WGM##T##2)) | (((int(V) >> 2) & 0x3) << WGM##T##2); \
  112. }while(0)
  113. #define SET_CS(T,V) do{ \
  114. TCCR##T##B = (TCCR##T##B & ~(0x7 << CS10)) | ((int(V) & 0x7) << CS10); \
  115. }while(0)
  116. #define SET_COM(T,Q,V) do{ \
  117. TCCR##T##Q = (TCCR##T##Q & ~(0x3 << COM1##Q##0)) | ((int(V) & 0x3) << COM1##Q##0); \
  118. }while(0)
  119. #define SET_COMA(T,V) SET_COM(T,A,V)
  120. #define SET_COMB(T,V) SET_COM(T,B,V)
  121. #define SET_COMS(T,V1,V2) do{ SET_COMA(T,V1); SET_COMB(T,V2); }while(0)
  122. #define SET_ICNC(T,V) (TCCR##T##B = (TCCR##T##B & ~_BV(7) | ((V) & 1) << 7))
  123. #define SET_ICES(T,V) (TCCR##T##B = (TCCR##T##B & ~_BV(6) | ((V) & 1) << 6))
  124. /**
  125. * Ports and Functions
  126. */
  127. #if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__)
  128. // UART
  129. #define RXD DIO0
  130. #define TXD DIO1
  131. // SPI
  132. #define SCK DIO13
  133. #define MISO DIO12
  134. #define MOSI DIO11
  135. #define SS DIO10
  136. // TWI (I2C)
  137. #define SCL AIO5
  138. #define SDA AIO4
  139. // timers and PWM
  140. #define OC0A DIO6
  141. #define OC0B DIO5
  142. #define OC1A DIO9
  143. #define OC1B DIO10
  144. #define OC2A DIO11
  145. #define OC2B DIO3
  146. #define DEBUG_LED AIO5
  147. /**
  148. pins
  149. */
  150. #define DIO0_PIN PIND0
  151. #define DIO0_RPORT PIND
  152. #define DIO0_WPORT PORTD
  153. #define DIO0_DDR DDRD
  154. #define DIO0_PWM NULL
  155. #define DIO1_PIN PIND1
  156. #define DIO1_RPORT PIND
  157. #define DIO1_WPORT PORTD
  158. #define DIO1_DDR DDRD
  159. #define DIO1_PWM NULL
  160. #define DIO2_PIN PIND2
  161. #define DIO2_RPORT PIND
  162. #define DIO2_WPORT PORTD
  163. #define DIO2_DDR DDRD
  164. #define DIO2_PWM NULL
  165. #define DIO3_PIN PIND3
  166. #define DIO3_RPORT PIND
  167. #define DIO3_WPORT PORTD
  168. #define DIO3_DDR DDRD
  169. #define DIO3_PWM &OCR2B
  170. #define DIO4_PIN PIND4
  171. #define DIO4_RPORT PIND
  172. #define DIO4_WPORT PORTD
  173. #define DIO4_DDR DDRD
  174. #define DIO4_PWM NULL
  175. #define DIO5_PIN PIND5
  176. #define DIO5_RPORT PIND
  177. #define DIO5_WPORT PORTD
  178. #define DIO5_DDR DDRD
  179. #define DIO5_PWM &OCR0B
  180. #define DIO6_PIN PIND6
  181. #define DIO6_RPORT PIND
  182. #define DIO6_WPORT PORTD
  183. #define DIO6_DDR DDRD
  184. #define DIO6_PWM &OCR0A
  185. #define DIO7_PIN PIND7
  186. #define DIO7_RPORT PIND
  187. #define DIO7_WPORT PORTD
  188. #define DIO7_DDR DDRD
  189. #define DIO7_PWM NULL
  190. #define DIO8_PIN PINB0
  191. #define DIO8_RPORT PINB
  192. #define DIO8_WPORT PORTB
  193. #define DIO8_DDR DDRB
  194. #define DIO8_PWM NULL
  195. #define DIO9_PIN PINB1
  196. #define DIO9_RPORT PINB
  197. #define DIO9_WPORT PORTB
  198. #define DIO9_DDR DDRB
  199. #define DIO9_PWM NULL
  200. #define DIO10_PIN PINB2
  201. #define DIO10_RPORT PINB
  202. #define DIO10_WPORT PORTB
  203. #define DIO10_DDR DDRB
  204. #define DIO10_PWM NULL
  205. #define DIO11_PIN PINB3
  206. #define DIO11_RPORT PINB
  207. #define DIO11_WPORT PORTB
  208. #define DIO11_DDR DDRB
  209. #define DIO11_PWM &OCR2A
  210. #define DIO12_PIN PINB4
  211. #define DIO12_RPORT PINB
  212. #define DIO12_WPORT PORTB
  213. #define DIO12_DDR DDRB
  214. #define DIO12_PWM NULL
  215. #define DIO13_PIN PINB5
  216. #define DIO13_RPORT PINB
  217. #define DIO13_WPORT PORTB
  218. #define DIO13_DDR DDRB
  219. #define DIO13_PWM NULL
  220. #define DIO14_PIN PINC0
  221. #define DIO14_RPORT PINC
  222. #define DIO14_WPORT PORTC
  223. #define DIO14_DDR DDRC
  224. #define DIO14_PWM NULL
  225. #define DIO15_PIN PINC1
  226. #define DIO15_RPORT PINC
  227. #define DIO15_WPORT PORTC
  228. #define DIO15_DDR DDRC
  229. #define DIO15_PWM NULL
  230. #define DIO16_PIN PINC2
  231. #define DIO16_RPORT PINC
  232. #define DIO16_WPORT PORTC
  233. #define DIO16_DDR DDRC
  234. #define DIO16_PWM NULL
  235. #define DIO17_PIN PINC3
  236. #define DIO17_RPORT PINC
  237. #define DIO17_WPORT PORTC
  238. #define DIO17_DDR DDRC
  239. #define DIO17_PWM NULL
  240. #define DIO18_PIN PINC4
  241. #define DIO18_RPORT PINC
  242. #define DIO18_WPORT PORTC
  243. #define DIO18_DDR DDRC
  244. #define DIO18_PWM NULL
  245. #define DIO19_PIN PINC5
  246. #define DIO19_RPORT PINC
  247. #define DIO19_WPORT PORTC
  248. #define DIO19_DDR DDRC
  249. #define DIO19_PWM NULL
  250. #define DIO20_PIN PINC6
  251. #define DIO20_RPORT PINC
  252. #define DIO20_WPORT PORTC
  253. #define DIO20_DDR DDRC
  254. #define DIO20_PWM NULL
  255. #define DIO21_PIN PINC7
  256. #define DIO21_RPORT PINC
  257. #define DIO21_WPORT PORTC
  258. #define DIO21_DDR DDRC
  259. #define DIO21_PWM NULL
  260. #undef PB0
  261. #define PB0_PIN PINB0
  262. #define PB0_RPORT PINB
  263. #define PB0_WPORT PORTB
  264. #define PB0_DDR DDRB
  265. #define PB0_PWM NULL
  266. #undef PB1
  267. #define PB1_PIN PINB1
  268. #define PB1_RPORT PINB
  269. #define PB1_WPORT PORTB
  270. #define PB1_DDR DDRB
  271. #define PB1_PWM NULL
  272. #undef PB2
  273. #define PB2_PIN PINB2
  274. #define PB2_RPORT PINB
  275. #define PB2_WPORT PORTB
  276. #define PB2_DDR DDRB
  277. #define PB2_PWM NULL
  278. #undef PB3
  279. #define PB3_PIN PINB3
  280. #define PB3_RPORT PINB
  281. #define PB3_WPORT PORTB
  282. #define PB3_DDR DDRB
  283. #define PB3_PWM &OCR2A
  284. #undef PB4
  285. #define PB4_PIN PINB4
  286. #define PB4_RPORT PINB
  287. #define PB4_WPORT PORTB
  288. #define PB4_DDR DDRB
  289. #define PB4_PWM NULL
  290. #undef PB5
  291. #define PB5_PIN PINB5
  292. #define PB5_RPORT PINB
  293. #define PB5_WPORT PORTB
  294. #define PB5_DDR DDRB
  295. #define PB5_PWM NULL
  296. #undef PB6
  297. #define PB6_PIN PINB6
  298. #define PB6_RPORT PINB
  299. #define PB6_WPORT PORTB
  300. #define PB6_DDR DDRB
  301. #define PB6_PWM NULL
  302. #undef PB7
  303. #define PB7_PIN PINB7
  304. #define PB7_RPORT PINB
  305. #define PB7_WPORT PORTB
  306. #define PB7_DDR DDRB
  307. #define PB7_PWM NULL
  308. #undef PC0
  309. #define PC0_PIN PINC0
  310. #define PC0_RPORT PINC
  311. #define PC0_WPORT PORTC
  312. #define PC0_DDR DDRC
  313. #define PC0_PWM NULL
  314. #undef PC1
  315. #define PC1_PIN PINC1
  316. #define PC1_RPORT PINC
  317. #define PC1_WPORT PORTC
  318. #define PC1_DDR DDRC
  319. #define PC1_PWM NULL
  320. #undef PC2
  321. #define PC2_PIN PINC2
  322. #define PC2_RPORT PINC
  323. #define PC2_WPORT PORTC
  324. #define PC2_DDR DDRC
  325. #define PC2_PWM NULL
  326. #undef PC3
  327. #define PC3_PIN PINC3
  328. #define PC3_RPORT PINC
  329. #define PC3_WPORT PORTC
  330. #define PC3_DDR DDRC
  331. #define PC3_PWM NULL
  332. #undef PC4
  333. #define PC4_PIN PINC4
  334. #define PC4_RPORT PINC
  335. #define PC4_WPORT PORTC
  336. #define PC4_DDR DDRC
  337. #define PC4_PWM NULL
  338. #undef PC5
  339. #define PC5_PIN PINC5
  340. #define PC5_RPORT PINC
  341. #define PC5_WPORT PORTC
  342. #define PC5_DDR DDRC
  343. #define PC5_PWM NULL
  344. #undef PC6
  345. #define PC6_PIN PINC6
  346. #define PC6_RPORT PINC
  347. #define PC6_WPORT PORTC
  348. #define PC6_DDR DDRC
  349. #define PC6_PWM NULL
  350. #undef PC7
  351. #define PC7_PIN PINC7
  352. #define PC7_RPORT PINC
  353. #define PC7_WPORT PORTC
  354. #define PC7_DDR DDRC
  355. #define PC7_PWM NULL
  356. #undef PD0
  357. #define PD0_PIN PIND0
  358. #define PD0_RPORT PIND
  359. #define PD0_WPORT PORTD
  360. #define PD0_DDR DDRD
  361. #define PD0_PWM NULL
  362. #undef PD1
  363. #define PD1_PIN PIND1
  364. #define PD1_RPORT PIND
  365. #define PD1_WPORT PORTD
  366. #define PD1_DDR DDRD
  367. #define PD1_PWM NULL
  368. #undef PD2
  369. #define PD2_PIN PIND2
  370. #define PD2_RPORT PIND
  371. #define PD2_WPORT PORTD
  372. #define PD2_DDR DDRD
  373. #define PD2_PWM NULL
  374. #undef PD3
  375. #define PD3_PIN PIND3
  376. #define PD3_RPORT PIND
  377. #define PD3_WPORT PORTD
  378. #define PD3_DDR DDRD
  379. #define PD3_PWM &OCR2B
  380. #undef PD4
  381. #define PD4_PIN PIND4
  382. #define PD4_RPORT PIND
  383. #define PD4_WPORT PORTD
  384. #define PD4_DDR DDRD
  385. #define PD4_PWM NULL
  386. #undef PD5
  387. #define PD5_PIN PIND5
  388. #define PD5_RPORT PIND
  389. #define PD5_WPORT PORTD
  390. #define PD5_DDR DDRD
  391. #define PD5_PWM &OCR0B
  392. #undef PD6
  393. #define PD6_PIN PIND6
  394. #define PD6_RPORT PIND
  395. #define PD6_WPORT PORTD
  396. #define PD6_DDR DDRD
  397. #define PD6_PWM &OCR0A
  398. #undef PD7
  399. #define PD7_PIN PIND7
  400. #define PD7_RPORT PIND
  401. #define PD7_WPORT PORTD
  402. #define PD7_DDR DDRD
  403. #define PD7_PWM NULL
  404. #endif // __AVR_ATmega(168|328|328P)__
  405. #if defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__)
  406. // UART
  407. #define RXD DIO8
  408. #define TXD DIO9
  409. #define RXD0 DIO8
  410. #define TXD0 DIO9
  411. #define RXD1 DIO10
  412. #define TXD1 DIO11
  413. // SPI
  414. #define SCK DIO7
  415. #define MISO DIO6
  416. #define MOSI DIO5
  417. #define SS DIO4
  418. // TWI (I2C)
  419. #define SCL DIO16
  420. #define SDA DIO17
  421. // timers and PWM
  422. #define OC0A DIO3
  423. #define OC0B DIO4
  424. #define OC1A DIO13
  425. #define OC1B DIO12
  426. #define OC2A DIO15
  427. #define OC2B DIO14
  428. #define DEBUG_LED DIO0
  429. /**
  430. pins
  431. */
  432. #define DIO0_PIN PINB0
  433. #define DIO0_RPORT PINB
  434. #define DIO0_WPORT PORTB
  435. #define DIO0_DDR DDRB
  436. #define DIO0_PWM NULL
  437. #define DIO1_PIN PINB1
  438. #define DIO1_RPORT PINB
  439. #define DIO1_WPORT PORTB
  440. #define DIO1_DDR DDRB
  441. #define DIO1_PWM NULL
  442. #define DIO2_PIN PINB2
  443. #define DIO2_RPORT PINB
  444. #define DIO2_WPORT PORTB
  445. #define DIO2_DDR DDRB
  446. #define DIO2_PWM NULL
  447. #define DIO3_PIN PINB3
  448. #define DIO3_RPORT PINB
  449. #define DIO3_WPORT PORTB
  450. #define DIO3_DDR DDRB
  451. #define DIO3_PWM OCR0A
  452. #define DIO4_PIN PINB4
  453. #define DIO4_RPORT PINB
  454. #define DIO4_WPORT PORTB
  455. #define DIO4_DDR DDRB
  456. #define DIO4_PWM OCR0B
  457. #define DIO5_PIN PINB5
  458. #define DIO5_RPORT PINB
  459. #define DIO5_WPORT PORTB
  460. #define DIO5_DDR DDRB
  461. #define DIO5_PWM NULL
  462. #define DIO6_PIN PINB6
  463. #define DIO6_RPORT PINB
  464. #define DIO6_WPORT PORTB
  465. #define DIO6_DDR DDRB
  466. #define DIO6_PWM NULL
  467. #define DIO7_PIN PINB7
  468. #define DIO7_RPORT PINB
  469. #define DIO7_WPORT PORTB
  470. #define DIO7_DDR DDRB
  471. #define DIO7_PWM NULL
  472. #define DIO8_PIN PIND0
  473. #define DIO8_RPORT PIND
  474. #define DIO8_WPORT PORTD
  475. #define DIO8_DDR DDRD
  476. #define DIO8_PWM NULL
  477. #define DIO9_PIN PIND1
  478. #define DIO9_RPORT PIND
  479. #define DIO9_WPORT PORTD
  480. #define DIO9_DDR DDRD
  481. #define DIO9_PWM NULL
  482. #define DIO10_PIN PIND2
  483. #define DIO10_RPORT PIND
  484. #define DIO10_WPORT PORTD
  485. #define DIO10_DDR DDRD
  486. #define DIO10_PWM NULL
  487. #define DIO11_PIN PIND3
  488. #define DIO11_RPORT PIND
  489. #define DIO11_WPORT PORTD
  490. #define DIO11_DDR DDRD
  491. #define DIO11_PWM NULL
  492. #define DIO12_PIN PIND4
  493. #define DIO12_RPORT PIND
  494. #define DIO12_WPORT PORTD
  495. #define DIO12_DDR DDRD
  496. #define DIO12_PWM OCR1B
  497. #define DIO13_PIN PIND5
  498. #define DIO13_RPORT PIND
  499. #define DIO13_WPORT PORTD
  500. #define DIO13_DDR DDRD
  501. #define DIO13_PWM OCR1A
  502. #define DIO14_PIN PIND6
  503. #define DIO14_RPORT PIND
  504. #define DIO14_WPORT PORTD
  505. #define DIO14_DDR DDRD
  506. #define DIO14_PWM OCR2B
  507. #define DIO15_PIN PIND7
  508. #define DIO15_RPORT PIND
  509. #define DIO15_WPORT PORTD
  510. #define DIO15_DDR DDRD
  511. #define DIO15_PWM OCR2A
  512. #define DIO16_PIN PINC0
  513. #define DIO16_RPORT PINC
  514. #define DIO16_WPORT PORTC
  515. #define DIO16_DDR DDRC
  516. #define DIO16_PWM NULL
  517. #define DIO17_PIN PINC1
  518. #define DIO17_RPORT PINC
  519. #define DIO17_WPORT PORTC
  520. #define DIO17_DDR DDRC
  521. #define DIO17_PWM NULL
  522. #define DIO18_PIN PINC2
  523. #define DIO18_RPORT PINC
  524. #define DIO18_WPORT PORTC
  525. #define DIO18_DDR DDRC
  526. #define DIO18_PWM NULL
  527. #define DIO19_PIN PINC3
  528. #define DIO19_RPORT PINC
  529. #define DIO19_WPORT PORTC
  530. #define DIO19_DDR DDRC
  531. #define DIO19_PWM NULL
  532. #define DIO20_PIN PINC4
  533. #define DIO20_RPORT PINC
  534. #define DIO20_WPORT PORTC
  535. #define DIO20_DDR DDRC
  536. #define DIO20_PWM NULL
  537. #define DIO21_PIN PINC5
  538. #define DIO21_RPORT PINC
  539. #define DIO21_WPORT PORTC
  540. #define DIO21_DDR DDRC
  541. #define DIO21_PWM NULL
  542. #define DIO22_PIN PINC6
  543. #define DIO22_RPORT PINC
  544. #define DIO22_WPORT PORTC
  545. #define DIO22_DDR DDRC
  546. #define DIO22_PWM NULL
  547. #define DIO23_PIN PINC7
  548. #define DIO23_RPORT PINC
  549. #define DIO23_WPORT PORTC
  550. #define DIO23_DDR DDRC
  551. #define DIO23_PWM NULL
  552. #define DIO24_PIN PINA7
  553. #define DIO24_RPORT PINA
  554. #define DIO24_WPORT PORTA
  555. #define DIO24_DDR DDRA
  556. #define DIO24_PWM NULL
  557. #define DIO25_PIN PINA6
  558. #define DIO25_RPORT PINA
  559. #define DIO25_WPORT PORTA
  560. #define DIO25_DDR DDRA
  561. #define DIO25_PWM NULL
  562. #define DIO26_PIN PINA5
  563. #define DIO26_RPORT PINA
  564. #define DIO26_WPORT PORTA
  565. #define DIO26_DDR DDRA
  566. #define DIO26_PWM NULL
  567. #define DIO27_PIN PINA4
  568. #define DIO27_RPORT PINA
  569. #define DIO27_WPORT PORTA
  570. #define DIO27_DDR DDRA
  571. #define DIO27_PWM NULL
  572. #define DIO28_PIN PINA3
  573. #define DIO28_RPORT PINA
  574. #define DIO28_WPORT PORTA
  575. #define DIO28_DDR DDRA
  576. #define DIO28_PWM NULL
  577. #define DIO29_PIN PINA2
  578. #define DIO29_RPORT PINA
  579. #define DIO29_WPORT PORTA
  580. #define DIO29_DDR DDRA
  581. #define DIO29_PWM NULL
  582. #define DIO30_PIN PINA1
  583. #define DIO30_RPORT PINA
  584. #define DIO30_WPORT PORTA
  585. #define DIO30_DDR DDRA
  586. #define DIO30_PWM NULL
  587. #define DIO31_PIN PINA0
  588. #define DIO31_RPORT PINA
  589. #define DIO31_WPORT PORTA
  590. #define DIO31_DDR DDRA
  591. #define DIO31_PWM NULL
  592. #define AIO0_PIN PINA0
  593. #define AIO0_RPORT PINA
  594. #define AIO0_WPORT PORTA
  595. #define AIO0_DDR DDRA
  596. #define AIO0_PWM NULL
  597. #define AIO1_PIN PINA1
  598. #define AIO1_RPORT PINA
  599. #define AIO1_WPORT PORTA
  600. #define AIO1_DDR DDRA
  601. #define AIO1_PWM NULL
  602. #define AIO2_PIN PINA2
  603. #define AIO2_RPORT PINA
  604. #define AIO2_WPORT PORTA
  605. #define AIO2_DDR DDRA
  606. #define AIO2_PWM NULL
  607. #define AIO3_PIN PINA3
  608. #define AIO3_RPORT PINA
  609. #define AIO3_WPORT PORTA
  610. #define AIO3_DDR DDRA
  611. #define AIO3_PWM NULL
  612. #define AIO4_PIN PINA4
  613. #define AIO4_RPORT PINA
  614. #define AIO4_WPORT PORTA
  615. #define AIO4_DDR DDRA
  616. #define AIO4_PWM NULL
  617. #define AIO5_PIN PINA5
  618. #define AIO5_RPORT PINA
  619. #define AIO5_WPORT PORTA
  620. #define AIO5_DDR DDRA
  621. #define AIO5_PWM NULL
  622. #define AIO6_PIN PINA6
  623. #define AIO6_RPORT PINA
  624. #define AIO6_WPORT PORTA
  625. #define AIO6_DDR DDRA
  626. #define AIO6_PWM NULL
  627. #define AIO7_PIN PINA7
  628. #define AIO7_RPORT PINA
  629. #define AIO7_WPORT PORTA
  630. #define AIO7_DDR DDRA
  631. #define AIO7_PWM NULL
  632. #undef PA0
  633. #define PA0_PIN PINA0
  634. #define PA0_RPORT PINA
  635. #define PA0_WPORT PORTA
  636. #define PA0_DDR DDRA
  637. #define PA0_PWM NULL
  638. #undef PA1
  639. #define PA1_PIN PINA1
  640. #define PA1_RPORT PINA
  641. #define PA1_WPORT PORTA
  642. #define PA1_DDR DDRA
  643. #define PA1_PWM NULL
  644. #undef PA2
  645. #define PA2_PIN PINA2
  646. #define PA2_RPORT PINA
  647. #define PA2_WPORT PORTA
  648. #define PA2_DDR DDRA
  649. #define PA2_PWM NULL
  650. #undef PA3
  651. #define PA3_PIN PINA3
  652. #define PA3_RPORT PINA
  653. #define PA3_WPORT PORTA
  654. #define PA3_DDR DDRA
  655. #define PA3_PWM NULL
  656. #undef PA4
  657. #define PA4_PIN PINA4
  658. #define PA4_RPORT PINA
  659. #define PA4_WPORT PORTA
  660. #define PA4_DDR DDRA
  661. #define PA4_PWM NULL
  662. #undef PA5
  663. #define PA5_PIN PINA5
  664. #define PA5_RPORT PINA
  665. #define PA5_WPORT PORTA
  666. #define PA5_DDR DDRA
  667. #define PA5_PWM NULL
  668. #undef PA6
  669. #define PA6_PIN PINA6
  670. #define PA6_RPORT PINA
  671. #define PA6_WPORT PORTA
  672. #define PA6_DDR DDRA
  673. #define PA6_PWM NULL
  674. #undef PA7
  675. #define PA7_PIN PINA7
  676. #define PA7_RPORT PINA
  677. #define PA7_WPORT PORTA
  678. #define PA7_DDR DDRA
  679. #define PA7_PWM NULL
  680. #undef PB0
  681. #define PB0_PIN PINB0
  682. #define PB0_RPORT PINB
  683. #define PB0_WPORT PORTB
  684. #define PB0_DDR DDRB
  685. #define PB0_PWM NULL
  686. #undef PB1
  687. #define PB1_PIN PINB1
  688. #define PB1_RPORT PINB
  689. #define PB1_WPORT PORTB
  690. #define PB1_DDR DDRB
  691. #define PB1_PWM NULL
  692. #undef PB2
  693. #define PB2_PIN PINB2
  694. #define PB2_RPORT PINB
  695. #define PB2_WPORT PORTB
  696. #define PB2_DDR DDRB
  697. #define PB2_PWM NULL
  698. #undef PB3
  699. #define PB3_PIN PINB3
  700. #define PB3_RPORT PINB
  701. #define PB3_WPORT PORTB
  702. #define PB3_DDR DDRB
  703. #define PB3_PWM OCR0A
  704. #undef PB4
  705. #define PB4_PIN PINB4
  706. #define PB4_RPORT PINB
  707. #define PB4_WPORT PORTB
  708. #define PB4_DDR DDRB
  709. #define PB4_PWM OCR0B
  710. #undef PB5
  711. #define PB5_PIN PINB5
  712. #define PB5_RPORT PINB
  713. #define PB5_WPORT PORTB
  714. #define PB5_DDR DDRB
  715. #define PB5_PWM NULL
  716. #undef PB6
  717. #define PB6_PIN PINB6
  718. #define PB6_RPORT PINB
  719. #define PB6_WPORT PORTB
  720. #define PB6_DDR DDRB
  721. #define PB6_PWM NULL
  722. #undef PB7
  723. #define PB7_PIN PINB7
  724. #define PB7_RPORT PINB
  725. #define PB7_WPORT PORTB
  726. #define PB7_DDR DDRB
  727. #define PB7_PWM NULL
  728. #undef PC0
  729. #define PC0_PIN PINC0
  730. #define PC0_RPORT PINC
  731. #define PC0_WPORT PORTC
  732. #define PC0_DDR DDRC
  733. #define PC0_PWM NULL
  734. #undef PC1
  735. #define PC1_PIN PINC1
  736. #define PC1_RPORT PINC
  737. #define PC1_WPORT PORTC
  738. #define PC1_DDR DDRC
  739. #define PC1_PWM NULL
  740. #undef PC2
  741. #define PC2_PIN PINC2
  742. #define PC2_RPORT PINC
  743. #define PC2_WPORT PORTC
  744. #define PC2_DDR DDRC
  745. #define PC2_PWM NULL
  746. #undef PC3
  747. #define PC3_PIN PINC3
  748. #define PC3_RPORT PINC
  749. #define PC3_WPORT PORTC
  750. #define PC3_DDR DDRC
  751. #define PC3_PWM NULL
  752. #undef PC4
  753. #define PC4_PIN PINC4
  754. #define PC4_RPORT PINC
  755. #define PC4_WPORT PORTC
  756. #define PC4_DDR DDRC
  757. #define PC4_PWM NULL
  758. #undef PC5
  759. #define PC5_PIN PINC5
  760. #define PC5_RPORT PINC
  761. #define PC5_WPORT PORTC
  762. #define PC5_DDR DDRC
  763. #define PC5_PWM NULL
  764. #undef PC6
  765. #define PC6_PIN PINC6
  766. #define PC6_RPORT PINC
  767. #define PC6_WPORT PORTC
  768. #define PC6_DDR DDRC
  769. #define PC6_PWM NULL
  770. #undef PC7
  771. #define PC7_PIN PINC7
  772. #define PC7_RPORT PINC
  773. #define PC7_WPORT PORTC
  774. #define PC7_DDR DDRC
  775. #define PC7_PWM NULL
  776. #undef PD0
  777. #define PD0_PIN PIND0
  778. #define PD0_RPORT PIND
  779. #define PD0_WPORT PORTD
  780. #define PD0_DDR DDRD
  781. #define PD0_PWM NULL
  782. #undef PD1
  783. #define PD1_PIN PIND1
  784. #define PD1_RPORT PIND
  785. #define PD1_WPORT PORTD
  786. #define PD1_DDR DDRD
  787. #define PD1_PWM NULL
  788. #undef PD2
  789. #define PD2_PIN PIND2
  790. #define PD2_RPORT PIND
  791. #define PD2_WPORT PORTD
  792. #define PD2_DDR DDRD
  793. #define PD2_PWM NULL
  794. #undef PD3
  795. #define PD3_PIN PIND3
  796. #define PD3_RPORT PIND
  797. #define PD3_WPORT PORTD
  798. #define PD3_DDR DDRD
  799. #define PD3_PWM NULL
  800. #undef PD4
  801. #define PD4_PIN PIND4
  802. #define PD4_RPORT PIND
  803. #define PD4_WPORT PORTD
  804. #define PD4_DDR DDRD
  805. #define PD4_PWM NULL
  806. #undef PD5
  807. #define PD5_PIN PIND5
  808. #define PD5_RPORT PIND
  809. #define PD5_WPORT PORTD
  810. #define PD5_DDR DDRD
  811. #define PD5_PWM NULL
  812. #undef PD6
  813. #define PD6_PIN PIND6
  814. #define PD6_RPORT PIND
  815. #define PD6_WPORT PORTD
  816. #define PD6_DDR DDRD
  817. #define PD6_PWM OCR2B
  818. #undef PD7
  819. #define PD7_PIN PIND7
  820. #define PD7_RPORT PIND
  821. #define PD7_WPORT PORTD
  822. #define PD7_DDR DDRD
  823. #define PD7_PWM OCR2A
  824. #endif // __AVR_ATmega(644|644P|644PA)__
  825. #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
  826. // UART
  827. #define RXD DIO0
  828. #define TXD DIO1
  829. // SPI
  830. #define SCK DIO52
  831. #define MISO DIO50
  832. #define MOSI DIO51
  833. #define SS DIO53
  834. // TWI (I2C)
  835. #define SCL DIO21
  836. #define SDA DIO20
  837. // timers and PWM
  838. #define OC0A DIO13
  839. #define OC0B DIO4
  840. #define OC1A DIO11
  841. #define OC1B DIO12
  842. #define OC2A DIO10
  843. #define OC2B DIO9
  844. #define OC3A DIO5
  845. #define OC3B DIO2
  846. #define OC3C DIO3
  847. #define OC4A DIO6
  848. #define OC4B DIO7
  849. #define OC4C DIO8
  850. #define OC5A DIO46
  851. #define OC5B DIO45
  852. #define OC5C DIO44
  853. // change for your board
  854. #define DEBUG_LED DIO21
  855. /**
  856. pins
  857. */
  858. #define DIO0_PIN PINE0
  859. #define DIO0_RPORT PINE
  860. #define DIO0_WPORT PORTE
  861. #define DIO0_DDR DDRE
  862. #define DIO0_PWM NULL
  863. #define DIO1_PIN PINE1
  864. #define DIO1_RPORT PINE
  865. #define DIO1_WPORT PORTE
  866. #define DIO1_DDR DDRE
  867. #define DIO1_PWM NULL
  868. #define DIO2_PIN PINE4
  869. #define DIO2_RPORT PINE
  870. #define DIO2_WPORT PORTE
  871. #define DIO2_DDR DDRE
  872. #define DIO2_PWM &OCR3BL
  873. #define DIO3_PIN PINE5
  874. #define DIO3_RPORT PINE
  875. #define DIO3_WPORT PORTE
  876. #define DIO3_DDR DDRE
  877. #define DIO3_PWM &OCR3CL
  878. #define DIO4_PIN PING5
  879. #define DIO4_RPORT PING
  880. #define DIO4_WPORT PORTG
  881. #define DIO4_DDR DDRG
  882. #define DIO4_PWM &OCR0B
  883. #define DIO5_PIN PINE3
  884. #define DIO5_RPORT PINE
  885. #define DIO5_WPORT PORTE
  886. #define DIO5_DDR DDRE
  887. #define DIO5_PWM &OCR3AL
  888. #define DIO6_PIN PINH3
  889. #define DIO6_RPORT PINH
  890. #define DIO6_WPORT PORTH
  891. #define DIO6_DDR DDRH
  892. #define DIO6_PWM &OCR4AL
  893. #define DIO7_PIN PINH4
  894. #define DIO7_RPORT PINH
  895. #define DIO7_WPORT PORTH
  896. #define DIO7_DDR DDRH
  897. #define DIO7_PWM &OCR4BL
  898. #define DIO8_PIN PINH5
  899. #define DIO8_RPORT PINH
  900. #define DIO8_WPORT PORTH
  901. #define DIO8_DDR DDRH
  902. #define DIO8_PWM &OCR4CL
  903. #define DIO9_PIN PINH6
  904. #define DIO9_RPORT PINH
  905. #define DIO9_WPORT PORTH
  906. #define DIO9_DDR DDRH
  907. #define DIO9_PWM &OCR2B
  908. #define DIO10_PIN PINB4
  909. #define DIO10_RPORT PINB
  910. #define DIO10_WPORT PORTB
  911. #define DIO10_DDR DDRB
  912. #define DIO10_PWM &OCR2A
  913. #define DIO11_PIN PINB5
  914. #define DIO11_RPORT PINB
  915. #define DIO11_WPORT PORTB
  916. #define DIO11_DDR DDRB
  917. #define DIO11_PWM NULL
  918. #define DIO12_PIN PINB6
  919. #define DIO12_RPORT PINB
  920. #define DIO12_WPORT PORTB
  921. #define DIO12_DDR DDRB
  922. #define DIO12_PWM NULL
  923. #define DIO13_PIN PINB7
  924. #define DIO13_RPORT PINB
  925. #define DIO13_WPORT PORTB
  926. #define DIO13_DDR DDRB
  927. #define DIO13_PWM &OCR0A
  928. #define DIO14_PIN PINJ1
  929. #define DIO14_RPORT PINJ
  930. #define DIO14_WPORT PORTJ
  931. #define DIO14_DDR DDRJ
  932. #define DIO14_PWM NULL
  933. #define DIO15_PIN PINJ0
  934. #define DIO15_RPORT PINJ
  935. #define DIO15_WPORT PORTJ
  936. #define DIO15_DDR DDRJ
  937. #define DIO15_PWM NULL
  938. #define DIO16_PIN PINH1
  939. #define DIO16_RPORT PINH
  940. #define DIO16_WPORT PORTH
  941. #define DIO16_DDR DDRH
  942. #define DIO16_PWM NULL
  943. #define DIO17_PIN PINH0
  944. #define DIO17_RPORT PINH
  945. #define DIO17_WPORT PORTH
  946. #define DIO17_DDR DDRH
  947. #define DIO17_PWM NULL
  948. #define DIO18_PIN PIND3
  949. #define DIO18_RPORT PIND
  950. #define DIO18_WPORT PORTD
  951. #define DIO18_DDR DDRD
  952. #define DIO18_PWM NULL
  953. #define DIO19_PIN PIND2
  954. #define DIO19_RPORT PIND
  955. #define DIO19_WPORT PORTD
  956. #define DIO19_DDR DDRD
  957. #define DIO19_PWM NULL
  958. #define DIO20_PIN PIND1
  959. #define DIO20_RPORT PIND
  960. #define DIO20_WPORT PORTD
  961. #define DIO20_DDR DDRD
  962. #define DIO20_PWM NULL
  963. #define DIO21_PIN PIND0
  964. #define DIO21_RPORT PIND
  965. #define DIO21_WPORT PORTD
  966. #define DIO21_DDR DDRD
  967. #define DIO21_PWM NULL
  968. #define DIO22_PIN PINA0
  969. #define DIO22_RPORT PINA
  970. #define DIO22_WPORT PORTA
  971. #define DIO22_DDR DDRA
  972. #define DIO22_PWM NULL
  973. #define DIO23_PIN PINA1
  974. #define DIO23_RPORT PINA
  975. #define DIO23_WPORT PORTA
  976. #define DIO23_DDR DDRA
  977. #define DIO23_PWM NULL
  978. #define DIO24_PIN PINA2
  979. #define DIO24_RPORT PINA
  980. #define DIO24_WPORT PORTA
  981. #define DIO24_DDR DDRA
  982. #define DIO24_PWM NULL
  983. #define DIO25_PIN PINA3
  984. #define DIO25_RPORT PINA
  985. #define DIO25_WPORT PORTA
  986. #define DIO25_DDR DDRA
  987. #define DIO25_PWM NULL
  988. #define DIO26_PIN PINA4
  989. #define DIO26_RPORT PINA
  990. #define DIO26_WPORT PORTA
  991. #define DIO26_DDR DDRA
  992. #define DIO26_PWM NULL
  993. #define DIO27_PIN PINA5
  994. #define DIO27_RPORT PINA
  995. #define DIO27_WPORT PORTA
  996. #define DIO27_DDR DDRA
  997. #define DIO27_PWM NULL
  998. #define DIO28_PIN PINA6
  999. #define DIO28_RPORT PINA
  1000. #define DIO28_WPORT PORTA
  1001. #define DIO28_DDR DDRA
  1002. #define DIO28_PWM NULL
  1003. #define DIO29_PIN PINA7
  1004. #define DIO29_RPORT PINA
  1005. #define DIO29_WPORT PORTA
  1006. #define DIO29_DDR DDRA
  1007. #define DIO29_PWM NULL
  1008. #define DIO30_PIN PINC7
  1009. #define DIO30_RPORT PINC
  1010. #define DIO30_WPORT PORTC
  1011. #define DIO30_DDR DDRC
  1012. #define DIO30_PWM NULL
  1013. #define DIO31_PIN PINC6
  1014. #define DIO31_RPORT PINC
  1015. #define DIO31_WPORT PORTC
  1016. #define DIO31_DDR DDRC
  1017. #define DIO31_PWM NULL
  1018. #define DIO32_PIN PINC5
  1019. #define DIO32_RPORT PINC
  1020. #define DIO32_WPORT PORTC
  1021. #define DIO32_DDR DDRC
  1022. #define DIO32_PWM NULL
  1023. #define DIO33_PIN PINC4
  1024. #define DIO33_RPORT PINC
  1025. #define DIO33_WPORT PORTC
  1026. #define DIO33_DDR DDRC
  1027. #define DIO33_PWM NULL
  1028. #define DIO34_PIN PINC3
  1029. #define DIO34_RPORT PINC
  1030. #define DIO34_WPORT PORTC
  1031. #define DIO34_DDR DDRC
  1032. #define DIO34_PWM NULL
  1033. #define DIO35_PIN PINC2
  1034. #define DIO35_RPORT PINC
  1035. #define DIO35_WPORT PORTC
  1036. #define DIO35_DDR DDRC
  1037. #define DIO35_PWM NULL
  1038. #define DIO36_PIN PINC1
  1039. #define DIO36_RPORT PINC
  1040. #define DIO36_WPORT PORTC
  1041. #define DIO36_DDR DDRC
  1042. #define DIO36_PWM NULL
  1043. #define DIO37_PIN PINC0
  1044. #define DIO37_RPORT PINC
  1045. #define DIO37_WPORT PORTC
  1046. #define DIO37_DDR DDRC
  1047. #define DIO37_PWM NULL
  1048. #define DIO38_PIN PIND7
  1049. #define DIO38_RPORT PIND
  1050. #define DIO38_WPORT PORTD
  1051. #define DIO38_DDR DDRD
  1052. #define DIO38_PWM NULL
  1053. #define DIO39_PIN PING2
  1054. #define DIO39_RPORT PING
  1055. #define DIO39_WPORT PORTG
  1056. #define DIO39_DDR DDRG
  1057. #define DIO39_PWM NULL
  1058. #define DIO40_PIN PING1
  1059. #define DIO40_RPORT PING
  1060. #define DIO40_WPORT PORTG
  1061. #define DIO40_DDR DDRG
  1062. #define DIO40_PWM NULL
  1063. #define DIO41_PIN PING0
  1064. #define DIO41_RPORT PING
  1065. #define DIO41_WPORT PORTG
  1066. #define DIO41_DDR DDRG
  1067. #define DIO41_PWM NULL
  1068. #define DIO42_PIN PINL7
  1069. #define DIO42_RPORT PINL
  1070. #define DIO42_WPORT PORTL
  1071. #define DIO42_DDR DDRL
  1072. #define DIO42_PWM NULL
  1073. #define DIO43_PIN PINL6
  1074. #define DIO43_RPORT PINL
  1075. #define DIO43_WPORT PORTL
  1076. #define DIO43_DDR DDRL
  1077. #define DIO43_PWM NULL
  1078. #define DIO44_PIN PINL5
  1079. #define DIO44_RPORT PINL
  1080. #define DIO44_WPORT PORTL
  1081. #define DIO44_DDR DDRL
  1082. #define DIO44_PWM &OCR5CL
  1083. #define DIO45_PIN PINL4
  1084. #define DIO45_RPORT PINL
  1085. #define DIO45_WPORT PORTL
  1086. #define DIO45_DDR DDRL
  1087. #define DIO45_PWM &OCR5BL
  1088. #define DIO46_PIN PINL3
  1089. #define DIO46_RPORT PINL
  1090. #define DIO46_WPORT PORTL
  1091. #define DIO46_DDR DDRL
  1092. #define DIO46_PWM &OCR5AL
  1093. #define DIO47_PIN PINL2
  1094. #define DIO47_RPORT PINL
  1095. #define DIO47_WPORT PORTL
  1096. #define DIO47_DDR DDRL
  1097. #define DIO47_PWM NULL
  1098. #define DIO48_PIN PINL1
  1099. #define DIO48_RPORT PINL
  1100. #define DIO48_WPORT PORTL
  1101. #define DIO48_DDR DDRL
  1102. #define DIO48_PWM NULL
  1103. #define DIO49_PIN PINL0
  1104. #define DIO49_RPORT PINL
  1105. #define DIO49_WPORT PORTL
  1106. #define DIO49_DDR DDRL
  1107. #define DIO49_PWM NULL
  1108. #define DIO50_PIN PINB3
  1109. #define DIO50_RPORT PINB
  1110. #define DIO50_WPORT PORTB
  1111. #define DIO50_DDR DDRB
  1112. #define DIO50_PWM NULL
  1113. #define DIO51_PIN PINB2
  1114. #define DIO51_RPORT PINB
  1115. #define DIO51_WPORT PORTB
  1116. #define DIO51_DDR DDRB
  1117. #define DIO51_PWM NULL
  1118. #define DIO52_PIN PINB1
  1119. #define DIO52_RPORT PINB
  1120. #define DIO52_WPORT PORTB
  1121. #define DIO52_DDR DDRB
  1122. #define DIO52_PWM NULL
  1123. #define DIO53_PIN PINB0
  1124. #define DIO53_RPORT PINB
  1125. #define DIO53_WPORT PORTB
  1126. #define DIO53_DDR DDRB
  1127. #define DIO53_PWM NULL
  1128. #define DIO54_PIN PINF0
  1129. #define DIO54_RPORT PINF
  1130. #define DIO54_WPORT PORTF
  1131. #define DIO54_DDR DDRF
  1132. #define DIO54_PWM NULL
  1133. #define DIO55_PIN PINF1
  1134. #define DIO55_RPORT PINF
  1135. #define DIO55_WPORT PORTF
  1136. #define DIO55_DDR DDRF
  1137. #define DIO55_PWM NULL
  1138. #define DIO56_PIN PINF2
  1139. #define DIO56_RPORT PINF
  1140. #define DIO56_WPORT PORTF
  1141. #define DIO56_DDR DDRF
  1142. #define DIO56_PWM NULL
  1143. #define DIO57_PIN PINF3
  1144. #define DIO57_RPORT PINF
  1145. #define DIO57_WPORT PORTF
  1146. #define DIO57_DDR DDRF
  1147. #define DIO57_PWM NULL
  1148. #define DIO58_PIN PINF4
  1149. #define DIO58_RPORT PINF
  1150. #define DIO58_WPORT PORTF
  1151. #define DIO58_DDR DDRF
  1152. #define DIO58_PWM NULL
  1153. #define DIO59_PIN PINF5
  1154. #define DIO59_RPORT PINF
  1155. #define DIO59_WPORT PORTF
  1156. #define DIO59_DDR DDRF
  1157. #define DIO59_PWM NULL
  1158. #define DIO60_PIN PINF6
  1159. #define DIO60_RPORT PINF
  1160. #define DIO60_WPORT PORTF
  1161. #define DIO60_DDR DDRF
  1162. #define DIO60_PWM NULL
  1163. #define DIO61_PIN PINF7
  1164. #define DIO61_RPORT PINF
  1165. #define DIO61_WPORT PORTF
  1166. #define DIO61_DDR DDRF
  1167. #define DIO61_PWM NULL
  1168. #define DIO62_PIN PINK0
  1169. #define DIO62_RPORT PINK
  1170. #define DIO62_WPORT PORTK
  1171. #define DIO62_DDR DDRK
  1172. #define DIO62_PWM NULL
  1173. #define DIO63_PIN PINK1
  1174. #define DIO63_RPORT PINK
  1175. #define DIO63_WPORT PORTK
  1176. #define DIO63_DDR DDRK
  1177. #define DIO63_PWM NULL
  1178. #define DIO64_PIN PINK2
  1179. #define DIO64_RPORT PINK
  1180. #define DIO64_WPORT PORTK
  1181. #define DIO64_DDR DDRK
  1182. #define DIO64_PWM NULL
  1183. #define DIO65_PIN PINK3
  1184. #define DIO65_RPORT PINK
  1185. #define DIO65_WPORT PORTK
  1186. #define DIO65_DDR DDRK
  1187. #define DIO65_PWM NULL
  1188. #define DIO66_PIN PINK4
  1189. #define DIO66_RPORT PINK
  1190. #define DIO66_WPORT PORTK
  1191. #define DIO66_DDR DDRK
  1192. #define DIO66_PWM NULL
  1193. #define DIO67_PIN PINK5
  1194. #define DIO67_RPORT PINK
  1195. #define DIO67_WPORT PORTK
  1196. #define DIO67_DDR DDRK
  1197. #define DIO67_PWM NULL
  1198. #define DIO68_PIN PINK6
  1199. #define DIO68_RPORT PINK
  1200. #define DIO68_WPORT PORTK
  1201. #define DIO68_DDR DDRK
  1202. #define DIO68_PWM NULL
  1203. #define DIO69_PIN PINK7
  1204. #define DIO69_RPORT PINK
  1205. #define DIO69_WPORT PORTK
  1206. #define DIO69_DDR DDRK
  1207. #define DIO69_PWM NULL
  1208. #define DIO70_PIN PING4
  1209. #define DIO70_RPORT PING
  1210. #define DIO70_WPORT PORTG
  1211. #define DIO70_DDR DDRG
  1212. #define DIO70_PWM NULL
  1213. #define DIO71_PIN PING3
  1214. #define DIO71_RPORT PING
  1215. #define DIO71_WPORT PORTG
  1216. #define DIO71_DDR DDRG
  1217. #define DIO71_PWM NULL
  1218. #define DIO72_PIN PINJ2
  1219. #define DIO72_RPORT PINJ
  1220. #define DIO72_WPORT PORTJ
  1221. #define DIO72_DDR DDRJ
  1222. #define DIO72_PWM NULL
  1223. #define DIO73_PIN PINJ3
  1224. #define DIO73_RPORT PINJ
  1225. #define DIO73_WPORT PORTJ
  1226. #define DIO73_DDR DDRJ
  1227. #define DIO73_PWM NULL
  1228. #define DIO74_PIN PINJ7
  1229. #define DIO74_RPORT PINJ
  1230. #define DIO74_WPORT PORTJ
  1231. #define DIO74_DDR DDRJ
  1232. #define DIO74_PWM NULL
  1233. #define DIO75_PIN PINJ4
  1234. #define DIO75_RPORT PINJ
  1235. #define DIO75_WPORT PORTJ
  1236. #define DIO75_DDR DDRJ
  1237. #define DIO75_PWM NULL
  1238. #define DIO76_PIN PINJ5
  1239. #define DIO76_RPORT PINJ
  1240. #define DIO76_WPORT PORTJ
  1241. #define DIO76_DDR DDRJ
  1242. #define DIO76_PWM NULL
  1243. #define DIO77_PIN PINJ6
  1244. #define DIO77_RPORT PINJ
  1245. #define DIO77_WPORT PORTJ
  1246. #define DIO77_DDR DDRJ
  1247. #define DIO77_PWM NULL
  1248. #define DIO78_PIN PINE2
  1249. #define DIO78_RPORT PINE
  1250. #define DIO78_WPORT PORTE
  1251. #define DIO78_DDR DDRE
  1252. #define DIO78_PWM NULL
  1253. #define DIO79_PIN PINE6
  1254. #define DIO79_RPORT PINE
  1255. #define DIO79_WPORT PORTE
  1256. #define DIO79_DDR DDRE
  1257. #define DIO79_PWM NULL
  1258. #define DIO80_PIN PINE7
  1259. #define DIO80_RPORT PINE
  1260. #define DIO80_WPORT PORTE
  1261. #define DIO80_DDR DDRE
  1262. #define DIO80_PWM NULL
  1263. #define DIO81_PIN PIND4
  1264. #define DIO81_RPORT PIND
  1265. #define DIO81_WPORT PORTD
  1266. #define DIO81_DDR DDRD
  1267. #define DIO81_PWM NULL
  1268. #define DIO82_PIN PIND5
  1269. #define DIO82_RPORT PIND
  1270. #define DIO82_WPORT PORTD
  1271. #define DIO82_DDR DDRD
  1272. #define DIO82_PWM NULL
  1273. #define DIO83_PIN PIND6
  1274. #define DIO83_RPORT PIND
  1275. #define DIO83_WPORT PORTD
  1276. #define DIO83_DDR DDRD
  1277. #define DIO83_PWM NULL
  1278. #define DIO84_PIN PINH2
  1279. #define DIO84_RPORT PINH
  1280. #define DIO84_WPORT PORTH
  1281. #define DIO84_DDR DDRH
  1282. #define DIO84_PWM NULL
  1283. #define DIO85_PIN PINH7
  1284. #define DIO85_RPORT PINH
  1285. #define DIO85_WPORT PORTH
  1286. #define DIO85_DDR DDRH
  1287. #define DIO85_PWM NULL
  1288. #undef PA0
  1289. #define PA0_PIN PINA0
  1290. #define PA0_RPORT PINA
  1291. #define PA0_WPORT PORTA
  1292. #define PA0_DDR DDRA
  1293. #define PA0_PWM NULL
  1294. #undef PA1
  1295. #define PA1_PIN PINA1
  1296. #define PA1_RPORT PINA
  1297. #define PA1_WPORT PORTA
  1298. #define PA1_DDR DDRA
  1299. #define PA1_PWM NULL
  1300. #undef PA2
  1301. #define PA2_PIN PINA2
  1302. #define PA2_RPORT PINA
  1303. #define PA2_WPORT PORTA
  1304. #define PA2_DDR DDRA
  1305. #define PA2_PWM NULL
  1306. #undef PA3
  1307. #define PA3_PIN PINA3
  1308. #define PA3_RPORT PINA
  1309. #define PA3_WPORT PORTA
  1310. #define PA3_DDR DDRA
  1311. #define PA3_PWM NULL
  1312. #undef PA4
  1313. #define PA4_PIN PINA4
  1314. #define PA4_RPORT PINA
  1315. #define PA4_WPORT PORTA
  1316. #define PA4_DDR DDRA
  1317. #define PA4_PWM NULL
  1318. #undef PA5
  1319. #define PA5_PIN PINA5
  1320. #define PA5_RPORT PINA
  1321. #define PA5_WPORT PORTA
  1322. #define PA5_DDR DDRA
  1323. #define PA5_PWM NULL
  1324. #undef PA6
  1325. #define PA6_PIN PINA6
  1326. #define PA6_RPORT PINA
  1327. #define PA6_WPORT PORTA
  1328. #define PA6_DDR DDRA
  1329. #define PA6_PWM NULL
  1330. #undef PA7
  1331. #define PA7_PIN PINA7
  1332. #define PA7_RPORT PINA
  1333. #define PA7_WPORT PORTA
  1334. #define PA7_DDR DDRA
  1335. #define PA7_PWM NULL
  1336. #undef PB0
  1337. #define PB0_PIN PINB0
  1338. #define PB0_RPORT PINB
  1339. #define PB0_WPORT PORTB
  1340. #define PB0_DDR DDRB
  1341. #define PB0_PWM NULL
  1342. #undef PB1
  1343. #define PB1_PIN PINB1
  1344. #define PB1_RPORT PINB
  1345. #define PB1_WPORT PORTB
  1346. #define PB1_DDR DDRB
  1347. #define PB1_PWM NULL
  1348. #undef PB2
  1349. #define PB2_PIN PINB2
  1350. #define PB2_RPORT PINB
  1351. #define PB2_WPORT PORTB
  1352. #define PB2_DDR DDRB
  1353. #define PB2_PWM NULL
  1354. #undef PB3
  1355. #define PB3_PIN PINB3
  1356. #define PB3_RPORT PINB
  1357. #define PB3_WPORT PORTB
  1358. #define PB3_DDR DDRB
  1359. #define PB3_PWM NULL
  1360. #undef PB4
  1361. #define PB4_PIN PINB4
  1362. #define PB4_RPORT PINB
  1363. #define PB4_WPORT PORTB
  1364. #define PB4_DDR DDRB
  1365. #define PB4_PWM &OCR2A
  1366. #undef PB5
  1367. #define PB5_PIN PINB5
  1368. #define PB5_RPORT PINB
  1369. #define PB5_WPORT PORTB
  1370. #define PB5_DDR DDRB
  1371. #define PB5_PWM NULL
  1372. #undef PB6
  1373. #define PB6_PIN PINB6
  1374. #define PB6_RPORT PINB
  1375. #define PB6_WPORT PORTB
  1376. #define PB6_DDR DDRB
  1377. #define PB6_PWM NULL
  1378. #undef PB7
  1379. #define PB7_PIN PINB7
  1380. #define PB7_RPORT PINB
  1381. #define PB7_WPORT PORTB
  1382. #define PB7_DDR DDRB
  1383. #define PB7_PWM &OCR0A
  1384. #undef PC0
  1385. #define PC0_PIN PINC0
  1386. #define PC0_RPORT PINC
  1387. #define PC0_WPORT PORTC
  1388. #define PC0_DDR DDRC
  1389. #define PC0_PWM NULL
  1390. #undef PC1
  1391. #define PC1_PIN PINC1
  1392. #define PC1_RPORT PINC
  1393. #define PC1_WPORT PORTC
  1394. #define PC1_DDR DDRC
  1395. #define PC1_PWM NULL
  1396. #undef PC2
  1397. #define PC2_PIN PINC2
  1398. #define PC2_RPORT PINC
  1399. #define PC2_WPORT PORTC
  1400. #define PC2_DDR DDRC
  1401. #define PC2_PWM NULL
  1402. #undef PC3
  1403. #define PC3_PIN PINC3
  1404. #define PC3_RPORT PINC
  1405. #define PC3_WPORT PORTC
  1406. #define PC3_DDR DDRC
  1407. #define PC3_PWM NULL
  1408. #undef PC4
  1409. #define PC4_PIN PINC4
  1410. #define PC4_RPORT PINC
  1411. #define PC4_WPORT PORTC
  1412. #define PC4_DDR DDRC
  1413. #define PC4_PWM NULL
  1414. #undef PC5
  1415. #define PC5_PIN PINC5
  1416. #define PC5_RPORT PINC
  1417. #define PC5_WPORT PORTC
  1418. #define PC5_DDR DDRC
  1419. #define PC5_PWM NULL
  1420. #undef PC6
  1421. #define PC6_PIN PINC6
  1422. #define PC6_RPORT PINC
  1423. #define PC6_WPORT PORTC
  1424. #define PC6_DDR DDRC
  1425. #define PC6_PWM NULL
  1426. #undef PC7
  1427. #define PC7_PIN PINC7
  1428. #define PC7_RPORT PINC
  1429. #define PC7_WPORT PORTC
  1430. #define PC7_DDR DDRC
  1431. #define PC7_PWM NULL
  1432. #undef PD0
  1433. #define PD0_PIN PIND0
  1434. #define PD0_RPORT PIND
  1435. #define PD0_WPORT PORTD
  1436. #define PD0_DDR DDRD
  1437. #define PD0_PWM NULL
  1438. #undef PD1
  1439. #define PD1_PIN PIND1
  1440. #define PD1_RPORT PIND
  1441. #define PD1_WPORT PORTD
  1442. #define PD1_DDR DDRD
  1443. #define PD1_PWM NULL
  1444. #undef PD2
  1445. #define PD2_PIN PIND2
  1446. #define PD2_RPORT PIND
  1447. #define PD2_WPORT PORTD
  1448. #define PD2_DDR DDRD
  1449. #define PD2_PWM NULL
  1450. #undef PD3
  1451. #define PD3_PIN PIND3
  1452. #define PD3_RPORT PIND
  1453. #define PD3_WPORT PORTD
  1454. #define PD3_DDR DDRD
  1455. #define PD3_PWM NULL
  1456. #undef PD4
  1457. #define PD4_PIN PIND4
  1458. #define PD4_RPORT PIND
  1459. #define PD4_WPORT PORTD
  1460. #define PD4_DDR DDRD
  1461. #define PD4_PWM NULL
  1462. #undef PD5
  1463. #define PD5_PIN PIND5
  1464. #define PD5_RPORT PIND
  1465. #define PD5_WPORT PORTD
  1466. #define PD5_DDR DDRD
  1467. #define PD5_PWM NULL
  1468. #undef PD6
  1469. #define PD6_PIN PIND6
  1470. #define PD6_RPORT PIND
  1471. #define PD6_WPORT PORTD
  1472. #define PD6_DDR DDRD
  1473. #define PD6_PWM NULL
  1474. #undef PD7
  1475. #define PD7_PIN PIND7
  1476. #define PD7_RPORT PIND
  1477. #define PD7_WPORT PORTD
  1478. #define PD7_DDR DDRD
  1479. #define PD7_PWM NULL
  1480. #undef PE0
  1481. #define PE0_PIN PINE0
  1482. #define PE0_RPORT PINE
  1483. #define PE0_WPORT PORTE
  1484. #define PE0_DDR DDRE
  1485. #define PE0_PWM NULL
  1486. #undef PE1
  1487. #define PE1_PIN PINE1
  1488. #define PE1_RPORT PINE
  1489. #define PE1_WPORT PORTE
  1490. #define PE1_DDR DDRE
  1491. #define PE1_PWM NULL
  1492. #undef PE2
  1493. #define PE2_PIN PINE2
  1494. #define PE2_RPORT PINE
  1495. #define PE2_WPORT PORTE
  1496. #define PE2_DDR DDRE
  1497. #define PE2_PWM NULL
  1498. #undef PE3
  1499. #define PE3_PIN PINE3
  1500. #define PE3_RPORT PINE
  1501. #define PE3_WPORT PORTE
  1502. #define PE3_DDR DDRE
  1503. #define PE3_PWM &OCR3AL
  1504. #undef PE4
  1505. #define PE4_PIN PINE4
  1506. #define PE4_RPORT PINE
  1507. #define PE4_WPORT PORTE
  1508. #define PE4_DDR DDRE
  1509. #define PE4_PWM &OCR3BL
  1510. #undef PE5
  1511. #define PE5_PIN PINE5
  1512. #define PE5_RPORT PINE
  1513. #define PE5_WPORT PORTE
  1514. #define PE5_DDR DDRE
  1515. #define PE5_PWM &OCR3CL
  1516. #undef PE6
  1517. #define PE6_PIN PINE6
  1518. #define PE6_RPORT PINE
  1519. #define PE6_WPORT PORTE
  1520. #define PE6_DDR DDRE
  1521. #define PE6_PWM NULL
  1522. #undef PE7
  1523. #define PE7_PIN PINE7
  1524. #define PE7_RPORT PINE
  1525. #define PE7_WPORT PORTE
  1526. #define PE7_DDR DDRE
  1527. #define PE7_PWM NULL
  1528. #undef PF0
  1529. #define PF0_PIN PINF0
  1530. #define PF0_RPORT PINF
  1531. #define PF0_WPORT PORTF
  1532. #define PF0_DDR DDRF
  1533. #define PF0_PWM NULL
  1534. #undef PF1
  1535. #define PF1_PIN PINF1
  1536. #define PF1_RPORT PINF
  1537. #define PF1_WPORT PORTF
  1538. #define PF1_DDR DDRF
  1539. #define PF1_PWM NULL
  1540. #undef PF2
  1541. #define PF2_PIN PINF2
  1542. #define PF2_RPORT PINF
  1543. #define PF2_WPORT PORTF
  1544. #define PF2_DDR DDRF
  1545. #define PF2_PWM NULL
  1546. #undef PF3
  1547. #define PF3_PIN PINF3
  1548. #define PF3_RPORT PINF
  1549. #define PF3_WPORT PORTF
  1550. #define PF3_DDR DDRF
  1551. #define PF3_PWM NULL
  1552. #undef PF4
  1553. #define PF4_PIN PINF4
  1554. #define PF4_RPORT PINF
  1555. #define PF4_WPORT PORTF
  1556. #define PF4_DDR DDRF
  1557. #define PF4_PWM NULL
  1558. #undef PF5
  1559. #define PF5_PIN PINF5
  1560. #define PF5_RPORT PINF
  1561. #define PF5_WPORT PORTF
  1562. #define PF5_DDR DDRF
  1563. #define PF5_PWM NULL
  1564. #undef PF6
  1565. #define PF6_PIN PINF6
  1566. #define PF6_RPORT PINF
  1567. #define PF6_WPORT PORTF
  1568. #define PF6_DDR DDRF
  1569. #define PF6_PWM NULL
  1570. #undef PF7
  1571. #define PF7_PIN PINF7
  1572. #define PF7_RPORT PINF
  1573. #define PF7_WPORT PORTF
  1574. #define PF7_DDR DDRF
  1575. #define PF7_PWM NULL
  1576. #undef PG0
  1577. #define PG0_PIN PING0
  1578. #define PG0_RPORT PING
  1579. #define PG0_WPORT PORTG
  1580. #define PG0_DDR DDRG
  1581. #define PG0_PWM NULL
  1582. #undef PG1
  1583. #define PG1_PIN PING1
  1584. #define PG1_RPORT PING
  1585. #define PG1_WPORT PORTG
  1586. #define PG1_DDR DDRG
  1587. #define PG1_PWM NULL
  1588. #undef PG2
  1589. #define PG2_PIN PING2
  1590. #define PG2_RPORT PING
  1591. #define PG2_WPORT PORTG
  1592. #define PG2_DDR DDRG
  1593. #define PG2_PWM NULL
  1594. #undef PG3
  1595. #define PG3_PIN PING3
  1596. #define PG3_RPORT PING
  1597. #define PG3_WPORT PORTG
  1598. #define PG3_DDR DDRG
  1599. #define PG3_PWM NULL
  1600. #undef PG4
  1601. #define PG4_PIN PING4
  1602. #define PG4_RPORT PING
  1603. #define PG4_WPORT PORTG
  1604. #define PG4_DDR DDRG
  1605. #define PG4_PWM NULL
  1606. #undef PG5
  1607. #define PG5_PIN PING5
  1608. #define PG5_RPORT PING
  1609. #define PG5_WPORT PORTG
  1610. #define PG5_DDR DDRG
  1611. #define PG5_PWM &OCR0B
  1612. #undef PH0
  1613. #define PH0_PIN PINH0
  1614. #define PH0_RPORT PINH
  1615. #define PH0_WPORT PORTH
  1616. #define PH0_DDR DDRH
  1617. #define PH0_PWM NULL
  1618. #undef PH1
  1619. #define PH1_PIN PINH1
  1620. #define PH1_RPORT PINH
  1621. #define PH1_WPORT PORTH
  1622. #define PH1_DDR DDRH
  1623. #define PH1_PWM NULL
  1624. #undef PH2
  1625. #define PH2_PIN PINH2
  1626. #define PH2_RPORT PINH
  1627. #define PH2_WPORT PORTH
  1628. #define PH2_DDR DDRH
  1629. #define PH2_PWM NULL
  1630. #undef PH3
  1631. #define PH3_PIN PINH3
  1632. #define PH3_RPORT PINH
  1633. #define PH3_WPORT PORTH
  1634. #define PH3_DDR DDRH
  1635. #define PH3_PWM &OCR4AL
  1636. #undef PH4
  1637. #define PH4_PIN PINH4
  1638. #define PH4_RPORT PINH
  1639. #define PH4_WPORT PORTH
  1640. #define PH4_DDR DDRH
  1641. #define PH4_PWM &OCR4BL
  1642. #undef PH5
  1643. #define PH5_PIN PINH5
  1644. #define PH5_RPORT PINH
  1645. #define PH5_WPORT PORTH
  1646. #define PH5_DDR DDRH
  1647. #define PH5_PWM &OCR4CL
  1648. #undef PH6
  1649. #define PH6_PIN PINH6
  1650. #define PH6_RPORT PINH
  1651. #define PH6_WPORT PORTH
  1652. #define PH6_DDR DDRH
  1653. #define PH6_PWM &OCR2B
  1654. #undef PH7
  1655. #define PH7_PIN PINH7
  1656. #define PH7_RPORT PINH
  1657. #define PH7_WPORT PORTH
  1658. #define PH7_DDR DDRH
  1659. #define PH7_PWM NULL
  1660. #undef PJ0
  1661. #define PJ0_PIN PINJ0
  1662. #define PJ0_RPORT PINJ
  1663. #define PJ0_WPORT PORTJ
  1664. #define PJ0_DDR DDRJ
  1665. #define PJ0_PWM NULL
  1666. #undef PJ1
  1667. #define PJ1_PIN PINJ1
  1668. #define PJ1_RPORT PINJ
  1669. #define PJ1_WPORT PORTJ
  1670. #define PJ1_DDR DDRJ
  1671. #define PJ1_PWM NULL
  1672. #undef PJ2
  1673. #define PJ2_PIN PINJ2
  1674. #define PJ2_RPORT PINJ
  1675. #define PJ2_WPORT PORTJ
  1676. #define PJ2_DDR DDRJ
  1677. #define PJ2_PWM NULL
  1678. #undef PJ3
  1679. #define PJ3_PIN PINJ3
  1680. #define PJ3_RPORT PINJ
  1681. #define PJ3_WPORT PORTJ
  1682. #define PJ3_DDR DDRJ
  1683. #define PJ3_PWM NULL
  1684. #undef PJ4
  1685. #define PJ4_PIN PINJ4
  1686. #define PJ4_RPORT PINJ
  1687. #define PJ4_WPORT PORTJ
  1688. #define PJ4_DDR DDRJ
  1689. #define PJ4_PWM NULL
  1690. #undef PJ5
  1691. #define PJ5_PIN PINJ5
  1692. #define PJ5_RPORT PINJ
  1693. #define PJ5_WPORT PORTJ
  1694. #define PJ5_DDR DDRJ
  1695. #define PJ5_PWM NULL
  1696. #undef PJ6
  1697. #define PJ6_PIN PINJ6
  1698. #define PJ6_RPORT PINJ
  1699. #define PJ6_WPORT PORTJ
  1700. #define PJ6_DDR DDRJ
  1701. #define PJ6_PWM NULL
  1702. #undef PJ7
  1703. #define PJ7_PIN PINJ7
  1704. #define PJ7_RPORT PINJ
  1705. #define PJ7_WPORT PORTJ
  1706. #define PJ7_DDR DDRJ
  1707. #define PJ7_PWM NULL
  1708. #undef PK0
  1709. #define PK0_PIN PINK0
  1710. #define PK0_RPORT PINK
  1711. #define PK0_WPORT PORTK
  1712. #define PK0_DDR DDRK
  1713. #define PK0_PWM NULL
  1714. #undef PK1
  1715. #define PK1_PIN PINK1
  1716. #define PK1_RPORT PINK
  1717. #define PK1_WPORT PORTK
  1718. #define PK1_DDR DDRK
  1719. #define PK1_PWM NULL
  1720. #undef PK2
  1721. #define PK2_PIN PINK2
  1722. #define PK2_RPORT PINK
  1723. #define PK2_WPORT PORTK
  1724. #define PK2_DDR DDRK
  1725. #define PK2_PWM NULL
  1726. #undef PK3
  1727. #define PK3_PIN PINK3
  1728. #define PK3_RPORT PINK
  1729. #define PK3_WPORT PORTK
  1730. #define PK3_DDR DDRK
  1731. #define PK3_PWM NULL
  1732. #undef PK4
  1733. #define PK4_PIN PINK4
  1734. #define PK4_RPORT PINK
  1735. #define PK4_WPORT PORTK
  1736. #define PK4_DDR DDRK
  1737. #define PK4_PWM NULL
  1738. #undef PK5
  1739. #define PK5_PIN PINK5
  1740. #define PK5_RPORT PINK
  1741. #define PK5_WPORT PORTK
  1742. #define PK5_DDR DDRK
  1743. #define PK5_PWM NULL
  1744. #undef PK6
  1745. #define PK6_PIN PINK6
  1746. #define PK6_RPORT PINK
  1747. #define PK6_WPORT PORTK
  1748. #define PK6_DDR DDRK
  1749. #define PK6_PWM NULL
  1750. #undef PK7
  1751. #define PK7_PIN PINK7
  1752. #define PK7_RPORT PINK
  1753. #define PK7_WPORT PORTK
  1754. #define PK7_DDR DDRK
  1755. #define PK7_PWM NULL
  1756. #undef PL0
  1757. #define PL0_PIN PINL0
  1758. #define PL0_RPORT PINL
  1759. #define PL0_WPORT PORTL
  1760. #define PL0_DDR DDRL
  1761. #define PL0_PWM NULL
  1762. #undef PL1
  1763. #define PL1_PIN PINL1
  1764. #define PL1_RPORT PINL
  1765. #define PL1_WPORT PORTL
  1766. #define PL1_DDR DDRL
  1767. #define PL1_PWM NULL
  1768. #undef PL2
  1769. #define PL2_PIN PINL2
  1770. #define PL2_RPORT PINL
  1771. #define PL2_WPORT PORTL
  1772. #define PL2_DDR DDRL
  1773. #define PL2_PWM NULL
  1774. #undef PL3
  1775. #define PL3_PIN PINL3
  1776. #define PL3_RPORT PINL
  1777. #define PL3_WPORT PORTL
  1778. #define PL3_DDR DDRL
  1779. #define PL3_PWM &OCR5AL
  1780. #undef PL4
  1781. #define PL4_PIN PINL4
  1782. #define PL4_RPORT PINL
  1783. #define PL4_WPORT PORTL
  1784. #define PL4_DDR DDRL
  1785. #define PL4_PWM &OCR5BL
  1786. #undef PL5
  1787. #define PL5_PIN PINL5
  1788. #define PL5_RPORT PINL
  1789. #define PL5_WPORT PORTL
  1790. #define PL5_DDR DDRL
  1791. #define PL5_PWM &OCR5CL
  1792. #undef PL6
  1793. #define PL6_PIN PINL6
  1794. #define PL6_RPORT PINL
  1795. #define PL6_WPORT PORTL
  1796. #define PL6_DDR DDRL
  1797. #define PL6_PWM NULL
  1798. #undef PL7
  1799. #define PL7_PIN PINL7
  1800. #define PL7_RPORT PINL
  1801. #define PL7_WPORT PORTL
  1802. #define PL7_DDR DDRL
  1803. #define PL7_PWM NULL
  1804. #endif // __AVR_ATmega(1280|2560)__
  1805. #if defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__)
  1806. // change for your board
  1807. #define DEBUG_LED DIO31 /* led D5 red */
  1808. /**
  1809. * pins
  1810. */
  1811. //#define AT90USBxx_TEENSYPP_ASSIGNMENTS // Use Teensy++ 2.0 assignments
  1812. #ifndef AT90USBxx_TEENSYPP_ASSIGNMENTS // Use traditional Marlin pin assignments
  1813. // SPI
  1814. #define SCK DIO9 // 21
  1815. #define MISO DIO11 // 23
  1816. #define MOSI DIO10 // 22
  1817. #define SS DIO8 // 20
  1818. #define DIO0_PIN PINA0
  1819. #define DIO0_RPORT PINA
  1820. #define DIO0_WPORT PORTA
  1821. #define DIO0_PWM NULL
  1822. #define DIO0_DDR DDRA
  1823. #define DIO1_PIN PINA1
  1824. #define DIO1_RPORT PINA
  1825. #define DIO1_WPORT PORTA
  1826. #define DIO1_PWM NULL
  1827. #define DIO1_DDR DDRA
  1828. #define DIO2_PIN PINA2
  1829. #define DIO2_RPORT PINA
  1830. #define DIO2_WPORT PORTA
  1831. #define DIO2_PWM NULL
  1832. #define DIO2_DDR DDRA
  1833. #define DIO3_PIN PINA3
  1834. #define DIO3_RPORT PINA
  1835. #define DIO3_WPORT PORTA
  1836. #define DIO3_PWM NULL
  1837. #define DIO3_DDR DDRA
  1838. #define DIO4_PIN PINA4
  1839. #define DIO4_RPORT PINA
  1840. #define DIO4_WPORT PORTA
  1841. #define DIO4_PWM NULL
  1842. #define DIO4_DDR DDRA
  1843. #define DIO5_PIN PINA5
  1844. #define DIO5_RPORT PINA
  1845. #define DIO5_WPORT PORTA
  1846. #define DIO5_PWM NULL
  1847. #define DIO5_DDR DDRA
  1848. #define DIO6_PIN PINA6
  1849. #define DIO6_RPORT PINA
  1850. #define DIO6_WPORT PORTA
  1851. #define DIO6_PWM NULL
  1852. #define DIO6_DDR DDRA
  1853. #define DIO7_PIN PINA7
  1854. #define DIO7_RPORT PINA
  1855. #define DIO7_WPORT PORTA
  1856. #define DIO7_PWM NULL
  1857. #define DIO7_DDR DDRA
  1858. #define DIO8_PIN PINB0
  1859. #define DIO8_RPORT PINB
  1860. #define DIO8_WPORT PORTB
  1861. #define DIO8_PWM NULL
  1862. #define DIO8_DDR DDRB
  1863. #define DIO9_PIN PINB1
  1864. #define DIO9_RPORT PINB
  1865. #define DIO9_WPORT PORTB
  1866. #define DIO9_PWM NULL
  1867. #define DIO9_DDR DDRB
  1868. #define DIO10_PIN PINB2
  1869. #define DIO10_RPORT PINB
  1870. #define DIO10_WPORT PORTB
  1871. #define DIO10_PWM NULL
  1872. #define DIO10_DDR DDRB
  1873. #define DIO11_PIN PINB3
  1874. #define DIO11_RPORT PINB
  1875. #define DIO11_WPORT PORTB
  1876. #define DIO11_PWM NULL
  1877. #define DIO11_DDR DDRB
  1878. #define DIO12_PIN PINB4
  1879. #define DIO12_RPORT PINB
  1880. #define DIO12_WPORT PORTB
  1881. #define DIO12_PWM NULL
  1882. #define DIO12_DDR DDRB
  1883. #define DIO13_PIN PINB5
  1884. #define DIO13_RPORT PINB
  1885. #define DIO13_WPORT PORTB
  1886. #define DIO13_PWM NULL
  1887. #define DIO13_DDR DDRB
  1888. #define DIO14_PIN PINB6
  1889. #define DIO14_RPORT PINB
  1890. #define DIO14_WPORT PORTB
  1891. #define DIO14_PWM NULL
  1892. #define DIO14_DDR DDRB
  1893. #define DIO15_PIN PINB7
  1894. #define DIO15_RPORT PINB
  1895. #define DIO15_WPORT PORTB
  1896. #define DIO15_PWM NULL
  1897. #define DIO15_DDR DDRB
  1898. #define DIO16_PIN PINC0
  1899. #define DIO16_RPORT PINC
  1900. #define DIO16_WPORT PORTC
  1901. #define DIO16_PWM NULL
  1902. #define DIO16_DDR DDRC
  1903. #define DIO17_PIN PINC1
  1904. #define DIO17_RPORT PINC
  1905. #define DIO17_WPORT PORTC
  1906. #define DIO17_PWM NULL
  1907. #define DIO17_DDR DDRC
  1908. #define DIO18_PIN PINC2
  1909. #define DIO18_RPORT PINC
  1910. #define DIO18_WPORT PORTC
  1911. #define DIO18_PWM NULL
  1912. #define DIO18_DDR DDRC
  1913. #define DIO19_PIN PINC3
  1914. #define DIO19_RPORT PINC
  1915. #define DIO19_WPORT PORTC
  1916. #define DIO19_PWM NULL
  1917. #define DIO19_DDR DDRC
  1918. #define DIO20_PIN PINC4
  1919. #define DIO20_RPORT PINC
  1920. #define DIO20_WPORT PORTC
  1921. #define DIO20_PWM NULL
  1922. #define DIO20_DDR DDRC
  1923. #define DIO21_PIN PINC5
  1924. #define DIO21_RPORT PINC
  1925. #define DIO21_WPORT PORTC
  1926. #define DIO21_PWM NULL
  1927. #define DIO21_DDR DDRC
  1928. #define DIO22_PIN PINC6
  1929. #define DIO22_RPORT PINC
  1930. #define DIO22_WPORT PORTC
  1931. #define DIO22_PWM NULL
  1932. #define DIO22_DDR DDRC
  1933. #define DIO23_PIN PINC7
  1934. #define DIO23_RPORT PINC
  1935. #define DIO23_WPORT PORTC
  1936. #define DIO23_PWM NULL
  1937. #define DIO23_DDR DDRC
  1938. #define DIO24_PIN PIND0
  1939. #define DIO24_RPORT PIND
  1940. #define DIO24_WPORT PORTD
  1941. #define DIO24_PWM NULL
  1942. #define DIO24_DDR DDRD
  1943. #define DIO25_PIN PIND1
  1944. #define DIO25_RPORT PIND
  1945. #define DIO25_WPORT PORTD
  1946. #define DIO25_PWM NULL
  1947. #define DIO25_DDR DDRD
  1948. #define DIO26_PIN PIND2
  1949. #define DIO26_RPORT PIND
  1950. #define DIO26_WPORT PORTD
  1951. #define DIO26_PWM NULL
  1952. #define DIO26_DDR DDRD
  1953. #define DIO27_PIN PIND3
  1954. #define DIO27_RPORT PIND
  1955. #define DIO27_WPORT PORTD
  1956. #define DIO27_PWM NULL
  1957. #define DIO27_DDR DDRD
  1958. #define DIO28_PIN PIND4
  1959. #define DIO28_RPORT PIND
  1960. #define DIO28_WPORT PORTD
  1961. #define DIO28_PWM NULL
  1962. #define DIO28_DDR DDRD
  1963. #define DIO29_PIN PIND5
  1964. #define DIO29_RPORT PIND
  1965. #define DIO29_WPORT PORTD
  1966. #define DIO29_PWM NULL
  1967. #define DIO29_DDR DDRD
  1968. #define DIO30_PIN PIND6
  1969. #define DIO30_RPORT PIND
  1970. #define DIO30_WPORT PORTD
  1971. #define DIO30_PWM NULL
  1972. #define DIO30_DDR DDRD
  1973. #define DIO31_PIN PIND7
  1974. #define DIO31_RPORT PIND
  1975. #define DIO31_WPORT PORTD
  1976. #define DIO31_PWM NULL
  1977. #define DIO31_DDR DDRD
  1978. #define DIO32_PIN PINE0
  1979. #define DIO32_RPORT PINE
  1980. #define DIO32_WPORT PORTE
  1981. #define DIO32_PWM NULL
  1982. #define DIO32_DDR DDRE
  1983. #define DIO33_PIN PINE1
  1984. #define DIO33_RPORT PINE
  1985. #define DIO33_WPORT PORTE
  1986. #define DIO33_PWM NULL
  1987. #define DIO33_DDR DDRE
  1988. #define DIO34_PIN PINE2
  1989. #define DIO34_RPORT PINE
  1990. #define DIO34_WPORT PORTE
  1991. #define DIO34_PWM NULL
  1992. #define DIO34_DDR DDRE
  1993. #define DIO35_PIN PINE3
  1994. #define DIO35_RPORT PINE
  1995. #define DIO35_WPORT PORTE
  1996. #define DIO35_PWM NULL
  1997. #define DIO35_DDR DDRE
  1998. #define DIO36_PIN PINE4
  1999. #define DIO36_RPORT PINE
  2000. #define DIO36_WPORT PORTE
  2001. #define DIO36_PWM NULL
  2002. #define DIO36_DDR DDRE
  2003. #define DIO37_PIN PINE5
  2004. #define DIO37_RPORT PINE
  2005. #define DIO37_WPORT PORTE
  2006. #define DIO37_PWM NULL
  2007. #define DIO37_DDR DDRE
  2008. #define DIO38_PIN PINE6
  2009. #define DIO38_RPORT PINE
  2010. #define DIO38_WPORT PORTE
  2011. #define DIO38_PWM NULL
  2012. #define DIO38_DDR DDRE
  2013. #define DIO39_PIN PINE7
  2014. #define DIO39_RPORT PINE
  2015. #define DIO39_WPORT PORTE
  2016. #define DIO39_PWM NULL
  2017. #define DIO39_DDR DDRE
  2018. #define AIO0_PIN PINF0
  2019. #define AIO0_RPORT PINF
  2020. #define AIO0_WPORT PORTF
  2021. #define AIO0_PWM NULL
  2022. #define AIO0_DDR DDRF
  2023. #define AIO1_PIN PINF1
  2024. #define AIO1_RPORT PINF
  2025. #define AIO1_WPORT PORTF
  2026. #define AIO1_PWM NULL
  2027. #define AIO1_DDR DDRF
  2028. #define AIO2_PIN PINF2
  2029. #define AIO2_RPORT PINF
  2030. #define AIO2_WPORT PORTF
  2031. #define AIO2_PWM NULL
  2032. #define AIO2_DDR DDRF
  2033. #define AIO3_PIN PINF3
  2034. #define AIO3_RPORT PINF
  2035. #define AIO3_WPORT PORTF
  2036. #define AIO3_PWM NULL
  2037. #define AIO3_DDR DDRF
  2038. #define AIO4_PIN PINF4
  2039. #define AIO4_RPORT PINF
  2040. #define AIO4_WPORT PORTF
  2041. #define AIO4_PWM NULL
  2042. #define AIO4_DDR DDRF
  2043. #define AIO5_PIN PINF5
  2044. #define AIO5_RPORT PINF
  2045. #define AIO5_WPORT PORTF
  2046. #define AIO5_PWM NULL
  2047. #define AIO5_DDR DDRF
  2048. #define AIO6_PIN PINF6
  2049. #define AIO6_RPORT PINF
  2050. #define AIO6_WPORT PORTF
  2051. #define AIO6_PWM NULL
  2052. #define AIO6_DDR DDRF
  2053. #define AIO7_PIN PINF7
  2054. #define AIO7_RPORT PINF
  2055. #define AIO7_WPORT PORTF
  2056. #define AIO7_PWM NULL
  2057. #define AIO7_DDR DDRF
  2058. #define DIO40_PIN PINF0
  2059. #define DIO40_RPORT PINF
  2060. #define DIO40_WPORT PORTF
  2061. #define DIO40_PWM NULL
  2062. #define DIO40_DDR DDRF
  2063. #define DIO41_PIN PINF1
  2064. #define DIO41_RPORT PINF
  2065. #define DIO41_WPORT PORTF
  2066. #define DIO41_PWM NULL
  2067. #define DIO41_DDR DDRF
  2068. #define DIO42_PIN PINF2
  2069. #define DIO42_RPORT PINF
  2070. #define DIO42_WPORT PORTF
  2071. #define DIO42_PWM NULL
  2072. #define DIO42_DDR DDRF
  2073. #define DIO43_PIN PINF3
  2074. #define DIO43_RPORT PINF
  2075. #define DIO43_WPORT PORTF
  2076. #define DIO43_PWM NULL
  2077. #define DIO43_DDR DDRF
  2078. #define DIO44_PIN PINF4
  2079. #define DIO44_RPORT PINF
  2080. #define DIO44_WPORT PORTF
  2081. #define DIO44_PWM NULL
  2082. #define DIO44_DDR DDRF
  2083. #define DIO45_PIN PINF5
  2084. #define DIO45_RPORT PINF
  2085. #define DIO45_WPORT PORTF
  2086. #define DIO45_PWM NULL
  2087. #define DIO45_DDR DDRF
  2088. #define DIO46_PIN PINF6
  2089. #define DIO46_RPORT PINF
  2090. #define DIO46_WPORT PORTF
  2091. #define DIO46_PWM NULL
  2092. #define DIO46_DDR DDRF
  2093. #define DIO47_PIN PINF7
  2094. #define DIO47_RPORT PINF
  2095. #define DIO47_WPORT PORTF
  2096. #define DIO47_PWM NULL
  2097. #define DIO47_DDR DDRF
  2098. #undef PA0
  2099. #define PA0_PIN PINA0
  2100. #define PA0_RPORT PINA
  2101. #define PA0_WPORT PORTA
  2102. #define PA0_PWM NULL
  2103. #define PA0_DDR DDRA
  2104. #undef PA1
  2105. #define PA1_PIN PINA1
  2106. #define PA1_RPORT PINA
  2107. #define PA1_WPORT PORTA
  2108. #define PA1_PWM NULL
  2109. #define PA1_DDR DDRA
  2110. #undef PA2
  2111. #define PA2_PIN PINA2
  2112. #define PA2_RPORT PINA
  2113. #define PA2_WPORT PORTA
  2114. #define PA2_PWM NULL
  2115. #define PA2_DDR DDRA
  2116. #undef PA3
  2117. #define PA3_PIN PINA3
  2118. #define PA3_RPORT PINA
  2119. #define PA3_WPORT PORTA
  2120. #define PA3_PWM NULL
  2121. #define PA3_DDR DDRA
  2122. #undef PA4
  2123. #define PA4_PIN PINA4
  2124. #define PA4_RPORT PINA
  2125. #define PA4_WPORT PORTA
  2126. #define PA4_PWM NULL
  2127. #define PA4_DDR DDRA
  2128. #undef PA5
  2129. #define PA5_PIN PINA5
  2130. #define PA5_RPORT PINA
  2131. #define PA5_WPORT PORTA
  2132. #define PA5_PWM NULL
  2133. #define PA5_DDR DDRA
  2134. #undef PA6
  2135. #define PA6_PIN PINA6
  2136. #define PA6_RPORT PINA
  2137. #define PA6_WPORT PORTA
  2138. #define PA6_PWM NULL
  2139. #define PA6_DDR DDRA
  2140. #undef PA7
  2141. #define PA7_PIN PINA7
  2142. #define PA7_RPORT PINA
  2143. #define PA7_WPORT PORTA
  2144. #define PA7_PWM NULL
  2145. #define PA7_DDR DDRA
  2146. #undef PB0
  2147. #define PB0_PIN PINB0
  2148. #define PB0_RPORT PINB
  2149. #define PB0_WPORT PORTB
  2150. #define PB0_PWM NULL
  2151. #define PB0_DDR DDRB
  2152. #undef PB1
  2153. #define PB1_PIN PINB1
  2154. #define PB1_RPORT PINB
  2155. #define PB1_WPORT PORTB
  2156. #define PB1_PWM NULL
  2157. #define PB1_DDR DDRB
  2158. #undef PB2
  2159. #define PB2_PIN PINB2
  2160. #define PB2_RPORT PINB
  2161. #define PB2_WPORT PORTB
  2162. #define PB2_PWM NULL
  2163. #define PB2_DDR DDRB
  2164. #undef PB3
  2165. #define PB3_PIN PINB3
  2166. #define PB3_RPORT PINB
  2167. #define PB3_WPORT PORTB
  2168. #define PB3_PWM NULL
  2169. #define PB3_DDR DDRB
  2170. #undef PB4
  2171. #define PB4_PIN PINB4
  2172. #define PB4_RPORT PINB
  2173. #define PB4_WPORT PORTB
  2174. #define PB4_PWM NULL
  2175. #define PB4_DDR DDRB
  2176. #undef PB5
  2177. #define PB5_PIN PINB5
  2178. #define PB5_RPORT PINB
  2179. #define PB5_WPORT PORTB
  2180. #define PB5_PWM NULL
  2181. #define PB5_DDR DDRB
  2182. #undef PB6
  2183. #define PB6_PIN PINB6
  2184. #define PB6_RPORT PINB
  2185. #define PB6_WPORT PORTB
  2186. #define PB6_PWM NULL
  2187. #define PB6_DDR DDRB
  2188. #undef PB7
  2189. #define PB7_PIN PINB7
  2190. #define PB7_RPORT PINB
  2191. #define PB7_WPORT PORTB
  2192. #define PB7_PWM NULL
  2193. #define PB7_DDR DDRB
  2194. #undef PC0
  2195. #define PC0_PIN PINC0
  2196. #define PC0_RPORT PINC
  2197. #define PC0_WPORT PORTC
  2198. #define PC0_PWM NULL
  2199. #define PC0_DDR DDRC
  2200. #undef PC1
  2201. #define PC1_PIN PINC1
  2202. #define PC1_RPORT PINC
  2203. #define PC1_WPORT PORTC
  2204. #define PC1_PWM NULL
  2205. #define PC1_DDR DDRC
  2206. #undef PC2
  2207. #define PC2_PIN PINC2
  2208. #define PC2_RPORT PINC
  2209. #define PC2_WPORT PORTC
  2210. #define PC2_PWM NULL
  2211. #define PC2_DDR DDRC
  2212. #undef PC3
  2213. #define PC3_PIN PINC3
  2214. #define PC3_RPORT PINC
  2215. #define PC3_WPORT PORTC
  2216. #define PC3_PWM NULL
  2217. #define PC3_DDR DDRC
  2218. #undef PC4
  2219. #define PC4_PIN PINC4
  2220. #define PC4_RPORT PINC
  2221. #define PC4_WPORT PORTC
  2222. #define PC4_PWM NULL
  2223. #define PC4_DDR DDRC
  2224. #undef PC5
  2225. #define PC5_PIN PINC5
  2226. #define PC5_RPORT PINC
  2227. #define PC5_WPORT PORTC
  2228. #define PC5_PWM NULL
  2229. #define PC5_DDR DDRC
  2230. #undef PC6
  2231. #define PC6_PIN PINC6
  2232. #define PC6_RPORT PINC
  2233. #define PC6_WPORT PORTC
  2234. #define PC6_PWM NULL
  2235. #define PC6_DDR DDRC
  2236. #undef PC7
  2237. #define PC7_PIN PINC7
  2238. #define PC7_RPORT PINC
  2239. #define PC7_WPORT PORTC
  2240. #define PC7_PWM NULL
  2241. #define PC7_DDR DDRC
  2242. #undef PD0
  2243. #define PD0_PIN PIND0
  2244. #define PD0_RPORT PIND
  2245. #define PD0_WPORT PORTD
  2246. #define PD0_PWM NULL
  2247. #define PD0_DDR DDRD
  2248. #undef PD1
  2249. #define PD1_PIN PIND1
  2250. #define PD1_RPORT PIND
  2251. #define PD1_WPORT PORTD
  2252. #define PD1_PWM NULL
  2253. #define PD1_DDR DDRD
  2254. #undef PD2
  2255. #define PD2_PIN PIND2
  2256. #define PD2_RPORT PIND
  2257. #define PD2_WPORT PORTD
  2258. #define PD2_PWM NULL
  2259. #define PD2_DDR DDRD
  2260. #undef PD3
  2261. #define PD3_PIN PIND3
  2262. #define PD3_RPORT PIND
  2263. #define PD3_WPORT PORTD
  2264. #define PD3_PWM NULL
  2265. #define PD3_DDR DDRD
  2266. #undef PD4
  2267. #define PD4_PIN PIND4
  2268. #define PD4_RPORT PIND
  2269. #define PD4_WPORT PORTD
  2270. #define PD4_PWM NULL
  2271. #define PD4_DDR DDRD
  2272. #undef PD5
  2273. #define PD5_PIN PIND5
  2274. #define PD5_RPORT PIND
  2275. #define PD5_WPORT PORTD
  2276. #define PD5_PWM NULL
  2277. #define PD5_DDR DDRD
  2278. #undef PD6
  2279. #define PD6_PIN PIND6
  2280. #define PD6_RPORT PIND
  2281. #define PD6_WPORT PORTD
  2282. #define PD6_PWM NULL
  2283. #define PD6_DDR DDRD
  2284. #undef PD7
  2285. #define PD7_PIN PIND7
  2286. #define PD7_RPORT PIND
  2287. #define PD7_WPORT PORTD
  2288. #define PD7_PWM NULL
  2289. #define PD7_DDR DDRD
  2290. #undef PE0
  2291. #define PE0_PIN PINE0
  2292. #define PE0_RPORT PINE
  2293. #define PE0_WPORT PORTE
  2294. #define PE0_PWM NULL
  2295. #define PE0_DDR DDRE
  2296. #undef PE1
  2297. #define PE1_PIN PINE1
  2298. #define PE1_RPORT PINE
  2299. #define PE1_WPORT PORTE
  2300. #define PE1_PWM NULL
  2301. #define PE1_DDR DDRE
  2302. #undef PE2
  2303. #define PE2_PIN PINE2
  2304. #define PE2_RPORT PINE
  2305. #define PE2_WPORT PORTE
  2306. #define PE2_PWM NULL
  2307. #define PE2_DDR DDRE
  2308. #undef PE3
  2309. #define PE3_PIN PINE3
  2310. #define PE3_RPORT PINE
  2311. #define PE3_WPORT PORTE
  2312. #define PE3_PWM NULL
  2313. #define PE3_DDR DDRE
  2314. #undef PE4
  2315. #define PE4_PIN PINE4
  2316. #define PE4_RPORT PINE
  2317. #define PE4_WPORT PORTE
  2318. #define PE4_PWM NULL
  2319. #define PE4_DDR DDRE
  2320. #undef PE5
  2321. #define PE5_PIN PINE5
  2322. #define PE5_RPORT PINE
  2323. #define PE5_WPORT PORTE
  2324. #define PE5_PWM NULL
  2325. #define PE5_DDR DDRE
  2326. #undef PE6
  2327. #define PE6_PIN PINE6
  2328. #define PE6_RPORT PINE
  2329. #define PE6_WPORT PORTE
  2330. #define PE6_PWM NULL
  2331. #define PE6_DDR DDRE
  2332. #undef PE7
  2333. #define PE7_PIN PINE7
  2334. #define PE7_RPORT PINE
  2335. #define PE7_WPORT PORTE
  2336. #define PE7_PWM NULL
  2337. #define PE7_DDR DDRE
  2338. #undef PF0
  2339. #define PF0_PIN PINF0
  2340. #define PF0_RPORT PINF
  2341. #define PF0_WPORT PORTF
  2342. #define PF0_PWM NULL
  2343. #define PF0_DDR DDRF
  2344. #undef PF1
  2345. #define PF1_PIN PINF1
  2346. #define PF1_RPORT PINF
  2347. #define PF1_WPORT PORTF
  2348. #define PF1_PWM NULL
  2349. #define PF1_DDR DDRF
  2350. #undef PF2
  2351. #define PF2_PIN PINF2
  2352. #define PF2_RPORT PINF
  2353. #define PF2_WPORT PORTF
  2354. #define PF2_PWM NULL
  2355. #define PF2_DDR DDRF
  2356. #undef PF3
  2357. #define PF3_PIN PINF3
  2358. #define PF3_RPORT PINF
  2359. #define PF3_WPORT PORTF
  2360. #define PF3_PWM NULL
  2361. #define PF3_DDR DDRF
  2362. #undef PF4
  2363. #define PF4_PIN PINF4
  2364. #define PF4_RPORT PINF
  2365. #define PF4_WPORT PORTF
  2366. #define PF4_PWM NULL
  2367. #define PF4_DDR DDRF
  2368. #undef PF5
  2369. #define PF5_PIN PINF5
  2370. #define PF5_RPORT PINF
  2371. #define PF5_WPORT PORTF
  2372. #define PF5_PWM NULL
  2373. #define PF5_DDR DDRF
  2374. #undef PF6
  2375. #define PF6_PIN PINF6
  2376. #define PF6_RPORT PINF
  2377. #define PF6_WPORT PORTF
  2378. #define PF6_PWM NULL
  2379. #define PF6_DDR DDRF
  2380. #undef PF7
  2381. #define PF7_PIN PINF7
  2382. #define PF7_RPORT PINF
  2383. #define PF7_WPORT PORTF
  2384. #define PF7_PWM NULL
  2385. #define PF7_DDR DDRF
  2386. #else // AT90USBxx_TEENSYPP_ASSIGNMENTS -- Use Teensyduino Teensy++2.0 assignments.
  2387. /**
  2388. 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
  2389. 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
  2390. 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
  2391. 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
  2392. The pins 46 and 47 are not supported by Teensyduino, but are supported below.
  2393. */
  2394. // SPI
  2395. #define SCK DIO21 // 9
  2396. #define MISO DIO23 // 11
  2397. #define MOSI DIO22 // 10
  2398. #define SS DIO20 // 8
  2399. #define DIO0_PIN PIND0
  2400. #define DIO0_RPORT PIND
  2401. #define DIO0_WPORT PORTD
  2402. #define DIO0_PWM NULL
  2403. #define DIO0_DDR DDRD
  2404. #define DIO1_PIN PIND1
  2405. #define DIO1_RPORT PIND
  2406. #define DIO1_WPORT PORTD
  2407. #define DIO1_PWM NULL
  2408. #define DIO1_DDR DDRD
  2409. #define DIO2_PIN PIND2
  2410. #define DIO2_RPORT PIND
  2411. #define DIO2_WPORT PORTD
  2412. #define DIO2_PWM NULL
  2413. #define DIO2_DDR DDRD
  2414. #define DIO3_PIN PIND3
  2415. #define DIO3_RPORT PIND
  2416. #define DIO3_WPORT PORTD
  2417. #define DIO3_PWM NULL
  2418. #define DIO3_DDR DDRD
  2419. #define DIO4_PIN PIND4
  2420. #define DIO4_RPORT PIND
  2421. #define DIO4_WPORT PORTD
  2422. #define DIO4_PWM NULL
  2423. #define DIO4_DDR DDRD
  2424. #define DIO5_PIN PIND5
  2425. #define DIO5_RPORT PIND
  2426. #define DIO5_WPORT PORTD
  2427. #define DIO5_PWM NULL
  2428. #define DIO5_DDR DDRD
  2429. #define DIO6_PIN PIND6
  2430. #define DIO6_RPORT PIND
  2431. #define DIO6_WPORT PORTD
  2432. #define DIO6_PWM NULL
  2433. #define DIO6_DDR DDRD
  2434. #define DIO7_PIN PIND7
  2435. #define DIO7_RPORT PIND
  2436. #define DIO7_WPORT PORTD
  2437. #define DIO7_PWM NULL
  2438. #define DIO7_DDR DDRD
  2439. #define DIO8_PIN PINE0
  2440. #define DIO8_RPORT PINE
  2441. #define DIO8_WPORT PORTE
  2442. #define DIO8_PWM NULL
  2443. #define DIO8_DDR DDRE
  2444. #define DIO9_PIN PINE1
  2445. #define DIO9_RPORT PINE
  2446. #define DIO9_WPORT PORTE
  2447. #define DIO9_PWM NULL
  2448. #define DIO9_DDR DDRE
  2449. #define DIO10_PIN PINC0
  2450. #define DIO10_RPORT PINC
  2451. #define DIO10_WPORT PORTC
  2452. #define DIO10_PWM NULL
  2453. #define DIO10_DDR DDRC
  2454. #define DIO11_PIN PINC1
  2455. #define DIO11_RPORT PINC
  2456. #define DIO11_WPORT PORTC
  2457. #define DIO11_PWM NULL
  2458. #define DIO11_DDR DDRC
  2459. #define DIO12_PIN PINC2
  2460. #define DIO12_RPORT PINC
  2461. #define DIO12_WPORT PORTC
  2462. #define DIO12_PWM NULL
  2463. #define DIO12_DDR DDRC
  2464. #define DIO13_PIN PINC3
  2465. #define DIO13_RPORT PINC
  2466. #define DIO13_WPORT PORTC
  2467. #define DIO13_PWM NULL
  2468. #define DIO13_DDR DDRC
  2469. #define DIO14_PIN PINC4
  2470. #define DIO14_RPORT PINC
  2471. #define DIO14_WPORT PORTC
  2472. #define DIO14_PWM NULL
  2473. #define DIO14_DDR DDRC
  2474. #define DIO15_PIN PINC5
  2475. #define DIO15_RPORT PINC
  2476. #define DIO15_WPORT PORTC
  2477. #define DIO15_PWM NULL
  2478. #define DIO15_DDR DDRC
  2479. #define DIO16_PIN PINC6
  2480. #define DIO16_RPORT PINC
  2481. #define DIO16_WPORT PORTC
  2482. #define DIO16_PWM NULL
  2483. #define DIO16_DDR DDRC
  2484. #define DIO17_PIN PINC7
  2485. #define DIO17_RPORT PINC
  2486. #define DIO17_WPORT PORTC
  2487. #define DIO17_PWM NULL
  2488. #define DIO17_DDR DDRC
  2489. #define DIO18_PIN PINE6
  2490. #define DIO18_RPORT PINE
  2491. #define DIO18_WPORT PORTE
  2492. #define DIO18_PWM NULL
  2493. #define DIO18_DDR DDRE
  2494. #define DIO19_PIN PINE7
  2495. #define DIO19_RPORT PINE
  2496. #define DIO19_WPORT PORTE
  2497. #define DIO19_PWM NULL
  2498. #define DIO19_DDR DDRE
  2499. #define DIO20_PIN PINB0
  2500. #define DIO20_RPORT PINB
  2501. #define DIO20_WPORT PORTB
  2502. #define DIO20_PWM NULL
  2503. #define DIO20_DDR DDRB
  2504. #define DIO21_PIN PINB1
  2505. #define DIO21_RPORT PINB
  2506. #define DIO21_WPORT PORTB
  2507. #define DIO21_PWM NULL
  2508. #define DIO21_DDR DDRB
  2509. #define DIO22_PIN PINB2
  2510. #define DIO22_RPORT PINB
  2511. #define DIO22_WPORT PORTB
  2512. #define DIO22_PWM NULL
  2513. #define DIO22_DDR DDRB
  2514. #define DIO23_PIN PINB3
  2515. #define DIO23_RPORT PINB
  2516. #define DIO23_WPORT PORTB
  2517. #define DIO23_PWM NULL
  2518. #define DIO23_DDR DDRB
  2519. #define DIO24_PIN PINB4
  2520. #define DIO24_RPORT PINB
  2521. #define DIO24_WPORT PORTB
  2522. #define DIO24_PWM NULL
  2523. #define DIO24_DDR DDRB
  2524. #define DIO25_PIN PINB5
  2525. #define DIO25_RPORT PINB
  2526. #define DIO25_WPORT PORTB
  2527. #define DIO25_PWM NULL
  2528. #define DIO25_DDR DDRB
  2529. #define DIO26_PIN PINB6
  2530. #define DIO26_RPORT PINB
  2531. #define DIO26_WPORT PORTB
  2532. #define DIO26_PWM NULL
  2533. #define DIO26_DDR DDRB
  2534. #define DIO27_PIN PINB7
  2535. #define DIO27_RPORT PINB
  2536. #define DIO27_WPORT PORTB
  2537. #define DIO27_PWM NULL
  2538. #define DIO27_DDR DDRB
  2539. #define DIO28_PIN PINA0
  2540. #define DIO28_RPORT PINA
  2541. #define DIO28_WPORT PORTA
  2542. #define DIO28_PWM NULL
  2543. #define DIO28_DDR DDRA
  2544. #define DIO29_PIN PINA1
  2545. #define DIO29_RPORT PINA
  2546. #define DIO29_WPORT PORTA
  2547. #define DIO29_PWM NULL
  2548. #define DIO29_DDR DDRA
  2549. #define DIO30_PIN PINA2
  2550. #define DIO30_RPORT PINA
  2551. #define DIO30_WPORT PORTA
  2552. #define DIO30_PWM NULL
  2553. #define DIO30_DDR DDRA
  2554. #define DIO31_PIN PINA3
  2555. #define DIO31_RPORT PINA
  2556. #define DIO31_WPORT PORTA
  2557. #define DIO31_PWM NULL
  2558. #define DIO31_DDR DDRA
  2559. #define DIO32_PIN PINA4
  2560. #define DIO32_RPORT PINA
  2561. #define DIO32_WPORT PORTA
  2562. #define DIO32_PWM NULL
  2563. #define DIO32_DDR DDRA
  2564. #define DIO33_PIN PINA5
  2565. #define DIO33_RPORT PINA
  2566. #define DIO33_WPORT PORTA
  2567. #define DIO33_PWM NULL
  2568. #define DIO33_DDR DDRA
  2569. #define DIO34_PIN PINA6
  2570. #define DIO34_RPORT PINA
  2571. #define DIO34_WPORT PORTA
  2572. #define DIO34_PWM NULL
  2573. #define DIO34_DDR DDRA
  2574. #define DIO35_PIN PINA7
  2575. #define DIO35_RPORT PINA
  2576. #define DIO35_WPORT PORTA
  2577. #define DIO35_PWM NULL
  2578. #define DIO35_DDR DDRA
  2579. #define DIO36_PIN PINE4
  2580. #define DIO36_RPORT PINE
  2581. #define DIO36_WPORT PORTE
  2582. #define DIO36_PWM NULL
  2583. #define DIO36_DDR DDRE
  2584. #define DIO37_PIN PINE5
  2585. #define DIO37_RPORT PINE
  2586. #define DIO37_WPORT PORTE
  2587. #define DIO37_PWM NULL
  2588. #define DIO37_DDR DDRE
  2589. #define DIO38_PIN PINF0
  2590. #define DIO38_RPORT PINF
  2591. #define DIO38_WPORT PORTF
  2592. #define DIO38_PWM NULL
  2593. #define DIO38_DDR DDRF
  2594. #define DIO39_PIN PINF1
  2595. #define DIO39_RPORT PINF
  2596. #define DIO39_WPORT PORTF
  2597. #define DIO39_PWM NULL
  2598. #define DIO39_DDR DDRF
  2599. #define DIO40_PIN PINF2
  2600. #define DIO40_RPORT PINF
  2601. #define DIO40_WPORT PORTF
  2602. #define DIO40_PWM NULL
  2603. #define DIO40_DDR DDRF
  2604. #define DIO41_PIN PINF3
  2605. #define DIO41_RPORT PINF
  2606. #define DIO41_WPORT PORTF
  2607. #define DIO41_PWM NULL
  2608. #define DIO41_DDR DDRF
  2609. #define DIO42_PIN PINF4
  2610. #define DIO42_RPORT PINF
  2611. #define DIO42_WPORT PORTF
  2612. #define DIO42_PWM NULL
  2613. #define DIO42_DDR DDRF
  2614. #define DIO43_PIN PINF5
  2615. #define DIO43_RPORT PINF
  2616. #define DIO43_WPORT PORTF
  2617. #define DIO43_PWM NULL
  2618. #define DIO43_DDR DDRF
  2619. #define DIO44_PIN PINF6
  2620. #define DIO44_RPORT PINF
  2621. #define DIO44_WPORT PORTF
  2622. #define DIO44_PWM NULL
  2623. #define DIO44_DDR DDRF
  2624. #define DIO45_PIN PINF7
  2625. #define DIO45_RPORT PINF
  2626. #define DIO45_WPORT PORTF
  2627. #define DIO45_PWM NULL
  2628. #define DIO45_DDR DDRF
  2629. #define AIO0_PIN PINF0
  2630. #define AIO0_RPORT PINF
  2631. #define AIO0_WPORT PORTF
  2632. #define AIO0_PWM NULL
  2633. #define AIO0_DDR DDRF
  2634. #define AIO1_PIN PINF1
  2635. #define AIO1_RPORT PINF
  2636. #define AIO1_WPORT PORTF
  2637. #define AIO1_PWM NULL
  2638. #define AIO1_DDR DDRF
  2639. #define AIO2_PIN PINF2
  2640. #define AIO2_RPORT PINF
  2641. #define AIO2_WPORT PORTF
  2642. #define AIO2_PWM NULL
  2643. #define AIO2_DDR DDRF
  2644. #define AIO3_PIN PINF3
  2645. #define AIO3_RPORT PINF
  2646. #define AIO3_WPORT PORTF
  2647. #define AIO3_PWM NULL
  2648. #define AIO3_DDR DDRF
  2649. #define AIO4_PIN PINF4
  2650. #define AIO4_RPORT PINF
  2651. #define AIO4_WPORT PORTF
  2652. #define AIO4_PWM NULL
  2653. #define AIO4_DDR DDRF
  2654. #define AIO5_PIN PINF5
  2655. #define AIO5_RPORT PINF
  2656. #define AIO5_WPORT PORTF
  2657. #define AIO5_PWM NULL
  2658. #define AIO5_DDR DDRF
  2659. #define AIO6_PIN PINF6
  2660. #define AIO6_RPORT PINF
  2661. #define AIO6_WPORT PORTF
  2662. #define AIO6_PWM NULL
  2663. #define AIO6_DDR DDRF
  2664. #define AIO7_PIN PINF7
  2665. #define AIO7_RPORT PINF
  2666. #define AIO7_WPORT PORTF
  2667. #define AIO7_PWM NULL
  2668. #define AIO7_DDR DDRF
  2669. //-- Begin not supported by Teensyduino
  2670. //-- don't use Arduino functions on these pins pinMode/digitalWrite/etc
  2671. #define DIO46_PIN PINE2
  2672. #define DIO46_RPORT PINE
  2673. #define DIO46_WPORT PORTE
  2674. #define DIO46_PWM NULL
  2675. #define DIO46_DDR DDRE
  2676. #define DIO47_PIN PINE3
  2677. #define DIO47_RPORT PINE
  2678. #define DIO47_WPORT PORTE
  2679. #define DIO47_PWM NULL
  2680. #define DIO47_DDR DDRE
  2681. //-- end not supported by Teensyduino
  2682. #undef PA0
  2683. #define PA0_PIN PINA0
  2684. #define PA0_RPORT PINA
  2685. #define PA0_WPORT PORTA
  2686. #define PA0_PWM NULL
  2687. #define PA0_DDR DDRA
  2688. #undef PA1
  2689. #define PA1_PIN PINA1
  2690. #define PA1_RPORT PINA
  2691. #define PA1_WPORT PORTA
  2692. #define PA1_PWM NULL
  2693. #define PA1_DDR DDRA
  2694. #undef PA2
  2695. #define PA2_PIN PINA2
  2696. #define PA2_RPORT PINA
  2697. #define PA2_WPORT PORTA
  2698. #define PA2_PWM NULL
  2699. #define PA2_DDR DDRA
  2700. #undef PA3
  2701. #define PA3_PIN PINA3
  2702. #define PA3_RPORT PINA
  2703. #define PA3_WPORT PORTA
  2704. #define PA3_PWM NULL
  2705. #define PA3_DDR DDRA
  2706. #undef PA4
  2707. #define PA4_PIN PINA4
  2708. #define PA4_RPORT PINA
  2709. #define PA4_WPORT PORTA
  2710. #define PA4_PWM NULL
  2711. #define PA4_DDR DDRA
  2712. #undef PA5
  2713. #define PA5_PIN PINA5
  2714. #define PA5_RPORT PINA
  2715. #define PA5_WPORT PORTA
  2716. #define PA5_PWM NULL
  2717. #define PA5_DDR DDRA
  2718. #undef PA6
  2719. #define PA6_PIN PINA6
  2720. #define PA6_RPORT PINA
  2721. #define PA6_WPORT PORTA
  2722. #define PA6_PWM NULL
  2723. #define PA6_DDR DDRA
  2724. #undef PA7
  2725. #define PA7_PIN PINA7
  2726. #define PA7_RPORT PINA
  2727. #define PA7_WPORT PORTA
  2728. #define PA7_PWM NULL
  2729. #define PA7_DDR DDRA
  2730. #undef PB0
  2731. #define PB0_PIN PINB0
  2732. #define PB0_RPORT PINB
  2733. #define PB0_WPORT PORTB
  2734. #define PB0_PWM NULL
  2735. #define PB0_DDR DDRB
  2736. #undef PB1
  2737. #define PB1_PIN PINB1
  2738. #define PB1_RPORT PINB
  2739. #define PB1_WPORT PORTB
  2740. #define PB1_PWM NULL
  2741. #define PB1_DDR DDRB
  2742. #undef PB2
  2743. #define PB2_PIN PINB2
  2744. #define PB2_RPORT PINB
  2745. #define PB2_WPORT PORTB
  2746. #define PB2_PWM NULL
  2747. #define PB2_DDR DDRB
  2748. #undef PB3
  2749. #define PB3_PIN PINB3
  2750. #define PB3_RPORT PINB
  2751. #define PB3_WPORT PORTB
  2752. #define PB3_PWM NULL
  2753. #define PB3_DDR DDRB
  2754. #undef PB4
  2755. #define PB4_PIN PINB4
  2756. #define PB4_RPORT PINB
  2757. #define PB4_WPORT PORTB
  2758. #define PB4_PWM NULL
  2759. #define PB4_DDR DDRB
  2760. #undef PB5
  2761. #define PB5_PIN PINB5
  2762. #define PB5_RPORT PINB
  2763. #define PB5_WPORT PORTB
  2764. #define PB5_PWM NULL
  2765. #define PB5_DDR DDRB
  2766. #undef PB6
  2767. #define PB6_PIN PINB6
  2768. #define PB6_RPORT PINB
  2769. #define PB6_WPORT PORTB
  2770. #define PB6_PWM NULL
  2771. #define PB6_DDR DDRB
  2772. #undef PB7
  2773. #define PB7_PIN PINB7
  2774. #define PB7_RPORT PINB
  2775. #define PB7_WPORT PORTB
  2776. #define PB7_PWM NULL
  2777. #define PB7_DDR DDRB
  2778. #undef PC0
  2779. #define PC0_PIN PINC0
  2780. #define PC0_RPORT PINC
  2781. #define PC0_WPORT PORTC
  2782. #define PC0_PWM NULL
  2783. #define PC0_DDR DDRC
  2784. #undef PC1
  2785. #define PC1_PIN PINC1
  2786. #define PC1_RPORT PINC
  2787. #define PC1_WPORT PORTC
  2788. #define PC1_PWM NULL
  2789. #define PC1_DDR DDRC
  2790. #undef PC2
  2791. #define PC2_PIN PINC2
  2792. #define PC2_RPORT PINC
  2793. #define PC2_WPORT PORTC
  2794. #define PC2_PWM NULL
  2795. #define PC2_DDR DDRC
  2796. #undef PC3
  2797. #define PC3_PIN PINC3
  2798. #define PC3_RPORT PINC
  2799. #define PC3_WPORT PORTC
  2800. #define PC3_PWM NULL
  2801. #define PC3_DDR DDRC
  2802. #undef PC4
  2803. #define PC4_PIN PINC4
  2804. #define PC4_RPORT PINC
  2805. #define PC4_WPORT PORTC
  2806. #define PC4_PWM NULL
  2807. #define PC4_DDR DDRC
  2808. #undef PC5
  2809. #define PC5_PIN PINC5
  2810. #define PC5_RPORT PINC
  2811. #define PC5_WPORT PORTC
  2812. #define PC5_PWM NULL
  2813. #define PC5_DDR DDRC
  2814. #undef PC6
  2815. #define PC6_PIN PINC6
  2816. #define PC6_RPORT PINC
  2817. #define PC6_WPORT PORTC
  2818. #define PC6_PWM NULL
  2819. #define PC6_DDR DDRC
  2820. #undef PC7
  2821. #define PC7_PIN PINC7
  2822. #define PC7_RPORT PINC
  2823. #define PC7_WPORT PORTC
  2824. #define PC7_PWM NULL
  2825. #define PC7_DDR DDRC
  2826. #undef PD0
  2827. #define PD0_PIN PIND0
  2828. #define PD0_RPORT PIND
  2829. #define PD0_WPORT PORTD
  2830. #define PD0_PWM NULL
  2831. #define PD0_DDR DDRD
  2832. #undef PD1
  2833. #define PD1_PIN PIND1
  2834. #define PD1_RPORT PIND
  2835. #define PD1_WPORT PORTD
  2836. #define PD1_PWM NULL
  2837. #define PD1_DDR DDRD
  2838. #undef PD2
  2839. #define PD2_PIN PIND2
  2840. #define PD2_RPORT PIND
  2841. #define PD2_WPORT PORTD
  2842. #define PD2_PWM NULL
  2843. #define PD2_DDR DDRD
  2844. #undef PD3
  2845. #define PD3_PIN PIND3
  2846. #define PD3_RPORT PIND
  2847. #define PD3_WPORT PORTD
  2848. #define PD3_PWM NULL
  2849. #define PD3_DDR DDRD
  2850. #undef PD4
  2851. #define PD4_PIN PIND4
  2852. #define PD4_RPORT PIND
  2853. #define PD4_WPORT PORTD
  2854. #define PD4_PWM NULL
  2855. #define PD4_DDR DDRD
  2856. #undef PD5
  2857. #define PD5_PIN PIND5
  2858. #define PD5_RPORT PIND
  2859. #define PD5_WPORT PORTD
  2860. #define PD5_PWM NULL
  2861. #define PD5_DDR DDRD
  2862. #undef PD6
  2863. #define PD6_PIN PIND6
  2864. #define PD6_RPORT PIND
  2865. #define PD6_WPORT PORTD
  2866. #define PD6_PWM NULL
  2867. #define PD6_DDR DDRD
  2868. #undef PD7
  2869. #define PD7_PIN PIND7
  2870. #define PD7_RPORT PIND
  2871. #define PD7_WPORT PORTD
  2872. #define PD7_PWM NULL
  2873. #define PD7_DDR DDRD
  2874. #undef PE0
  2875. #define PE0_PIN PINE0
  2876. #define PE0_RPORT PINE
  2877. #define PE0_WPORT PORTE
  2878. #define PE0_PWM NULL
  2879. #define PE0_DDR DDRE
  2880. #undef PE1
  2881. #define PE1_PIN PINE1
  2882. #define PE1_RPORT PINE
  2883. #define PE1_WPORT PORTE
  2884. #define PE1_PWM NULL
  2885. #define PE1_DDR DDRE
  2886. #undef PE2
  2887. #define PE2_PIN PINE2
  2888. #define PE2_RPORT PINE
  2889. #define PE2_WPORT PORTE
  2890. #define PE2_PWM NULL
  2891. #define PE2_DDR DDRE
  2892. #undef PE3
  2893. #define PE3_PIN PINE3
  2894. #define PE3_RPORT PINE
  2895. #define PE3_WPORT PORTE
  2896. #define PE3_PWM NULL
  2897. #define PE3_DDR DDRE
  2898. #undef PE4
  2899. #define PE4_PIN PINE4
  2900. #define PE4_RPORT PINE
  2901. #define PE4_WPORT PORTE
  2902. #define PE4_PWM NULL
  2903. #define PE4_DDR DDRE
  2904. #undef PE5
  2905. #define PE5_PIN PINE5
  2906. #define PE5_RPORT PINE
  2907. #define PE5_WPORT PORTE
  2908. #define PE5_PWM NULL
  2909. #define PE5_DDR DDRE
  2910. #undef PE6
  2911. #define PE6_PIN PINE6
  2912. #define PE6_RPORT PINE
  2913. #define PE6_WPORT PORTE
  2914. #define PE6_PWM NULL
  2915. #define PE6_DDR DDRE
  2916. #undef PE7
  2917. #define PE7_PIN PINE7
  2918. #define PE7_RPORT PINE
  2919. #define PE7_WPORT PORTE
  2920. #define PE7_PWM NULL
  2921. #define PE7_DDR DDRE
  2922. #undef PF0
  2923. #define PF0_PIN PINF0
  2924. #define PF0_RPORT PINF
  2925. #define PF0_WPORT PORTF
  2926. #define PF0_PWM NULL
  2927. #define PF0_DDR DDRF
  2928. #undef PF1
  2929. #define PF1_PIN PINF1
  2930. #define PF1_RPORT PINF
  2931. #define PF1_WPORT PORTF
  2932. #define PF1_PWM NULL
  2933. #define PF1_DDR DDRF
  2934. #undef PF2
  2935. #define PF2_PIN PINF2
  2936. #define PF2_RPORT PINF
  2937. #define PF2_WPORT PORTF
  2938. #define PF2_PWM NULL
  2939. #define PF2_DDR DDRF
  2940. #undef PF3
  2941. #define PF3_PIN PINF3
  2942. #define PF3_RPORT PINF
  2943. #define PF3_WPORT PORTF
  2944. #define PF3_PWM NULL
  2945. #define PF3_DDR DDRF
  2946. #undef PF4
  2947. #define PF4_PIN PINF4
  2948. #define PF4_RPORT PINF
  2949. #define PF4_WPORT PORTF
  2950. #define PF4_PWM NULL
  2951. #define PF4_DDR DDRF
  2952. #undef PF5
  2953. #define PF5_PIN PINF5
  2954. #define PF5_RPORT PINF
  2955. #define PF5_WPORT PORTF
  2956. #define PF5_PWM NULL
  2957. #define PF5_DDR DDRF
  2958. #undef PF6
  2959. #define PF6_PIN PINF6
  2960. #define PF6_RPORT PINF
  2961. #define PF6_WPORT PORTF
  2962. #define PF6_PWM NULL
  2963. #define PF6_DDR DDRF
  2964. #undef PF7
  2965. #define PF7_PIN PINF7
  2966. #define PF7_RPORT PINF
  2967. #define PF7_WPORT PORTF
  2968. #define PF7_PWM NULL
  2969. #define PF7_DDR DDRF
  2970. #endif // AT90USBxx_TEENSYPP_ASSIGNMENTS Teensyduino assignments
  2971. #endif // __AVR_AT90USB(1287|1286|646|647)__
  2972. #if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
  2973. // UART
  2974. #define RXD DIO0
  2975. #define TXD DIO1
  2976. // SPI
  2977. #define SCK DIO10
  2978. #define MISO DIO12
  2979. #define MOSI DIO11
  2980. #define SS DIO16
  2981. // TWI (I2C)
  2982. #define SCL DIO17
  2983. #define SDA DIO18
  2984. // timers and PWM
  2985. #define OC0A DIO9
  2986. #define OC0B DIO4
  2987. #define OC1A DIO7
  2988. #define OC1B DIO8
  2989. #define OC2A DIO6
  2990. #define OC3A DIO5
  2991. #define OC3B DIO2
  2992. #define OC3C DIO3
  2993. // change for your board
  2994. #define DEBUG_LED DIO46
  2995. /**
  2996. pins
  2997. */
  2998. #define DIO0_PIN PINE0
  2999. #define DIO0_RPORT PINE
  3000. #define DIO0_WPORT PORTE
  3001. #define DIO0_DDR DDRE
  3002. #define DIO0_PWM NULL
  3003. #define DIO1_PIN PINE1
  3004. #define DIO1_RPORT PINE
  3005. #define DIO1_WPORT PORTE
  3006. #define DIO1_DDR DDRE
  3007. #define DIO1_PWM NULL
  3008. #define DIO2_PIN PINE4
  3009. #define DIO2_RPORT PINE
  3010. #define DIO2_WPORT PORTE
  3011. #define DIO2_DDR DDRE
  3012. #define DIO2_PWM &OCR3BL
  3013. #define DIO3_PIN PINE5
  3014. #define DIO3_RPORT PINE
  3015. #define DIO3_WPORT PORTE
  3016. #define DIO3_DDR DDRE
  3017. #define DIO3_PWM &OCR3CL
  3018. #define DIO4_PIN PING5
  3019. #define DIO4_RPORT PING
  3020. #define DIO4_WPORT PORTG
  3021. #define DIO4_DDR DDRG
  3022. #define DIO4_PWM &OCR0B
  3023. #define DIO5_PIN PINE3
  3024. #define DIO5_RPORT PINE
  3025. #define DIO5_WPORT PORTE
  3026. #define DIO5_DDR DDRE
  3027. #define DIO5_PWM &OCR3AL
  3028. #define DIO6_PIN PINB4
  3029. #define DIO6_RPORT PINB
  3030. #define DIO6_WPORT PORTB
  3031. #define DIO6_DDR DDRB
  3032. #define DIO6_PWM &OCR2AL
  3033. #define DIO7_PIN PINB5
  3034. #define DIO7_RPORT PINB
  3035. #define DIO7_WPORT PORTB
  3036. #define DIO7_DDR DDRB
  3037. #define DIO7_PWM &OCR1AL
  3038. #define DIO8_PIN PINB6
  3039. #define DIO8_RPORT PINB
  3040. #define DIO8_WPORT PORTB
  3041. #define DIO8_DDR DDRB
  3042. #define DIO8_PWM &OCR1BL
  3043. #define DIO9_PIN PINB7
  3044. #define DIO9_RPORT PINB
  3045. #define DIO9_WPORT PORTB
  3046. #define DIO9_DDR DDRB
  3047. #define DIO9_PWM &OCR0AL
  3048. #define DIO10_PIN PINB1
  3049. #define DIO10_RPORT PINB
  3050. #define DIO10_WPORT PORTB
  3051. #define DIO10_DDR DDRB
  3052. #define DIO10_PWM NULL
  3053. #define DIO11_PIN PINB2
  3054. #define DIO11_RPORT PINB
  3055. #define DIO11_WPORT PORTB
  3056. #define DIO11_DDR DDRB
  3057. #define DIO11_PWM NULL
  3058. #define DIO12_PIN PINB3
  3059. #define DIO12_RPORT PINB
  3060. #define DIO12_WPORT PORTB
  3061. #define DIO12_DDR DDRB
  3062. #define DIO12_PWM NULL
  3063. #define DIO13_PIN PINE2
  3064. #define DIO13_RPORT PINE
  3065. #define DIO13_WPORT PORTE
  3066. #define DIO13_DDR DDRE
  3067. #define DIO13_PWM NULL
  3068. #define DIO14_PIN PINE6
  3069. #define DIO14_RPORT PINE
  3070. #define DIO14_WPORT PORTE
  3071. #define DIO14_DDR DDRE
  3072. #define DIO14_PWM NULL
  3073. #define DIO15_PIN PINE7
  3074. #define DIO15_RPORT PINE
  3075. #define DIO15_WPORT PORTE
  3076. #define DIO15_DDR DDRE
  3077. #define DIO15_PWM NULL
  3078. #define DIO16_PIN PINB0
  3079. #define DIO16_RPORT PINB
  3080. #define DIO16_WPORT PORTB
  3081. #define DIO16_DDR DDRB
  3082. #define DIO16_PWM NULL
  3083. #define DIO17_PIN PIND0
  3084. #define DIO17_RPORT PIND
  3085. #define DIO17_WPORT PORTD
  3086. #define DIO17_DDR DDRD
  3087. #define DIO17_PWM NULL
  3088. #define DIO18_PIN PIND1
  3089. #define DIO18_RPORT PIND
  3090. #define DIO18_WPORT PORTD
  3091. #define DIO18_DDR DDRD
  3092. #define DIO18_PWM NULL
  3093. #define DIO19_PIN PIND2
  3094. #define DIO19_RPORT PIND
  3095. #define DIO19_WPORT PORTD
  3096. #define DIO19_DDR DDRD
  3097. #define DIO19_PWM NULL
  3098. #define DIO20_PIN PIND3
  3099. #define DIO20_RPORT PIND
  3100. #define DIO20_WPORT PORTD
  3101. #define DIO20_DDR DDRD
  3102. #define DIO20_PWM NULL
  3103. #define DIO21_PIN PIND4
  3104. #define DIO21_RPORT PIND
  3105. #define DIO21_WPORT PORTD
  3106. #define DIO21_DDR DDRD
  3107. #define DIO21_PWM NULL
  3108. #define DIO22_PIN PIND5
  3109. #define DIO22_RPORT PIND
  3110. #define DIO22_WPORT PORTD
  3111. #define DIO22_DDR DDRD
  3112. #define DIO22_PWM NULL
  3113. #define DIO23_PIN PIND6
  3114. #define DIO23_RPORT PIND
  3115. #define DIO23_WPORT PORTD
  3116. #define DIO23_DDR DDRD
  3117. #define DIO23_PWM NULL
  3118. #define DIO24_PIN PIND7
  3119. #define DIO24_RPORT PIND
  3120. #define DIO24_WPORT PORTD
  3121. #define DIO24_DDR DDRD
  3122. #define DIO24_PWM NULL
  3123. #define DIO25_PIN PING0
  3124. #define DIO25_RPORT PING
  3125. #define DIO25_WPORT PORTG
  3126. #define DIO25_DDR DDRG
  3127. #define DIO25_PWM NULL
  3128. #define DIO26_PIN PING1
  3129. #define DIO26_RPORT PING
  3130. #define DIO26_WPORT PORTG
  3131. #define DIO26_DDR DDRG
  3132. #define DIO26_PWM NULL
  3133. #define DIO27_PIN PING2
  3134. #define DIO27_RPORT PING
  3135. #define DIO27_WPORT PORTG
  3136. #define DIO27_DDR DDRG
  3137. #define DIO27_PWM NULL
  3138. #define DIO28_PIN PING3
  3139. #define DIO28_RPORT PING
  3140. #define DIO28_WPORT PORTG
  3141. #define DIO28_DDR DDRG
  3142. #define DIO28_PWM NULL
  3143. #define DIO29_PIN PING4
  3144. #define DIO29_RPORT PING
  3145. #define DIO29_WPORT PORTG
  3146. #define DIO29_DDR DDRG
  3147. #define DIO29_PWM NULL
  3148. #define DIO30_PIN PINC0
  3149. #define DIO30_RPORT PINC
  3150. #define DIO30_WPORT PORTC
  3151. #define DIO30_DDR DDRC
  3152. #define DIO30_PWM NULL
  3153. #define DIO31_PIN PINC1
  3154. #define DIO31_RPORT PINC
  3155. #define DIO31_WPORT PORTC
  3156. #define DIO31_DDR DDRC
  3157. #define DIO31_PWM NULL
  3158. #define DIO32_PIN PINC2
  3159. #define DIO32_RPORT PINC
  3160. #define DIO32_WPORT PORTC
  3161. #define DIO32_DDR DDRC
  3162. #define DIO32_PWM NULL
  3163. #define DIO33_PIN PINC3
  3164. #define DIO33_RPORT PINC
  3165. #define DIO33_WPORT PORTC
  3166. #define DIO33_DDR DDRC
  3167. #define DIO33_PWM NULL
  3168. #define DIO34_PIN PINC4
  3169. #define DIO34_RPORT PINC
  3170. #define DIO34_WPORT PORTC
  3171. #define DIO34_DDR DDRC
  3172. #define DIO34_PWM NULL
  3173. #define DIO35_PIN PINC5
  3174. #define DIO35_RPORT PINC
  3175. #define DIO35_WPORT PORTC
  3176. #define DIO35_DDR DDRC
  3177. #define DIO35_PWM NULL
  3178. #define DIO36_PIN PINC6
  3179. #define DIO36_RPORT PINC
  3180. #define DIO36_WPORT PORTC
  3181. #define DIO36_DDR DDRC
  3182. #define DIO36_PWM NULL
  3183. #define DIO37_PIN PINC7
  3184. #define DIO37_RPORT PINC
  3185. #define DIO37_WPORT PORTC
  3186. #define DIO37_DDR DDRC
  3187. #define DIO37_PWM NULL
  3188. #define DIO38_PIN PINA0
  3189. #define DIO38_RPORT PINA
  3190. #define DIO38_WPORT PORTA
  3191. #define DIO38_DDR DDRA
  3192. #define DIO38_PWM NULL
  3193. #define DIO39_PIN PINA1
  3194. #define DIO39_RPORT PINA
  3195. #define DIO39_WPORT PORTA
  3196. #define DIO39_DDR DDRA
  3197. #define DIO39_PWM NULL
  3198. #define DIO40_PIN PINA2
  3199. #define DIO40_RPORT PINA
  3200. #define DIO40_WPORT PORTA
  3201. #define DIO40_DDR DDRA
  3202. #define DIO40_PWM NULL
  3203. #define DIO41_PIN PINA3
  3204. #define DIO41_RPORT PINA
  3205. #define DIO41_WPORT PORTA
  3206. #define DIO41_DDR DDRA
  3207. #define DIO41_PWM NULL
  3208. #define DIO42_PIN PINA4
  3209. #define DIO42_RPORT PINA
  3210. #define DIO42_WPORT PORTA
  3211. #define DIO42_DDR DDRA
  3212. #define DIO42_PWM NULL
  3213. #define DIO43_PIN PINA5
  3214. #define DIO43_RPORT PINA
  3215. #define DIO43_WPORT PORTA
  3216. #define DIO43_DDR DDRA
  3217. #define DIO43_PWM NULL
  3218. #define DIO44_PIN PINA6
  3219. #define DIO44_RPORT PINA
  3220. #define DIO44_WPORT PORTA
  3221. #define DIO44_DDR DDRA
  3222. #define DIO44_PWM NULL
  3223. #define DIO45_PIN PINA7
  3224. #define DIO45_RPORT PINA
  3225. #define DIO45_WPORT PORTA
  3226. #define DIO45_DDR DDRA
  3227. #define DIO45_PWM NULL
  3228. #define DIO46_PIN PINF0
  3229. #define DIO46_RPORT PINF
  3230. #define DIO46_WPORT PORTF
  3231. #define DIO46_DDR DDRF
  3232. #define DIO46_PWM NULL
  3233. #define DIO47_PIN PINF1
  3234. #define DIO47_RPORT PINF
  3235. #define DIO47_WPORT PORTF
  3236. #define DIO47_DDR DDRF
  3237. #define DIO47_PWM NULL
  3238. #define DIO48_PIN PINF2
  3239. #define DIO48_RPORT PINF
  3240. #define DIO48_WPORT PORTF
  3241. #define DIO48_DDR DDRF
  3242. #define DIO48_PWM NULL
  3243. #define DIO49_PIN PINF3
  3244. #define DIO49_RPORT PINF
  3245. #define DIO49_WPORT PORTF
  3246. #define DIO49_DDR DDRF
  3247. #define DIO49_PWM NULL
  3248. #define DIO50_PIN PINF4
  3249. #define DIO50_RPORT PINF
  3250. #define DIO50_WPORT PORTF
  3251. #define DIO50_DDR DDRF
  3252. #define DIO50_PWM NULL
  3253. #define DIO51_PIN PINF5
  3254. #define DIO51_RPORT PINF
  3255. #define DIO51_WPORT PORTF
  3256. #define DIO51_DDR DDRF
  3257. #define DIO51_PWM NULL
  3258. #define DIO52_PIN PINF6
  3259. #define DIO52_RPORT PINF
  3260. #define DIO52_WPORT PORTF
  3261. #define DIO52_DDR DDRF
  3262. #define DIO52_PWM NULL
  3263. #define DIO53_PIN PINF7
  3264. #define DIO53_RPORT PINF
  3265. #define DIO53_WPORT PORTF
  3266. #define DIO53_DDR DDRF
  3267. #define DIO53_PWM NULL
  3268. #undef PA0
  3269. #define PA0_PIN PINA0
  3270. #define PA0_RPORT PINA
  3271. #define PA0_WPORT PORTA
  3272. #define PA0_DDR DDRA
  3273. #define PA0_PWM NULL
  3274. #undef PA1
  3275. #define PA1_PIN PINA1
  3276. #define PA1_RPORT PINA
  3277. #define PA1_WPORT PORTA
  3278. #define PA1_DDR DDRA
  3279. #define PA1_PWM NULL
  3280. #undef PA2
  3281. #define PA2_PIN PINA2
  3282. #define PA2_RPORT PINA
  3283. #define PA2_WPORT PORTA
  3284. #define PA2_DDR DDRA
  3285. #define PA2_PWM NULL
  3286. #undef PA3
  3287. #define PA3_PIN PINA3
  3288. #define PA3_RPORT PINA
  3289. #define PA3_WPORT PORTA
  3290. #define PA3_DDR DDRA
  3291. #define PA3_PWM NULL
  3292. #undef PA4
  3293. #define PA4_PIN PINA4
  3294. #define PA4_RPORT PINA
  3295. #define PA4_WPORT PORTA
  3296. #define PA4_DDR DDRA
  3297. #define PA4_PWM NULL
  3298. #undef PA5
  3299. #define PA5_PIN PINA5
  3300. #define PA5_RPORT PINA
  3301. #define PA5_WPORT PORTA
  3302. #define PA5_DDR DDRA
  3303. #define PA5_PWM NULL
  3304. #undef PA6
  3305. #define PA6_PIN PINA6
  3306. #define PA6_RPORT PINA
  3307. #define PA6_WPORT PORTA
  3308. #define PA6_DDR DDRA
  3309. #define PA6_PWM NULL
  3310. #undef PA7
  3311. #define PA7_PIN PINA7
  3312. #define PA7_RPORT PINA
  3313. #define PA7_WPORT PORTA
  3314. #define PA7_DDR DDRA
  3315. #define PA7_PWM NULL
  3316. #undef PB0
  3317. #define PB0_PIN PINB0
  3318. #define PB0_RPORT PINB
  3319. #define PB0_WPORT PORTB
  3320. #define PB0_DDR DDRB
  3321. #define PB0_PWM NULL
  3322. #undef PB1
  3323. #define PB1_PIN PINB1
  3324. #define PB1_RPORT PINB
  3325. #define PB1_WPORT PORTB
  3326. #define PB1_DDR DDRB
  3327. #define PB1_PWM NULL
  3328. #undef PB2
  3329. #define PB2_PIN PINB2
  3330. #define PB2_RPORT PINB
  3331. #define PB2_WPORT PORTB
  3332. #define PB2_DDR DDRB
  3333. #define PB2_PWM NULL
  3334. #undef PB3
  3335. #define PB3_PIN PINB3
  3336. #define PB3_RPORT PINB
  3337. #define PB3_WPORT PORTB
  3338. #define PB3_DDR DDRB
  3339. #define PB3_PWM NULL
  3340. #undef PB4
  3341. #define PB4_PIN PINB4
  3342. #define PB4_RPORT PINB
  3343. #define PB4_WPORT PORTB
  3344. #define PB4_DDR DDRB
  3345. #define PB4_PWM &OCR2A
  3346. #undef PB5
  3347. #define PB5_PIN PINB5
  3348. #define PB5_RPORT PINB
  3349. #define PB5_WPORT PORTB
  3350. #define PB5_DDR DDRB
  3351. #define PB5_PWM NULL
  3352. #undef PB6
  3353. #define PB6_PIN PINB6
  3354. #define PB6_RPORT PINB
  3355. #define PB6_WPORT PORTB
  3356. #define PB6_DDR DDRB
  3357. #define PB6_PWM NULL
  3358. #undef PB7
  3359. #define PB7_PIN PINB7
  3360. #define PB7_RPORT PINB
  3361. #define PB7_WPORT PORTB
  3362. #define PB7_DDR DDRB
  3363. #define PB7_PWM &OCR0A
  3364. #undef PC0
  3365. #define PC0_PIN PINC0
  3366. #define PC0_RPORT PINC
  3367. #define PC0_WPORT PORTC
  3368. #define PC0_DDR DDRC
  3369. #define PC0_PWM NULL
  3370. #undef PC1
  3371. #define PC1_PIN PINC1
  3372. #define PC1_RPORT PINC
  3373. #define PC1_WPORT PORTC
  3374. #define PC1_DDR DDRC
  3375. #define PC1_PWM NULL
  3376. #undef PC2
  3377. #define PC2_PIN PINC2
  3378. #define PC2_RPORT PINC
  3379. #define PC2_WPORT PORTC
  3380. #define PC2_DDR DDRC
  3381. #define PC2_PWM NULL
  3382. #undef PC3
  3383. #define PC3_PIN PINC3
  3384. #define PC3_RPORT PINC
  3385. #define PC3_WPORT PORTC
  3386. #define PC3_DDR DDRC
  3387. #define PC3_PWM NULL
  3388. #undef PC4
  3389. #define PC4_PIN PINC4
  3390. #define PC4_RPORT PINC
  3391. #define PC4_WPORT PORTC
  3392. #define PC4_DDR DDRC
  3393. #define PC4_PWM NULL
  3394. #undef PC5
  3395. #define PC5_PIN PINC5
  3396. #define PC5_RPORT PINC
  3397. #define PC5_WPORT PORTC
  3398. #define PC5_DDR DDRC
  3399. #define PC5_PWM NULL
  3400. #undef PC6
  3401. #define PC6_PIN PINC6
  3402. #define PC6_RPORT PINC
  3403. #define PC6_WPORT PORTC
  3404. #define PC6_DDR DDRC
  3405. #define PC6_PWM NULL
  3406. #undef PC7
  3407. #define PC7_PIN PINC7
  3408. #define PC7_RPORT PINC
  3409. #define PC7_WPORT PORTC
  3410. #define PC7_DDR DDRC
  3411. #define PC7_PWM NULL
  3412. #undef PD0
  3413. #define PD0_PIN PIND0
  3414. #define PD0_RPORT PIND
  3415. #define PD0_WPORT PORTD
  3416. #define PD0_DDR DDRD
  3417. #define PD0_PWM NULL
  3418. #undef PD1
  3419. #define PD1_PIN PIND1
  3420. #define PD1_RPORT PIND
  3421. #define PD1_WPORT PORTD
  3422. #define PD1_DDR DDRD
  3423. #define PD1_PWM NULL
  3424. #undef PD2
  3425. #define PD2_PIN PIND2
  3426. #define PD2_RPORT PIND
  3427. #define PD2_WPORT PORTD
  3428. #define PD2_DDR DDRD
  3429. #define PD2_PWM NULL
  3430. #undef PD3
  3431. #define PD3_PIN PIND3
  3432. #define PD3_RPORT PIND
  3433. #define PD3_WPORT PORTD
  3434. #define PD3_DDR DDRD
  3435. #define PD3_PWM NULL
  3436. #undef PD4
  3437. #define PD4_PIN PIND4
  3438. #define PD4_RPORT PIND
  3439. #define PD4_WPORT PORTD
  3440. #define PD4_DDR DDRD
  3441. #define PD4_PWM NULL
  3442. #undef PD5
  3443. #define PD5_PIN PIND5
  3444. #define PD5_RPORT PIND
  3445. #define PD5_WPORT PORTD
  3446. #define PD5_DDR DDRD
  3447. #define PD5_PWM NULL
  3448. #undef PD6
  3449. #define PD6_PIN PIND6
  3450. #define PD6_RPORT PIND
  3451. #define PD6_WPORT PORTD
  3452. #define PD6_DDR DDRD
  3453. #define PD6_PWM NULL
  3454. #undef PD7
  3455. #define PD7_PIN PIND7
  3456. #define PD7_RPORT PIND
  3457. #define PD7_WPORT PORTD
  3458. #define PD7_DDR DDRD
  3459. #define PD7_PWM NULL
  3460. #undef PE0
  3461. #define PE0_PIN PINE0
  3462. #define PE0_RPORT PINE
  3463. #define PE0_WPORT PORTE
  3464. #define PE0_DDR DDRE
  3465. #define PE0_PWM NULL
  3466. #undef PE1
  3467. #define PE1_PIN PINE1
  3468. #define PE1_RPORT PINE
  3469. #define PE1_WPORT PORTE
  3470. #define PE1_DDR DDRE
  3471. #define PE1_PWM NULL
  3472. #undef PE2
  3473. #define PE2_PIN PINE2
  3474. #define PE2_RPORT PINE
  3475. #define PE2_WPORT PORTE
  3476. #define PE2_DDR DDRE
  3477. #define PE2_PWM NULL
  3478. #undef PE3
  3479. #define PE3_PIN PINE3
  3480. #define PE3_RPORT PINE
  3481. #define PE3_WPORT PORTE
  3482. #define PE3_DDR DDRE
  3483. #define PE3_PWM &OCR3AL
  3484. #undef PE4
  3485. #define PE4_PIN PINE4
  3486. #define PE4_RPORT PINE
  3487. #define PE4_WPORT PORTE
  3488. #define PE4_DDR DDRE
  3489. #define PE4_PWM &OCR3BL
  3490. #undef PE5
  3491. #define PE5_PIN PINE5
  3492. #define PE5_RPORT PINE
  3493. #define PE5_WPORT PORTE
  3494. #define PE5_DDR DDRE
  3495. #define PE5_PWM &OCR3CL
  3496. #undef PE6
  3497. #define PE6_PIN PINE6
  3498. #define PE6_RPORT PINE
  3499. #define PE6_WPORT PORTE
  3500. #define PE6_DDR DDRE
  3501. #define PE6_PWM NULL
  3502. #undef PE7
  3503. #define PE7_PIN PINE7
  3504. #define PE7_RPORT PINE
  3505. #define PE7_WPORT PORTE
  3506. #define PE7_DDR DDRE
  3507. #define PE7_PWM NULL
  3508. #undef PF0
  3509. #define PF0_PIN PINF0
  3510. #define PF0_RPORT PINF
  3511. #define PF0_WPORT PORTF
  3512. #define PF0_DDR DDRF
  3513. #define PF0_PWM NULL
  3514. #undef PF1
  3515. #define PF1_PIN PINF1
  3516. #define PF1_RPORT PINF
  3517. #define PF1_WPORT PORTF
  3518. #define PF1_DDR DDRF
  3519. #define PF1_PWM NULL
  3520. #undef PF2
  3521. #define PF2_PIN PINF2
  3522. #define PF2_RPORT PINF
  3523. #define PF2_WPORT PORTF
  3524. #define PF2_DDR DDRF
  3525. #define PF2_PWM NULL
  3526. #undef PF3
  3527. #define PF3_PIN PINF3
  3528. #define PF3_RPORT PINF
  3529. #define PF3_WPORT PORTF
  3530. #define PF3_DDR DDRF
  3531. #define PF3_PWM NULL
  3532. #undef PF4
  3533. #define PF4_PIN PINF4
  3534. #define PF4_RPORT PINF
  3535. #define PF4_WPORT PORTF
  3536. #define PF4_DDR DDRF
  3537. #define PF4_PWM NULL
  3538. #undef PF5
  3539. #define PF5_PIN PINF5
  3540. #define PF5_RPORT PINF
  3541. #define PF5_WPORT PORTF
  3542. #define PF5_DDR DDRF
  3543. #define PF5_PWM NULL
  3544. #undef PF6
  3545. #define PF6_PIN PINF6
  3546. #define PF6_RPORT PINF
  3547. #define PF6_WPORT PORTF
  3548. #define PF6_DDR DDRF
  3549. #define PF6_PWM NULL
  3550. #undef PF7
  3551. #define PF7_PIN PINF7
  3552. #define PF7_RPORT PINF
  3553. #define PF7_WPORT PORTF
  3554. #define PF7_DDR DDRF
  3555. #define PF7_PWM NULL
  3556. #undef PG0
  3557. #define PG0_PIN PING0
  3558. #define PG0_RPORT PING
  3559. #define PG0_WPORT PORTG
  3560. #define PG0_DDR DDRG
  3561. #define PG0_PWM NULL
  3562. #undef PG1
  3563. #define PG1_PIN PING1
  3564. #define PG1_RPORT PING
  3565. #define PG1_WPORT PORTG
  3566. #define PG1_DDR DDRG
  3567. #define PG1_PWM NULL
  3568. #undef PG2
  3569. #define PG2_PIN PING2
  3570. #define PG2_RPORT PING
  3571. #define PG2_WPORT PORTG
  3572. #define PG2_DDR DDRG
  3573. #define PG2_PWM NULL
  3574. #undef PG3
  3575. #define PG3_PIN PING3
  3576. #define PG3_RPORT PING
  3577. #define PG3_WPORT PORTG
  3578. #define PG3_DDR DDRG
  3579. #define PG3_PWM NULL
  3580. #undef PG4
  3581. #define PG4_PIN PING4
  3582. #define PG4_RPORT PING
  3583. #define PG4_WPORT PORTG
  3584. #define PG4_DDR DDRG
  3585. #define PG4_PWM NULL
  3586. #undef PG5
  3587. #define PG5_PIN PING5
  3588. #define PG5_RPORT PING
  3589. #define PG5_WPORT PORTG
  3590. #define PG5_DDR DDRG
  3591. #define PG5_PWM &OCR0B
  3592. #endif // __AVR_ATmega(1281|2561)__
  3593. #ifndef DIO0_PIN
  3594. #error "pins for this chip not defined in arduino.h! If you write an appropriate pin definition and have this firmware work on your chip, please submit a pull request"
  3595. #endif
  3596. #endif // _FASTIO_ARDUINO_H