atxmega128a1u.pp 103 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711
  1. unit ATxmega128A1U;
  2. interface
  3. type
  4. TGPIO = object //General Purpose IO Registers
  5. GPIOR0: byte; //General Purpose IO Register 0
  6. GPIOR1: byte; //General Purpose IO Register 1
  7. GPIOR2: byte; //General Purpose IO Register 2
  8. GPIOR3: byte; //General Purpose IO Register 3
  9. GPIOR4: byte; //General Purpose IO Register 4
  10. GPIOR5: byte; //General Purpose IO Register 5
  11. GPIOR6: byte; //General Purpose IO Register 6
  12. GPIOR7: byte; //General Purpose IO Register 7
  13. GPIOR8: byte; //General Purpose IO Register 8
  14. GPIOR9: byte; //General Purpose IO Register 9
  15. GPIORA: byte; //General Purpose IO Register 10
  16. GPIORB: byte; //General Purpose IO Register 11
  17. GPIORC: byte; //General Purpose IO Register 12
  18. GPIORD: byte; //General Purpose IO Register 13
  19. GPIORE: byte; //General Purpose IO Register 14
  20. GPIORF: byte; //General Purpose IO Register 15
  21. end;
  22. TVPORT = object //Virtual Port
  23. DIR: byte; //I/O Port Data Direction
  24. OUT_: byte; //I/O Port Output
  25. IN_: byte; //I/O Port Input
  26. INTFLAGS: byte; //Interrupt Flag Register
  27. const
  28. // Port Interrupt 1 Flag
  29. INT1IFbm = $02;
  30. // Port Interrupt 0 Flag
  31. INT0IFbm = $01;
  32. end;
  33. TOCD = object //On-Chip Debug System
  34. OCDR0: byte; //OCD Register 0
  35. OCDR1: byte; //OCD Register 1
  36. end;
  37. TCPU = object //CPU registers
  38. Reserved0: byte;
  39. Reserved1: byte;
  40. Reserved2: byte;
  41. Reserved3: byte;
  42. CCP: byte; //Configuration Change Protection
  43. Reserved5: byte;
  44. Reserved6: byte;
  45. Reserved7: byte;
  46. RAMPD: byte; //Ramp D
  47. RAMPX: byte; //Ramp X
  48. RAMPY: byte; //Ramp Y
  49. RAMPZ: byte; //Ramp Z
  50. EIND: byte; //Extended Indirect Jump
  51. SPL: byte; //Stack Pointer Low
  52. SPH: byte; //Stack Pointer High
  53. SREG: byte; //Status Register
  54. const
  55. // CCP
  56. CCPmask = $FF;
  57. CCP_SPM = $9D;
  58. CCP_IOREG = $D8;
  59. // Global Interrupt Enable Flag
  60. Ibm = $80;
  61. // Transfer Bit
  62. Tbm = $40;
  63. // Half Carry Flag
  64. Hbm = $20;
  65. // N Exclusive Or V Flag
  66. Sbm = $10;
  67. // Two's Complement Overflow Flag
  68. Vbm = $08;
  69. // Negative Flag
  70. Nbm = $04;
  71. // Zero Flag
  72. Zbm = $02;
  73. // Carry Flag
  74. Cbm = $01;
  75. end;
  76. TCLK = object //Clock System
  77. CTRL: byte; //Control Register
  78. PSCTRL: byte; //Prescaler Control Register
  79. LOCK: byte; //Lock register
  80. RTCCTRL: byte; //RTC Control Register
  81. USBCTRL: byte; //USB Control Register
  82. const
  83. // CLK_SCLKSEL
  84. SCLKSELmask = $07;
  85. SCLKSEL_RC2M = $00;
  86. SCLKSEL_RC32M = $01;
  87. SCLKSEL_RC32K = $02;
  88. SCLKSEL_XOSC = $03;
  89. SCLKSEL_PLL = $04;
  90. // CLK_PSADIV
  91. PSADIVmask = $7C;
  92. PSADIV_1 = $00;
  93. PSADIV_2 = $04;
  94. PSADIV_4 = $0C;
  95. PSADIV_8 = $14;
  96. PSADIV_16 = $1C;
  97. PSADIV_32 = $24;
  98. PSADIV_64 = $2C;
  99. PSADIV_128 = $34;
  100. PSADIV_256 = $3C;
  101. PSADIV_512 = $44;
  102. // CLK_PSBCDIV
  103. PSBCDIVmask = $03;
  104. PSBCDIV_1_1 = $00;
  105. PSBCDIV_1_2 = $01;
  106. PSBCDIV_4_1 = $02;
  107. PSBCDIV_2_2 = $03;
  108. // Clock System Lock
  109. LOCKbm = $01;
  110. // CLK_RTCSRC
  111. RTCSRCmask = $0E;
  112. RTCSRC_ULP = $00;
  113. RTCSRC_TOSC = $02;
  114. RTCSRC_RCOSC = $04;
  115. RTCSRC_TOSC32 = $0A;
  116. RTCSRC_RCOSC32 = $0C;
  117. RTCSRC_EXTCLK = $0E;
  118. // Clock Source Enable
  119. RTCENbm = $01;
  120. // CLK_USBPSDIV
  121. USBPSDIVmask = $38;
  122. USBPSDIV_1 = $00;
  123. USBPSDIV_2 = $08;
  124. USBPSDIV_4 = $10;
  125. USBPSDIV_8 = $18;
  126. USBPSDIV_16 = $20;
  127. USBPSDIV_32 = $28;
  128. // CLK_USBSRC
  129. USBSRCmask = $06;
  130. USBSRC_PLL = $00;
  131. USBSRC_RC32M = $02;
  132. // Clock Source Enable
  133. USBSENbm = $01;
  134. end;
  135. TPR = object //Power Reduction
  136. PRGEN: byte; //General Power Reduction
  137. PRPA: byte; //Power Reduction Port A
  138. PRPB: byte; //Power Reduction Port B
  139. PRPC: byte; //Power Reduction Port C
  140. PRPD: byte; //Power Reduction Port D
  141. PRPE: byte; //Power Reduction Port E
  142. PRPF: byte; //Power Reduction Port F
  143. const
  144. // USB
  145. USBbm = $40;
  146. // AES
  147. AESbm = $10;
  148. // External Bus Interface
  149. EBIbm = $08;
  150. // Real-time Counter
  151. RTCbm = $04;
  152. // Event System
  153. EVSYSbm = $02;
  154. // DMA-Controller
  155. DMAbm = $01;
  156. // Port A DAC
  157. DACbm = $04;
  158. // Port A ADC
  159. ADCbm = $02;
  160. // Port A Analog Comparator
  161. ACbm = $01;
  162. // Port C Two-wire Interface
  163. TWIbm = $40;
  164. // Port C USART1
  165. USART1bm = $20;
  166. // Port C USART0
  167. USART0bm = $10;
  168. // Port C SPI
  169. SPIbm = $08;
  170. // Port C AWEX
  171. HIRESbm = $04;
  172. // Port C Timer/Counter1
  173. TC1bm = $02;
  174. // Port C Timer/Counter0
  175. TC0bm = $01;
  176. end;
  177. TSLEEP = object //Sleep Controller
  178. CTRL: byte; //Control Register
  179. const
  180. // SLEEP_SMODE
  181. SMODEmask = $0E;
  182. SMODE_IDLE = $00;
  183. SMODE_PDOWN = $04;
  184. SMODE_PSAVE = $06;
  185. SMODE_STDBY = $0C;
  186. SMODE_ESTDBY = $0E;
  187. // Sleep Enable
  188. SENbm = $01;
  189. end;
  190. TOSC = object //Oscillator
  191. CTRL: byte; //Control Register
  192. STATUS: byte; //Status Register
  193. XOSCCTRL: byte; //External Oscillator Control Register
  194. XOSCFAIL: byte; //Oscillator Failure Detection Register
  195. RC32KCAL: byte; //32.768 kHz Internal Oscillator Calibration Register
  196. PLLCTRL: byte; //PLL Control Register
  197. DFLLCTRL: byte; //DFLL Control Register
  198. const
  199. // PLL Enable
  200. PLLENbm = $10;
  201. // External Oscillator Enable
  202. XOSCENbm = $08;
  203. // Internal 32.768 kHz RC Oscillator Enable
  204. RC32KENbm = $04;
  205. // Internal 32 MHz RC Oscillator Enable
  206. RC32MENbm = $02;
  207. // Internal 2 MHz RC Oscillator Enable
  208. RC2MENbm = $01;
  209. // PLL Ready
  210. PLLRDYbm = $10;
  211. // External Oscillator Ready
  212. XOSCRDYbm = $08;
  213. // Internal 32.768 kHz RC Oscillator Ready
  214. RC32KRDYbm = $04;
  215. // Internal 32 MHz RC Oscillator Ready
  216. RC32MRDYbm = $02;
  217. // Internal 2 MHz RC Oscillator Ready
  218. RC2MRDYbm = $01;
  219. // OSC_FRQRANGE
  220. FRQRANGEmask = $C0;
  221. FRQRANGE_04TO2 = $00;
  222. FRQRANGE_2TO9 = $40;
  223. FRQRANGE_9TO12 = $80;
  224. FRQRANGE_12TO16 = $C0;
  225. // 32.768 kHz XTAL OSC Low-power Mode
  226. X32KLPMbm = $20;
  227. // 16 MHz Crystal Oscillator High Power mode
  228. XOSCPWRbm = $10;
  229. // OSC_XOSCSEL
  230. XOSCSELmask = $0F;
  231. XOSCSEL_EXTCLK = $00;
  232. XOSCSEL_32KHz = $02;
  233. XOSCSEL_XTAL_256CLK = $03;
  234. XOSCSEL_XTAL_1KCLK = $07;
  235. XOSCSEL_XTAL_16KCLK = $0B;
  236. // PLL Failure Detection Interrupt Flag
  237. PLLFDIFbm = $08;
  238. // PLL Failure Detection Enable
  239. PLLFDENbm = $04;
  240. // XOSC Failure Detection Interrupt Flag
  241. XOSCFDIFbm = $02;
  242. // XOSC Failure Detection Enable
  243. XOSCFDENbm = $01;
  244. // OSC_PLLSRC
  245. PLLSRCmask = $C0;
  246. PLLSRC_RC2M = $00;
  247. PLLSRC_RC32M = $80;
  248. PLLSRC_XOSC = $C0;
  249. // Divide by 2
  250. PLLDIVbm = $20;
  251. // Multiplication Factor
  252. PLLFAC0bm = $01;
  253. PLLFAC1bm = $02;
  254. PLLFAC2bm = $04;
  255. PLLFAC3bm = $08;
  256. PLLFAC4bm = $10;
  257. // OSC_RC32MCREF
  258. RC32MCREFmask = $06;
  259. RC32MCREF_RC32K = $00;
  260. RC32MCREF_XOSC32K = $02;
  261. RC32MCREF_USBSOF = $04;
  262. // OSC_RC2MCREF
  263. RC2MCREFmask = $01;
  264. RC2MCREF_RC32K = $00;
  265. RC2MCREF_XOSC32K = $01;
  266. end;
  267. TDFLL = object //DFLL
  268. CTRL: byte; //Control Register
  269. Reserved1: byte;
  270. CALA: byte; //Calibration Register A
  271. CALB: byte; //Calibration Register B
  272. COMP0: byte; //Oscillator Compare Register 0
  273. COMP1: byte; //Oscillator Compare Register 1
  274. COMP2: byte; //Oscillator Compare Register 2
  275. const
  276. // DFLL Enable
  277. ENABLEbm = $01;
  278. // DFLL Calibration Value A
  279. CALL0bm = $01;
  280. CALL1bm = $02;
  281. CALL2bm = $04;
  282. CALL3bm = $08;
  283. CALL4bm = $10;
  284. CALL5bm = $20;
  285. CALL6bm = $40;
  286. // DFLL Calibration Value B
  287. CALH0bm = $01;
  288. CALH1bm = $02;
  289. CALH2bm = $04;
  290. CALH3bm = $08;
  291. CALH4bm = $10;
  292. CALH5bm = $20;
  293. end;
  294. TRST = object //Reset
  295. STATUS: byte; //Status Register
  296. CTRL: byte; //Control Register
  297. const
  298. // Spike Detection Reset Flag
  299. SDRFbm = $40;
  300. // Software Reset Flag
  301. SRFbm = $20;
  302. // Programming and Debug Interface Interface Reset Flag
  303. PDIRFbm = $10;
  304. // Watchdog Reset Flag
  305. WDRFbm = $08;
  306. // Brown-out Reset Flag
  307. BORFbm = $04;
  308. // External Reset Flag
  309. EXTRFbm = $02;
  310. // Power-on Reset Flag
  311. PORFbm = $01;
  312. // Software Reset
  313. SWRSTbm = $01;
  314. end;
  315. TWDT = object //Watch-Dog Timer
  316. CTRL: byte; //Control
  317. WINCTRL: byte; //Windowed Mode Control
  318. STATUS: byte; //Status
  319. const
  320. // WDT_PER
  321. PERmask = $3C;
  322. PER_8CLK = $00;
  323. PER_16CLK = $04;
  324. PER_32CLK = $08;
  325. PER_64CLK = $0C;
  326. PER_128CLK = $10;
  327. PER_256CLK = $14;
  328. PER_512CLK = $18;
  329. PER_1KCLK = $1C;
  330. PER_2KCLK = $20;
  331. PER_4KCLK = $24;
  332. PER_8KCLK = $28;
  333. // Enable
  334. ENABLEbm = $02;
  335. // Change Enable
  336. CENbm = $01;
  337. // WDT_WPER
  338. WPERmask = $3C;
  339. WPER_8CLK = $00;
  340. WPER_16CLK = $04;
  341. WPER_32CLK = $08;
  342. WPER_64CLK = $0C;
  343. WPER_128CLK = $10;
  344. WPER_256CLK = $14;
  345. WPER_512CLK = $18;
  346. WPER_1KCLK = $1C;
  347. WPER_2KCLK = $20;
  348. WPER_4KCLK = $24;
  349. WPER_8KCLK = $28;
  350. // Windowed Mode Enable
  351. WENbm = $02;
  352. // Windowed Mode Change Enable
  353. WCENbm = $01;
  354. // Synchronization busy
  355. SYNCBUSYbm = $01;
  356. end;
  357. TMCU = object //MCU Control
  358. DEVID0: byte; //Device ID byte 0
  359. DEVID1: byte; //Device ID byte 1
  360. DEVID2: byte; //Device ID byte 2
  361. REVID: byte; //Revision ID
  362. JTAGUID: byte; //JTAG User ID
  363. Reserved5: byte;
  364. MCUCR: byte; //MCU Control
  365. ANAINIT: byte; //Analog Startup Delay
  366. EVSYSLOCK: byte; //Event System Lock
  367. AWEXLOCK: byte; //AWEX Lock
  368. const
  369. // JTAG Disable
  370. JTAGDbm = $01;
  371. // Analog startup delay Port B
  372. STARTUPDLYB0bm = $04;
  373. STARTUPDLYB1bm = $08;
  374. // Analog startup delay Port A
  375. STARTUPDLYA0bm = $01;
  376. STARTUPDLYA1bm = $02;
  377. // Event Channel 4-7 Lock
  378. EVSYS1LOCKbm = $10;
  379. // Event Channel 0-3 Lock
  380. EVSYS0LOCKbm = $01;
  381. // AWeX on T/C F0 Lock
  382. AWEXFLOCKbm = $08;
  383. // AWeX on T/C E0 Lock
  384. AWEXELOCKbm = $04;
  385. // AWeX on T/C D0 Lock
  386. AWEXDLOCKbm = $02;
  387. // AWeX on T/C C0 Lock
  388. AWEXCLOCKbm = $01;
  389. end;
  390. TPMIC = object //Programmable Multi-level Interrupt Controller
  391. STATUS: byte; //Status Register
  392. INTPRI: byte; //Interrupt Priority
  393. CTRL: byte; //Control Register
  394. const
  395. // Non-maskable Interrupt Executing
  396. NMIEXbm = $80;
  397. // High Level Interrupt Executing
  398. HILVLEXbm = $04;
  399. // Medium Level Interrupt Executing
  400. MEDLVLEXbm = $02;
  401. // Low Level Interrupt Executing
  402. LOLVLEXbm = $01;
  403. // Round-Robin Priority Enable
  404. RRENbm = $80;
  405. // Interrupt Vector Select
  406. IVSELbm = $40;
  407. // High Level Enable
  408. HILVLENbm = $04;
  409. // Medium Level Enable
  410. MEDLVLENbm = $02;
  411. // Low Level Enable
  412. LOLVLENbm = $01;
  413. end;
  414. TPORTCFG = object //I/O port Configuration
  415. MPCMASK: byte; //Multi-pin Configuration Mask
  416. Reserved1: byte;
  417. VPCTRLA: byte; //Virtual Port Control Register A
  418. VPCTRLB: byte; //Virtual Port Control Register B
  419. CLKEVOUT: byte; //Clock and Event Out Register
  420. EBIOUT: byte; //EBI Output register
  421. EVOUTSEL: byte; //Event Output Select
  422. const
  423. // VP1MAP
  424. VP1MAPmask = $F0;
  425. VP1MAPPORTA = $00;
  426. VP1MAPPORTB = $10;
  427. VP1MAPPORTC = $20;
  428. VP1MAPPORTD = $30;
  429. VP1MAPPORTE = $40;
  430. VP1MAPPORTF = $50;
  431. VP1MAPPORTG = $60;
  432. VP1MAPPORTH = $70;
  433. VP1MAPPORTJ = $80;
  434. VP1MAPPORTK = $90;
  435. VP1MAPPORTL = $A0;
  436. VP1MAPPORTM = $B0;
  437. VP1MAPPORTN = $C0;
  438. VP1MAPPORTP = $D0;
  439. VP1MAPPORTQ = $E0;
  440. VP1MAPPORTR = $F0;
  441. // VP0MAP
  442. VP0MAPmask = $0F;
  443. VP0MAPPORTA = $00;
  444. VP0MAPPORTB = $01;
  445. VP0MAPPORTC = $02;
  446. VP0MAPPORTD = $03;
  447. VP0MAPPORTE = $04;
  448. VP0MAPPORTF = $05;
  449. VP0MAPPORTG = $06;
  450. VP0MAPPORTH = $07;
  451. VP0MAPPORTJ = $08;
  452. VP0MAPPORTK = $09;
  453. VP0MAPPORTL = $0A;
  454. VP0MAPPORTM = $0B;
  455. VP0MAPPORTN = $0C;
  456. VP0MAPPORTP = $0D;
  457. VP0MAPPORTQ = $0E;
  458. VP0MAPPORTR = $0F;
  459. // VP3MAP
  460. VP3MAPmask = $F0;
  461. VP3MAPPORTA = $00;
  462. VP3MAPPORTB = $10;
  463. VP3MAPPORTC = $20;
  464. VP3MAPPORTD = $30;
  465. VP3MAPPORTE = $40;
  466. VP3MAPPORTF = $50;
  467. VP3MAPPORTG = $60;
  468. VP3MAPPORTH = $70;
  469. VP3MAPPORTJ = $80;
  470. VP3MAPPORTK = $90;
  471. VP3MAPPORTL = $A0;
  472. VP3MAPPORTM = $B0;
  473. VP3MAPPORTN = $C0;
  474. VP3MAPPORTP = $D0;
  475. VP3MAPPORTQ = $E0;
  476. VP3MAPPORTR = $F0;
  477. // VP2MAP
  478. VP2MAPmask = $0F;
  479. VP2MAPPORTA = $00;
  480. VP2MAPPORTB = $01;
  481. VP2MAPPORTC = $02;
  482. VP2MAPPORTD = $03;
  483. VP2MAPPORTE = $04;
  484. VP2MAPPORTF = $05;
  485. VP2MAPPORTG = $06;
  486. VP2MAPPORTH = $07;
  487. VP2MAPPORTJ = $08;
  488. VP2MAPPORTK = $09;
  489. VP2MAPPORTL = $0A;
  490. VP2MAPPORTM = $0B;
  491. VP2MAPPORTN = $0C;
  492. VP2MAPPORTP = $0D;
  493. VP2MAPPORTQ = $0E;
  494. VP2MAPPORTR = $0F;
  495. // PORTCFG_CLKOUT
  496. CLKOUTmask = $03;
  497. CLKOUT_OFF = $00;
  498. CLKOUT_PC7 = $01;
  499. CLKOUT_PD7 = $02;
  500. CLKOUT_PE7 = $03;
  501. // PORTCFG_CLKOUTSEL
  502. CLKOUTSELmask = $0C;
  503. CLKOUTSEL_CLK1X = $00;
  504. CLKOUTSEL_CLK2X = $04;
  505. CLKOUTSEL_CLK4X = $08;
  506. // PORTCFG_EVOUT
  507. EVOUTmask = $30;
  508. EVOUT_OFF = $00;
  509. EVOUT_PC7 = $10;
  510. EVOUT_PD7 = $20;
  511. EVOUT_PE7 = $30;
  512. // RTC Clock Output
  513. RTCOUTbm = $40;
  514. // PORTCFG_CLKEVPIN
  515. CLKEVPINmask = $80;
  516. CLKEVPIN_PIN7 = $00;
  517. CLKEVPIN_PIN4 = $80;
  518. // PORTCFG_EBICSOUT
  519. EBICSOUTmask = $03;
  520. EBICSOUT_PH = $00;
  521. EBICSOUT_PL = $01;
  522. EBICSOUT_PF = $02;
  523. EBICSOUT_PE = $03;
  524. // PORTCFG_EBIADROUT
  525. EBIADROUTmask = $0C;
  526. EBIADROUT_PF = $00;
  527. EBIADROUT_PE = $04;
  528. EBIADROUT_PFH = $08;
  529. EBIADROUT_PEH = $0C;
  530. // PORTCFG_EVOUTSEL
  531. EVOUTSELmask = $07;
  532. EVOUTSEL_0 = $00;
  533. EVOUTSEL_1 = $01;
  534. EVOUTSEL_2 = $02;
  535. EVOUTSEL_3 = $03;
  536. EVOUTSEL_4 = $04;
  537. EVOUTSEL_5 = $05;
  538. EVOUTSEL_6 = $06;
  539. EVOUTSEL_7 = $07;
  540. end;
  541. TAES = object //AES Module
  542. CTRL: byte; //AES Control Register
  543. STATUS: byte; //AES Status Register
  544. STATE: byte; //AES State Register
  545. KEY: byte; //AES Key Register
  546. INTCTRL: byte; //AES Interrupt Control Register
  547. const
  548. // Start/Run
  549. STARTbm = $80;
  550. // Auto Start Trigger
  551. AUTObm = $40;
  552. // AES Software Reset
  553. RESETbm = $20;
  554. // Decryption / Direction
  555. DECRYPTbm = $10;
  556. // State XOR Load Enable
  557. XORbm = $04;
  558. // AES Error
  559. ERRORbm = $80;
  560. // State Ready Interrupt Flag
  561. SRIFbm = $01;
  562. // AES_INTLVL
  563. INTLVLmask = $03;
  564. INTLVL_OFF = $00;
  565. INTLVL_LO = $01;
  566. INTLVL_MED = $02;
  567. INTLVL_HI = $03;
  568. end;
  569. TCRC = object //Cyclic Redundancy Checker
  570. CTRL: byte; //Control Register
  571. STATUS: byte; //Status Register
  572. Reserved2: byte;
  573. DATAIN: byte; //Data Input
  574. CHECKSUM0: byte; //Checksum byte 0
  575. CHECKSUM1: byte; //Checksum byte 1
  576. CHECKSUM2: byte; //Checksum byte 2
  577. CHECKSUM3: byte; //Checksum byte 3
  578. const
  579. // CRC_RESET
  580. RESETmask = $C0;
  581. RESET_NO = $00;
  582. RESET_RESET0 = $80;
  583. RESET_RESET1 = $C0;
  584. // CRC Mode
  585. CRC32bm = $20;
  586. // CRC_SOURCE
  587. SOURCEmask = $0F;
  588. SOURCE_DISABLE = $00;
  589. SOURCE_IO = $01;
  590. SOURCE_FLASH = $02;
  591. SOURCE_DMAC0 = $04;
  592. SOURCE_DMAC1 = $05;
  593. SOURCE_DMAC2 = $06;
  594. SOURCE_DMAC3 = $07;
  595. // Zero detection
  596. ZERObm = $02;
  597. // Busy
  598. BUSYbm = $01;
  599. end;
  600. TDMA_CH = object //DMA Channel
  601. CTRLA: byte; //Channel Control
  602. CTRLB: byte; //Channel Control
  603. ADDRCTRL: byte; //Address Control
  604. TRIGSRC: byte; //Channel Trigger Source
  605. TRFCNT: word; //Channel Block Transfer Count
  606. REPCNT: byte; //Channel Repeat Count
  607. Reserved7: byte;
  608. SRCADDR0: byte; //Channel Source Address 0
  609. SRCADDR1: byte; //Channel Source Address 1
  610. SRCADDR2: byte; //Channel Source Address 2
  611. Reserved11: byte;
  612. DESTADDR0: byte; //Channel Destination Address 0
  613. DESTADDR1: byte; //Channel Destination Address 1
  614. DESTADDR2: byte; //Channel Destination Address 2
  615. const
  616. // Channel Enable
  617. ENABLEbm = $80;
  618. // Channel Software Reset
  619. RESETbm = $40;
  620. // Channel Repeat Mode
  621. REPEATbm = $20;
  622. // Channel Transfer Request
  623. TRFREQbm = $10;
  624. // Channel Single Shot Data Transfer
  625. SINGLEbm = $04;
  626. // BURSTLEN
  627. BURSTLENmask = $03;
  628. BURSTLEN1BYTE = $00;
  629. BURSTLEN2BYTE = $01;
  630. BURSTLEN4BYTE = $02;
  631. BURSTLEN8BYTE = $03;
  632. // Block Transfer Busy
  633. CHBUSYbm = $80;
  634. // Block Transfer Pending
  635. CHPENDbm = $40;
  636. // Block Transfer Error Interrupt Flag
  637. ERRIFbm = $20;
  638. // Transaction Complete Interrupt Flag
  639. TRNIFbm = $10;
  640. // ERRINTLVL
  641. ERRINTLVLmask = $0C;
  642. ERRINTLVLOFF = $00;
  643. ERRINTLVLLO = $04;
  644. ERRINTLVLMED = $08;
  645. ERRINTLVLHI = $0C;
  646. // TRNINTLVL
  647. TRNINTLVLmask = $03;
  648. TRNINTLVLOFF = $00;
  649. TRNINTLVLLO = $01;
  650. TRNINTLVLMED = $02;
  651. TRNINTLVLHI = $03;
  652. // SRCRELOAD
  653. SRCRELOADmask = $C0;
  654. SRCRELOADNONE = $00;
  655. SRCRELOADBLOCK = $40;
  656. SRCRELOADBURST = $80;
  657. SRCRELOADTRANSACTION = $C0;
  658. // SRCDIR
  659. SRCDIRmask = $30;
  660. SRCDIRFIXED = $00;
  661. SRCDIRINC = $10;
  662. SRCDIRDEC = $20;
  663. // DESTRELOAD
  664. DESTRELOADmask = $0C;
  665. DESTRELOADNONE = $00;
  666. DESTRELOADBLOCK = $04;
  667. DESTRELOADBURST = $08;
  668. DESTRELOADTRANSACTION = $0C;
  669. // DESTDIR
  670. DESTDIRmask = $03;
  671. DESTDIRFIXED = $00;
  672. DESTDIRINC = $01;
  673. DESTDIRDEC = $02;
  674. // TRIGSRC
  675. TRIGSRCmask = $FF;
  676. TRIGSRCOFF = $00;
  677. TRIGSRCEVSYS_CH0 = $01;
  678. TRIGSRCEVSYS_CH1 = $02;
  679. TRIGSRCEVSYS_CH2 = $03;
  680. TRIGSRCAES = $04;
  681. TRIGSRCADCA_CH0 = $10;
  682. TRIGSRCADCA_CH1 = $11;
  683. TRIGSRCADCA_CH2 = $12;
  684. TRIGSRCADCA_CH3 = $13;
  685. TRIGSRCADCA_CH4 = $14;
  686. TRIGSRCDACA_CH0 = $15;
  687. TRIGSRCDACA_CH1 = $16;
  688. TRIGSRCADCB_CH0 = $20;
  689. TRIGSRCADCB_CH1 = $21;
  690. TRIGSRCADCB_CH2 = $22;
  691. TRIGSRCADCB_CH3 = $23;
  692. TRIGSRCADCB_CH4 = $24;
  693. TRIGSRCDACB_CH0 = $25;
  694. TRIGSRCDACB_CH1 = $26;
  695. TRIGSRCTCC0_OVF = $40;
  696. TRIGSRCTCC0_ERR = $41;
  697. TRIGSRCTCC0_CCA = $42;
  698. TRIGSRCTCC0_CCB = $43;
  699. TRIGSRCTCC0_CCC = $44;
  700. TRIGSRCTCC0_CCD = $45;
  701. TRIGSRCTCC1_OVF = $46;
  702. TRIGSRCTCC1_ERR = $47;
  703. TRIGSRCTCC1_CCA = $48;
  704. TRIGSRCTCC1_CCB = $49;
  705. TRIGSRCSPIC = $4A;
  706. TRIGSRCUSARTC0_RXC = $4B;
  707. TRIGSRCUSARTC0_DRE = $4C;
  708. TRIGSRCUSARTC1_RXC = $4E;
  709. TRIGSRCUSARTC1_DRE = $4F;
  710. TRIGSRCTCD0_OVF = $60;
  711. TRIGSRCTCD0_ERR = $61;
  712. TRIGSRCTCD0_CCA = $62;
  713. TRIGSRCTCD0_CCB = $63;
  714. TRIGSRCTCD0_CCC = $64;
  715. TRIGSRCTCD0_CCD = $65;
  716. TRIGSRCTCD1_OVF = $66;
  717. TRIGSRCTCD1_ERR = $67;
  718. TRIGSRCTCD1_CCA = $68;
  719. TRIGSRCTCD1_CCB = $69;
  720. TRIGSRCSPID = $6A;
  721. TRIGSRCUSARTD0_RXC = $6B;
  722. TRIGSRCUSARTD0_DRE = $6C;
  723. TRIGSRCUSARTD1_RXC = $6E;
  724. TRIGSRCUSARTD1_DRE = $6F;
  725. TRIGSRCTCE0_OVF = $80;
  726. TRIGSRCTCE0_ERR = $81;
  727. TRIGSRCTCE0_CCA = $82;
  728. TRIGSRCTCE0_CCB = $83;
  729. TRIGSRCTCE0_CCC = $84;
  730. TRIGSRCTCE0_CCD = $85;
  731. TRIGSRCTCE1_OVF = $86;
  732. TRIGSRCTCE1_ERR = $87;
  733. TRIGSRCTCE1_CCA = $88;
  734. TRIGSRCTCE1_CCB = $89;
  735. TRIGSRCSPIE = $8A;
  736. TRIGSRCUSARTE0_RXC = $8B;
  737. TRIGSRCUSARTE0_DRE = $8C;
  738. TRIGSRCUSARTE1_RXC = $8E;
  739. TRIGSRCUSARTE1_DRE = $8F;
  740. TRIGSRCTCF0_OVF = $A0;
  741. TRIGSRCTCF0_ERR = $A1;
  742. TRIGSRCTCF0_CCA = $A2;
  743. TRIGSRCTCF0_CCB = $A3;
  744. TRIGSRCTCF0_CCC = $A4;
  745. TRIGSRCTCF0_CCD = $A5;
  746. TRIGSRCTCF1_OVF = $A6;
  747. TRIGSRCTCF1_ERR = $A7;
  748. TRIGSRCTCF1_CCA = $A8;
  749. TRIGSRCTCF1_CCB = $A9;
  750. TRIGSRCSPIF = $AA;
  751. TRIGSRCUSARTF0_RXC = $AB;
  752. TRIGSRCUSARTF0_DRE = $AC;
  753. TRIGSRCUSARTF1_RXC = $AE;
  754. TRIGSRCUSARTF1_DRE = $AF;
  755. end;
  756. TDMA = object //DMA Controller
  757. CTRL: byte; //Control
  758. Reserved1: byte;
  759. Reserved2: byte;
  760. INTFLAGS: byte; //Transfer Interrupt Status
  761. STATUS: byte; //Status
  762. Reserved5: byte;
  763. TEMP: word; //Temporary Register For 16/24-bit Access
  764. Reserved8: byte;
  765. Reserved9: byte;
  766. Reserved10: byte;
  767. Reserved11: byte;
  768. Reserved12: byte;
  769. Reserved13: byte;
  770. Reserved14: byte;
  771. Reserved15: byte;
  772. CH0: TDMA_CH; //DMA Channel 0
  773. CH1: TDMA_CH; //DMA Channel 1
  774. CH2: TDMA_CH; //DMA Channel 2
  775. CH3: TDMA_CH; //DMA Channel 3
  776. const
  777. // Enable
  778. ENABLEbm = $80;
  779. // Software Reset
  780. RESETbm = $40;
  781. // DMA_DBUFMODE
  782. DBUFMODEmask = $0C;
  783. DBUFMODE_DISABLED = $00;
  784. DBUFMODE_CH01 = $04;
  785. DBUFMODE_CH23 = $08;
  786. DBUFMODE_CH01CH23 = $0C;
  787. // DMA_PRIMODE
  788. PRIMODEmask = $03;
  789. PRIMODE_RR0123 = $00;
  790. PRIMODE_CH0RR123 = $01;
  791. PRIMODE_CH01RR23 = $02;
  792. PRIMODE_CH0123 = $03;
  793. // Channel 3 Block Transfer Error Interrupt Flag
  794. CH3ERRIFbm = $80;
  795. // Channel 2 Block Transfer Error Interrupt Flag
  796. CH2ERRIFbm = $40;
  797. // Channel 1 Block Transfer Error Interrupt Flag
  798. CH1ERRIFbm = $20;
  799. // Channel 0 Block Transfer Error Interrupt Flag
  800. CH0ERRIFbm = $10;
  801. // Channel 3 Transaction Complete Interrupt Flag
  802. CH3TRNIFbm = $08;
  803. // Channel 2 Transaction Complete Interrupt Flag
  804. CH2TRNIFbm = $04;
  805. // Channel 1 Transaction Complete Interrupt Flag
  806. CH1TRNIFbm = $02;
  807. // Channel 0 Transaction Complete Interrupt Flag
  808. CH0TRNIFbm = $01;
  809. // Channel 3 Block Transfer Busy
  810. CH3BUSYbm = $80;
  811. // Channel 2 Block Transfer Busy
  812. CH2BUSYbm = $40;
  813. // Channel 1 Block Transfer Busy
  814. CH1BUSYbm = $20;
  815. // Channel 0 Block Transfer Busy
  816. CH0BUSYbm = $10;
  817. // Channel 3 Block Transfer Pending
  818. CH3PENDbm = $08;
  819. // Channel 2 Block Transfer Pending
  820. CH2PENDbm = $04;
  821. // Channel 1 Block Transfer Pending
  822. CH1PENDbm = $02;
  823. // Channel 0 Block Transfer Pending
  824. CH0PENDbm = $01;
  825. end;
  826. TEVSYS = object //Event System
  827. CH0MUX: byte; //Event Channel 0 Multiplexer
  828. CH1MUX: byte; //Event Channel 1 Multiplexer
  829. CH2MUX: byte; //Event Channel 2 Multiplexer
  830. CH3MUX: byte; //Event Channel 3 Multiplexer
  831. CH4MUX: byte; //Event Channel 4 Multiplexer
  832. CH5MUX: byte; //Event Channel 5 Multiplexer
  833. CH6MUX: byte; //Event Channel 6 Multiplexer
  834. CH7MUX: byte; //Event Channel 7 Multiplexer
  835. CH0CTRL: byte; //Channel 0 Control Register
  836. CH1CTRL: byte; //Channel 1 Control Register
  837. CH2CTRL: byte; //Channel 2 Control Register
  838. CH3CTRL: byte; //Channel 3 Control Register
  839. CH4CTRL: byte; //Channel 4 Control Register
  840. CH5CTRL: byte; //Channel 5 Control Register
  841. CH6CTRL: byte; //Channel 6 Control Register
  842. CH7CTRL: byte; //Channel 7 Control Register
  843. STROBE: byte; //Event Strobe
  844. DATA: byte; //Event Data
  845. const
  846. // EVSYS_CHMUX
  847. CHMUXmask = $FF;
  848. CHMUX_OFF = $00;
  849. CHMUX_RTC_OVF = $08;
  850. CHMUX_RTC_CMP = $09;
  851. CHMUX_USB = $0A;
  852. CHMUX_ACA_CH0 = $10;
  853. CHMUX_ACA_CH1 = $11;
  854. CHMUX_ACA_WIN = $12;
  855. CHMUX_ACB_CH0 = $13;
  856. CHMUX_ACB_CH1 = $14;
  857. CHMUX_ACB_WIN = $15;
  858. CHMUX_ADCA_CH0 = $20;
  859. CHMUX_ADCA_CH1 = $21;
  860. CHMUX_ADCA_CH2 = $22;
  861. CHMUX_ADCA_CH3 = $23;
  862. CHMUX_ADCB_CH0 = $24;
  863. CHMUX_ADCB_CH1 = $25;
  864. CHMUX_ADCB_CH2 = $26;
  865. CHMUX_ADCB_CH3 = $27;
  866. CHMUX_PORTA_PIN0 = $50;
  867. CHMUX_PORTA_PIN1 = $51;
  868. CHMUX_PORTA_PIN2 = $52;
  869. CHMUX_PORTA_PIN3 = $53;
  870. CHMUX_PORTA_PIN4 = $54;
  871. CHMUX_PORTA_PIN5 = $55;
  872. CHMUX_PORTA_PIN6 = $56;
  873. CHMUX_PORTA_PIN7 = $57;
  874. CHMUX_PORTB_PIN0 = $58;
  875. CHMUX_PORTB_PIN1 = $59;
  876. CHMUX_PORTB_PIN2 = $5A;
  877. CHMUX_PORTB_PIN3 = $5B;
  878. CHMUX_PORTB_PIN4 = $5C;
  879. CHMUX_PORTB_PIN5 = $5D;
  880. CHMUX_PORTB_PIN6 = $5E;
  881. CHMUX_PORTB_PIN7 = $5F;
  882. CHMUX_PORTC_PIN0 = $60;
  883. CHMUX_PORTC_PIN1 = $61;
  884. CHMUX_PORTC_PIN2 = $62;
  885. CHMUX_PORTC_PIN3 = $63;
  886. CHMUX_PORTC_PIN4 = $64;
  887. CHMUX_PORTC_PIN5 = $65;
  888. CHMUX_PORTC_PIN6 = $66;
  889. CHMUX_PORTC_PIN7 = $67;
  890. CHMUX_PORTD_PIN0 = $68;
  891. CHMUX_PORTD_PIN1 = $69;
  892. CHMUX_PORTD_PIN2 = $6A;
  893. CHMUX_PORTD_PIN3 = $6B;
  894. CHMUX_PORTD_PIN4 = $6C;
  895. CHMUX_PORTD_PIN5 = $6D;
  896. CHMUX_PORTD_PIN6 = $6E;
  897. CHMUX_PORTD_PIN7 = $6F;
  898. CHMUX_PORTE_PIN0 = $70;
  899. CHMUX_PORTE_PIN1 = $71;
  900. CHMUX_PORTE_PIN2 = $72;
  901. CHMUX_PORTE_PIN3 = $73;
  902. CHMUX_PORTE_PIN4 = $74;
  903. CHMUX_PORTE_PIN5 = $75;
  904. CHMUX_PORTE_PIN6 = $76;
  905. CHMUX_PORTE_PIN7 = $77;
  906. CHMUX_PORTF_PIN0 = $78;
  907. CHMUX_PORTF_PIN1 = $79;
  908. CHMUX_PORTF_PIN2 = $7A;
  909. CHMUX_PORTF_PIN3 = $7B;
  910. CHMUX_PORTF_PIN4 = $7C;
  911. CHMUX_PORTF_PIN5 = $7D;
  912. CHMUX_PORTF_PIN6 = $7E;
  913. CHMUX_PORTF_PIN7 = $7F;
  914. CHMUX_PRESCALER_1 = $80;
  915. CHMUX_PRESCALER_2 = $81;
  916. CHMUX_PRESCALER_4 = $82;
  917. CHMUX_PRESCALER_8 = $83;
  918. CHMUX_PRESCALER_16 = $84;
  919. CHMUX_PRESCALER_32 = $85;
  920. CHMUX_PRESCALER_64 = $86;
  921. CHMUX_PRESCALER_128 = $87;
  922. CHMUX_PRESCALER_256 = $88;
  923. CHMUX_PRESCALER_512 = $89;
  924. CHMUX_PRESCALER_1024 = $8A;
  925. CHMUX_PRESCALER_2048 = $8B;
  926. CHMUX_PRESCALER_4096 = $8C;
  927. CHMUX_PRESCALER_8192 = $8D;
  928. CHMUX_PRESCALER_16384 = $8E;
  929. CHMUX_PRESCALER_32768 = $8F;
  930. CHMUX_TCC0_OVF = $C0;
  931. CHMUX_TCC0_ERR = $C1;
  932. CHMUX_TCC0_CCA = $C4;
  933. CHMUX_TCC0_CCB = $C5;
  934. CHMUX_TCC0_CCC = $C6;
  935. CHMUX_TCC0_CCD = $C7;
  936. CHMUX_TCC1_OVF = $C8;
  937. CHMUX_TCC1_ERR = $C9;
  938. CHMUX_TCC1_CCA = $CC;
  939. CHMUX_TCC1_CCB = $CD;
  940. CHMUX_TCD0_OVF = $D0;
  941. CHMUX_TCD0_ERR = $D1;
  942. CHMUX_TCD0_CCA = $D4;
  943. CHMUX_TCD0_CCB = $D5;
  944. CHMUX_TCD0_CCC = $D6;
  945. CHMUX_TCD0_CCD = $D7;
  946. CHMUX_TCD1_OVF = $D8;
  947. CHMUX_TCD1_ERR = $D9;
  948. CHMUX_TCD1_CCA = $DC;
  949. CHMUX_TCD1_CCB = $DD;
  950. CHMUX_TCE0_OVF = $E0;
  951. CHMUX_TCE0_ERR = $E1;
  952. CHMUX_TCE0_CCA = $E4;
  953. CHMUX_TCE0_CCB = $E5;
  954. CHMUX_TCE0_CCC = $E6;
  955. CHMUX_TCE0_CCD = $E7;
  956. CHMUX_TCE1_OVF = $E8;
  957. CHMUX_TCE1_ERR = $E9;
  958. CHMUX_TCE1_CCA = $EC;
  959. CHMUX_TCE1_CCB = $ED;
  960. CHMUX_TCF0_OVF = $F0;
  961. CHMUX_TCF0_ERR = $F1;
  962. CHMUX_TCF0_CCA = $F4;
  963. CHMUX_TCF0_CCB = $F5;
  964. CHMUX_TCF0_CCC = $F6;
  965. CHMUX_TCF0_CCD = $F7;
  966. CHMUX_TCF1_OVF = $F8;
  967. CHMUX_TCF1_ERR = $F9;
  968. CHMUX_TCF1_CCA = $FC;
  969. CHMUX_TCF1_CCB = $FD;
  970. // EVSYS_QDIRM
  971. QDIRMmask = $60;
  972. QDIRM_00 = $00;
  973. QDIRM_01 = $20;
  974. QDIRM_10 = $40;
  975. QDIRM_11 = $60;
  976. // Quadrature Decoder Index Enable
  977. QDIENbm = $10;
  978. // Quadrature Decoder Enable
  979. QDENbm = $08;
  980. // EVSYS_DIGFILT
  981. DIGFILTmask = $07;
  982. DIGFILT_1SAMPLE = $00;
  983. DIGFILT_2SAMPLES = $01;
  984. DIGFILT_3SAMPLES = $02;
  985. DIGFILT_4SAMPLES = $03;
  986. DIGFILT_5SAMPLES = $04;
  987. DIGFILT_6SAMPLES = $05;
  988. DIGFILT_7SAMPLES = $06;
  989. DIGFILT_8SAMPLES = $07;
  990. end;
  991. TNVM = object //Non-volatile Memory Controller
  992. ADDR0: byte; //Address Register 0
  993. ADDR1: byte; //Address Register 1
  994. ADDR2: byte; //Address Register 2
  995. Reserved3: byte;
  996. DATA0: byte; //Data Register 0
  997. DATA1: byte; //Data Register 1
  998. DATA2: byte; //Data Register 2
  999. Reserved7: byte;
  1000. Reserved8: byte;
  1001. Reserved9: byte;
  1002. CMD: byte; //Command
  1003. CTRLA: byte; //Control Register A
  1004. CTRLB: byte; //Control Register B
  1005. INTCTRL: byte; //Interrupt Control
  1006. Reserved14: byte;
  1007. STATUS: byte; //Status
  1008. LOCKBITS: byte; //Lock Bits
  1009. const
  1010. // NVM_CMD
  1011. CMDmask = $7F;
  1012. CMD_NO_OPERATION = $00;
  1013. CMD_READ_USER_SIG_ROW = $01;
  1014. CMD_READ_CALIB_ROW = $02;
  1015. CMD_READ_EEPROM = $06;
  1016. CMD_READ_FUSES = $07;
  1017. CMD_WRITE_LOCK_BITS = $08;
  1018. CMD_ERASE_USER_SIG_ROW = $18;
  1019. CMD_WRITE_USER_SIG_ROW = $1A;
  1020. CMD_ERASE_APP = $20;
  1021. CMD_ERASE_APP_PAGE = $22;
  1022. CMD_LOAD_FLASH_BUFFER = $23;
  1023. CMD_WRITE_APP_PAGE = $24;
  1024. CMD_ERASE_WRITE_APP_PAGE = $25;
  1025. CMD_ERASE_FLASH_BUFFER = $26;
  1026. CMD_ERASE_BOOT_PAGE = $2A;
  1027. CMD_ERASE_FLASH_PAGE = $2B;
  1028. CMD_WRITE_BOOT_PAGE = $2C;
  1029. CMD_ERASE_WRITE_BOOT_PAGE = $2D;
  1030. CMD_WRITE_FLASH_PAGE = $2E;
  1031. CMD_ERASE_WRITE_FLASH_PAGE = $2F;
  1032. CMD_ERASE_EEPROM = $30;
  1033. CMD_ERASE_EEPROM_PAGE = $32;
  1034. CMD_LOAD_EEPROM_BUFFER = $33;
  1035. CMD_WRITE_EEPROM_PAGE = $34;
  1036. CMD_ERASE_WRITE_EEPROM_PAGE = $35;
  1037. CMD_ERASE_EEPROM_BUFFER = $36;
  1038. CMD_APP_CRC = $38;
  1039. CMD_BOOT_CRC = $39;
  1040. CMD_FLASH_RANGE_CRC = $3A;
  1041. CMD_CHIP_ERASE = $40;
  1042. CMD_READ_NVM = $43;
  1043. CMD_WRITE_FUSE = $4C;
  1044. CMD_ERASE_BOOT = $68;
  1045. CMD_FLASH_CRC = $78;
  1046. // Command Execute
  1047. CMDEXbm = $01;
  1048. // EEPROM Mapping Enable
  1049. EEMAPENbm = $08;
  1050. // Flash Power Reduction Enable
  1051. FPRMbm = $04;
  1052. // EEPROM Power Reduction Enable
  1053. EPRMbm = $02;
  1054. // SPM Lock
  1055. SPMLOCKbm = $01;
  1056. // NVM_SPMLVL
  1057. SPMLVLmask = $0C;
  1058. SPMLVL_OFF = $00;
  1059. SPMLVL_LO = $04;
  1060. SPMLVL_MED = $08;
  1061. SPMLVL_HI = $0C;
  1062. // NVM_EELVL
  1063. EELVLmask = $03;
  1064. EELVL_OFF = $00;
  1065. EELVL_LO = $01;
  1066. EELVL_MED = $02;
  1067. EELVL_HI = $03;
  1068. // Non-volatile Memory Busy
  1069. NVMBUSYbm = $80;
  1070. // Flash Memory Busy
  1071. FBUSYbm = $40;
  1072. // EEPROM Page Buffer Active Loading
  1073. EELOADbm = $02;
  1074. // Flash Page Buffer Active Loading
  1075. FLOADbm = $01;
  1076. // NVM_BLBB
  1077. BLBBmask = $C0;
  1078. BLBB_RWLOCK = $00;
  1079. BLBB_RLOCK = $40;
  1080. BLBB_WLOCK = $80;
  1081. BLBB_NOLOCK = $C0;
  1082. // NVM_BLBA
  1083. BLBAmask = $30;
  1084. BLBA_RWLOCK = $00;
  1085. BLBA_RLOCK = $10;
  1086. BLBA_WLOCK = $20;
  1087. BLBA_NOLOCK = $30;
  1088. // NVM_BLBAT
  1089. BLBATmask = $0C;
  1090. BLBAT_RWLOCK = $00;
  1091. BLBAT_RLOCK = $04;
  1092. BLBAT_WLOCK = $08;
  1093. BLBAT_NOLOCK = $0C;
  1094. // NVM_LB
  1095. LBmask = $03;
  1096. LB_RWLOCK = $00;
  1097. LB_WLOCK = $02;
  1098. LB_NOLOCK = $03;
  1099. end;
  1100. TADC_CH = object //ADC Channel
  1101. CTRL: byte; //Control Register
  1102. MUXCTRL: byte; //MUX Control
  1103. INTCTRL: byte; //Channel Interrupt Control Register
  1104. INTFLAGS: byte; //Interrupt Flags
  1105. RES: word; //Channel Result
  1106. SCAN: byte; //Input Channel Scan
  1107. const
  1108. // Channel Start Conversion
  1109. STARTbm = $80;
  1110. // GAIN
  1111. GAINmask = $1C;
  1112. GAIN1X = $00;
  1113. GAIN2X = $04;
  1114. GAIN4X = $08;
  1115. GAIN8X = $0C;
  1116. GAIN16X = $10;
  1117. GAIN32X = $14;
  1118. GAIN64X = $18;
  1119. GAINDIV2 = $1C;
  1120. // INPUTMODE
  1121. INPUTMODEmask = $03;
  1122. INPUTMODEINTERNAL = $00;
  1123. INPUTMODESINGLEENDED = $01;
  1124. INPUTMODEDIFF = $02;
  1125. INPUTMODEDIFFWGAIN = $03;
  1126. // MUXPOS
  1127. MUXPOSmask = $78;
  1128. MUXPOSPIN0 = $00;
  1129. MUXPOSPIN1 = $08;
  1130. MUXPOSPIN2 = $10;
  1131. MUXPOSPIN3 = $18;
  1132. MUXPOSPIN4 = $20;
  1133. MUXPOSPIN5 = $28;
  1134. MUXPOSPIN6 = $30;
  1135. MUXPOSPIN7 = $38;
  1136. MUXPOSPIN8 = $40;
  1137. MUXPOSPIN9 = $48;
  1138. MUXPOSPIN10 = $50;
  1139. MUXPOSPIN11 = $58;
  1140. MUXPOSPIN12 = $60;
  1141. MUXPOSPIN13 = $68;
  1142. MUXPOSPIN14 = $70;
  1143. MUXPOSPIN15 = $78;
  1144. // MUXINT
  1145. MUXINTmask = $78;
  1146. MUXINTTEMP = $00;
  1147. MUXINTBANDGAP = $08;
  1148. MUXINTSCALEDVCC = $10;
  1149. MUXINTDAC = $18;
  1150. // MUXNEG
  1151. MUXNEGmask = $07;
  1152. MUXNEGPIN0 = $00;
  1153. MUXNEGPIN1 = $01;
  1154. MUXNEGPIN2 = $02;
  1155. MUXNEGPIN3 = $03;
  1156. MUXNEGPIN4 = $00;
  1157. MUXNEGPIN5 = $01;
  1158. MUXNEGPIN6 = $02;
  1159. MUXNEGPIN7 = $03;
  1160. MUXNEGGND_MODE3 = $05;
  1161. MUXNEGINTGND_MODE3 = $07;
  1162. MUXNEGINTGND_MODE4 = $04;
  1163. MUXNEGGND_MODE4 = $07;
  1164. // INTMODE
  1165. INTMODEmask = $0C;
  1166. INTMODECOMPLETE = $00;
  1167. INTMODEBELOW = $04;
  1168. INTMODEABOVE = $0C;
  1169. // INTLVL
  1170. INTLVLmask = $03;
  1171. INTLVLOFF = $00;
  1172. INTLVLLO = $01;
  1173. INTLVLMED = $02;
  1174. INTLVLHI = $03;
  1175. // Channel Interrupt Flag
  1176. CHIFbm = $01;
  1177. // Positive MUX setting offset
  1178. OFFSET0bm = $10;
  1179. OFFSET1bm = $20;
  1180. OFFSET2bm = $40;
  1181. OFFSET3bm = $80;
  1182. // Number of Channels included in scan
  1183. SCANNUM0bm = $01;
  1184. SCANNUM1bm = $02;
  1185. SCANNUM2bm = $04;
  1186. SCANNUM3bm = $08;
  1187. end;
  1188. TADC = object //Analog-to-Digital Converter
  1189. CTRLA: byte; //Control Register A
  1190. CTRLB: byte; //Control Register B
  1191. REFCTRL: byte; //Reference Control
  1192. EVCTRL: byte; //Event Control
  1193. PRESCALER: byte; //Clock Prescaler
  1194. Reserved5: byte;
  1195. INTFLAGS: byte; //Interrupt Flags
  1196. TEMP: byte; //Temporary Register
  1197. Reserved8: byte;
  1198. Reserved9: byte;
  1199. Reserved10: byte;
  1200. Reserved11: byte;
  1201. CAL: word; //Calibration Value
  1202. Reserved14: byte;
  1203. Reserved15: byte;
  1204. CH0RES: word; //Channel 0 Result
  1205. CH1RES: word; //Channel 1 Result
  1206. CH2RES: word; //Channel 2 Result
  1207. CH3RES: word; //Channel 3 Result
  1208. CMP: word; //Compare Value
  1209. Reserved26: byte;
  1210. Reserved27: byte;
  1211. Reserved28: byte;
  1212. Reserved29: byte;
  1213. Reserved30: byte;
  1214. Reserved31: byte;
  1215. CH0: TADC_CH; //ADC Channel 0
  1216. CH1: TADC_CH; //ADC Channel 1
  1217. CH2: TADC_CH; //ADC Channel 2
  1218. CH3: TADC_CH; //ADC Channel 3
  1219. const
  1220. // ADC_DMASEL
  1221. DMASELmask = $C0;
  1222. DMASEL_OFF = $00;
  1223. DMASEL_CH01 = $40;
  1224. DMASEL_CH012 = $80;
  1225. DMASEL_CH0123 = $C0;
  1226. // Channel 3 Start Conversion
  1227. CH3STARTbm = $20;
  1228. // Channel 2 Start Conversion
  1229. CH2STARTbm = $10;
  1230. // Channel 1 Start Conversion
  1231. CH1STARTbm = $08;
  1232. // Channel 0 Start Conversion
  1233. CH0STARTbm = $04;
  1234. // Flush Pipeline
  1235. FLUSHbm = $02;
  1236. // Enable ADC
  1237. ENABLEbm = $01;
  1238. // Gain Stage Impedance Mode
  1239. IMPMODEbm = $80;
  1240. // ADC_CURRLIMIT
  1241. CURRLIMITmask = $60;
  1242. CURRLIMIT_NO = $00;
  1243. CURRLIMIT_LOW = $20;
  1244. CURRLIMIT_MED = $40;
  1245. CURRLIMIT_HIGH = $60;
  1246. // Conversion Mode
  1247. CONMODEbm = $10;
  1248. // Free Running Mode Enable
  1249. FREERUNbm = $08;
  1250. // ADC_RESOLUTION
  1251. RESOLUTIONmask = $06;
  1252. RESOLUTION_12BIT = $00;
  1253. RESOLUTION_8BIT = $04;
  1254. RESOLUTION_LEFT12BIT = $06;
  1255. // ADC_REFSEL
  1256. REFSELmask = $70;
  1257. REFSEL_INT1V = $00;
  1258. REFSEL_INTVCC = $10;
  1259. REFSEL_AREFA = $20;
  1260. REFSEL_AREFB = $30;
  1261. REFSEL_INTVCC2 = $40;
  1262. // Bandgap enable
  1263. BANDGAPbm = $02;
  1264. // Temperature Reference Enable
  1265. TEMPREFbm = $01;
  1266. // ADC_SWEEP
  1267. SWEEPmask = $C0;
  1268. SWEEP_0 = $00;
  1269. SWEEP_01 = $40;
  1270. SWEEP_012 = $80;
  1271. SWEEP_0123 = $C0;
  1272. // ADC_EVSEL
  1273. EVSELmask = $38;
  1274. EVSEL_0123 = $00;
  1275. EVSEL_1234 = $08;
  1276. EVSEL_2345 = $10;
  1277. EVSEL_3456 = $18;
  1278. EVSEL_4567 = $20;
  1279. EVSEL_567 = $28;
  1280. EVSEL_67 = $30;
  1281. EVSEL_7 = $38;
  1282. // ADC_EVACT
  1283. EVACTmask = $07;
  1284. EVACT_NONE = $00;
  1285. EVACT_CH0 = $01;
  1286. EVACT_CH01 = $02;
  1287. EVACT_CH012 = $03;
  1288. EVACT_CH0123 = $04;
  1289. EVACT_SWEEP = $05;
  1290. EVACT_SYNCSWEEP = $06;
  1291. // ADC_PRESCALER
  1292. PRESCALERmask = $07;
  1293. PRESCALER_DIV4 = $00;
  1294. PRESCALER_DIV8 = $01;
  1295. PRESCALER_DIV16 = $02;
  1296. PRESCALER_DIV32 = $03;
  1297. PRESCALER_DIV64 = $04;
  1298. PRESCALER_DIV128 = $05;
  1299. PRESCALER_DIV256 = $06;
  1300. PRESCALER_DIV512 = $07;
  1301. // Channel 3 Interrupt Flag
  1302. CH3IFbm = $08;
  1303. // Channel 2 Interrupt Flag
  1304. CH2IFbm = $04;
  1305. // Channel 1 Interrupt Flag
  1306. CH1IFbm = $02;
  1307. // Channel 0 Interrupt Flag
  1308. CH0IFbm = $01;
  1309. end;
  1310. TDAC = object //Digital-to-Analog Converter
  1311. CTRLA: byte; //Control Register A
  1312. CTRLB: byte; //Control Register B
  1313. CTRLC: byte; //Control Register C
  1314. EVCTRL: byte; //Event Input Control
  1315. Reserved4: byte;
  1316. STATUS: byte; //Status
  1317. Reserved6: byte;
  1318. Reserved7: byte;
  1319. CH0GAINCAL: byte; //Gain Calibration
  1320. CH0OFFSETCAL: byte; //Offset Calibration
  1321. CH1GAINCAL: byte; //Gain Calibration
  1322. CH1OFFSETCAL: byte; //Offset Calibration
  1323. Reserved12: byte;
  1324. Reserved13: byte;
  1325. Reserved14: byte;
  1326. Reserved15: byte;
  1327. Reserved16: byte;
  1328. Reserved17: byte;
  1329. Reserved18: byte;
  1330. Reserved19: byte;
  1331. Reserved20: byte;
  1332. Reserved21: byte;
  1333. Reserved22: byte;
  1334. Reserved23: byte;
  1335. CH0DATA: word; //Channel 0 Data
  1336. CH1DATA: word; //Channel 1 Data
  1337. const
  1338. // Internal Output Enable
  1339. IDOENbm = $10;
  1340. // Channel 1 Output Enable
  1341. CH1ENbm = $08;
  1342. // Channel 0 Output Enable
  1343. CH0ENbm = $04;
  1344. // Low Power Mode
  1345. LPMODEbm = $02;
  1346. // Enable
  1347. ENABLEbm = $01;
  1348. // DAC_CHSEL
  1349. CHSELmask = $60;
  1350. CHSEL_SINGLE = $00;
  1351. CHSEL_SINGLE1 = $20;
  1352. CHSEL_DUAL = $40;
  1353. // Channel 1 Event Trig Enable
  1354. CH1TRIGbm = $02;
  1355. // Channel 0 Event Trig Enable
  1356. CH0TRIGbm = $01;
  1357. // DAC_REFSEL
  1358. REFSELmask = $18;
  1359. REFSEL_INT1V = $00;
  1360. REFSEL_AVCC = $08;
  1361. REFSEL_AREFA = $10;
  1362. REFSEL_AREFB = $18;
  1363. // Left-adjust Result
  1364. LEFTADJbm = $01;
  1365. // Separate Event Channel Input for Channel 1
  1366. EVSPLITbm = $08;
  1367. // DAC_EVSEL
  1368. EVSELmask = $07;
  1369. EVSEL_0 = $00;
  1370. EVSEL_1 = $01;
  1371. EVSEL_2 = $02;
  1372. EVSEL_3 = $03;
  1373. EVSEL_4 = $04;
  1374. EVSEL_5 = $05;
  1375. EVSEL_6 = $06;
  1376. EVSEL_7 = $07;
  1377. // Channel 1 Data Register Empty
  1378. CH1DREbm = $02;
  1379. // Channel 0 Data Register Empty
  1380. CH0DREbm = $01;
  1381. // Gain Calibration
  1382. CH0GAINCAL0bm = $01;
  1383. CH0GAINCAL1bm = $02;
  1384. CH0GAINCAL2bm = $04;
  1385. CH0GAINCAL3bm = $08;
  1386. CH0GAINCAL4bm = $10;
  1387. CH0GAINCAL5bm = $20;
  1388. CH0GAINCAL6bm = $40;
  1389. // Offset Calibration
  1390. CH0OFFSETCAL0bm = $01;
  1391. CH0OFFSETCAL1bm = $02;
  1392. CH0OFFSETCAL2bm = $04;
  1393. CH0OFFSETCAL3bm = $08;
  1394. CH0OFFSETCAL4bm = $10;
  1395. CH0OFFSETCAL5bm = $20;
  1396. CH0OFFSETCAL6bm = $40;
  1397. // Gain Calibration
  1398. CH1GAINCAL0bm = $01;
  1399. CH1GAINCAL1bm = $02;
  1400. CH1GAINCAL2bm = $04;
  1401. CH1GAINCAL3bm = $08;
  1402. CH1GAINCAL4bm = $10;
  1403. CH1GAINCAL5bm = $20;
  1404. CH1GAINCAL6bm = $40;
  1405. // Offset Calibration
  1406. CH1OFFSETCAL0bm = $01;
  1407. CH1OFFSETCAL1bm = $02;
  1408. CH1OFFSETCAL2bm = $04;
  1409. CH1OFFSETCAL3bm = $08;
  1410. CH1OFFSETCAL4bm = $10;
  1411. CH1OFFSETCAL5bm = $20;
  1412. CH1OFFSETCAL6bm = $40;
  1413. end;
  1414. TAC = object //Analog Comparator
  1415. AC0CTRL: byte; //Analog Comparator 0 Control
  1416. AC1CTRL: byte; //Analog Comparator 1 Control
  1417. AC0MUXCTRL: byte; //Analog Comparator 0 MUX Control
  1418. AC1MUXCTRL: byte; //Analog Comparator 1 MUX Control
  1419. CTRLA: byte; //Control Register A
  1420. CTRLB: byte; //Control Register B
  1421. WINCTRL: byte; //Window Mode Control
  1422. STATUS: byte; //Status
  1423. CURRCTRL: byte; //Current Source Control
  1424. CURRCALIB: byte; //Current Source Calibration
  1425. const
  1426. // AC_INTMODE
  1427. INTMODEmask = $C0;
  1428. INTMODE_BOTHEDGES = $00;
  1429. INTMODE_FALLING = $80;
  1430. INTMODE_RISING = $C0;
  1431. // AC_INTLVL
  1432. INTLVLmask = $30;
  1433. INTLVL_OFF = $00;
  1434. INTLVL_LO = $10;
  1435. INTLVL_MED = $20;
  1436. INTLVL_HI = $30;
  1437. // High-speed Mode
  1438. HSMODEbm = $08;
  1439. // AC_HYSMODE
  1440. HYSMODEmask = $06;
  1441. HYSMODE_NO = $00;
  1442. HYSMODE_SMALL = $02;
  1443. HYSMODE_LARGE = $04;
  1444. // Enable
  1445. ENABLEbm = $01;
  1446. // AC_MUXPOS
  1447. MUXPOSmask = $38;
  1448. MUXPOS_PIN0 = $00;
  1449. MUXPOS_PIN1 = $08;
  1450. MUXPOS_PIN2 = $10;
  1451. MUXPOS_PIN3 = $18;
  1452. MUXPOS_PIN4 = $20;
  1453. MUXPOS_PIN5 = $28;
  1454. MUXPOS_PIN6 = $30;
  1455. MUXPOS_DAC = $38;
  1456. // AC_MUXNEG
  1457. MUXNEGmask = $07;
  1458. MUXNEG_PIN0 = $00;
  1459. MUXNEG_PIN1 = $01;
  1460. MUXNEG_PIN3 = $02;
  1461. MUXNEG_PIN5 = $03;
  1462. MUXNEG_PIN7 = $04;
  1463. MUXNEG_DAC = $05;
  1464. MUXNEG_BANDGAP = $06;
  1465. MUXNEG_SCALER = $07;
  1466. // Analog Comparator 1 Output Enable
  1467. AC1OUTbm = $02;
  1468. // Analog Comparator 0 Output Enable
  1469. AC0OUTbm = $01;
  1470. // VCC Voltage Scaler Factor
  1471. SCALEFAC0bm = $01;
  1472. SCALEFAC1bm = $02;
  1473. SCALEFAC2bm = $04;
  1474. SCALEFAC3bm = $08;
  1475. SCALEFAC4bm = $10;
  1476. SCALEFAC5bm = $20;
  1477. // Window Mode Enable
  1478. WENbm = $10;
  1479. // AC_WINTMODE
  1480. WINTMODEmask = $0C;
  1481. WINTMODE_ABOVE = $00;
  1482. WINTMODE_INSIDE = $04;
  1483. WINTMODE_BELOW = $08;
  1484. WINTMODE_OUTSIDE = $0C;
  1485. // AC_WINTLVL
  1486. WINTLVLmask = $03;
  1487. WINTLVL_OFF = $00;
  1488. WINTLVL_LO = $01;
  1489. WINTLVL_MED = $02;
  1490. WINTLVL_HI = $03;
  1491. // AC_WSTATE
  1492. WSTATEmask = $C0;
  1493. WSTATE_ABOVE = $00;
  1494. WSTATE_INSIDE = $40;
  1495. WSTATE_BELOW = $80;
  1496. // Analog Comparator 1 State
  1497. AC1STATEbm = $20;
  1498. // Analog Comparator 0 State
  1499. AC0STATEbm = $10;
  1500. // Window Mode Interrupt Flag
  1501. WIFbm = $04;
  1502. // Analog Comparator 1 Interrupt Flag
  1503. AC1IFbm = $02;
  1504. // Analog Comparator 0 Interrupt Flag
  1505. AC0IFbm = $01;
  1506. // Current Source Enable
  1507. CURRENTbm = $80;
  1508. // Current Mode
  1509. CURRMODEbm = $40;
  1510. // AC1 Current Source Output Enable
  1511. AC1CURRbm = $02;
  1512. // AC0 Current Source Output Enable
  1513. AC0CURRbm = $01;
  1514. // Current Source Calibration
  1515. CALIB0bm = $01;
  1516. CALIB1bm = $02;
  1517. CALIB2bm = $04;
  1518. CALIB3bm = $08;
  1519. end;
  1520. TRTC = object //Real-Time Counter
  1521. CTRL: byte; //Control Register
  1522. STATUS: byte; //Status Register
  1523. INTCTRL: byte; //Interrupt Control Register
  1524. INTFLAGS: byte; //Interrupt Flags
  1525. TEMP: byte; //Temporary register
  1526. Reserved5: byte;
  1527. Reserved6: byte;
  1528. Reserved7: byte;
  1529. CNT: word; //Count Register
  1530. PER: word; //Period Register
  1531. COMP: word; //Compare Register
  1532. const
  1533. // RTC_PRESCALER
  1534. PRESCALERmask = $07;
  1535. PRESCALER_OFF = $00;
  1536. PRESCALER_DIV1 = $01;
  1537. PRESCALER_DIV2 = $02;
  1538. PRESCALER_DIV8 = $03;
  1539. PRESCALER_DIV16 = $04;
  1540. PRESCALER_DIV64 = $05;
  1541. PRESCALER_DIV256 = $06;
  1542. PRESCALER_DIV1024 = $07;
  1543. // Synchronization Busy Flag
  1544. SYNCBUSYbm = $01;
  1545. // RTC_COMPINTLVL
  1546. COMPINTLVLmask = $0C;
  1547. COMPINTLVL_OFF = $00;
  1548. COMPINTLVL_LO = $04;
  1549. COMPINTLVL_MED = $08;
  1550. COMPINTLVL_HI = $0C;
  1551. // RTC_OVFINTLVL
  1552. OVFINTLVLmask = $03;
  1553. OVFINTLVL_OFF = $00;
  1554. OVFINTLVL_LO = $01;
  1555. OVFINTLVL_MED = $02;
  1556. OVFINTLVL_HI = $03;
  1557. // Compare Match Interrupt Flag
  1558. COMPIFbm = $02;
  1559. // Overflow Interrupt Flag
  1560. OVFIFbm = $01;
  1561. end;
  1562. TEBI_CS = object //EBI Chip Select Module
  1563. CTRLA: byte; //Chip Select Control Register A
  1564. CTRLB: byte; //Chip Select Control Register B
  1565. BASEADDR: word; //Base Address
  1566. const
  1567. // ASIZE
  1568. ASIZEmask = $7C;
  1569. ASIZE256B = $00;
  1570. ASIZE512B = $04;
  1571. ASIZE1KB = $08;
  1572. ASIZE2KB = $0C;
  1573. ASIZE4KB = $10;
  1574. ASIZE8KB = $14;
  1575. ASIZE16KB = $18;
  1576. ASIZE32KB = $1C;
  1577. ASIZE64KB = $20;
  1578. ASIZE128KB = $24;
  1579. ASIZE256KB = $28;
  1580. ASIZE512KB = $2C;
  1581. ASIZE1MB = $30;
  1582. ASIZE2MB = $34;
  1583. ASIZE4MB = $38;
  1584. ASIZE8MB = $3C;
  1585. ASIZE16M = $40;
  1586. // ASPACE
  1587. ASPACEmask = $7C;
  1588. ASPACE256B = $00;
  1589. ASPACE512B = $04;
  1590. ASPACE1KB = $08;
  1591. ASPACE2KB = $0C;
  1592. ASPACE4KB = $10;
  1593. ASPACE8KB = $14;
  1594. ASPACE16KB = $18;
  1595. ASPACE32KB = $1C;
  1596. ASPACE64KB = $20;
  1597. ASPACE128KB = $24;
  1598. ASPACE256KB = $28;
  1599. ASPACE512KB = $2C;
  1600. ASPACE1MB = $30;
  1601. ASPACE2MB = $34;
  1602. ASPACE4MB = $38;
  1603. ASPACE8MB = $3C;
  1604. ASPACE16M = $40;
  1605. // MODE
  1606. MODEmask = $03;
  1607. MODEDISABLED = $00;
  1608. MODESRAM = $01;
  1609. MODELPC = $02;
  1610. MODESDRAM = $03;
  1611. // SRWS
  1612. SRWSmask = $07;
  1613. SRWS0CLK = $00;
  1614. SRWS1CLK = $01;
  1615. SRWS2CLK = $02;
  1616. SRWS3CLK = $03;
  1617. SRWS4CLK = $04;
  1618. SRWS5CLK = $05;
  1619. SRWS6CLK = $06;
  1620. SRWS7CLK = $07;
  1621. // SDRAM Initialization Done
  1622. SDINITDONEbm = $80;
  1623. // SDRAM Self-refresh Enable
  1624. SDSRENbm = $04;
  1625. // SDMODE
  1626. SDMODEmask = $03;
  1627. SDMODENORMAL = $00;
  1628. SDMODELOAD = $01;
  1629. end;
  1630. TEBI = object //External Bus Interface
  1631. CTRL: byte; //Control
  1632. SDRAMCTRLA: byte; //SDRAM Control Register A
  1633. Reserved2: byte;
  1634. Reserved3: byte;
  1635. REFRESH: word; //SDRAM Refresh Period
  1636. INITDLY: word; //SDRAM Initialization Delay
  1637. SDRAMCTRLB: byte; //SDRAM Control Register B
  1638. SDRAMCTRLC: byte; //SDRAM Control Register C
  1639. Reserved10: byte;
  1640. Reserved11: byte;
  1641. Reserved12: byte;
  1642. Reserved13: byte;
  1643. Reserved14: byte;
  1644. Reserved15: byte;
  1645. CS0: dword; //Chip Select 0
  1646. CS1: dword; //Chip Select 1
  1647. CS2: dword; //Chip Select 2
  1648. CS3: dword; //Chip Select 3
  1649. const
  1650. // EBI_SDDATAW
  1651. SDDATAWmask = $C0;
  1652. SDDATAW_4BIT = $00;
  1653. SDDATAW_8BIT = $40;
  1654. // EBI_LPCMODE
  1655. LPCMODEmask = $30;
  1656. LPCMODE_ALE1 = $00;
  1657. LPCMODE_ALE12 = $20;
  1658. // EBI_SRMODE
  1659. SRMODEmask = $0C;
  1660. SRMODE_ALE1 = $00;
  1661. SRMODE_ALE2 = $04;
  1662. SRMODE_ALE12 = $08;
  1663. SRMODE_NOALE = $0C;
  1664. // EBI_IFMODE
  1665. IFMODEmask = $03;
  1666. IFMODE_DISABLED = $00;
  1667. IFMODE_3PORT = $01;
  1668. IFMODE_4PORT = $02;
  1669. IFMODE_2PORT = $03;
  1670. // SDRAM CAS Latency Setting
  1671. SDCASbm = $08;
  1672. // SDRAM ROW Bits Setting
  1673. SDROWbm = $04;
  1674. // EBI_SDCOL
  1675. SDCOLmask = $03;
  1676. SDCOL_8BIT = $00;
  1677. SDCOL_9BIT = $01;
  1678. SDCOL_10BIT = $02;
  1679. SDCOL_11BIT = $03;
  1680. // EBI_MRDLY
  1681. MRDLYmask = $C0;
  1682. MRDLY_0CLK = $00;
  1683. MRDLY_1CLK = $40;
  1684. MRDLY_2CLK = $80;
  1685. MRDLY_3CLK = $C0;
  1686. // EBI_ROWCYCDLY
  1687. ROWCYCDLYmask = $38;
  1688. ROWCYCDLY_0CLK = $00;
  1689. ROWCYCDLY_1CLK = $08;
  1690. ROWCYCDLY_2CLK = $10;
  1691. ROWCYCDLY_3CLK = $18;
  1692. ROWCYCDLY_4CLK = $20;
  1693. ROWCYCDLY_5CLK = $28;
  1694. ROWCYCDLY_6CLK = $30;
  1695. ROWCYCDLY_7CLK = $38;
  1696. // EBI_RPDLY
  1697. RPDLYmask = $07;
  1698. RPDLY_0CLK = $00;
  1699. RPDLY_1CLK = $01;
  1700. RPDLY_2CLK = $02;
  1701. RPDLY_3CLK = $03;
  1702. RPDLY_4CLK = $04;
  1703. RPDLY_5CLK = $05;
  1704. RPDLY_6CLK = $06;
  1705. RPDLY_7CLK = $07;
  1706. // EBI_WRDLY
  1707. WRDLYmask = $C0;
  1708. WRDLY_0CLK = $00;
  1709. WRDLY_1CLK = $40;
  1710. WRDLY_2CLK = $80;
  1711. WRDLY_3CLK = $C0;
  1712. // EBI_ESRDLY
  1713. ESRDLYmask = $38;
  1714. ESRDLY_0CLK = $00;
  1715. ESRDLY_1CLK = $08;
  1716. ESRDLY_2CLK = $10;
  1717. ESRDLY_3CLK = $18;
  1718. ESRDLY_4CLK = $20;
  1719. ESRDLY_5CLK = $28;
  1720. ESRDLY_6CLK = $30;
  1721. ESRDLY_7CLK = $38;
  1722. // EBI_ROWCOLDLY
  1723. ROWCOLDLYmask = $07;
  1724. ROWCOLDLY_0CLK = $00;
  1725. ROWCOLDLY_1CLK = $01;
  1726. ROWCOLDLY_2CLK = $02;
  1727. ROWCOLDLY_3CLK = $03;
  1728. ROWCOLDLY_4CLK = $04;
  1729. ROWCOLDLY_5CLK = $05;
  1730. ROWCOLDLY_6CLK = $06;
  1731. ROWCOLDLY_7CLK = $07;
  1732. end;
  1733. TTWI_MASTER = object //
  1734. CTRLA: byte; //Control Register A
  1735. CTRLB: byte; //Control Register B
  1736. CTRLC: byte; //Control Register C
  1737. STATUS: byte; //Status Register
  1738. BAUD: byte; //Baud Rate Control Register
  1739. ADDR: byte; //Address Register
  1740. DATA: byte; //Data Register
  1741. const
  1742. // INTLVL
  1743. INTLVLmask = $C0;
  1744. INTLVLOFF = $00;
  1745. INTLVLLO = $40;
  1746. INTLVLMED = $80;
  1747. INTLVLHI = $C0;
  1748. // Read Interrupt Enable
  1749. RIENbm = $20;
  1750. // Write Interrupt Enable
  1751. WIENbm = $10;
  1752. // Enable TWI Master
  1753. ENABLEbm = $08;
  1754. // TIMEOUT
  1755. TIMEOUTmask = $0C;
  1756. TIMEOUTDISABLED = $00;
  1757. TIMEOUT50US = $04;
  1758. TIMEOUT100US = $08;
  1759. TIMEOUT200US = $0C;
  1760. // Quick Command Enable
  1761. QCENbm = $02;
  1762. // Smart Mode Enable
  1763. SMENbm = $01;
  1764. // Acknowledge Action
  1765. ACKACTbm = $04;
  1766. // CMD
  1767. CMDmask = $03;
  1768. CMDNOACT = $00;
  1769. CMDREPSTART = $01;
  1770. CMDRECVTRANS = $02;
  1771. CMDSTOP = $03;
  1772. // Read Interrupt Flag
  1773. RIFbm = $80;
  1774. // Write Interrupt Flag
  1775. WIFbm = $40;
  1776. // Clock Hold
  1777. CLKHOLDbm = $20;
  1778. // Received Acknowledge
  1779. RXACKbm = $10;
  1780. // Arbitration Lost
  1781. ARBLOSTbm = $08;
  1782. // Bus Error
  1783. BUSERRbm = $04;
  1784. // BUSSTATE
  1785. BUSSTATEmask = $03;
  1786. BUSSTATEUNKNOWN = $00;
  1787. BUSSTATEIDLE = $01;
  1788. BUSSTATEOWNER = $02;
  1789. BUSSTATEBUSY = $03;
  1790. end;
  1791. TTWI_SLAVE = object //
  1792. CTRLA: byte; //Control Register A
  1793. CTRLB: byte; //Control Register B
  1794. STATUS: byte; //Status Register
  1795. ADDR: byte; //Address Register
  1796. DATA: byte; //Data Register
  1797. ADDRMASK: byte; //Address Mask Register
  1798. const
  1799. // INTLVL
  1800. INTLVLmask = $C0;
  1801. INTLVLOFF = $00;
  1802. INTLVLLO = $40;
  1803. INTLVLMED = $80;
  1804. INTLVLHI = $C0;
  1805. // Data Interrupt Enable
  1806. DIENbm = $20;
  1807. // Address/Stop Interrupt Enable
  1808. APIENbm = $10;
  1809. // Enable TWI Slave
  1810. ENABLEbm = $08;
  1811. // Stop Interrupt Enable
  1812. PIENbm = $04;
  1813. // Promiscuous Mode Enable
  1814. PMENbm = $02;
  1815. // Smart Mode Enable
  1816. SMENbm = $01;
  1817. // Acknowledge Action
  1818. ACKACTbm = $04;
  1819. // CMD
  1820. CMDmask = $03;
  1821. CMDNOACT = $00;
  1822. CMDCOMPTRANS = $02;
  1823. CMDRESPONSE = $03;
  1824. // Data Interrupt Flag
  1825. DIFbm = $80;
  1826. // Address/Stop Interrupt Flag
  1827. APIFbm = $40;
  1828. // Clock Hold
  1829. CLKHOLDbm = $20;
  1830. // Received Acknowledge
  1831. RXACKbm = $10;
  1832. // Collision
  1833. COLLbm = $08;
  1834. // Bus Error
  1835. BUSERRbm = $04;
  1836. // Read/Write Direction
  1837. DIRbm = $02;
  1838. // Slave Address or Stop
  1839. APbm = $01;
  1840. // Address Mask
  1841. ADDRMASK0bm = $02;
  1842. ADDRMASK1bm = $04;
  1843. ADDRMASK2bm = $08;
  1844. ADDRMASK3bm = $10;
  1845. ADDRMASK4bm = $20;
  1846. ADDRMASK5bm = $40;
  1847. ADDRMASK6bm = $80;
  1848. // Address Enable
  1849. ADDRENbm = $01;
  1850. end;
  1851. TTWI = object //Two-Wire Interface
  1852. CTRL: byte; //TWI Common Control Register
  1853. MASTER: TTWI_MASTER; //TWI master module
  1854. SLAVE: TTWI_SLAVE; //TWI slave module
  1855. const
  1856. // SDAHOLD
  1857. SDAHOLDmask = $06;
  1858. SDAHOLDOFF = $00;
  1859. SDAHOLD50NS = $02;
  1860. SDAHOLD300NS = $04;
  1861. SDAHOLD400NS = $06;
  1862. // External Driver Interface Enable
  1863. EDIENbm = $01;
  1864. end;
  1865. TUSB_EP = object //USB Endpoint
  1866. STATUS: byte; //Endpoint Status
  1867. CTRL: byte; //Endpoint Control
  1868. CNT: word; //USB Endpoint Counter
  1869. DATAPTR: word; //Data Pointer
  1870. AUXDATA: word; //Auxiliary Data
  1871. const
  1872. // Endpoint Stall Flag
  1873. STALLFbm = $80;
  1874. // CRC Error Flag
  1875. CRCbm = $80;
  1876. // Underflow Endpoint FLag
  1877. UNFbm = $40;
  1878. // Overflow Endpoint Flag for Output Endpoints
  1879. OVFbm = $40;
  1880. // Transaction Complete 0 Flag
  1881. TRNCOMPL0bm = $20;
  1882. // Transaction Complete 1 Flag
  1883. TRNCOMPL1bm = $10;
  1884. // SETUP Transaction Complete Flag
  1885. SETUPbm = $10;
  1886. // Bank Select
  1887. BANKbm = $08;
  1888. // Data Buffer 1 Not Acknowledge
  1889. BUSNACK1bm = $04;
  1890. // Data Buffer 0 Not Acknowledge
  1891. BUSNACK0bm = $02;
  1892. // Data Toggle
  1893. TOGGLEbm = $01;
  1894. // TYPE
  1895. TYPEmask = $C0;
  1896. TYPEDISABLE = $00;
  1897. TYPECONTROL = $40;
  1898. TYPEBULK = $80;
  1899. TYPEISOCHRONOUS = $C0;
  1900. // Multi Packet Transfer Enable
  1901. MULTIPKTbm = $20;
  1902. // Ping-Pong Enable
  1903. PINGPONGbm = $10;
  1904. // Interrupt Disable
  1905. INTDSBLbm = $08;
  1906. // Data Stall
  1907. STALLbm = $04;
  1908. // BUFSIZE
  1909. BUFSIZEmask = $07;
  1910. BUFSIZE8 = $00;
  1911. BUFSIZE16 = $01;
  1912. BUFSIZE32 = $02;
  1913. BUFSIZE64 = $03;
  1914. BUFSIZE128 = $04;
  1915. BUFSIZE256 = $05;
  1916. BUFSIZE512 = $06;
  1917. BUFSIZE1023 = $07;
  1918. end;
  1919. TUSB = object //Universal Serial Bus
  1920. CTRLA: byte; //Control Register A
  1921. CTRLB: byte; //Control Register B
  1922. STATUS: byte; //Status Register
  1923. ADDR: byte; //Address Register
  1924. FIFOWP: byte; //FIFO Write Pointer Register
  1925. FIFORP: byte; //FIFO Read Pointer Register
  1926. EPPTR: word; //Endpoint Configuration Table Pointer
  1927. INTCTRLA: byte; //Interrupt Control Register A
  1928. INTCTRLB: byte; //Interrupt Control Register B
  1929. INTFLAGSACLR: byte; //Clear Interrupt Flag Register A
  1930. INTFLAGSASET: byte; //Set Interrupt Flag Register A
  1931. INTFLAGSBCLR: byte; //Clear Interrupt Flag Register B
  1932. INTFLAGSBSET: byte; //Set Interrupt Flag Register B
  1933. Reserved14: byte;
  1934. Reserved15: byte;
  1935. Reserved16: byte;
  1936. Reserved17: byte;
  1937. Reserved18: byte;
  1938. Reserved19: byte;
  1939. Reserved20: byte;
  1940. Reserved21: byte;
  1941. Reserved22: byte;
  1942. Reserved23: byte;
  1943. Reserved24: byte;
  1944. Reserved25: byte;
  1945. Reserved26: byte;
  1946. Reserved27: byte;
  1947. Reserved28: byte;
  1948. Reserved29: byte;
  1949. Reserved30: byte;
  1950. Reserved31: byte;
  1951. Reserved32: byte;
  1952. Reserved33: byte;
  1953. Reserved34: byte;
  1954. Reserved35: byte;
  1955. Reserved36: byte;
  1956. Reserved37: byte;
  1957. Reserved38: byte;
  1958. Reserved39: byte;
  1959. Reserved40: byte;
  1960. Reserved41: byte;
  1961. Reserved42: byte;
  1962. Reserved43: byte;
  1963. Reserved44: byte;
  1964. Reserved45: byte;
  1965. Reserved46: byte;
  1966. Reserved47: byte;
  1967. Reserved48: byte;
  1968. Reserved49: byte;
  1969. Reserved50: byte;
  1970. Reserved51: byte;
  1971. Reserved52: byte;
  1972. Reserved53: byte;
  1973. Reserved54: byte;
  1974. Reserved55: byte;
  1975. Reserved56: byte;
  1976. Reserved57: byte;
  1977. CAL0: byte; //Calibration Byte 0
  1978. CAL1: byte; //Calibration Byte 1
  1979. const
  1980. // USB Enable
  1981. ENABLEbm = $80;
  1982. // Speed Select
  1983. SPEEDbm = $40;
  1984. // USB FIFO Enable
  1985. FIFOENbm = $20;
  1986. // Store Frame Number Enable
  1987. STFRNUMbm = $10;
  1988. // Maximum Endpoint Addresses
  1989. MAXEP0bm = $01;
  1990. MAXEP1bm = $02;
  1991. MAXEP2bm = $04;
  1992. MAXEP3bm = $08;
  1993. // Pull during Reset
  1994. PULLRSTbm = $10;
  1995. // Remote Wake-up
  1996. RWAKEUPbm = $04;
  1997. // Global NACK
  1998. GNACKbm = $02;
  1999. // Attach
  2000. ATTACHbm = $01;
  2001. // Upstream Resume
  2002. URESUMEbm = $08;
  2003. // Resume
  2004. RESUMEbm = $04;
  2005. // Bus Suspended
  2006. SUSPENDbm = $02;
  2007. // Bus Reset
  2008. BUSRSTbm = $01;
  2009. // Device Address
  2010. ADDR0bm = $01;
  2011. ADDR1bm = $02;
  2012. ADDR2bm = $04;
  2013. ADDR3bm = $08;
  2014. ADDR4bm = $10;
  2015. ADDR5bm = $20;
  2016. ADDR6bm = $40;
  2017. // FIFO Write Pointer
  2018. FIFOWP0bm = $01;
  2019. FIFOWP1bm = $02;
  2020. FIFOWP2bm = $04;
  2021. FIFOWP3bm = $08;
  2022. FIFOWP4bm = $10;
  2023. // FIFO Read Pointer
  2024. FIFORP0bm = $01;
  2025. FIFORP1bm = $02;
  2026. FIFORP2bm = $04;
  2027. FIFORP3bm = $08;
  2028. FIFORP4bm = $10;
  2029. // Start Of Frame Interrupt Enable
  2030. SOFIEbm = $80;
  2031. // Bus Event Interrupt Enable
  2032. BUSEVIEbm = $40;
  2033. // Bus Error Interrupt Enable
  2034. BUSERRIEbm = $20;
  2035. // STALL Interrupt Enable
  2036. STALLIEbm = $10;
  2037. // USB_INTLVL
  2038. INTLVLmask = $03;
  2039. INTLVL_OFF = $00;
  2040. INTLVL_LO = $01;
  2041. INTLVL_MED = $02;
  2042. INTLVL_HI = $03;
  2043. // Transaction Complete Interrupt Enable
  2044. TRNIEbm = $02;
  2045. // SETUP Transaction Complete Interrupt Enable
  2046. SETUPIEbm = $01;
  2047. // Start Of Frame Interrupt Flag
  2048. SOFIFbm = $80;
  2049. // Suspend Interrupt Flag
  2050. SUSPENDIFbm = $40;
  2051. // Resume Interrupt Flag
  2052. RESUMEIFbm = $20;
  2053. // Reset Interrupt Flag
  2054. RSTIFbm = $10;
  2055. // Isochronous CRC Error Interrupt Flag
  2056. CRCIFbm = $08;
  2057. // Underflow Interrupt Flag
  2058. UNFIFbm = $04;
  2059. // Overflow Interrupt Flag
  2060. OVFIFbm = $02;
  2061. // STALL Interrupt Flag
  2062. STALLIFbm = $01;
  2063. // Transaction Complete Interrupt Flag
  2064. TRNIFbm = $02;
  2065. // SETUP Transaction Complete Interrupt Flag
  2066. SETUPIFbm = $01;
  2067. end;
  2068. TUSB_EP_TABLE = object //USB Endpoint Table
  2069. EP0OUT: TUSB_EP; //Endpoint 0
  2070. EP0IN: TUSB_EP; //Endpoint 0
  2071. EP1OUT: TUSB_EP; //Endpoint 1
  2072. EP1IN: TUSB_EP; //Endpoint 1
  2073. EP2OUT: TUSB_EP; //Endpoint 2
  2074. EP2IN: TUSB_EP; //Endpoint 2
  2075. EP3OUT: TUSB_EP; //Endpoint 3
  2076. EP3IN: TUSB_EP; //Endpoint 3
  2077. EP4OUT: TUSB_EP; //Endpoint 4
  2078. EP4IN: TUSB_EP; //Endpoint 4
  2079. EP5OUT: TUSB_EP; //Endpoint 5
  2080. EP5IN: TUSB_EP; //Endpoint 5
  2081. EP6OUT: TUSB_EP; //Endpoint 6
  2082. EP6IN: TUSB_EP; //Endpoint 6
  2083. EP7OUT: TUSB_EP; //Endpoint 7
  2084. EP7IN: TUSB_EP; //Endpoint 7
  2085. EP8OUT: TUSB_EP; //Endpoint 8
  2086. EP8IN: TUSB_EP; //Endpoint 8
  2087. EP9OUT: TUSB_EP; //Endpoint 9
  2088. EP9IN: TUSB_EP; //Endpoint 9
  2089. EP10OUT: TUSB_EP; //Endpoint 10
  2090. EP10IN: TUSB_EP; //Endpoint 10
  2091. EP11OUT: TUSB_EP; //Endpoint 11
  2092. EP11IN: TUSB_EP; //Endpoint 11
  2093. EP12OUT: TUSB_EP; //Endpoint 12
  2094. EP12IN: TUSB_EP; //Endpoint 12
  2095. EP13OUT: TUSB_EP; //Endpoint 13
  2096. EP13IN: TUSB_EP; //Endpoint 13
  2097. EP14OUT: TUSB_EP; //Endpoint 14
  2098. EP14IN: TUSB_EP; //Endpoint 14
  2099. EP15OUT: TUSB_EP; //Endpoint 15
  2100. EP15IN: TUSB_EP; //Endpoint 15
  2101. Reserved256: byte;
  2102. Reserved257: byte;
  2103. Reserved258: byte;
  2104. Reserved259: byte;
  2105. Reserved260: byte;
  2106. Reserved261: byte;
  2107. Reserved262: byte;
  2108. Reserved263: byte;
  2109. Reserved264: byte;
  2110. Reserved265: byte;
  2111. Reserved266: byte;
  2112. Reserved267: byte;
  2113. Reserved268: byte;
  2114. Reserved269: byte;
  2115. Reserved270: byte;
  2116. Reserved271: byte;
  2117. FRAMENUML: byte; //Frame Number Low Byte
  2118. FRAMENUMH: byte; //Frame Number High Byte
  2119. end;
  2120. TPORT = object //I/O Ports
  2121. DIR: byte; //I/O Port Data Direction
  2122. DIRSET: byte; //I/O Port Data Direction Set
  2123. DIRCLR: byte; //I/O Port Data Direction Clear
  2124. DIRTGL: byte; //I/O Port Data Direction Toggle
  2125. OUT_: byte; //I/O Port Output
  2126. OUTSET: byte; //I/O Port Output Set
  2127. OUTCLR: byte; //I/O Port Output Clear
  2128. OUTTGL: byte; //I/O Port Output Toggle
  2129. IN_: byte; //I/O port Input
  2130. INTCTRL: byte; //Interrupt Control Register
  2131. INT0MASK: byte; //Port Interrupt 0 Mask
  2132. INT1MASK: byte; //Port Interrupt 1 Mask
  2133. INTFLAGS: byte; //Interrupt Flag Register
  2134. Reserved13: byte;
  2135. REMAP: byte; //I/O Port Pin Remap Register
  2136. Reserved15: byte;
  2137. PIN0CTRL: byte; //Pin 0 Control Register
  2138. PIN1CTRL: byte; //Pin 1 Control Register
  2139. PIN2CTRL: byte; //Pin 2 Control Register
  2140. PIN3CTRL: byte; //Pin 3 Control Register
  2141. PIN4CTRL: byte; //Pin 4 Control Register
  2142. PIN5CTRL: byte; //Pin 5 Control Register
  2143. PIN6CTRL: byte; //Pin 6 Control Register
  2144. PIN7CTRL: byte; //Pin 7 Control Register
  2145. const
  2146. // PORT_INT1LVL
  2147. INT1LVLmask = $0C;
  2148. INT1LVL_OFF = $00;
  2149. INT1LVL_LO = $04;
  2150. INT1LVL_MED = $08;
  2151. INT1LVL_HI = $0C;
  2152. // PORT_INT0LVL
  2153. INT0LVLmask = $03;
  2154. INT0LVL_OFF = $00;
  2155. INT0LVL_LO = $01;
  2156. INT0LVL_MED = $02;
  2157. INT0LVL_HI = $03;
  2158. // Port Interrupt 1 Flag
  2159. INT1IFbm = $02;
  2160. // Port Interrupt 0 Flag
  2161. INT0IFbm = $01;
  2162. // SPI
  2163. SPIbm = $20;
  2164. // USART0
  2165. USART0bm = $10;
  2166. // Timer/Counter 0 Output Compare D
  2167. TC0Dbm = $08;
  2168. // Timer/Counter 0 Output Compare C
  2169. TC0Cbm = $04;
  2170. // Timer/Counter 0 Output Compare B
  2171. TC0Bbm = $02;
  2172. // Timer/Counter 0 Output Compare A
  2173. TC0Abm = $01;
  2174. // Slew Rate Enable
  2175. SRLENbm = $80;
  2176. // Inverted I/O Enable
  2177. INVENbm = $40;
  2178. // PORT_OPC
  2179. OPCmask = $38;
  2180. OPC_TOTEM = $00;
  2181. OPC_BUSKEEPER = $08;
  2182. OPC_PULLDOWN = $10;
  2183. OPC_PULLUP = $18;
  2184. OPC_WIREDOR = $20;
  2185. OPC_WIREDAND = $28;
  2186. OPC_WIREDORPULL = $30;
  2187. OPC_WIREDANDPULL = $38;
  2188. // PORT_ISC
  2189. ISCmask = $07;
  2190. ISC_BOTHEDGES = $00;
  2191. ISC_RISING = $01;
  2192. ISC_FALLING = $02;
  2193. ISC_LEVEL = $03;
  2194. ISC_INPUT_DISABLE = $07;
  2195. end;
  2196. TTC0 = object //16-bit Timer/Counter 0
  2197. CTRLA: byte; //Control Register A
  2198. CTRLB: byte; //Control Register B
  2199. CTRLC: byte; //Control register C
  2200. CTRLD: byte; //Control Register D
  2201. CTRLE: byte; //Control Register E
  2202. Reserved5: byte;
  2203. INTCTRLA: byte; //Interrupt Control Register A
  2204. INTCTRLB: byte; //Interrupt Control Register B
  2205. CTRLFCLR: byte; //Control Register F Clear
  2206. CTRLFSET: byte; //Control Register F Set
  2207. CTRLGCLR: byte; //Control Register G Clear
  2208. CTRLGSET: byte; //Control Register G Set
  2209. INTFLAGS: byte; //Interrupt Flag Register
  2210. Reserved13: byte;
  2211. Reserved14: byte;
  2212. TEMP: byte; //Temporary Register For 16-bit Access
  2213. Reserved16: byte;
  2214. Reserved17: byte;
  2215. Reserved18: byte;
  2216. Reserved19: byte;
  2217. Reserved20: byte;
  2218. Reserved21: byte;
  2219. Reserved22: byte;
  2220. Reserved23: byte;
  2221. Reserved24: byte;
  2222. Reserved25: byte;
  2223. Reserved26: byte;
  2224. Reserved27: byte;
  2225. Reserved28: byte;
  2226. Reserved29: byte;
  2227. Reserved30: byte;
  2228. Reserved31: byte;
  2229. CNT: word; //Count
  2230. Reserved34: byte;
  2231. Reserved35: byte;
  2232. Reserved36: byte;
  2233. Reserved37: byte;
  2234. PER: word; //Period
  2235. CCA: word; //Compare or Capture A
  2236. CCB: word; //Compare or Capture B
  2237. CCC: word; //Compare or Capture C
  2238. CCD: word; //Compare or Capture D
  2239. Reserved48: byte;
  2240. Reserved49: byte;
  2241. Reserved50: byte;
  2242. Reserved51: byte;
  2243. Reserved52: byte;
  2244. Reserved53: byte;
  2245. PERBUF: word; //Period Buffer
  2246. CCABUF: word; //Compare Or Capture A Buffer
  2247. CCBBUF: word; //Compare Or Capture B Buffer
  2248. CCCBUF: word; //Compare Or Capture C Buffer
  2249. CCDBUF: word; //Compare Or Capture D Buffer
  2250. const
  2251. // TC_CLKSEL
  2252. CLKSELmask = $0F;
  2253. CLKSEL_OFF = $00;
  2254. CLKSEL_DIV1 = $01;
  2255. CLKSEL_DIV2 = $02;
  2256. CLKSEL_DIV4 = $03;
  2257. CLKSEL_DIV8 = $04;
  2258. CLKSEL_DIV64 = $05;
  2259. CLKSEL_DIV256 = $06;
  2260. CLKSEL_DIV1024 = $07;
  2261. CLKSEL_EVCH0 = $08;
  2262. CLKSEL_EVCH1 = $09;
  2263. CLKSEL_EVCH2 = $0A;
  2264. CLKSEL_EVCH3 = $0B;
  2265. CLKSEL_EVCH4 = $0C;
  2266. CLKSEL_EVCH5 = $0D;
  2267. CLKSEL_EVCH6 = $0E;
  2268. CLKSEL_EVCH7 = $0F;
  2269. // Compare or Capture D Enable
  2270. CCDENbm = $80;
  2271. // Compare or Capture C Enable
  2272. CCCENbm = $40;
  2273. // Compare or Capture B Enable
  2274. CCBENbm = $20;
  2275. // Compare or Capture A Enable
  2276. CCAENbm = $10;
  2277. // TC_WGMODE
  2278. WGMODEmask = $07;
  2279. WGMODE_NORMAL = $00;
  2280. WGMODE_FRQ = $01;
  2281. WGMODE_SINGLESLOPE = $03;
  2282. WGMODE_SS = $03;
  2283. WGMODE_DSTOP = $05;
  2284. WGMODE_DS_T = $05;
  2285. WGMODE_DSBOTH = $06;
  2286. WGMODE_DS_TB = $06;
  2287. WGMODE_DSBOTTOM = $07;
  2288. WGMODE_DS_B = $07;
  2289. // Compare D Output Value
  2290. CMPDbm = $08;
  2291. // Compare C Output Value
  2292. CMPCbm = $04;
  2293. // Compare B Output Value
  2294. CMPBbm = $02;
  2295. // Compare A Output Value
  2296. CMPAbm = $01;
  2297. // TC_EVACT
  2298. EVACTmask = $E0;
  2299. EVACT_OFF = $00;
  2300. EVACT_CAPT = $20;
  2301. EVACT_UPDOWN = $40;
  2302. EVACT_QDEC = $60;
  2303. EVACT_RESTART = $80;
  2304. EVACT_FRQ = $A0;
  2305. EVACT_PW = $C0;
  2306. // Event Delay
  2307. EVDLYbm = $10;
  2308. // TC_EVSEL
  2309. EVSELmask = $0F;
  2310. EVSEL_OFF = $00;
  2311. EVSEL_CH0 = $08;
  2312. EVSEL_CH1 = $09;
  2313. EVSEL_CH2 = $0A;
  2314. EVSEL_CH3 = $0B;
  2315. EVSEL_CH4 = $0C;
  2316. EVSEL_CH5 = $0D;
  2317. EVSEL_CH6 = $0E;
  2318. EVSEL_CH7 = $0F;
  2319. // TC_BYTEM
  2320. BYTEMmask = $03;
  2321. BYTEM_NORMAL = $00;
  2322. BYTEM_BYTEMODE = $01;
  2323. BYTEM_SPLITMODE = $02;
  2324. // TC_ERRINTLVL
  2325. ERRINTLVLmask = $0C;
  2326. ERRINTLVL_OFF = $00;
  2327. ERRINTLVL_LO = $04;
  2328. ERRINTLVL_MED = $08;
  2329. ERRINTLVL_HI = $0C;
  2330. // TC_OVFINTLVL
  2331. OVFINTLVLmask = $03;
  2332. OVFINTLVL_OFF = $00;
  2333. OVFINTLVL_LO = $01;
  2334. OVFINTLVL_MED = $02;
  2335. OVFINTLVL_HI = $03;
  2336. // TC_CCDINTLVL
  2337. CCDINTLVLmask = $C0;
  2338. CCDINTLVL_OFF = $00;
  2339. CCDINTLVL_LO = $40;
  2340. CCDINTLVL_MED = $80;
  2341. CCDINTLVL_HI = $C0;
  2342. // TC_CCCINTLVL
  2343. CCCINTLVLmask = $30;
  2344. CCCINTLVL_OFF = $00;
  2345. CCCINTLVL_LO = $10;
  2346. CCCINTLVL_MED = $20;
  2347. CCCINTLVL_HI = $30;
  2348. // TC_CCBINTLVL
  2349. CCBINTLVLmask = $0C;
  2350. CCBINTLVL_OFF = $00;
  2351. CCBINTLVL_LO = $04;
  2352. CCBINTLVL_MED = $08;
  2353. CCBINTLVL_HI = $0C;
  2354. // TC_CCAINTLVL
  2355. CCAINTLVLmask = $03;
  2356. CCAINTLVL_OFF = $00;
  2357. CCAINTLVL_LO = $01;
  2358. CCAINTLVL_MED = $02;
  2359. CCAINTLVL_HI = $03;
  2360. // Command
  2361. CMD0bm = $04;
  2362. CMD1bm = $08;
  2363. // Lock Update
  2364. LUPDbm = $02;
  2365. // Direction
  2366. DIRbm = $01;
  2367. // Compare or Capture D Buffer Valid
  2368. CCDBVbm = $10;
  2369. // Compare or Capture C Buffer Valid
  2370. CCCBVbm = $08;
  2371. // Compare or Capture B Buffer Valid
  2372. CCBBVbm = $04;
  2373. // Compare or Capture A Buffer Valid
  2374. CCABVbm = $02;
  2375. // Period Buffer Valid
  2376. PERBVbm = $01;
  2377. // Compare or Capture D Interrupt Flag
  2378. CCDIFbm = $80;
  2379. // Compare or Capture C Interrupt Flag
  2380. CCCIFbm = $40;
  2381. // Compare or Capture B Interrupt Flag
  2382. CCBIFbm = $20;
  2383. // Compare or Capture A Interrupt Flag
  2384. CCAIFbm = $10;
  2385. // Error Interrupt Flag
  2386. ERRIFbm = $02;
  2387. // Overflow Interrupt Flag
  2388. OVFIFbm = $01;
  2389. end;
  2390. TTC1 = object //16-bit Timer/Counter 1
  2391. CTRLA: byte; //Control Register A
  2392. CTRLB: byte; //Control Register B
  2393. CTRLC: byte; //Control register C
  2394. CTRLD: byte; //Control Register D
  2395. CTRLE: byte; //Control Register E
  2396. Reserved5: byte;
  2397. INTCTRLA: byte; //Interrupt Control Register A
  2398. INTCTRLB: byte; //Interrupt Control Register B
  2399. CTRLFCLR: byte; //Control Register F Clear
  2400. CTRLFSET: byte; //Control Register F Set
  2401. CTRLGCLR: byte; //Control Register G Clear
  2402. CTRLGSET: byte; //Control Register G Set
  2403. INTFLAGS: byte; //Interrupt Flag Register
  2404. Reserved13: byte;
  2405. Reserved14: byte;
  2406. TEMP: byte; //Temporary Register For 16-bit Access
  2407. Reserved16: byte;
  2408. Reserved17: byte;
  2409. Reserved18: byte;
  2410. Reserved19: byte;
  2411. Reserved20: byte;
  2412. Reserved21: byte;
  2413. Reserved22: byte;
  2414. Reserved23: byte;
  2415. Reserved24: byte;
  2416. Reserved25: byte;
  2417. Reserved26: byte;
  2418. Reserved27: byte;
  2419. Reserved28: byte;
  2420. Reserved29: byte;
  2421. Reserved30: byte;
  2422. Reserved31: byte;
  2423. CNT: word; //Count
  2424. Reserved34: byte;
  2425. Reserved35: byte;
  2426. Reserved36: byte;
  2427. Reserved37: byte;
  2428. PER: word; //Period
  2429. CCA: word; //Compare or Capture A
  2430. CCB: word; //Compare or Capture B
  2431. Reserved44: byte;
  2432. Reserved45: byte;
  2433. Reserved46: byte;
  2434. Reserved47: byte;
  2435. Reserved48: byte;
  2436. Reserved49: byte;
  2437. Reserved50: byte;
  2438. Reserved51: byte;
  2439. Reserved52: byte;
  2440. Reserved53: byte;
  2441. PERBUF: word; //Period Buffer
  2442. CCABUF: word; //Compare Or Capture A Buffer
  2443. CCBBUF: word; //Compare Or Capture B Buffer
  2444. const
  2445. // TC_CLKSEL
  2446. CLKSELmask = $0F;
  2447. CLKSEL_OFF = $00;
  2448. CLKSEL_DIV1 = $01;
  2449. CLKSEL_DIV2 = $02;
  2450. CLKSEL_DIV4 = $03;
  2451. CLKSEL_DIV8 = $04;
  2452. CLKSEL_DIV64 = $05;
  2453. CLKSEL_DIV256 = $06;
  2454. CLKSEL_DIV1024 = $07;
  2455. CLKSEL_EVCH0 = $08;
  2456. CLKSEL_EVCH1 = $09;
  2457. CLKSEL_EVCH2 = $0A;
  2458. CLKSEL_EVCH3 = $0B;
  2459. CLKSEL_EVCH4 = $0C;
  2460. CLKSEL_EVCH5 = $0D;
  2461. CLKSEL_EVCH6 = $0E;
  2462. CLKSEL_EVCH7 = $0F;
  2463. // Compare or Capture B Enable
  2464. CCBENbm = $20;
  2465. // Compare or Capture A Enable
  2466. CCAENbm = $10;
  2467. // TC_WGMODE
  2468. WGMODEmask = $07;
  2469. WGMODE_NORMAL = $00;
  2470. WGMODE_FRQ = $01;
  2471. WGMODE_SINGLESLOPE = $03;
  2472. WGMODE_SS = $03;
  2473. WGMODE_DSTOP = $05;
  2474. WGMODE_DS_T = $05;
  2475. WGMODE_DSBOTH = $06;
  2476. WGMODE_DS_TB = $06;
  2477. WGMODE_DSBOTTOM = $07;
  2478. WGMODE_DS_B = $07;
  2479. // Compare B Output Value
  2480. CMPBbm = $02;
  2481. // Compare A Output Value
  2482. CMPAbm = $01;
  2483. // TC_EVACT
  2484. EVACTmask = $E0;
  2485. EVACT_OFF = $00;
  2486. EVACT_CAPT = $20;
  2487. EVACT_UPDOWN = $40;
  2488. EVACT_QDEC = $60;
  2489. EVACT_RESTART = $80;
  2490. EVACT_FRQ = $A0;
  2491. EVACT_PW = $C0;
  2492. // Event Delay
  2493. EVDLYbm = $10;
  2494. // TC_EVSEL
  2495. EVSELmask = $0F;
  2496. EVSEL_OFF = $00;
  2497. EVSEL_CH0 = $08;
  2498. EVSEL_CH1 = $09;
  2499. EVSEL_CH2 = $0A;
  2500. EVSEL_CH3 = $0B;
  2501. EVSEL_CH4 = $0C;
  2502. EVSEL_CH5 = $0D;
  2503. EVSEL_CH6 = $0E;
  2504. EVSEL_CH7 = $0F;
  2505. // Byte Mode
  2506. BYTEMbm = $01;
  2507. // TC_ERRINTLVL
  2508. ERRINTLVLmask = $0C;
  2509. ERRINTLVL_OFF = $00;
  2510. ERRINTLVL_LO = $04;
  2511. ERRINTLVL_MED = $08;
  2512. ERRINTLVL_HI = $0C;
  2513. // TC_OVFINTLVL
  2514. OVFINTLVLmask = $03;
  2515. OVFINTLVL_OFF = $00;
  2516. OVFINTLVL_LO = $01;
  2517. OVFINTLVL_MED = $02;
  2518. OVFINTLVL_HI = $03;
  2519. // TC_CCBINTLVL
  2520. CCBINTLVLmask = $0C;
  2521. CCBINTLVL_OFF = $00;
  2522. CCBINTLVL_LO = $04;
  2523. CCBINTLVL_MED = $08;
  2524. CCBINTLVL_HI = $0C;
  2525. // TC_CCAINTLVL
  2526. CCAINTLVLmask = $03;
  2527. CCAINTLVL_OFF = $00;
  2528. CCAINTLVL_LO = $01;
  2529. CCAINTLVL_MED = $02;
  2530. CCAINTLVL_HI = $03;
  2531. // Command
  2532. CMD0bm = $04;
  2533. CMD1bm = $08;
  2534. // Lock Update
  2535. LUPDbm = $02;
  2536. // Direction
  2537. DIRbm = $01;
  2538. // Compare or Capture B Buffer Valid
  2539. CCBBVbm = $04;
  2540. // Compare or Capture A Buffer Valid
  2541. CCABVbm = $02;
  2542. // Period Buffer Valid
  2543. PERBVbm = $01;
  2544. // Compare or Capture B Interrupt Flag
  2545. CCBIFbm = $20;
  2546. // Compare or Capture A Interrupt Flag
  2547. CCAIFbm = $10;
  2548. // Error Interrupt Flag
  2549. ERRIFbm = $02;
  2550. // Overflow Interrupt Flag
  2551. OVFIFbm = $01;
  2552. end;
  2553. TTC2 = object //16-bit Timer/Counter type 2
  2554. CTRLA: byte; //Control Register A
  2555. CTRLB: byte; //Control Register B
  2556. CTRLC: byte; //Control register C
  2557. Reserved3: byte;
  2558. CTRLE: byte; //Control Register E
  2559. Reserved5: byte;
  2560. INTCTRLA: byte; //Interrupt Control Register A
  2561. INTCTRLB: byte; //Interrupt Control Register B
  2562. Reserved8: byte;
  2563. CTRLF: byte; //Control Register F
  2564. Reserved10: byte;
  2565. Reserved11: byte;
  2566. INTFLAGS: byte; //Interrupt Flag Register
  2567. Reserved13: byte;
  2568. Reserved14: byte;
  2569. Reserved15: byte;
  2570. Reserved16: byte;
  2571. Reserved17: byte;
  2572. Reserved18: byte;
  2573. Reserved19: byte;
  2574. Reserved20: byte;
  2575. Reserved21: byte;
  2576. Reserved22: byte;
  2577. Reserved23: byte;
  2578. Reserved24: byte;
  2579. Reserved25: byte;
  2580. Reserved26: byte;
  2581. Reserved27: byte;
  2582. Reserved28: byte;
  2583. Reserved29: byte;
  2584. Reserved30: byte;
  2585. Reserved31: byte;
  2586. LCNT: byte; //Low Byte Count
  2587. HCNT: byte; //High Byte Count
  2588. Reserved34: byte;
  2589. Reserved35: byte;
  2590. Reserved36: byte;
  2591. Reserved37: byte;
  2592. LPER: byte; //Low Byte Period
  2593. HPER: byte; //High Byte Period
  2594. LCMPA: byte; //Low Byte Compare A
  2595. HCMPA: byte; //High Byte Compare A
  2596. LCMPB: byte; //Low Byte Compare B
  2597. HCMPB: byte; //High Byte Compare B
  2598. LCMPC: byte; //Low Byte Compare C
  2599. HCMPC: byte; //High Byte Compare C
  2600. LCMPD: byte; //Low Byte Compare D
  2601. HCMPD: byte; //High Byte Compare D
  2602. const
  2603. // TC2_CLKSEL
  2604. CLKSELmask = $0F;
  2605. CLKSEL_OFF = $00;
  2606. CLKSEL_DIV1 = $01;
  2607. CLKSEL_DIV2 = $02;
  2608. CLKSEL_DIV4 = $03;
  2609. CLKSEL_DIV8 = $04;
  2610. CLKSEL_DIV64 = $05;
  2611. CLKSEL_DIV256 = $06;
  2612. CLKSEL_DIV1024 = $07;
  2613. CLKSEL_EVCH0 = $08;
  2614. CLKSEL_EVCH1 = $09;
  2615. CLKSEL_EVCH2 = $0A;
  2616. CLKSEL_EVCH3 = $0B;
  2617. CLKSEL_EVCH4 = $0C;
  2618. CLKSEL_EVCH5 = $0D;
  2619. CLKSEL_EVCH6 = $0E;
  2620. CLKSEL_EVCH7 = $0F;
  2621. // High Byte Compare D Enable
  2622. HCMPDENbm = $80;
  2623. // High Byte Compare C Enable
  2624. HCMPCENbm = $40;
  2625. // High Byte Compare B Enable
  2626. HCMPBENbm = $20;
  2627. // High Byte Compare A Enable
  2628. HCMPAENbm = $10;
  2629. // Low Byte Compare D Enable
  2630. LCMPDENbm = $08;
  2631. // Low Byte Compare C Enable
  2632. LCMPCENbm = $04;
  2633. // Low Byte Compare B Enable
  2634. LCMPBENbm = $02;
  2635. // Low Byte Compare A Enable
  2636. LCMPAENbm = $01;
  2637. // High Byte Compare D Output Value
  2638. HCMPDbm = $80;
  2639. // High Byte Compare C Output Value
  2640. HCMPCbm = $40;
  2641. // High Byte Compare B Output Value
  2642. HCMPBbm = $20;
  2643. // High Byte Compare A Output Value
  2644. HCMPAbm = $10;
  2645. // Low Byte Compare D Output Value
  2646. LCMPDbm = $08;
  2647. // Low Byte Compare C Output Value
  2648. LCMPCbm = $04;
  2649. // Low Byte Compare B Output Value
  2650. LCMPBbm = $02;
  2651. // Low Byte Compare A Output Value
  2652. LCMPAbm = $01;
  2653. // TC2_BYTEM
  2654. BYTEMmask = $03;
  2655. BYTEM_NORMAL = $00;
  2656. BYTEM_BYTEMODE = $01;
  2657. BYTEM_SPLITMODE = $02;
  2658. // TC2_HUNFINTLVL
  2659. HUNFINTLVLmask = $0C;
  2660. HUNFINTLVL_OFF = $00;
  2661. HUNFINTLVL_LO = $04;
  2662. HUNFINTLVL_MED = $08;
  2663. HUNFINTLVL_HI = $0C;
  2664. // TC2_LUNFINTLVL
  2665. LUNFINTLVLmask = $03;
  2666. LUNFINTLVL_OFF = $00;
  2667. LUNFINTLVL_LO = $01;
  2668. LUNFINTLVL_MED = $02;
  2669. LUNFINTLVL_HI = $03;
  2670. // TC2_LCMPDINTLVL
  2671. LCMPDINTLVLmask = $C0;
  2672. LCMPDINTLVL_OFF = $00;
  2673. LCMPDINTLVL_LO = $40;
  2674. LCMPDINTLVL_MED = $80;
  2675. LCMPDINTLVL_HI = $C0;
  2676. // TC2_LCMPCINTLVL
  2677. LCMPCINTLVLmask = $30;
  2678. LCMPCINTLVL_OFF = $00;
  2679. LCMPCINTLVL_LO = $10;
  2680. LCMPCINTLVL_MED = $20;
  2681. LCMPCINTLVL_HI = $30;
  2682. // TC2_LCMPBINTLVL
  2683. LCMPBINTLVLmask = $0C;
  2684. LCMPBINTLVL_OFF = $00;
  2685. LCMPBINTLVL_LO = $04;
  2686. LCMPBINTLVL_MED = $08;
  2687. LCMPBINTLVL_HI = $0C;
  2688. // TC2_LCMPAINTLVL
  2689. LCMPAINTLVLmask = $03;
  2690. LCMPAINTLVL_OFF = $00;
  2691. LCMPAINTLVL_LO = $01;
  2692. LCMPAINTLVL_MED = $02;
  2693. LCMPAINTLVL_HI = $03;
  2694. // TC2_CMD
  2695. CMDmask = $0C;
  2696. CMD_NONE = $00;
  2697. CMD_RESTART = $08;
  2698. CMD_RESET = $0C;
  2699. // TC2_CMDEN
  2700. CMDENmask = $03;
  2701. CMDEN_LOW = $01;
  2702. CMDEN_HIGH = $02;
  2703. CMDEN_BOTH = $03;
  2704. // Low Byte Compare D Interrupt Flag
  2705. LCMPDIFbm = $80;
  2706. // Low Byte Compare C Interrupt Flag
  2707. LCMPCIFbm = $40;
  2708. // Low Byte Compare B Interrupt Flag
  2709. LCMPBIFbm = $20;
  2710. // Low Byte Compare A Interrupt Flag
  2711. LCMPAIFbm = $10;
  2712. // High Byte Underflow Interrupt Flag
  2713. HUNFIFbm = $02;
  2714. // Low Byte Underflow Interrupt Flag
  2715. LUNFIFbm = $01;
  2716. end;
  2717. TAWEX = object //Advanced Waveform Extension
  2718. CTRL: byte; //Control Register
  2719. Reserved1: byte;
  2720. FDEMASK: byte; //Fault Detection Event Mask
  2721. FDCTRL: byte; //Fault Detection Control Register
  2722. STATUS: byte; //Status Register
  2723. STATUSSET: byte; //Status Set Register
  2724. DTBOTH: byte; //Dead Time Both Sides
  2725. DTBOTHBUF: byte; //Dead Time Both Sides Buffer
  2726. DTLS: byte; //Dead Time Low Side
  2727. DTHS: byte; //Dead Time High Side
  2728. DTLSBUF: byte; //Dead Time Low Side Buffer
  2729. DTHSBUF: byte; //Dead Time High Side Buffer
  2730. OUTOVEN: byte; //Output Override Enable
  2731. const
  2732. // Pattern Generation Mode
  2733. PGMbm = $20;
  2734. // Common Waveform Channel Mode
  2735. CWCMbm = $10;
  2736. // Dead Time Insertion Compare Channel D Enable
  2737. DTICCDENbm = $08;
  2738. // Dead Time Insertion Compare Channel C Enable
  2739. DTICCCENbm = $04;
  2740. // Dead Time Insertion Compare Channel B Enable
  2741. DTICCBENbm = $02;
  2742. // Dead Time Insertion Compare Channel A Enable
  2743. DTICCAENbm = $01;
  2744. // Fault Detect on Disable Break Disable
  2745. FDDBDbm = $10;
  2746. // Fault Detect Mode
  2747. FDMODEbm = $04;
  2748. // AWEX_FDACT
  2749. FDACTmask = $03;
  2750. FDACT_NONE = $00;
  2751. FDACT_CLEAROE = $01;
  2752. FDACT_CLEARDIR = $03;
  2753. // Fault Detect Flag
  2754. FDFbm = $04;
  2755. // Dead Time High Side Buffer Valid
  2756. DTHSBUFVbm = $02;
  2757. // Dead Time Low Side Buffer Valid
  2758. DTLSBUFVbm = $01;
  2759. end;
  2760. THIRES = object //High-Resolution Extension
  2761. CTRLA: byte; //Control Register
  2762. const
  2763. // High Resolution Plus
  2764. HRPLUSbm = $04;
  2765. // HIRES_HREN
  2766. HRENmask = $03;
  2767. HREN_NONE = $00;
  2768. HREN_TC0 = $01;
  2769. HREN_TC1 = $02;
  2770. HREN_BOTH = $03;
  2771. end;
  2772. TUSART = object //Universal Synchronous/Asynchronous Receiver/Transmitter
  2773. DATA: byte; //Data Register
  2774. STATUS: byte; //Status Register
  2775. Reserved2: byte;
  2776. CTRLA: byte; //Control Register A
  2777. CTRLB: byte; //Control Register B
  2778. CTRLC: byte; //Control Register C
  2779. BAUDCTRLA: byte; //Baud Rate Control Register A
  2780. BAUDCTRLB: byte; //Baud Rate Control Register B
  2781. const
  2782. // Receive Interrupt Flag
  2783. RXCIFbm = $80;
  2784. // Transmit Interrupt Flag
  2785. TXCIFbm = $40;
  2786. // Data Register Empty Flag
  2787. DREIFbm = $20;
  2788. // Frame Error
  2789. FERRbm = $10;
  2790. // Buffer Overflow
  2791. BUFOVFbm = $08;
  2792. // Parity Error
  2793. PERRbm = $04;
  2794. // Receive Bit 8
  2795. RXB8bm = $01;
  2796. // USART_RXCINTLVL
  2797. RXCINTLVLmask = $30;
  2798. RXCINTLVL_OFF = $00;
  2799. RXCINTLVL_LO = $10;
  2800. RXCINTLVL_MED = $20;
  2801. RXCINTLVL_HI = $30;
  2802. // USART_TXCINTLVL
  2803. TXCINTLVLmask = $0C;
  2804. TXCINTLVL_OFF = $00;
  2805. TXCINTLVL_LO = $04;
  2806. TXCINTLVL_MED = $08;
  2807. TXCINTLVL_HI = $0C;
  2808. // USART_DREINTLVL
  2809. DREINTLVLmask = $03;
  2810. DREINTLVL_OFF = $00;
  2811. DREINTLVL_LO = $01;
  2812. DREINTLVL_MED = $02;
  2813. DREINTLVL_HI = $03;
  2814. // Receiver Enable
  2815. RXENbm = $10;
  2816. // Transmitter Enable
  2817. TXENbm = $08;
  2818. // Double transmission speed
  2819. CLK2Xbm = $04;
  2820. // Multi-processor Communication Mode
  2821. MPCMbm = $02;
  2822. // Transmit bit 8
  2823. TXB8bm = $01;
  2824. // USART_CMODE
  2825. CMODEmask = $C0;
  2826. CMODE_ASYNCHRONOUS = $00;
  2827. CMODE_SYNCHRONOUS = $40;
  2828. CMODE_IRDA = $80;
  2829. CMODE_MSPI = $C0;
  2830. // USART_PMODE
  2831. PMODEmask = $30;
  2832. PMODE_DISABLED = $00;
  2833. PMODE_EVEN = $20;
  2834. PMODE_ODD = $30;
  2835. // Stop Bit Mode
  2836. SBMODEbm = $08;
  2837. // USART_CHSIZE
  2838. CHSIZEmask = $07;
  2839. CHSIZE_5BIT = $00;
  2840. CHSIZE_6BIT = $01;
  2841. CHSIZE_7BIT = $02;
  2842. CHSIZE_8BIT = $03;
  2843. CHSIZE_9BIT = $07;
  2844. // Baud Rate Scale
  2845. BSCALE0bm = $10;
  2846. BSCALE1bm = $20;
  2847. BSCALE2bm = $40;
  2848. BSCALE3bm = $80;
  2849. end;
  2850. TSPI = object //Serial Peripheral Interface
  2851. CTRL: byte; //Control Register
  2852. INTCTRL: byte; //Interrupt Control Register
  2853. STATUS: byte; //Status Register
  2854. DATA: byte; //Data Register
  2855. const
  2856. // Enable Double Speed
  2857. CLK2Xbm = $80;
  2858. // Enable Module
  2859. ENABLEbm = $40;
  2860. // Data Order Setting
  2861. DORDbm = $20;
  2862. // Master Operation Enable
  2863. MASTERbm = $10;
  2864. // SPI_MODE
  2865. MODEmask = $0C;
  2866. MODE_0 = $00;
  2867. MODE_1 = $04;
  2868. MODE_2 = $08;
  2869. MODE_3 = $0C;
  2870. // SPI_PRESCALER
  2871. PRESCALERmask = $03;
  2872. PRESCALER_DIV4 = $00;
  2873. PRESCALER_DIV16 = $01;
  2874. PRESCALER_DIV64 = $02;
  2875. PRESCALER_DIV128 = $03;
  2876. // SPI_INTLVL
  2877. INTLVLmask = $03;
  2878. INTLVL_OFF = $00;
  2879. INTLVL_LO = $01;
  2880. INTLVL_MED = $02;
  2881. INTLVL_HI = $03;
  2882. // Interrupt Flag
  2883. IFbm = $80;
  2884. // Write Collision
  2885. WRCOLbm = $40;
  2886. end;
  2887. TIRCOM = object //IR Communication Module
  2888. CTRL: byte; //Control Register
  2889. TXPLCTRL: byte; //IrDA Transmitter Pulse Length Control Register
  2890. RXPLCTRL: byte; //IrDA Receiver Pulse Length Control Register
  2891. const
  2892. // IRDA_EVSEL
  2893. EVSELmask = $0F;
  2894. EVSEL_OFF = $00;
  2895. EVSEL_0 = $08;
  2896. EVSEL_1 = $09;
  2897. EVSEL_2 = $0A;
  2898. EVSEL_3 = $0B;
  2899. EVSEL_4 = $0C;
  2900. EVSEL_5 = $0D;
  2901. EVSEL_6 = $0E;
  2902. EVSEL_7 = $0F;
  2903. end;
  2904. TNVM_FUSES = object //Fuses
  2905. FUSEBYTE0: byte; //JTAG User ID
  2906. FUSEBYTE1: byte; //Watchdog Configuration
  2907. FUSEBYTE2: byte; //Reset Configuration
  2908. Reserved3: byte;
  2909. FUSEBYTE4: byte; //Start-up Configuration
  2910. FUSEBYTE5: byte; //EESAVE and BOD Level
  2911. const
  2912. // WDWPER
  2913. WDWPERmask = $F0;
  2914. WDWPER_8CLK = $00;
  2915. WDWPER_16CLK = $10;
  2916. WDWPER_32CLK = $20;
  2917. WDWPER_64CLK = $30;
  2918. WDWPER_128CLK = $40;
  2919. WDWPER_256CLK = $50;
  2920. WDWPER_512CLK = $60;
  2921. WDWPER_1KCLK = $70;
  2922. WDWPER_2KCLK = $80;
  2923. WDWPER_4KCLK = $90;
  2924. WDWPER_8KCLK = $A0;
  2925. // WDPER
  2926. WDPERmask = $0F;
  2927. WDPER_8CLK = $00;
  2928. WDPER_16CLK = $01;
  2929. WDPER_32CLK = $02;
  2930. WDPER_64CLK = $03;
  2931. WDPER_128CLK = $04;
  2932. WDPER_256CLK = $05;
  2933. WDPER_512CLK = $06;
  2934. WDPER_1KCLK = $07;
  2935. WDPER_2KCLK = $08;
  2936. WDPER_4KCLK = $09;
  2937. WDPER_8KCLK = $0A;
  2938. // BOOTRST
  2939. BOOTRSTmask = $40;
  2940. BOOTRST_BOOTLDR = $00;
  2941. BOOTRST_APPLICATION = $40;
  2942. // TOSCSEL
  2943. TOSCSELmask = $20;
  2944. TOSCSEL_ALTERNATE = $00;
  2945. TOSCSEL_XTAL = $20;
  2946. // BODPD
  2947. BODPDmask = $03;
  2948. BODPD_SAMPLED = $01;
  2949. BODPD_CONTINUOUS = $02;
  2950. BODPD_DISABLED = $03;
  2951. // External Reset Disable
  2952. RSTDISBLbm = $10;
  2953. // STARTUPTIME
  2954. STARTUPTIMEmask = $0C;
  2955. STARTUPTIME0MS = $0C;
  2956. STARTUPTIME4MS = $04;
  2957. STARTUPTIME64MS = $00;
  2958. // Watchdog Timer Lock
  2959. WDLOCKbm = $02;
  2960. // JTAG Interface Enable
  2961. JTAGENbm = $01;
  2962. // BODACT
  2963. BODACTmask = $30;
  2964. BODACT_SAMPLED = $10;
  2965. BODACT_CONTINUOUS = $20;
  2966. BODACT_DISABLED = $30;
  2967. // Preserve EEPROM Through Chip Erase
  2968. EESAVEbm = $08;
  2969. // BODLEVEL
  2970. BODLEVELmask = $07;
  2971. BODLEVEL1V6 = $07;
  2972. BODLEVEL1V8 = $06;
  2973. BODLEVEL2V0 = $05;
  2974. BODLEVEL2V2 = $04;
  2975. BODLEVEL2V4 = $03;
  2976. BODLEVEL2V6 = $02;
  2977. BODLEVEL2V8 = $01;
  2978. BODLEVEL3V0 = $00;
  2979. end;
  2980. TNVM_LOCKBITS = object //Lock Bits
  2981. LOCKBITS: byte; //Lock Bits
  2982. const
  2983. // FUSE_BLBB
  2984. BLBBmask = $C0;
  2985. BLBB_RWLOCK = $00;
  2986. BLBB_RLOCK = $40;
  2987. BLBB_WLOCK = $80;
  2988. BLBB_NOLOCK = $C0;
  2989. // FUSE_BLBA
  2990. BLBAmask = $30;
  2991. BLBA_RWLOCK = $00;
  2992. BLBA_RLOCK = $10;
  2993. BLBA_WLOCK = $20;
  2994. BLBA_NOLOCK = $30;
  2995. // FUSE_BLBAT
  2996. BLBATmask = $0C;
  2997. BLBAT_RWLOCK = $00;
  2998. BLBAT_RLOCK = $04;
  2999. BLBAT_WLOCK = $08;
  3000. BLBAT_NOLOCK = $0C;
  3001. // FUSE_LB
  3002. LBmask = $03;
  3003. LB_RWLOCK = $00;
  3004. LB_WLOCK = $02;
  3005. LB_NOLOCK = $03;
  3006. end;
  3007. TNVM_PROD_SIGNATURES = object //Production Signatures
  3008. RCOSC2M: byte; //RCOSC 2 MHz Calibration Value B
  3009. RCOSC2MA: byte; //RCOSC 2 MHz Calibration Value A
  3010. RCOSC32K: byte; //RCOSC 32.768 kHz Calibration Value
  3011. RCOSC32M: byte; //RCOSC 32 MHz Calibration Value B
  3012. RCOSC32MA: byte; //RCOSC 32 MHz Calibration Value A
  3013. Reserved5: byte;
  3014. Reserved6: byte;
  3015. Reserved7: byte;
  3016. LOTNUM0: byte; //Lot Number Byte 0, ASCII
  3017. LOTNUM1: byte; //Lot Number Byte 1, ASCII
  3018. LOTNUM2: byte; //Lot Number Byte 2, ASCII
  3019. LOTNUM3: byte; //Lot Number Byte 3, ASCII
  3020. LOTNUM4: byte; //Lot Number Byte 4, ASCII
  3021. LOTNUM5: byte; //Lot Number Byte 5, ASCII
  3022. Reserved14: byte;
  3023. Reserved15: byte;
  3024. WAFNUM: byte; //Wafer Number
  3025. Reserved17: byte;
  3026. COORDX0: byte; //Wafer Coordinate X Byte 0
  3027. COORDX1: byte; //Wafer Coordinate X Byte 1
  3028. COORDY0: byte; //Wafer Coordinate Y Byte 0
  3029. COORDY1: byte; //Wafer Coordinate Y Byte 1
  3030. Reserved22: byte;
  3031. Reserved23: byte;
  3032. Reserved24: byte;
  3033. Reserved25: byte;
  3034. USBCAL0: byte; //USB Calibration Byte 0
  3035. USBCAL1: byte; //USB Calibration Byte 1
  3036. USBRCOSC: byte; //USB RCOSC Calibration Value B
  3037. USBRCOSCA: byte; //USB RCOSC Calibration Value A
  3038. Reserved30: byte;
  3039. Reserved31: byte;
  3040. ADCACAL0: byte; //ADCA Calibration Byte 0
  3041. ADCACAL1: byte; //ADCA Calibration Byte 1
  3042. Reserved34: byte;
  3043. Reserved35: byte;
  3044. ADCBCAL0: byte; //ADCB Calibration Byte 0
  3045. ADCBCAL1: byte; //ADCB Calibration Byte 1
  3046. Reserved38: byte;
  3047. Reserved39: byte;
  3048. Reserved40: byte;
  3049. Reserved41: byte;
  3050. Reserved42: byte;
  3051. Reserved43: byte;
  3052. Reserved44: byte;
  3053. Reserved45: byte;
  3054. TEMPSENSE0: byte; //Temperature Sensor Calibration Byte 0
  3055. TEMPSENSE1: byte; //Temperature Sensor Calibration Byte 1
  3056. DACA0OFFCAL: byte; //DACA0 Calibration Byte 0
  3057. DACA0GAINCAL: byte; //DACA0 Calibration Byte 1
  3058. DACB0OFFCAL: byte; //DACB0 Calibration Byte 0
  3059. DACB0GAINCAL: byte; //DACB0 Calibration Byte 1
  3060. DACA1OFFCAL: byte; //DACA1 Calibration Byte 0
  3061. DACA1GAINCAL: byte; //DACA1 Calibration Byte 1
  3062. DACB1OFFCAL: byte; //DACB1 Calibration Byte 0
  3063. DACB1GAINCAL: byte; //DACB1 Calibration Byte 1
  3064. end;
  3065. const
  3066. Pin0idx = 0; Pin0bm = 1;
  3067. Pin1idx = 1; Pin1bm = 2;
  3068. Pin2idx = 2; Pin2bm = 4;
  3069. Pin3idx = 3; Pin3bm = 8;
  3070. Pin4idx = 4; Pin4bm = 16;
  3071. Pin5idx = 5; Pin5bm = 32;
  3072. Pin6idx = 6; Pin6bm = 64;
  3073. Pin7idx = 7; Pin7bm = 128;
  3074. var
  3075. GPIO: TGPIO absolute $0000;
  3076. VPORT0: TVPORT absolute $0010;
  3077. VPORT1: TVPORT absolute $0014;
  3078. VPORT2: TVPORT absolute $0018;
  3079. VPORT3: TVPORT absolute $001C;
  3080. OCD: TOCD absolute $002E;
  3081. CPU: TCPU absolute $0030;
  3082. CLK: TCLK absolute $0040;
  3083. SLEEP: TSLEEP absolute $0048;
  3084. OSC: TOSC absolute $0050;
  3085. DFLLRC32M: TDFLL absolute $0060;
  3086. DFLLRC2M: TDFLL absolute $0068;
  3087. PR: TPR absolute $0070;
  3088. RST: TRST absolute $0078;
  3089. WDT: TWDT absolute $0080;
  3090. MCU: TMCU absolute $0090;
  3091. PMIC: TPMIC absolute $00A0;
  3092. PORTCFG: TPORTCFG absolute $00B0;
  3093. AES: TAES absolute $00C0;
  3094. CRC: TCRC absolute $00D0;
  3095. DMA: TDMA absolute $0100;
  3096. EVSYS: TEVSYS absolute $0180;
  3097. NVM: TNVM absolute $01C0;
  3098. ADCA: TADC absolute $0200;
  3099. ADCB: TADC absolute $0240;
  3100. DACA: TDAC absolute $0300;
  3101. DACB: TDAC absolute $0320;
  3102. ACA: TAC absolute $0380;
  3103. ACB: TAC absolute $0390;
  3104. RTC: TRTC absolute $0400;
  3105. EBI: TEBI absolute $0440;
  3106. TWIC: TTWI absolute $0480;
  3107. TWID: TTWI absolute $0490;
  3108. TWIE: TTWI absolute $04A0;
  3109. TWIF: TTWI absolute $04B0;
  3110. USB: TUSB absolute $04C0;
  3111. PORTA: TPORT absolute $0600;
  3112. PORTB: TPORT absolute $0620;
  3113. PORTC: TPORT absolute $0640;
  3114. PORTD: TPORT absolute $0660;
  3115. PORTE: TPORT absolute $0680;
  3116. PORTF: TPORT absolute $06A0;
  3117. PORTH: TPORT absolute $06E0;
  3118. PORTJ: TPORT absolute $0700;
  3119. PORTK: TPORT absolute $0720;
  3120. PORTQ: TPORT absolute $07C0;
  3121. PORTR: TPORT absolute $07E0;
  3122. TCC0: TTC0 absolute $0800;
  3123. TCC2: TTC2 absolute $0800;
  3124. TCC1: TTC1 absolute $0840;
  3125. AWEXC: TAWEX absolute $0880;
  3126. HIRESC: THIRES absolute $0890;
  3127. USARTC0: TUSART absolute $08A0;
  3128. USARTC1: TUSART absolute $08B0;
  3129. SPIC: TSPI absolute $08C0;
  3130. IRCOM: TIRCOM absolute $08F8;
  3131. TCD0: TTC0 absolute $0900;
  3132. TCD2: TTC2 absolute $0900;
  3133. TCD1: TTC1 absolute $0940;
  3134. HIRESD: THIRES absolute $0990;
  3135. USARTD0: TUSART absolute $09A0;
  3136. USARTD1: TUSART absolute $09B0;
  3137. SPID: TSPI absolute $09C0;
  3138. TCE0: TTC0 absolute $0A00;
  3139. TCE2: TTC2 absolute $0A00;
  3140. TCE1: TTC1 absolute $0A40;
  3141. AWEXE: TAWEX absolute $0A80;
  3142. HIRESE: THIRES absolute $0A90;
  3143. USARTE0: TUSART absolute $0AA0;
  3144. USARTE1: TUSART absolute $0AB0;
  3145. SPIE: TSPI absolute $0AC0;
  3146. TCF0: TTC0 absolute $0B00;
  3147. TCF2: TTC2 absolute $0B00;
  3148. TCF1: TTC1 absolute $0B40;
  3149. HIRESF: THIRES absolute $0B90;
  3150. USARTF0: TUSART absolute $0BA0;
  3151. USARTF1: TUSART absolute $0BB0;
  3152. SPIF: TSPI absolute $0BC0;
  3153. implementation
  3154. {$i avrcommon.inc}
  3155. procedure OSC_OSCF_ISR; external name 'OSC_OSCF_ISR'; // Interrupt 1 Oscillator Failure Interrupt (NMI)
  3156. procedure PORTC_INT0_ISR; external name 'PORTC_INT0_ISR'; // Interrupt 2 External Interrupt 0
  3157. procedure PORTC_INT1_ISR; external name 'PORTC_INT1_ISR'; // Interrupt 3 External Interrupt 1
  3158. procedure PORTR_INT0_ISR; external name 'PORTR_INT0_ISR'; // Interrupt 4 External Interrupt 0
  3159. procedure PORTR_INT1_ISR; external name 'PORTR_INT1_ISR'; // Interrupt 5 External Interrupt 1
  3160. procedure DMA_CH0_ISR; external name 'DMA_CH0_ISR'; // Interrupt 6 Channel 0 Interrupt
  3161. procedure DMA_CH1_ISR; external name 'DMA_CH1_ISR'; // Interrupt 7 Channel 1 Interrupt
  3162. procedure DMA_CH2_ISR; external name 'DMA_CH2_ISR'; // Interrupt 8 Channel 2 Interrupt
  3163. procedure DMA_CH3_ISR; external name 'DMA_CH3_ISR'; // Interrupt 9 Channel 3 Interrupt
  3164. procedure RTC_OVF_ISR; external name 'RTC_OVF_ISR'; // Interrupt 10 Overflow Interrupt
  3165. procedure RTC_COMP_ISR; external name 'RTC_COMP_ISR'; // Interrupt 11 Compare Interrupt
  3166. procedure TWIC_TWIS_ISR; external name 'TWIC_TWIS_ISR'; // Interrupt 12 TWI Slave Interrupt
  3167. procedure TWIC_TWIM_ISR; external name 'TWIC_TWIM_ISR'; // Interrupt 13 TWI Master Interrupt
  3168. procedure TCC2_LUNF_ISR; external name 'TCC2_LUNF_ISR'; // Interrupt 14 Low Byte Underflow Interrupt
  3169. procedure TCC2_HUNF_ISR; external name 'TCC2_HUNF_ISR'; // Interrupt 15 High Byte Underflow Interrupt
  3170. procedure TCC2_LCMPA_ISR; external name 'TCC2_LCMPA_ISR'; // Interrupt 16 Low Byte Compare A Interrupt
  3171. procedure TCC2_LCMPB_ISR; external name 'TCC2_LCMPB_ISR'; // Interrupt 17 Low Byte Compare B Interrupt
  3172. procedure TCC2_LCMPC_ISR; external name 'TCC2_LCMPC_ISR'; // Interrupt 18 Low Byte Compare C Interrupt
  3173. procedure TCC2_LCMPD_ISR; external name 'TCC2_LCMPD_ISR'; // Interrupt 19 Low Byte Compare D Interrupt
  3174. procedure TCC1_OVF_ISR; external name 'TCC1_OVF_ISR'; // Interrupt 20 Overflow Interrupt
  3175. procedure TCC1_ERR_ISR; external name 'TCC1_ERR_ISR'; // Interrupt 21 Error Interrupt
  3176. procedure TCC1_CCA_ISR; external name 'TCC1_CCA_ISR'; // Interrupt 22 Compare or Capture A Interrupt
  3177. procedure TCC1_CCB_ISR; external name 'TCC1_CCB_ISR'; // Interrupt 23 Compare or Capture B Interrupt
  3178. procedure SPIC_INT_ISR; external name 'SPIC_INT_ISR'; // Interrupt 24 SPI Interrupt
  3179. procedure USARTC0_RXC_ISR; external name 'USARTC0_RXC_ISR'; // Interrupt 25 Reception Complete Interrupt
  3180. procedure USARTC0_DRE_ISR; external name 'USARTC0_DRE_ISR'; // Interrupt 26 Data Register Empty Interrupt
  3181. procedure USARTC0_TXC_ISR; external name 'USARTC0_TXC_ISR'; // Interrupt 27 Transmission Complete Interrupt
  3182. procedure USARTC1_RXC_ISR; external name 'USARTC1_RXC_ISR'; // Interrupt 28 Reception Complete Interrupt
  3183. procedure USARTC1_DRE_ISR; external name 'USARTC1_DRE_ISR'; // Interrupt 29 Data Register Empty Interrupt
  3184. procedure USARTC1_TXC_ISR; external name 'USARTC1_TXC_ISR'; // Interrupt 30 Transmission Complete Interrupt
  3185. procedure AES_INT_ISR; external name 'AES_INT_ISR'; // Interrupt 31 AES Interrupt
  3186. procedure NVM_EE_ISR; external name 'NVM_EE_ISR'; // Interrupt 32 EE Interrupt
  3187. procedure NVM_SPM_ISR; external name 'NVM_SPM_ISR'; // Interrupt 33 SPM Interrupt
  3188. procedure PORTB_INT0_ISR; external name 'PORTB_INT0_ISR'; // Interrupt 34 External Interrupt 0
  3189. procedure PORTB_INT1_ISR; external name 'PORTB_INT1_ISR'; // Interrupt 35 External Interrupt 1
  3190. procedure ACB_AC0_ISR; external name 'ACB_AC0_ISR'; // Interrupt 36 AC0 Interrupt
  3191. procedure ACB_AC1_ISR; external name 'ACB_AC1_ISR'; // Interrupt 37 AC1 Interrupt
  3192. procedure ACB_ACW_ISR; external name 'ACB_ACW_ISR'; // Interrupt 38 ACW Window Mode Interrupt
  3193. procedure ADCB_CH0_ISR; external name 'ADCB_CH0_ISR'; // Interrupt 39 Interrupt 0
  3194. procedure ADCB_CH1_ISR; external name 'ADCB_CH1_ISR'; // Interrupt 40 Interrupt 1
  3195. procedure ADCB_CH2_ISR; external name 'ADCB_CH2_ISR'; // Interrupt 41 Interrupt 2
  3196. procedure ADCB_CH3_ISR; external name 'ADCB_CH3_ISR'; // Interrupt 42 Interrupt 3
  3197. procedure PORTE_INT0_ISR; external name 'PORTE_INT0_ISR'; // Interrupt 43 External Interrupt 0
  3198. procedure PORTE_INT1_ISR; external name 'PORTE_INT1_ISR'; // Interrupt 44 External Interrupt 1
  3199. procedure TWIE_TWIS_ISR; external name 'TWIE_TWIS_ISR'; // Interrupt 45 TWI Slave Interrupt
  3200. procedure TWIE_TWIM_ISR; external name 'TWIE_TWIM_ISR'; // Interrupt 46 TWI Master Interrupt
  3201. procedure TCE2_LUNF_ISR; external name 'TCE2_LUNF_ISR'; // Interrupt 47 Low Byte Underflow Interrupt
  3202. procedure TCE2_HUNF_ISR; external name 'TCE2_HUNF_ISR'; // Interrupt 48 High Byte Underflow Interrupt
  3203. procedure TCE2_LCMPA_ISR; external name 'TCE2_LCMPA_ISR'; // Interrupt 49 Low Byte Compare A Interrupt
  3204. procedure TCE2_LCMPB_ISR; external name 'TCE2_LCMPB_ISR'; // Interrupt 50 Low Byte Compare B Interrupt
  3205. procedure TCE2_LCMPC_ISR; external name 'TCE2_LCMPC_ISR'; // Interrupt 51 Low Byte Compare C Interrupt
  3206. procedure TCE2_LCMPD_ISR; external name 'TCE2_LCMPD_ISR'; // Interrupt 52 Low Byte Compare D Interrupt
  3207. procedure TCE1_OVF_ISR; external name 'TCE1_OVF_ISR'; // Interrupt 53 Overflow Interrupt
  3208. procedure TCE1_ERR_ISR; external name 'TCE1_ERR_ISR'; // Interrupt 54 Error Interrupt
  3209. procedure TCE1_CCA_ISR; external name 'TCE1_CCA_ISR'; // Interrupt 55 Compare or Capture A Interrupt
  3210. procedure TCE1_CCB_ISR; external name 'TCE1_CCB_ISR'; // Interrupt 56 Compare or Capture B Interrupt
  3211. procedure SPIE_INT_ISR; external name 'SPIE_INT_ISR'; // Interrupt 57 SPI Interrupt
  3212. procedure USARTE0_RXC_ISR; external name 'USARTE0_RXC_ISR'; // Interrupt 58 Reception Complete Interrupt
  3213. procedure USARTE0_DRE_ISR; external name 'USARTE0_DRE_ISR'; // Interrupt 59 Data Register Empty Interrupt
  3214. procedure USARTE0_TXC_ISR; external name 'USARTE0_TXC_ISR'; // Interrupt 60 Transmission Complete Interrupt
  3215. procedure USARTE1_RXC_ISR; external name 'USARTE1_RXC_ISR'; // Interrupt 61 Reception Complete Interrupt
  3216. procedure USARTE1_DRE_ISR; external name 'USARTE1_DRE_ISR'; // Interrupt 62 Data Register Empty Interrupt
  3217. procedure USARTE1_TXC_ISR; external name 'USARTE1_TXC_ISR'; // Interrupt 63 Transmission Complete Interrupt
  3218. procedure PORTD_INT0_ISR; external name 'PORTD_INT0_ISR'; // Interrupt 64 External Interrupt 0
  3219. procedure PORTD_INT1_ISR; external name 'PORTD_INT1_ISR'; // Interrupt 65 External Interrupt 1
  3220. procedure PORTA_INT0_ISR; external name 'PORTA_INT0_ISR'; // Interrupt 66 External Interrupt 0
  3221. procedure PORTA_INT1_ISR; external name 'PORTA_INT1_ISR'; // Interrupt 67 External Interrupt 1
  3222. procedure ACA_AC0_ISR; external name 'ACA_AC0_ISR'; // Interrupt 68 AC0 Interrupt
  3223. procedure ACA_AC1_ISR; external name 'ACA_AC1_ISR'; // Interrupt 69 AC1 Interrupt
  3224. procedure ACA_ACW_ISR; external name 'ACA_ACW_ISR'; // Interrupt 70 ACW Window Mode Interrupt
  3225. procedure ADCA_CH0_ISR; external name 'ADCA_CH0_ISR'; // Interrupt 71 Interrupt 0
  3226. procedure ADCA_CH1_ISR; external name 'ADCA_CH1_ISR'; // Interrupt 72 Interrupt 1
  3227. procedure ADCA_CH2_ISR; external name 'ADCA_CH2_ISR'; // Interrupt 73 Interrupt 2
  3228. procedure ADCA_CH3_ISR; external name 'ADCA_CH3_ISR'; // Interrupt 74 Interrupt 3
  3229. procedure TWID_TWIS_ISR; external name 'TWID_TWIS_ISR'; // Interrupt 75 TWI Slave Interrupt
  3230. procedure TWID_TWIM_ISR; external name 'TWID_TWIM_ISR'; // Interrupt 76 TWI Master Interrupt
  3231. procedure TCD2_LUNF_ISR; external name 'TCD2_LUNF_ISR'; // Interrupt 77 Low Byte Underflow Interrupt
  3232. procedure TCD2_HUNF_ISR; external name 'TCD2_HUNF_ISR'; // Interrupt 78 High Byte Underflow Interrupt
  3233. procedure TCD2_LCMPA_ISR; external name 'TCD2_LCMPA_ISR'; // Interrupt 79 Low Byte Compare A Interrupt
  3234. procedure TCD2_LCMPB_ISR; external name 'TCD2_LCMPB_ISR'; // Interrupt 80 Low Byte Compare B Interrupt
  3235. procedure TCD2_LCMPC_ISR; external name 'TCD2_LCMPC_ISR'; // Interrupt 81 Low Byte Compare C Interrupt
  3236. procedure TCD2_LCMPD_ISR; external name 'TCD2_LCMPD_ISR'; // Interrupt 82 Low Byte Compare D Interrupt
  3237. procedure TCD1_OVF_ISR; external name 'TCD1_OVF_ISR'; // Interrupt 83 Overflow Interrupt
  3238. procedure TCD1_ERR_ISR; external name 'TCD1_ERR_ISR'; // Interrupt 84 Error Interrupt
  3239. procedure TCD1_CCA_ISR; external name 'TCD1_CCA_ISR'; // Interrupt 85 Compare or Capture A Interrupt
  3240. procedure TCD1_CCB_ISR; external name 'TCD1_CCB_ISR'; // Interrupt 86 Compare or Capture B Interrupt
  3241. procedure SPID_INT_ISR; external name 'SPID_INT_ISR'; // Interrupt 87 SPI Interrupt
  3242. procedure USARTD0_RXC_ISR; external name 'USARTD0_RXC_ISR'; // Interrupt 88 Reception Complete Interrupt
  3243. procedure USARTD0_DRE_ISR; external name 'USARTD0_DRE_ISR'; // Interrupt 89 Data Register Empty Interrupt
  3244. procedure USARTD0_TXC_ISR; external name 'USARTD0_TXC_ISR'; // Interrupt 90 Transmission Complete Interrupt
  3245. procedure USARTD1_RXC_ISR; external name 'USARTD1_RXC_ISR'; // Interrupt 91 Reception Complete Interrupt
  3246. procedure USARTD1_DRE_ISR; external name 'USARTD1_DRE_ISR'; // Interrupt 92 Data Register Empty Interrupt
  3247. procedure USARTD1_TXC_ISR; external name 'USARTD1_TXC_ISR'; // Interrupt 93 Transmission Complete Interrupt
  3248. procedure PORTQ_INT0_ISR; external name 'PORTQ_INT0_ISR'; // Interrupt 94 External Interrupt 0
  3249. procedure PORTQ_INT1_ISR; external name 'PORTQ_INT1_ISR'; // Interrupt 95 External Interrupt 1
  3250. procedure PORTH_INT0_ISR; external name 'PORTH_INT0_ISR'; // Interrupt 96 External Interrupt 0
  3251. procedure PORTH_INT1_ISR; external name 'PORTH_INT1_ISR'; // Interrupt 97 External Interrupt 1
  3252. procedure PORTJ_INT0_ISR; external name 'PORTJ_INT0_ISR'; // Interrupt 98 External Interrupt 0
  3253. procedure PORTJ_INT1_ISR; external name 'PORTJ_INT1_ISR'; // Interrupt 99 External Interrupt 1
  3254. procedure PORTK_INT0_ISR; external name 'PORTK_INT0_ISR'; // Interrupt 100 External Interrupt 0
  3255. procedure PORTK_INT1_ISR; external name 'PORTK_INT1_ISR'; // Interrupt 101 External Interrupt 1
  3256. procedure PORTF_INT0_ISR; external name 'PORTF_INT0_ISR'; // Interrupt 104 External Interrupt 0
  3257. procedure PORTF_INT1_ISR; external name 'PORTF_INT1_ISR'; // Interrupt 105 External Interrupt 1
  3258. procedure TWIF_TWIS_ISR; external name 'TWIF_TWIS_ISR'; // Interrupt 106 TWI Slave Interrupt
  3259. procedure TWIF_TWIM_ISR; external name 'TWIF_TWIM_ISR'; // Interrupt 107 TWI Master Interrupt
  3260. procedure TCF2_LUNF_ISR; external name 'TCF2_LUNF_ISR'; // Interrupt 108 Low Byte Underflow Interrupt
  3261. procedure TCF2_HUNF_ISR; external name 'TCF2_HUNF_ISR'; // Interrupt 109 High Byte Underflow Interrupt
  3262. procedure TCF2_LCMPA_ISR; external name 'TCF2_LCMPA_ISR'; // Interrupt 110 Low Byte Compare A Interrupt
  3263. procedure TCF2_LCMPB_ISR; external name 'TCF2_LCMPB_ISR'; // Interrupt 111 Low Byte Compare B Interrupt
  3264. procedure TCF2_LCMPC_ISR; external name 'TCF2_LCMPC_ISR'; // Interrupt 112 Low Byte Compare C Interrupt
  3265. procedure TCF2_LCMPD_ISR; external name 'TCF2_LCMPD_ISR'; // Interrupt 113 Low Byte Compare D Interrupt
  3266. procedure TCF1_OVF_ISR; external name 'TCF1_OVF_ISR'; // Interrupt 114 Overflow Interrupt
  3267. procedure TCF1_ERR_ISR; external name 'TCF1_ERR_ISR'; // Interrupt 115 Error Interrupt
  3268. procedure TCF1_CCA_ISR; external name 'TCF1_CCA_ISR'; // Interrupt 116 Compare or Capture A Interrupt
  3269. procedure TCF1_CCB_ISR; external name 'TCF1_CCB_ISR'; // Interrupt 117 Compare or Capture B Interrupt
  3270. procedure SPIF_INT_ISR; external name 'SPIF_INT_ISR'; // Interrupt 118 SPI Interrupt
  3271. procedure USARTF0_RXC_ISR; external name 'USARTF0_RXC_ISR'; // Interrupt 119 Reception Complete Interrupt
  3272. procedure USARTF0_DRE_ISR; external name 'USARTF0_DRE_ISR'; // Interrupt 120 Data Register Empty Interrupt
  3273. procedure USARTF0_TXC_ISR; external name 'USARTF0_TXC_ISR'; // Interrupt 121 Transmission Complete Interrupt
  3274. procedure USARTF1_RXC_ISR; external name 'USARTF1_RXC_ISR'; // Interrupt 122 Reception Complete Interrupt
  3275. procedure USARTF1_DRE_ISR; external name 'USARTF1_DRE_ISR'; // Interrupt 123 Data Register Empty Interrupt
  3276. procedure USARTF1_TXC_ISR; external name 'USARTF1_TXC_ISR'; // Interrupt 124 Transmission Complete Interrupt
  3277. procedure USB_BUSEVENT_ISR; external name 'USB_BUSEVENT_ISR'; // Interrupt 125 SOF, suspend, resume, reset bus event interrupts, crc, underflow, overflow and stall error interrupts
  3278. procedure USB_TRNCOMPL_ISR; external name 'USB_TRNCOMPL_ISR'; // Interrupt 126 Transaction complete interrupt
  3279. procedure _FPC_start; assembler; nostackframe; noreturn; public name '_START'; section '.init';
  3280. asm
  3281. jmp __dtors_end
  3282. jmp OSC_OSCF_ISR
  3283. jmp PORTC_INT0_ISR
  3284. jmp PORTC_INT1_ISR
  3285. jmp PORTR_INT0_ISR
  3286. jmp PORTR_INT1_ISR
  3287. jmp DMA_CH0_ISR
  3288. jmp DMA_CH1_ISR
  3289. jmp DMA_CH2_ISR
  3290. jmp DMA_CH3_ISR
  3291. jmp RTC_OVF_ISR
  3292. jmp RTC_COMP_ISR
  3293. jmp TWIC_TWIS_ISR
  3294. jmp TWIC_TWIM_ISR
  3295. jmp TCC2_LUNF_ISR
  3296. jmp TCC2_HUNF_ISR
  3297. jmp TCC2_LCMPA_ISR
  3298. jmp TCC2_LCMPB_ISR
  3299. jmp TCC2_LCMPC_ISR
  3300. jmp TCC2_LCMPD_ISR
  3301. jmp TCC1_OVF_ISR
  3302. jmp TCC1_ERR_ISR
  3303. jmp TCC1_CCA_ISR
  3304. jmp TCC1_CCB_ISR
  3305. jmp SPIC_INT_ISR
  3306. jmp USARTC0_RXC_ISR
  3307. jmp USARTC0_DRE_ISR
  3308. jmp USARTC0_TXC_ISR
  3309. jmp USARTC1_RXC_ISR
  3310. jmp USARTC1_DRE_ISR
  3311. jmp USARTC1_TXC_ISR
  3312. jmp AES_INT_ISR
  3313. jmp NVM_EE_ISR
  3314. jmp NVM_SPM_ISR
  3315. jmp PORTB_INT0_ISR
  3316. jmp PORTB_INT1_ISR
  3317. jmp ACB_AC0_ISR
  3318. jmp ACB_AC1_ISR
  3319. jmp ACB_ACW_ISR
  3320. jmp ADCB_CH0_ISR
  3321. jmp ADCB_CH1_ISR
  3322. jmp ADCB_CH2_ISR
  3323. jmp ADCB_CH3_ISR
  3324. jmp PORTE_INT0_ISR
  3325. jmp PORTE_INT1_ISR
  3326. jmp TWIE_TWIS_ISR
  3327. jmp TWIE_TWIM_ISR
  3328. jmp TCE2_LUNF_ISR
  3329. jmp TCE2_HUNF_ISR
  3330. jmp TCE2_LCMPA_ISR
  3331. jmp TCE2_LCMPB_ISR
  3332. jmp TCE2_LCMPC_ISR
  3333. jmp TCE2_LCMPD_ISR
  3334. jmp TCE1_OVF_ISR
  3335. jmp TCE1_ERR_ISR
  3336. jmp TCE1_CCA_ISR
  3337. jmp TCE1_CCB_ISR
  3338. jmp SPIE_INT_ISR
  3339. jmp USARTE0_RXC_ISR
  3340. jmp USARTE0_DRE_ISR
  3341. jmp USARTE0_TXC_ISR
  3342. jmp USARTE1_RXC_ISR
  3343. jmp USARTE1_DRE_ISR
  3344. jmp USARTE1_TXC_ISR
  3345. jmp PORTD_INT0_ISR
  3346. jmp PORTD_INT1_ISR
  3347. jmp PORTA_INT0_ISR
  3348. jmp PORTA_INT1_ISR
  3349. jmp ACA_AC0_ISR
  3350. jmp ACA_AC1_ISR
  3351. jmp ACA_ACW_ISR
  3352. jmp ADCA_CH0_ISR
  3353. jmp ADCA_CH1_ISR
  3354. jmp ADCA_CH2_ISR
  3355. jmp ADCA_CH3_ISR
  3356. jmp TWID_TWIS_ISR
  3357. jmp TWID_TWIM_ISR
  3358. jmp TCD2_LUNF_ISR
  3359. jmp TCD2_HUNF_ISR
  3360. jmp TCD2_LCMPA_ISR
  3361. jmp TCD2_LCMPB_ISR
  3362. jmp TCD2_LCMPC_ISR
  3363. jmp TCD2_LCMPD_ISR
  3364. jmp TCD1_OVF_ISR
  3365. jmp TCD1_ERR_ISR
  3366. jmp TCD1_CCA_ISR
  3367. jmp TCD1_CCB_ISR
  3368. jmp SPID_INT_ISR
  3369. jmp USARTD0_RXC_ISR
  3370. jmp USARTD0_DRE_ISR
  3371. jmp USARTD0_TXC_ISR
  3372. jmp USARTD1_RXC_ISR
  3373. jmp USARTD1_DRE_ISR
  3374. jmp USARTD1_TXC_ISR
  3375. jmp PORTQ_INT0_ISR
  3376. jmp PORTQ_INT1_ISR
  3377. jmp PORTH_INT0_ISR
  3378. jmp PORTH_INT1_ISR
  3379. jmp PORTJ_INT0_ISR
  3380. jmp PORTJ_INT1_ISR
  3381. jmp PORTK_INT0_ISR
  3382. jmp PORTK_INT1_ISR
  3383. jmp PORTF_INT0_ISR
  3384. jmp PORTF_INT1_ISR
  3385. jmp TWIF_TWIS_ISR
  3386. jmp TWIF_TWIM_ISR
  3387. jmp TCF2_LUNF_ISR
  3388. jmp TCF2_HUNF_ISR
  3389. jmp TCF2_LCMPA_ISR
  3390. jmp TCF2_LCMPB_ISR
  3391. jmp TCF2_LCMPC_ISR
  3392. jmp TCF2_LCMPD_ISR
  3393. jmp TCF1_OVF_ISR
  3394. jmp TCF1_ERR_ISR
  3395. jmp TCF1_CCA_ISR
  3396. jmp TCF1_CCB_ISR
  3397. jmp SPIF_INT_ISR
  3398. jmp USARTF0_RXC_ISR
  3399. jmp USARTF0_DRE_ISR
  3400. jmp USARTF0_TXC_ISR
  3401. jmp USARTF1_RXC_ISR
  3402. jmp USARTF1_DRE_ISR
  3403. jmp USARTF1_TXC_ISR
  3404. jmp USB_BUSEVENT_ISR
  3405. jmp USB_TRNCOMPL_ISR
  3406. .weak OSC_OSCF_ISR
  3407. .weak PORTC_INT0_ISR
  3408. .weak PORTC_INT1_ISR
  3409. .weak PORTR_INT0_ISR
  3410. .weak PORTR_INT1_ISR
  3411. .weak DMA_CH0_ISR
  3412. .weak DMA_CH1_ISR
  3413. .weak DMA_CH2_ISR
  3414. .weak DMA_CH3_ISR
  3415. .weak RTC_OVF_ISR
  3416. .weak RTC_COMP_ISR
  3417. .weak TWIC_TWIS_ISR
  3418. .weak TWIC_TWIM_ISR
  3419. .weak TCC2_LUNF_ISR
  3420. .weak TCC2_HUNF_ISR
  3421. .weak TCC2_LCMPA_ISR
  3422. .weak TCC2_LCMPB_ISR
  3423. .weak TCC2_LCMPC_ISR
  3424. .weak TCC2_LCMPD_ISR
  3425. .weak TCC1_OVF_ISR
  3426. .weak TCC1_ERR_ISR
  3427. .weak TCC1_CCA_ISR
  3428. .weak TCC1_CCB_ISR
  3429. .weak SPIC_INT_ISR
  3430. .weak USARTC0_RXC_ISR
  3431. .weak USARTC0_DRE_ISR
  3432. .weak USARTC0_TXC_ISR
  3433. .weak USARTC1_RXC_ISR
  3434. .weak USARTC1_DRE_ISR
  3435. .weak USARTC1_TXC_ISR
  3436. .weak AES_INT_ISR
  3437. .weak NVM_EE_ISR
  3438. .weak NVM_SPM_ISR
  3439. .weak PORTB_INT0_ISR
  3440. .weak PORTB_INT1_ISR
  3441. .weak ACB_AC0_ISR
  3442. .weak ACB_AC1_ISR
  3443. .weak ACB_ACW_ISR
  3444. .weak ADCB_CH0_ISR
  3445. .weak ADCB_CH1_ISR
  3446. .weak ADCB_CH2_ISR
  3447. .weak ADCB_CH3_ISR
  3448. .weak PORTE_INT0_ISR
  3449. .weak PORTE_INT1_ISR
  3450. .weak TWIE_TWIS_ISR
  3451. .weak TWIE_TWIM_ISR
  3452. .weak TCE2_LUNF_ISR
  3453. .weak TCE2_HUNF_ISR
  3454. .weak TCE2_LCMPA_ISR
  3455. .weak TCE2_LCMPB_ISR
  3456. .weak TCE2_LCMPC_ISR
  3457. .weak TCE2_LCMPD_ISR
  3458. .weak TCE1_OVF_ISR
  3459. .weak TCE1_ERR_ISR
  3460. .weak TCE1_CCA_ISR
  3461. .weak TCE1_CCB_ISR
  3462. .weak SPIE_INT_ISR
  3463. .weak USARTE0_RXC_ISR
  3464. .weak USARTE0_DRE_ISR
  3465. .weak USARTE0_TXC_ISR
  3466. .weak USARTE1_RXC_ISR
  3467. .weak USARTE1_DRE_ISR
  3468. .weak USARTE1_TXC_ISR
  3469. .weak PORTD_INT0_ISR
  3470. .weak PORTD_INT1_ISR
  3471. .weak PORTA_INT0_ISR
  3472. .weak PORTA_INT1_ISR
  3473. .weak ACA_AC0_ISR
  3474. .weak ACA_AC1_ISR
  3475. .weak ACA_ACW_ISR
  3476. .weak ADCA_CH0_ISR
  3477. .weak ADCA_CH1_ISR
  3478. .weak ADCA_CH2_ISR
  3479. .weak ADCA_CH3_ISR
  3480. .weak TWID_TWIS_ISR
  3481. .weak TWID_TWIM_ISR
  3482. .weak TCD2_LUNF_ISR
  3483. .weak TCD2_HUNF_ISR
  3484. .weak TCD2_LCMPA_ISR
  3485. .weak TCD2_LCMPB_ISR
  3486. .weak TCD2_LCMPC_ISR
  3487. .weak TCD2_LCMPD_ISR
  3488. .weak TCD1_OVF_ISR
  3489. .weak TCD1_ERR_ISR
  3490. .weak TCD1_CCA_ISR
  3491. .weak TCD1_CCB_ISR
  3492. .weak SPID_INT_ISR
  3493. .weak USARTD0_RXC_ISR
  3494. .weak USARTD0_DRE_ISR
  3495. .weak USARTD0_TXC_ISR
  3496. .weak USARTD1_RXC_ISR
  3497. .weak USARTD1_DRE_ISR
  3498. .weak USARTD1_TXC_ISR
  3499. .weak PORTQ_INT0_ISR
  3500. .weak PORTQ_INT1_ISR
  3501. .weak PORTH_INT0_ISR
  3502. .weak PORTH_INT1_ISR
  3503. .weak PORTJ_INT0_ISR
  3504. .weak PORTJ_INT1_ISR
  3505. .weak PORTK_INT0_ISR
  3506. .weak PORTK_INT1_ISR
  3507. .weak PORTF_INT0_ISR
  3508. .weak PORTF_INT1_ISR
  3509. .weak TWIF_TWIS_ISR
  3510. .weak TWIF_TWIM_ISR
  3511. .weak TCF2_LUNF_ISR
  3512. .weak TCF2_HUNF_ISR
  3513. .weak TCF2_LCMPA_ISR
  3514. .weak TCF2_LCMPB_ISR
  3515. .weak TCF2_LCMPC_ISR
  3516. .weak TCF2_LCMPD_ISR
  3517. .weak TCF1_OVF_ISR
  3518. .weak TCF1_ERR_ISR
  3519. .weak TCF1_CCA_ISR
  3520. .weak TCF1_CCB_ISR
  3521. .weak SPIF_INT_ISR
  3522. .weak USARTF0_RXC_ISR
  3523. .weak USARTF0_DRE_ISR
  3524. .weak USARTF0_TXC_ISR
  3525. .weak USARTF1_RXC_ISR
  3526. .weak USARTF1_DRE_ISR
  3527. .weak USARTF1_TXC_ISR
  3528. .weak USB_BUSEVENT_ISR
  3529. .weak USB_TRNCOMPL_ISR
  3530. .set OSC_OSCF_ISR, Default_IRQ_handler
  3531. .set PORTC_INT0_ISR, Default_IRQ_handler
  3532. .set PORTC_INT1_ISR, Default_IRQ_handler
  3533. .set PORTR_INT0_ISR, Default_IRQ_handler
  3534. .set PORTR_INT1_ISR, Default_IRQ_handler
  3535. .set DMA_CH0_ISR, Default_IRQ_handler
  3536. .set DMA_CH1_ISR, Default_IRQ_handler
  3537. .set DMA_CH2_ISR, Default_IRQ_handler
  3538. .set DMA_CH3_ISR, Default_IRQ_handler
  3539. .set RTC_OVF_ISR, Default_IRQ_handler
  3540. .set RTC_COMP_ISR, Default_IRQ_handler
  3541. .set TWIC_TWIS_ISR, Default_IRQ_handler
  3542. .set TWIC_TWIM_ISR, Default_IRQ_handler
  3543. .set TCC2_LUNF_ISR, Default_IRQ_handler
  3544. .set TCC2_HUNF_ISR, Default_IRQ_handler
  3545. .set TCC2_LCMPA_ISR, Default_IRQ_handler
  3546. .set TCC2_LCMPB_ISR, Default_IRQ_handler
  3547. .set TCC2_LCMPC_ISR, Default_IRQ_handler
  3548. .set TCC2_LCMPD_ISR, Default_IRQ_handler
  3549. .set TCC1_OVF_ISR, Default_IRQ_handler
  3550. .set TCC1_ERR_ISR, Default_IRQ_handler
  3551. .set TCC1_CCA_ISR, Default_IRQ_handler
  3552. .set TCC1_CCB_ISR, Default_IRQ_handler
  3553. .set SPIC_INT_ISR, Default_IRQ_handler
  3554. .set USARTC0_RXC_ISR, Default_IRQ_handler
  3555. .set USARTC0_DRE_ISR, Default_IRQ_handler
  3556. .set USARTC0_TXC_ISR, Default_IRQ_handler
  3557. .set USARTC1_RXC_ISR, Default_IRQ_handler
  3558. .set USARTC1_DRE_ISR, Default_IRQ_handler
  3559. .set USARTC1_TXC_ISR, Default_IRQ_handler
  3560. .set AES_INT_ISR, Default_IRQ_handler
  3561. .set NVM_EE_ISR, Default_IRQ_handler
  3562. .set NVM_SPM_ISR, Default_IRQ_handler
  3563. .set PORTB_INT0_ISR, Default_IRQ_handler
  3564. .set PORTB_INT1_ISR, Default_IRQ_handler
  3565. .set ACB_AC0_ISR, Default_IRQ_handler
  3566. .set ACB_AC1_ISR, Default_IRQ_handler
  3567. .set ACB_ACW_ISR, Default_IRQ_handler
  3568. .set ADCB_CH0_ISR, Default_IRQ_handler
  3569. .set ADCB_CH1_ISR, Default_IRQ_handler
  3570. .set ADCB_CH2_ISR, Default_IRQ_handler
  3571. .set ADCB_CH3_ISR, Default_IRQ_handler
  3572. .set PORTE_INT0_ISR, Default_IRQ_handler
  3573. .set PORTE_INT1_ISR, Default_IRQ_handler
  3574. .set TWIE_TWIS_ISR, Default_IRQ_handler
  3575. .set TWIE_TWIM_ISR, Default_IRQ_handler
  3576. .set TCE2_LUNF_ISR, Default_IRQ_handler
  3577. .set TCE2_HUNF_ISR, Default_IRQ_handler
  3578. .set TCE2_LCMPA_ISR, Default_IRQ_handler
  3579. .set TCE2_LCMPB_ISR, Default_IRQ_handler
  3580. .set TCE2_LCMPC_ISR, Default_IRQ_handler
  3581. .set TCE2_LCMPD_ISR, Default_IRQ_handler
  3582. .set TCE1_OVF_ISR, Default_IRQ_handler
  3583. .set TCE1_ERR_ISR, Default_IRQ_handler
  3584. .set TCE1_CCA_ISR, Default_IRQ_handler
  3585. .set TCE1_CCB_ISR, Default_IRQ_handler
  3586. .set SPIE_INT_ISR, Default_IRQ_handler
  3587. .set USARTE0_RXC_ISR, Default_IRQ_handler
  3588. .set USARTE0_DRE_ISR, Default_IRQ_handler
  3589. .set USARTE0_TXC_ISR, Default_IRQ_handler
  3590. .set USARTE1_RXC_ISR, Default_IRQ_handler
  3591. .set USARTE1_DRE_ISR, Default_IRQ_handler
  3592. .set USARTE1_TXC_ISR, Default_IRQ_handler
  3593. .set PORTD_INT0_ISR, Default_IRQ_handler
  3594. .set PORTD_INT1_ISR, Default_IRQ_handler
  3595. .set PORTA_INT0_ISR, Default_IRQ_handler
  3596. .set PORTA_INT1_ISR, Default_IRQ_handler
  3597. .set ACA_AC0_ISR, Default_IRQ_handler
  3598. .set ACA_AC1_ISR, Default_IRQ_handler
  3599. .set ACA_ACW_ISR, Default_IRQ_handler
  3600. .set ADCA_CH0_ISR, Default_IRQ_handler
  3601. .set ADCA_CH1_ISR, Default_IRQ_handler
  3602. .set ADCA_CH2_ISR, Default_IRQ_handler
  3603. .set ADCA_CH3_ISR, Default_IRQ_handler
  3604. .set TWID_TWIS_ISR, Default_IRQ_handler
  3605. .set TWID_TWIM_ISR, Default_IRQ_handler
  3606. .set TCD2_LUNF_ISR, Default_IRQ_handler
  3607. .set TCD2_HUNF_ISR, Default_IRQ_handler
  3608. .set TCD2_LCMPA_ISR, Default_IRQ_handler
  3609. .set TCD2_LCMPB_ISR, Default_IRQ_handler
  3610. .set TCD2_LCMPC_ISR, Default_IRQ_handler
  3611. .set TCD2_LCMPD_ISR, Default_IRQ_handler
  3612. .set TCD1_OVF_ISR, Default_IRQ_handler
  3613. .set TCD1_ERR_ISR, Default_IRQ_handler
  3614. .set TCD1_CCA_ISR, Default_IRQ_handler
  3615. .set TCD1_CCB_ISR, Default_IRQ_handler
  3616. .set SPID_INT_ISR, Default_IRQ_handler
  3617. .set USARTD0_RXC_ISR, Default_IRQ_handler
  3618. .set USARTD0_DRE_ISR, Default_IRQ_handler
  3619. .set USARTD0_TXC_ISR, Default_IRQ_handler
  3620. .set USARTD1_RXC_ISR, Default_IRQ_handler
  3621. .set USARTD1_DRE_ISR, Default_IRQ_handler
  3622. .set USARTD1_TXC_ISR, Default_IRQ_handler
  3623. .set PORTQ_INT0_ISR, Default_IRQ_handler
  3624. .set PORTQ_INT1_ISR, Default_IRQ_handler
  3625. .set PORTH_INT0_ISR, Default_IRQ_handler
  3626. .set PORTH_INT1_ISR, Default_IRQ_handler
  3627. .set PORTJ_INT0_ISR, Default_IRQ_handler
  3628. .set PORTJ_INT1_ISR, Default_IRQ_handler
  3629. .set PORTK_INT0_ISR, Default_IRQ_handler
  3630. .set PORTK_INT1_ISR, Default_IRQ_handler
  3631. .set PORTF_INT0_ISR, Default_IRQ_handler
  3632. .set PORTF_INT1_ISR, Default_IRQ_handler
  3633. .set TWIF_TWIS_ISR, Default_IRQ_handler
  3634. .set TWIF_TWIM_ISR, Default_IRQ_handler
  3635. .set TCF2_LUNF_ISR, Default_IRQ_handler
  3636. .set TCF2_HUNF_ISR, Default_IRQ_handler
  3637. .set TCF2_LCMPA_ISR, Default_IRQ_handler
  3638. .set TCF2_LCMPB_ISR, Default_IRQ_handler
  3639. .set TCF2_LCMPC_ISR, Default_IRQ_handler
  3640. .set TCF2_LCMPD_ISR, Default_IRQ_handler
  3641. .set TCF1_OVF_ISR, Default_IRQ_handler
  3642. .set TCF1_ERR_ISR, Default_IRQ_handler
  3643. .set TCF1_CCA_ISR, Default_IRQ_handler
  3644. .set TCF1_CCB_ISR, Default_IRQ_handler
  3645. .set SPIF_INT_ISR, Default_IRQ_handler
  3646. .set USARTF0_RXC_ISR, Default_IRQ_handler
  3647. .set USARTF0_DRE_ISR, Default_IRQ_handler
  3648. .set USARTF0_TXC_ISR, Default_IRQ_handler
  3649. .set USARTF1_RXC_ISR, Default_IRQ_handler
  3650. .set USARTF1_DRE_ISR, Default_IRQ_handler
  3651. .set USARTF1_TXC_ISR, Default_IRQ_handler
  3652. .set USB_BUSEVENT_ISR, Default_IRQ_handler
  3653. .set USB_TRNCOMPL_ISR, Default_IRQ_handler
  3654. end;
  3655. end.