attiny3214.pp 68 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616
  1. unit ATtiny3214;
  2. {$goto on}
  3. interface
  4. type
  5. TAC = object //Analog Comparator
  6. CTRLA: byte; //Control A
  7. Reserved1: byte;
  8. MUXCTRLA: byte; //Mux Control A
  9. Reserved3: byte;
  10. Reserved4: byte;
  11. Reserved5: byte;
  12. INTCTRL: byte; //Interrupt Control
  13. STATUS: byte; //Status
  14. const
  15. ENABLEidx = $00; ENABLEbm = $01; // Enable
  16. HYSMODE0idx = $01; // Hysteresis Mode
  17. HYSMODE1idx = $02; // Hysteresis Mode
  18. INTMODE0idx = $04; // Interrupt Mode
  19. INTMODE1idx = $05; // Interrupt Mode
  20. LPMODEidx = $03; LPMODEbm = $08; // Low Power Mode
  21. OUTENidx = $06; OUTENbm = $40; // Output Buffer Enable
  22. RUNSTDBYidx = $07; RUNSTDBYbm = $80; // Run in Standby Mode
  23. CMPidx = $00; CMPbm = $01; // Analog Comparator 0 Interrupt Enable
  24. INVERTidx = $07; INVERTbm = $80; // Invert AC Output
  25. MUXNEG0idx = $00; // Negative Input MUX Selection
  26. MUXNEG1idx = $01; // Negative Input MUX Selection
  27. MUXPOS0idx = $03; // Positive Input MUX Selection
  28. MUXPOS1idx = $04; // Positive Input MUX Selection
  29. STATEidx = $04; STATEbm = $10; // Analog Comparator State
  30. end;
  31. TADC = object //Analog to Digital Converter
  32. CTRLA: byte; //Control A
  33. CTRLB: byte; //Control B
  34. CTRLC: byte; //Control C
  35. CTRLD: byte; //Control D
  36. CTRLE: byte; //Control E
  37. SAMPCTRL: byte; //Sample Control
  38. MUXPOS: byte; //Positive mux input
  39. Reserved7: byte;
  40. COMMAND: byte; //Command
  41. EVCTRL: byte; //Event Control
  42. INTCTRL: byte; //Interrupt Control
  43. INTFLAGS: byte; //Interrupt Flags
  44. DBGCTRL: byte; //Debug Control
  45. TEMP: byte; //Temporary Data
  46. Reserved14: byte;
  47. Reserved15: byte;
  48. RES: word; //ADC Accumulator Result
  49. WINLT: word; //Window comparator low threshold
  50. WINHT: word; //Window comparator high threshold
  51. CALIB: byte; //Calibration
  52. const
  53. DUTYCYCidx = $00; DUTYCYCbm = $01; // Duty Cycle
  54. STCONVidx = $00; STCONVbm = $01; // Start Conversion Operation
  55. ENABLEidx = $00; ENABLEbm = $01; // ADC Enable
  56. FREERUNidx = $01; FREERUNbm = $02; // ADC Freerun mode
  57. RESSELidx = $02; RESSELbm = $04; // ADC Resolution
  58. RUNSTBYidx = $07; RUNSTBYbm = $80; // Run standby mode
  59. SAMPNUM0idx = $00; // Accumulation Samples
  60. SAMPNUM1idx = $01; // Accumulation Samples
  61. SAMPNUM2idx = $02; // Accumulation Samples
  62. PRESC0idx = $00; // Clock Pre-scaler
  63. PRESC1idx = $01; // Clock Pre-scaler
  64. PRESC2idx = $02; // Clock Pre-scaler
  65. REFSEL0idx = $04; // Reference Selection
  66. REFSEL1idx = $05; // Reference Selection
  67. SAMPCAPidx = $06; SAMPCAPbm = $40; // Sample Capacitance Selection
  68. ASDVidx = $04; ASDVbm = $10; // Automatic Sampling Delay Variation
  69. INITDLY0idx = $05; // Initial Delay Selection
  70. INITDLY1idx = $06; // Initial Delay Selection
  71. INITDLY2idx = $07; // Initial Delay Selection
  72. SAMPDLY0idx = $00; // Sampling Delay Selection
  73. SAMPDLY1idx = $01; // Sampling Delay Selection
  74. SAMPDLY2idx = $02; // Sampling Delay Selection
  75. SAMPDLY3idx = $03; // Sampling Delay Selection
  76. WINCM0idx = $00; // Window Comparator Mode
  77. WINCM1idx = $01; // Window Comparator Mode
  78. WINCM2idx = $02; // Window Comparator Mode
  79. DBGRUNidx = $00; DBGRUNbm = $01; // Debug run
  80. STARTEIidx = $00; STARTEIbm = $01; // Start Event Input Enable
  81. RESRDYidx = $00; RESRDYbm = $01; // Result Ready Interrupt Enable
  82. WCMPidx = $01; WCMPbm = $02; // Window Comparator Interrupt Enable
  83. MUXPOS0idx = $00; // Analog Channel Selection Bits
  84. MUXPOS1idx = $01; // Analog Channel Selection Bits
  85. MUXPOS2idx = $02; // Analog Channel Selection Bits
  86. MUXPOS3idx = $03; // Analog Channel Selection Bits
  87. MUXPOS4idx = $04; // Analog Channel Selection Bits
  88. SAMPLEN0idx = $00; // Sample lenght
  89. SAMPLEN1idx = $01; // Sample lenght
  90. SAMPLEN2idx = $02; // Sample lenght
  91. SAMPLEN3idx = $03; // Sample lenght
  92. SAMPLEN4idx = $04; // Sample lenght
  93. TEMP0idx = $00; // Temporary
  94. TEMP1idx = $01; // Temporary
  95. TEMP2idx = $02; // Temporary
  96. TEMP3idx = $03; // Temporary
  97. TEMP4idx = $04; // Temporary
  98. TEMP5idx = $05; // Temporary
  99. TEMP6idx = $06; // Temporary
  100. TEMP7idx = $07; // Temporary
  101. end;
  102. TBOD = object //Bod interface
  103. CTRLA: byte; //Control A
  104. CTRLB: byte; //Control B
  105. Reserved2: byte;
  106. Reserved3: byte;
  107. Reserved4: byte;
  108. Reserved5: byte;
  109. Reserved6: byte;
  110. Reserved7: byte;
  111. VLMCTRLA: byte; //Voltage level monitor Control
  112. INTCTRL: byte; //Voltage level monitor interrupt Control
  113. INTFLAGS: byte; //Voltage level monitor interrupt Flags
  114. STATUS: byte; //Voltage level monitor status
  115. const
  116. ACTIVE0idx = $02; // Operation in active mode
  117. ACTIVE1idx = $03; // Operation in active mode
  118. SAMPFREQidx = $04; SAMPFREQbm = $10; // Sample frequency
  119. SLEEP0idx = $00; // Operation in sleep mode
  120. SLEEP1idx = $01; // Operation in sleep mode
  121. LVL0idx = $00; // Bod level
  122. LVL1idx = $01; // Bod level
  123. LVL2idx = $02; // Bod level
  124. VLMCFG0idx = $01; // Configuration
  125. VLMCFG1idx = $02; // Configuration
  126. VLMIEidx = $00; VLMIEbm = $01; // voltage level monitor interrrupt enable
  127. VLMIFidx = $00; VLMIFbm = $01; // Voltage level monitor interrupt flag
  128. VLMSidx = $00; VLMSbm = $01; // Voltage level monitor status
  129. VLMLVL0idx = $00; // voltage level monitor level
  130. VLMLVL1idx = $01; // voltage level monitor level
  131. end;
  132. TCCL = object //Configurable Custom Logic
  133. CTRLA: byte; //Control Register A
  134. SEQCTRL0: byte; //Sequential Control 0
  135. Reserved2: byte;
  136. Reserved3: byte;
  137. Reserved4: byte;
  138. LUT0CTRLA: byte; //LUT Control 0 A
  139. LUT0CTRLB: byte; //LUT Control 0 B
  140. LUT0CTRLC: byte; //LUT Control 0 C
  141. TRUTH0: byte; //Truth 0
  142. LUT1CTRLA: byte; //LUT Control 1 A
  143. LUT1CTRLB: byte; //LUT Control 1 B
  144. LUT1CTRLC: byte; //LUT Control 1 C
  145. TRUTH1: byte; //Truth 1
  146. const
  147. ENABLEidx = $00; ENABLEbm = $01; // Enable
  148. RUNSTDBYidx = $06; RUNSTDBYbm = $40; // Run in Standby
  149. CLKSRCidx = $06; CLKSRCbm = $40; // Clock Source Selection
  150. EDGEDETidx = $07; EDGEDETbm = $80; // Edge Detection Enable
  151. FILTSEL0idx = $04; // Filter Selection
  152. FILTSEL1idx = $05; // Filter Selection
  153. OUTENidx = $03; OUTENbm = $08; // Output Enable
  154. INSEL00idx = $00; // LUT Input 0 Source Selection
  155. INSEL01idx = $01; // LUT Input 0 Source Selection
  156. INSEL02idx = $02; // LUT Input 0 Source Selection
  157. INSEL03idx = $03; // LUT Input 0 Source Selection
  158. INSEL10idx = $04; // LUT Input 1 Source Selection
  159. INSEL11idx = $05; // LUT Input 1 Source Selection
  160. INSEL12idx = $06; // LUT Input 1 Source Selection
  161. INSEL13idx = $07; // LUT Input 1 Source Selection
  162. INSEL20idx = $00; // LUT Input 2 Source Selection
  163. INSEL21idx = $01; // LUT Input 2 Source Selection
  164. INSEL22idx = $02; // LUT Input 2 Source Selection
  165. INSEL23idx = $03; // LUT Input 2 Source Selection
  166. SEQSEL0idx = $00; // Sequential Selection
  167. SEQSEL1idx = $01; // Sequential Selection
  168. SEQSEL2idx = $02; // Sequential Selection
  169. end;
  170. TCLKCTRL = object //Clock controller
  171. MCLKCTRLA: byte; //MCLK Control A
  172. MCLKCTRLB: byte; //MCLK Control B
  173. MCLKLOCK: byte; //MCLK Lock
  174. MCLKSTATUS: byte; //MCLK Status
  175. Reserved4: byte;
  176. Reserved5: byte;
  177. Reserved6: byte;
  178. Reserved7: byte;
  179. Reserved8: byte;
  180. Reserved9: byte;
  181. Reserved10: byte;
  182. Reserved11: byte;
  183. Reserved12: byte;
  184. Reserved13: byte;
  185. Reserved14: byte;
  186. Reserved15: byte;
  187. OSC20MCTRLA: byte; //OSC20M Control A
  188. OSC20MCALIBA: byte; //OSC20M Calibration A
  189. OSC20MCALIBB: byte; //OSC20M Calibration B
  190. Reserved19: byte;
  191. Reserved20: byte;
  192. Reserved21: byte;
  193. Reserved22: byte;
  194. Reserved23: byte;
  195. OSC32KCTRLA: byte; //OSC32K Control A
  196. Reserved25: byte;
  197. Reserved26: byte;
  198. Reserved27: byte;
  199. XOSC32KCTRLA: byte; //XOSC32K Control A
  200. const
  201. CLKOUTidx = $07; CLKOUTbm = $80; // System clock out
  202. CLKSEL0idx = $00; // clock select
  203. CLKSEL1idx = $01; // clock select
  204. PDIV0idx = $01; // Prescaler division
  205. PDIV1idx = $02; // Prescaler division
  206. PDIV2idx = $03; // Prescaler division
  207. PDIV3idx = $04; // Prescaler division
  208. PENidx = $00; PENbm = $01; // Prescaler enable
  209. LOCKENidx = $00; LOCKENbm = $01; // lock ebable
  210. EXTSidx = $07; EXTSbm = $80; // External Clock status
  211. OSC20MSidx = $04; OSC20MSbm = $10; // 20MHz oscillator status
  212. OSC32KSidx = $05; OSC32KSbm = $20; // 32KHz oscillator status
  213. SOSCidx = $00; SOSCbm = $01; // System Oscillator changing
  214. XOSC32KSidx = $06; XOSC32KSbm = $40; // 32.768 kHz Crystal Oscillator status
  215. CAL20M0idx = $00; // Calibration
  216. CAL20M1idx = $01; // Calibration
  217. CAL20M2idx = $02; // Calibration
  218. CAL20M3idx = $03; // Calibration
  219. CAL20M4idx = $04; // Calibration
  220. CAL20M5idx = $05; // Calibration
  221. LOCKidx = $07; LOCKbm = $80; // Lock
  222. TEMPCAL20M0idx = $00; // Oscillator temperature coefficient
  223. TEMPCAL20M1idx = $01; // Oscillator temperature coefficient
  224. TEMPCAL20M2idx = $02; // Oscillator temperature coefficient
  225. TEMPCAL20M3idx = $03; // Oscillator temperature coefficient
  226. RUNSTDBYidx = $01; RUNSTDBYbm = $02; // Run standby
  227. CSUT0idx = $04; // Crystal startup time
  228. CSUT1idx = $05; // Crystal startup time
  229. ENABLEidx = $00; ENABLEbm = $01; // Enable
  230. SELidx = $02; SELbm = $04; // Select
  231. end;
  232. TCPU = object //CPU
  233. Reserved0: byte;
  234. Reserved1: byte;
  235. Reserved2: byte;
  236. Reserved3: byte;
  237. CCP: byte; //Configuration Change Protection
  238. Reserved5: byte;
  239. Reserved6: byte;
  240. Reserved7: byte;
  241. Reserved8: byte;
  242. Reserved9: byte;
  243. Reserved10: byte;
  244. Reserved11: byte;
  245. Reserved12: byte;
  246. SPL: byte; //Stack Pointer Low
  247. SPH: byte; //Stack Pointer High
  248. SREG: byte; //Status Register
  249. const
  250. CCP0idx = $00; // CCP signature
  251. CCP1idx = $01; // CCP signature
  252. CCP2idx = $02; // CCP signature
  253. CCP3idx = $03; // CCP signature
  254. CCP4idx = $04; // CCP signature
  255. CCP5idx = $05; // CCP signature
  256. CCP6idx = $06; // CCP signature
  257. CCP7idx = $07; // CCP signature
  258. Cidx = $00; Cbm = $01; // Carry Flag
  259. Hidx = $05; Hbm = $20; // Half Carry Flag
  260. Iidx = $07; Ibm = $80; // Global Interrupt Enable Flag
  261. Nidx = $02; Nbm = $04; // Negative Flag
  262. Sidx = $04; Sbm = $10; // N Exclusive Or V Flag
  263. Tidx = $06; Tbm = $40; // Transfer Bit
  264. Vidx = $03; Vbm = $08; // Two's Complement Overflow Flag
  265. Zidx = $01; Zbm = $02; // Zero Flag
  266. end;
  267. TCPUINT = object //Interrupt Controller
  268. CTRLA: byte; //Control A
  269. STATUS: byte; //Status
  270. LVL0PRI: byte; //Interrupt Level 0 Priority
  271. LVL1VEC: byte; //Interrupt Level 1 Priority Vector
  272. const
  273. CVTidx = $05; CVTbm = $20; // Compact Vector Table
  274. IVSELidx = $06; IVSELbm = $40; // Interrupt Vector Select
  275. LVL0RRidx = $00; LVL0RRbm = $01; // Round-robin Scheduling Enable
  276. LVL0PRI0idx = $00; // Interrupt Level Priority
  277. LVL0PRI1idx = $01; // Interrupt Level Priority
  278. LVL0PRI2idx = $02; // Interrupt Level Priority
  279. LVL0PRI3idx = $03; // Interrupt Level Priority
  280. LVL0PRI4idx = $04; // Interrupt Level Priority
  281. LVL0PRI5idx = $05; // Interrupt Level Priority
  282. LVL0PRI6idx = $06; // Interrupt Level Priority
  283. LVL0PRI7idx = $07; // Interrupt Level Priority
  284. LVL1VEC0idx = $00; // Interrupt Vector with High Priority
  285. LVL1VEC1idx = $01; // Interrupt Vector with High Priority
  286. LVL1VEC2idx = $02; // Interrupt Vector with High Priority
  287. LVL1VEC3idx = $03; // Interrupt Vector with High Priority
  288. LVL1VEC4idx = $04; // Interrupt Vector with High Priority
  289. LVL1VEC5idx = $05; // Interrupt Vector with High Priority
  290. LVL1VEC6idx = $06; // Interrupt Vector with High Priority
  291. LVL1VEC7idx = $07; // Interrupt Vector with High Priority
  292. LVL0EXidx = $00; LVL0EXbm = $01; // Level 0 Interrupt Executing
  293. LVL1EXidx = $01; LVL1EXbm = $02; // Level 1 Interrupt Executing
  294. NMIEXidx = $07; NMIEXbm = $80; // Non-maskable Interrupt Executing
  295. end;
  296. TCRCSCAN = object //CRCSCAN
  297. CTRLA: byte; //Control A
  298. CTRLB: byte; //Control B
  299. STATUS: byte; //Status
  300. const
  301. ENABLEidx = $00; ENABLEbm = $01; // Enable CRC scan
  302. NMIENidx = $01; NMIENbm = $02; // Enable NMI Trigger
  303. RESETidx = $07; RESETbm = $80; // Reset CRC scan
  304. MODE0idx = $04; // CRC Flash Access Mode
  305. MODE1idx = $05; // CRC Flash Access Mode
  306. SRC0idx = $00; // CRC Source
  307. SRC1idx = $01; // CRC Source
  308. BUSYidx = $00; BUSYbm = $01; // CRC Busy
  309. OKidx = $01; OKbm = $02; // CRC Ok
  310. end;
  311. TDAC = object //Digital to Analog Converter
  312. CTRLA: byte; //Control Register A
  313. DATA: byte; //DATA Register
  314. const
  315. ENABLEidx = $00; ENABLEbm = $01; // DAC Enable
  316. OUTENidx = $06; OUTENbm = $40; // Output Buffer Enable
  317. RUNSTDBYidx = $07; RUNSTDBYbm = $80; // Run in Standby Mode
  318. end;
  319. TEVSYS = object //Event System
  320. ASYNCSTROBE: byte; //Asynchronous Channel Strobe
  321. SYNCSTROBE: byte; //Synchronous Channel Strobe
  322. ASYNCCH0: byte; //Asynchronous Channel 0 Generator Selection
  323. ASYNCCH1: byte; //Asynchronous Channel 1 Generator Selection
  324. ASYNCCH2: byte; //Asynchronous Channel 2 Generator Selection
  325. ASYNCCH3: byte; //Asynchronous Channel 3 Generator Selection
  326. Reserved6: byte;
  327. Reserved7: byte;
  328. Reserved8: byte;
  329. Reserved9: byte;
  330. SYNCCH0: byte; //Synchronous Channel 0 Generator Selection
  331. SYNCCH1: byte; //Synchronous Channel 1 Generator Selection
  332. Reserved12: byte;
  333. Reserved13: byte;
  334. Reserved14: byte;
  335. Reserved15: byte;
  336. Reserved16: byte;
  337. Reserved17: byte;
  338. ASYNCUSER0: byte; //Asynchronous User Ch 0 Input Selection - TCB0
  339. ASYNCUSER1: byte; //Asynchronous User Ch 1 Input Selection - ADC0
  340. ASYNCUSER2: byte; //Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
  341. ASYNCUSER3: byte; //Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
  342. ASYNCUSER4: byte; //Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
  343. ASYNCUSER5: byte; //Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
  344. ASYNCUSER6: byte; //Asynchronous User Ch 6 Input Selection - TCD0 Event 0
  345. ASYNCUSER7: byte; //Asynchronous User Ch 7 Input Selection - TCD0 Event 1
  346. ASYNCUSER8: byte; //Asynchronous User Ch 8 Input Selection - Event Out 0
  347. ASYNCUSER9: byte; //Asynchronous User Ch 9 Input Selection - Event Out 1
  348. ASYNCUSER10: byte; //Asynchronous User Ch 10 Input Selection - Event Out 2
  349. ASYNCUSER11: byte; //Asynchronous User Ch 11 Input Selection - TCB1
  350. ASYNCUSER12: byte; //Asynchronous User Ch 12 Input Selection - ADC1
  351. Reserved31: byte;
  352. Reserved32: byte;
  353. Reserved33: byte;
  354. SYNCUSER0: byte; //Synchronous User Ch 0 - TCA0
  355. SYNCUSER1: byte; //Synchronous User Ch 1 - USART0
  356. const
  357. ASYNCCH00idx = $00; // Asynchronous Channel 0 Generator Selection
  358. ASYNCCH01idx = $01; // Asynchronous Channel 0 Generator Selection
  359. ASYNCCH02idx = $02; // Asynchronous Channel 0 Generator Selection
  360. ASYNCCH03idx = $03; // Asynchronous Channel 0 Generator Selection
  361. ASYNCCH04idx = $04; // Asynchronous Channel 0 Generator Selection
  362. ASYNCCH05idx = $05; // Asynchronous Channel 0 Generator Selection
  363. ASYNCCH06idx = $06; // Asynchronous Channel 0 Generator Selection
  364. ASYNCCH07idx = $07; // Asynchronous Channel 0 Generator Selection
  365. ASYNCCH10idx = $00; // Asynchronous Channel 1 Generator Selection
  366. ASYNCCH11idx = $01; // Asynchronous Channel 1 Generator Selection
  367. ASYNCCH12idx = $02; // Asynchronous Channel 1 Generator Selection
  368. ASYNCCH13idx = $03; // Asynchronous Channel 1 Generator Selection
  369. ASYNCCH14idx = $04; // Asynchronous Channel 1 Generator Selection
  370. ASYNCCH15idx = $05; // Asynchronous Channel 1 Generator Selection
  371. ASYNCCH16idx = $06; // Asynchronous Channel 1 Generator Selection
  372. ASYNCCH17idx = $07; // Asynchronous Channel 1 Generator Selection
  373. ASYNCCH20idx = $00; // Asynchronous Channel 2 Generator Selection
  374. ASYNCCH21idx = $01; // Asynchronous Channel 2 Generator Selection
  375. ASYNCCH22idx = $02; // Asynchronous Channel 2 Generator Selection
  376. ASYNCCH23idx = $03; // Asynchronous Channel 2 Generator Selection
  377. ASYNCCH24idx = $04; // Asynchronous Channel 2 Generator Selection
  378. ASYNCCH25idx = $05; // Asynchronous Channel 2 Generator Selection
  379. ASYNCCH26idx = $06; // Asynchronous Channel 2 Generator Selection
  380. ASYNCCH27idx = $07; // Asynchronous Channel 2 Generator Selection
  381. ASYNCCH30idx = $00; // Asynchronous Channel 3 Generator Selection
  382. ASYNCCH31idx = $01; // Asynchronous Channel 3 Generator Selection
  383. ASYNCCH32idx = $02; // Asynchronous Channel 3 Generator Selection
  384. ASYNCCH33idx = $03; // Asynchronous Channel 3 Generator Selection
  385. ASYNCCH34idx = $04; // Asynchronous Channel 3 Generator Selection
  386. ASYNCCH35idx = $05; // Asynchronous Channel 3 Generator Selection
  387. ASYNCCH36idx = $06; // Asynchronous Channel 3 Generator Selection
  388. ASYNCCH37idx = $07; // Asynchronous Channel 3 Generator Selection
  389. ASYNCUSER00idx = $00; // Asynchronous User Ch 0 Input Selection - TCB0
  390. ASYNCUSER01idx = $01; // Asynchronous User Ch 0 Input Selection - TCB0
  391. ASYNCUSER02idx = $02; // Asynchronous User Ch 0 Input Selection - TCB0
  392. ASYNCUSER03idx = $03; // Asynchronous User Ch 0 Input Selection - TCB0
  393. ASYNCUSER04idx = $04; // Asynchronous User Ch 0 Input Selection - TCB0
  394. ASYNCUSER05idx = $05; // Asynchronous User Ch 0 Input Selection - TCB0
  395. ASYNCUSER06idx = $06; // Asynchronous User Ch 0 Input Selection - TCB0
  396. ASYNCUSER07idx = $07; // Asynchronous User Ch 0 Input Selection - TCB0
  397. ASYNCUSER10idx = $00; // Asynchronous User Ch 1 Input Selection - ADC0
  398. ASYNCUSER11idx = $01; // Asynchronous User Ch 1 Input Selection - ADC0
  399. ASYNCUSER12idx = $02; // Asynchronous User Ch 1 Input Selection - ADC0
  400. ASYNCUSER13idx = $03; // Asynchronous User Ch 1 Input Selection - ADC0
  401. ASYNCUSER14idx = $04; // Asynchronous User Ch 1 Input Selection - ADC0
  402. ASYNCUSER15idx = $05; // Asynchronous User Ch 1 Input Selection - ADC0
  403. ASYNCUSER16idx = $06; // Asynchronous User Ch 1 Input Selection - ADC0
  404. ASYNCUSER17idx = $07; // Asynchronous User Ch 1 Input Selection - ADC0
  405. ASYNCUSER20idx = $00; // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
  406. ASYNCUSER21idx = $01; // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
  407. ASYNCUSER22idx = $02; // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
  408. ASYNCUSER23idx = $03; // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
  409. ASYNCUSER24idx = $04; // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
  410. ASYNCUSER25idx = $05; // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
  411. ASYNCUSER26idx = $06; // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
  412. ASYNCUSER27idx = $07; // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
  413. ASYNCUSER30idx = $00; // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
  414. ASYNCUSER31idx = $01; // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
  415. ASYNCUSER32idx = $02; // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
  416. ASYNCUSER33idx = $03; // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
  417. ASYNCUSER34idx = $04; // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
  418. ASYNCUSER35idx = $05; // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
  419. ASYNCUSER36idx = $06; // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
  420. ASYNCUSER37idx = $07; // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
  421. ASYNCUSER40idx = $00; // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
  422. ASYNCUSER41idx = $01; // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
  423. ASYNCUSER42idx = $02; // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
  424. ASYNCUSER43idx = $03; // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
  425. ASYNCUSER44idx = $04; // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
  426. ASYNCUSER45idx = $05; // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
  427. ASYNCUSER46idx = $06; // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
  428. ASYNCUSER47idx = $07; // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
  429. ASYNCUSER50idx = $00; // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
  430. ASYNCUSER51idx = $01; // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
  431. ASYNCUSER52idx = $02; // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
  432. ASYNCUSER53idx = $03; // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
  433. ASYNCUSER54idx = $04; // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
  434. ASYNCUSER55idx = $05; // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
  435. ASYNCUSER56idx = $06; // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
  436. ASYNCUSER57idx = $07; // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
  437. ASYNCUSER60idx = $00; // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
  438. ASYNCUSER61idx = $01; // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
  439. ASYNCUSER62idx = $02; // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
  440. ASYNCUSER63idx = $03; // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
  441. ASYNCUSER64idx = $04; // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
  442. ASYNCUSER65idx = $05; // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
  443. ASYNCUSER66idx = $06; // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
  444. ASYNCUSER67idx = $07; // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
  445. ASYNCUSER70idx = $00; // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
  446. ASYNCUSER71idx = $01; // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
  447. ASYNCUSER72idx = $02; // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
  448. ASYNCUSER73idx = $03; // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
  449. ASYNCUSER74idx = $04; // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
  450. ASYNCUSER75idx = $05; // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
  451. ASYNCUSER76idx = $06; // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
  452. ASYNCUSER77idx = $07; // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
  453. ASYNCUSER80idx = $00; // Asynchronous User Ch 8 Input Selection - Event Out 0
  454. ASYNCUSER81idx = $01; // Asynchronous User Ch 8 Input Selection - Event Out 0
  455. ASYNCUSER82idx = $02; // Asynchronous User Ch 8 Input Selection - Event Out 0
  456. ASYNCUSER83idx = $03; // Asynchronous User Ch 8 Input Selection - Event Out 0
  457. ASYNCUSER84idx = $04; // Asynchronous User Ch 8 Input Selection - Event Out 0
  458. ASYNCUSER85idx = $05; // Asynchronous User Ch 8 Input Selection - Event Out 0
  459. ASYNCUSER86idx = $06; // Asynchronous User Ch 8 Input Selection - Event Out 0
  460. ASYNCUSER87idx = $07; // Asynchronous User Ch 8 Input Selection - Event Out 0
  461. ASYNCUSER90idx = $00; // Asynchronous User Ch 9 Input Selection - Event Out 1
  462. ASYNCUSER91idx = $01; // Asynchronous User Ch 9 Input Selection - Event Out 1
  463. ASYNCUSER92idx = $02; // Asynchronous User Ch 9 Input Selection - Event Out 1
  464. ASYNCUSER93idx = $03; // Asynchronous User Ch 9 Input Selection - Event Out 1
  465. ASYNCUSER94idx = $04; // Asynchronous User Ch 9 Input Selection - Event Out 1
  466. ASYNCUSER95idx = $05; // Asynchronous User Ch 9 Input Selection - Event Out 1
  467. ASYNCUSER96idx = $06; // Asynchronous User Ch 9 Input Selection - Event Out 1
  468. ASYNCUSER97idx = $07; // Asynchronous User Ch 9 Input Selection - Event Out 1
  469. ASYNCUSER100idx = $00; // Asynchronous User Ch 10 Input Selection - Event Out 2
  470. ASYNCUSER101idx = $01; // Asynchronous User Ch 10 Input Selection - Event Out 2
  471. ASYNCUSER102idx = $02; // Asynchronous User Ch 10 Input Selection - Event Out 2
  472. ASYNCUSER103idx = $03; // Asynchronous User Ch 10 Input Selection - Event Out 2
  473. ASYNCUSER104idx = $04; // Asynchronous User Ch 10 Input Selection - Event Out 2
  474. ASYNCUSER105idx = $05; // Asynchronous User Ch 10 Input Selection - Event Out 2
  475. ASYNCUSER106idx = $06; // Asynchronous User Ch 10 Input Selection - Event Out 2
  476. ASYNCUSER107idx = $07; // Asynchronous User Ch 10 Input Selection - Event Out 2
  477. ASYNCUSER110idx = $00; // Asynchronous User Ch 11 Input Selection - TCB1
  478. ASYNCUSER111idx = $01; // Asynchronous User Ch 11 Input Selection - TCB1
  479. ASYNCUSER112idx = $02; // Asynchronous User Ch 11 Input Selection - TCB1
  480. ASYNCUSER113idx = $03; // Asynchronous User Ch 11 Input Selection - TCB1
  481. ASYNCUSER114idx = $04; // Asynchronous User Ch 11 Input Selection - TCB1
  482. ASYNCUSER115idx = $05; // Asynchronous User Ch 11 Input Selection - TCB1
  483. ASYNCUSER116idx = $06; // Asynchronous User Ch 11 Input Selection - TCB1
  484. ASYNCUSER117idx = $07; // Asynchronous User Ch 11 Input Selection - TCB1
  485. ASYNCUSER120idx = $00; // Asynchronous User Ch 12 Input Selection - ADC0
  486. ASYNCUSER121idx = $01; // Asynchronous User Ch 12 Input Selection - ADC0
  487. ASYNCUSER122idx = $02; // Asynchronous User Ch 12 Input Selection - ADC0
  488. ASYNCUSER123idx = $03; // Asynchronous User Ch 12 Input Selection - ADC0
  489. ASYNCUSER124idx = $04; // Asynchronous User Ch 12 Input Selection - ADC0
  490. ASYNCUSER125idx = $05; // Asynchronous User Ch 12 Input Selection - ADC0
  491. ASYNCUSER126idx = $06; // Asynchronous User Ch 12 Input Selection - ADC0
  492. ASYNCUSER127idx = $07; // Asynchronous User Ch 12 Input Selection - ADC0
  493. SYNCCH00idx = $00; // Synchronous Channel 0 Generator Selection
  494. SYNCCH01idx = $01; // Synchronous Channel 0 Generator Selection
  495. SYNCCH02idx = $02; // Synchronous Channel 0 Generator Selection
  496. SYNCCH03idx = $03; // Synchronous Channel 0 Generator Selection
  497. SYNCCH04idx = $04; // Synchronous Channel 0 Generator Selection
  498. SYNCCH05idx = $05; // Synchronous Channel 0 Generator Selection
  499. SYNCCH06idx = $06; // Synchronous Channel 0 Generator Selection
  500. SYNCCH07idx = $07; // Synchronous Channel 0 Generator Selection
  501. SYNCCH10idx = $00; // Synchronous Channel 1 Generator Selection
  502. SYNCCH11idx = $01; // Synchronous Channel 1 Generator Selection
  503. SYNCCH12idx = $02; // Synchronous Channel 1 Generator Selection
  504. SYNCCH13idx = $03; // Synchronous Channel 1 Generator Selection
  505. SYNCCH14idx = $04; // Synchronous Channel 1 Generator Selection
  506. SYNCCH15idx = $05; // Synchronous Channel 1 Generator Selection
  507. SYNCCH16idx = $06; // Synchronous Channel 1 Generator Selection
  508. SYNCCH17idx = $07; // Synchronous Channel 1 Generator Selection
  509. SYNCUSER00idx = $00; // Synchronous User Ch 0 - TCA0
  510. SYNCUSER01idx = $01; // Synchronous User Ch 0 - TCA0
  511. SYNCUSER02idx = $02; // Synchronous User Ch 0 - TCA0
  512. SYNCUSER03idx = $03; // Synchronous User Ch 0 - TCA0
  513. SYNCUSER04idx = $04; // Synchronous User Ch 0 - TCA0
  514. SYNCUSER05idx = $05; // Synchronous User Ch 0 - TCA0
  515. SYNCUSER06idx = $06; // Synchronous User Ch 0 - TCA0
  516. SYNCUSER07idx = $07; // Synchronous User Ch 0 - TCA0
  517. SYNCUSER10idx = $00; // Synchronous User Ch 1 - USART0
  518. SYNCUSER11idx = $01; // Synchronous User Ch 1 - USART0
  519. SYNCUSER12idx = $02; // Synchronous User Ch 1 - USART0
  520. SYNCUSER13idx = $03; // Synchronous User Ch 1 - USART0
  521. SYNCUSER14idx = $04; // Synchronous User Ch 1 - USART0
  522. SYNCUSER15idx = $05; // Synchronous User Ch 1 - USART0
  523. SYNCUSER16idx = $06; // Synchronous User Ch 1 - USART0
  524. SYNCUSER17idx = $07; // Synchronous User Ch 1 - USART0
  525. end;
  526. TFUSE = object //Fuses
  527. WDTCFG: byte; //Watchdog Configuration
  528. BODCFG: byte; //BOD Configuration
  529. OSCCFG: byte; //Oscillator Configuration
  530. Reserved3: byte;
  531. TCD0CFG: byte; //TCD0 Configuration
  532. SYSCFG0: byte; //System Configuration 0
  533. SYSCFG1: byte; //System Configuration 1
  534. APPEND: byte; //Application Code Section End
  535. BOOTEND: byte; //Boot Section End
  536. const
  537. ACTIVE0idx = $02; // BOD Operation in Active Mode
  538. ACTIVE1idx = $03; // BOD Operation in Active Mode
  539. LVL0idx = $05; // BOD Level
  540. LVL1idx = $06; // BOD Level
  541. LVL2idx = $07; // BOD Level
  542. SAMPFREQidx = $04; SAMPFREQbm = $10; // BOD Sample Frequency
  543. SLEEP0idx = $00; // BOD Operation in Sleep Mode
  544. SLEEP1idx = $01; // BOD Operation in Sleep Mode
  545. FREQSEL0idx = $00; // Frequency Select
  546. FREQSEL1idx = $01; // Frequency Select
  547. OSCLOCKidx = $07; OSCLOCKbm = $80; // Oscillator Lock
  548. CRCSRC0idx = $06; // CRC Source
  549. CRCSRC1idx = $07; // CRC Source
  550. EESAVEidx = $00; EESAVEbm = $01; // EEPROM Save
  551. RSTPINCFG0idx = $02; // Reset Pin Configuration
  552. RSTPINCFG1idx = $03; // Reset Pin Configuration
  553. SUT0idx = $00; // Startup Time
  554. SUT1idx = $01; // Startup Time
  555. SUT2idx = $02; // Startup Time
  556. CMPAidx = $00; CMPAbm = $01; // Compare A Default Output Value
  557. CMPAENidx = $04; CMPAENbm = $10; // Compare A Output Enable
  558. CMPBidx = $01; CMPBbm = $02; // Compare B Default Output Value
  559. CMPBENidx = $05; CMPBENbm = $20; // Compare B Output Enable
  560. CMPCidx = $02; CMPCbm = $04; // Compare C Default Output Value
  561. CMPCENidx = $06; CMPCENbm = $40; // Compare C Output Enable
  562. CMPDidx = $03; CMPDbm = $08; // Compare D Default Output Value
  563. CMPDENidx = $07; CMPDENbm = $80; // Compare D Output Enable
  564. PERIOD0idx = $00; // Watchdog Timeout Period
  565. PERIOD1idx = $01; // Watchdog Timeout Period
  566. PERIOD2idx = $02; // Watchdog Timeout Period
  567. PERIOD3idx = $03; // Watchdog Timeout Period
  568. WINDOW0idx = $04; // Watchdog Window Timeout Period
  569. WINDOW1idx = $05; // Watchdog Window Timeout Period
  570. WINDOW2idx = $06; // Watchdog Window Timeout Period
  571. WINDOW3idx = $07; // Watchdog Window Timeout Period
  572. end;
  573. TGPIO = object //General Purpose IO
  574. GPIOR0: byte; //General Purpose IO Register 0
  575. GPIOR1: byte; //General Purpose IO Register 1
  576. GPIOR2: byte; //General Purpose IO Register 2
  577. GPIOR3: byte; //General Purpose IO Register 3
  578. end;
  579. TLOCKBIT = object //Lockbit
  580. LOCKBIT: byte; //Lock bits
  581. const
  582. LB0idx = $00; // Lock Bits
  583. LB1idx = $01; // Lock Bits
  584. LB2idx = $02; // Lock Bits
  585. LB3idx = $03; // Lock Bits
  586. LB4idx = $04; // Lock Bits
  587. LB5idx = $05; // Lock Bits
  588. LB6idx = $06; // Lock Bits
  589. LB7idx = $07; // Lock Bits
  590. end;
  591. TNVMCTRL = object //Non-volatile Memory Controller
  592. CTRLA: byte; //Control A
  593. CTRLB: byte; //Control B
  594. STATUS: byte; //Status
  595. INTCTRL: byte; //Interrupt Control
  596. INTFLAGS: byte; //Interrupt Flags
  597. Reserved5: byte;
  598. DATA: word; //Data
  599. ADDR: word; //Address
  600. const
  601. CMD0idx = $00; // Command
  602. CMD1idx = $01; // Command
  603. CMD2idx = $02; // Command
  604. APCWPidx = $00; APCWPbm = $01; // Application code write protect
  605. BOOTLOCKidx = $01; BOOTLOCKbm = $02; // Boot Lock
  606. EEREADYidx = $00; EEREADYbm = $01; // EEPROM Ready
  607. EEBUSYidx = $01; EEBUSYbm = $02; // EEPROM busy
  608. FBUSYidx = $00; FBUSYbm = $01; // Flash busy
  609. WRERRORidx = $02; WRERRORbm = $04; // Write error
  610. end;
  611. TPORT = object //I/O Ports
  612. DIR: byte; //Data Direction
  613. DIRSET: byte; //Data Direction Set
  614. DIRCLR: byte; //Data Direction Clear
  615. DIRTGL: byte; //Data Direction Toggle
  616. OUT_: byte; //Output Value
  617. OUTSET: byte; //Output Value Set
  618. OUTCLR: byte; //Output Value Clear
  619. OUTTGL: byte; //Output Value Toggle
  620. IN_: byte; //Input Value
  621. INTFLAGS: byte; //Interrupt Flags
  622. Reserved10: byte;
  623. Reserved11: byte;
  624. Reserved12: byte;
  625. Reserved13: byte;
  626. Reserved14: byte;
  627. Reserved15: byte;
  628. PIN0CTRL: byte; //Pin 0 Control
  629. PIN1CTRL: byte; //Pin 1 Control
  630. PIN2CTRL: byte; //Pin 2 Control
  631. PIN3CTRL: byte; //Pin 3 Control
  632. PIN4CTRL: byte; //Pin 4 Control
  633. PIN5CTRL: byte; //Pin 5 Control
  634. PIN6CTRL: byte; //Pin 6 Control
  635. PIN7CTRL: byte; //Pin 7 Control
  636. const
  637. INT0idx = $00; // Pin Interrupt
  638. INT1idx = $01; // Pin Interrupt
  639. INT2idx = $02; // Pin Interrupt
  640. INT3idx = $03; // Pin Interrupt
  641. INT4idx = $04; // Pin Interrupt
  642. INT5idx = $05; // Pin Interrupt
  643. INT6idx = $06; // Pin Interrupt
  644. INT7idx = $07; // Pin Interrupt
  645. INVENidx = $07; INVENbm = $80; // Inverted I/O Enable
  646. ISC0idx = $00; // Input/Sense Configuration
  647. ISC1idx = $01; // Input/Sense Configuration
  648. ISC2idx = $02; // Input/Sense Configuration
  649. PULLUPENidx = $03; PULLUPENbm = $08; // Pullup enable
  650. end;
  651. TPORTMUX = object //Port Multiplexer
  652. CTRLA: byte; //Port Multiplexer Control A
  653. CTRLB: byte; //Port Multiplexer Control B
  654. CTRLC: byte; //Port Multiplexer Control C
  655. CTRLD: byte; //Port Multiplexer Control D
  656. const
  657. EVOUT0idx = $00; EVOUT0bm = $01; // Event Output 0
  658. EVOUT1idx = $01; EVOUT1bm = $02; // Event Output 1
  659. EVOUT2idx = $02; EVOUT2bm = $04; // Event Output 2
  660. LUT0idx = $04; LUT0bm = $10; // Configurable Custom Logic LUT0
  661. LUT1idx = $05; LUT1bm = $20; // Configurable Custom Logic LUT1
  662. SPI0idx = $02; SPI0bm = $04; // Port Multiplexer SPI0
  663. TWI0idx = $04; TWI0bm = $10; // Port Multiplexer TWI0
  664. USART0idx = $00; USART0bm = $01; // Port Multiplexer USART0
  665. TCA00idx = $00; TCA00bm = $01; // Port Multiplexer TCA0 Output 0
  666. TCA01idx = $01; TCA01bm = $02; // Port Multiplexer TCA0 Output 1
  667. TCA02idx = $02; TCA02bm = $04; // Port Multiplexer TCA0 Output 2
  668. TCA03idx = $03; TCA03bm = $08; // Port Multiplexer TCA0 Output 3
  669. TCA04idx = $04; TCA04bm = $10; // Port Multiplexer TCA0 Output 4
  670. TCA05idx = $05; TCA05bm = $20; // Port Multiplexer TCA0 Output 5
  671. TCB0idx = $00; TCB0bm = $01; // Port Multiplexer TCB
  672. end;
  673. TRSTCTRL = object //Reset controller
  674. RSTFR: byte; //Reset Flags
  675. SWRR: byte; //Software Reset
  676. const
  677. BORFidx = $01; BORFbm = $02; // Brown out detector Reset flag
  678. EXTRFidx = $02; EXTRFbm = $04; // External Reset flag
  679. PORFidx = $00; PORFbm = $01; // Power on Reset flag
  680. SWRFidx = $04; SWRFbm = $10; // Software Reset flag
  681. UPDIRFidx = $05; UPDIRFbm = $20; // UPDI Reset flag
  682. WDRFidx = $03; WDRFbm = $08; // Watch dog Reset flag
  683. SWREidx = $00; SWREbm = $01; // Software reset enable
  684. end;
  685. TRTC = object //Real-Time Counter
  686. CTRLA: byte; //Control A
  687. STATUS: byte; //Status
  688. INTCTRL: byte; //Interrupt Control
  689. INTFLAGS: byte; //Interrupt Flags
  690. TEMP: byte; //Temporary
  691. DBGCTRL: byte; //Debug control
  692. Reserved6: byte;
  693. CLKSEL: byte; //Clock Select
  694. CNT: word; //Counter
  695. PER: word; //Period
  696. CMP: word; //Compare
  697. Reserved14: byte;
  698. Reserved15: byte;
  699. PITCTRLA: byte; //PIT Control A
  700. PITSTATUS: byte; //PIT Status
  701. PITINTCTRL: byte; //PIT Interrupt Control
  702. PITINTFLAGS: byte; //PIT Interrupt Flags
  703. Reserved20: byte;
  704. PITDBGCTRL: byte; //PIT Debug control
  705. const
  706. CLKSEL0idx = $00; // Clock Select
  707. CLKSEL1idx = $01; // Clock Select
  708. PRESCALER0idx = $03; // Prescaling Factor
  709. PRESCALER1idx = $04; // Prescaling Factor
  710. PRESCALER2idx = $05; // Prescaling Factor
  711. PRESCALER3idx = $06; // Prescaling Factor
  712. RTCENidx = $00; RTCENbm = $01; // Enable
  713. RUNSTDBYidx = $07; RUNSTDBYbm = $80; // Run In Standby
  714. DBGRUNidx = $00; DBGRUNbm = $01; // Run in debug
  715. CMPidx = $01; CMPbm = $02; // Compare Match Interrupt enable
  716. OVFidx = $00; OVFbm = $01; // Overflow Interrupt enable
  717. PERIOD0idx = $03; // Period
  718. PERIOD1idx = $04; // Period
  719. PERIOD2idx = $05; // Period
  720. PERIOD3idx = $06; // Period
  721. PITENidx = $00; PITENbm = $01; // Enable
  722. PIidx = $00; PIbm = $01; // Periodic Interrupt
  723. CTRLBUSYidx = $00; CTRLBUSYbm = $01; // CTRLA Synchronization Busy Flag
  724. CMPBUSYidx = $03; CMPBUSYbm = $08; // Comparator Synchronization Busy Flag
  725. CNTBUSYidx = $01; CNTBUSYbm = $02; // Count Synchronization Busy Flag
  726. CTRLABUSYidx = $00; CTRLABUSYbm = $01; // CTRLA Synchronization Busy Flag
  727. PERBUSYidx = $02; PERBUSYbm = $04; // Period Synchronization Busy Flag
  728. end;
  729. TSIGROW = object //Signature row
  730. DEVICEID0: byte; //Device ID Byte 0
  731. DEVICEID1: byte; //Device ID Byte 1
  732. DEVICEID2: byte; //Device ID Byte 2
  733. SERNUM0: byte; //Serial Number Byte 0
  734. SERNUM1: byte; //Serial Number Byte 1
  735. SERNUM2: byte; //Serial Number Byte 2
  736. SERNUM3: byte; //Serial Number Byte 3
  737. SERNUM4: byte; //Serial Number Byte 4
  738. SERNUM5: byte; //Serial Number Byte 5
  739. SERNUM6: byte; //Serial Number Byte 6
  740. SERNUM7: byte; //Serial Number Byte 7
  741. SERNUM8: byte; //Serial Number Byte 8
  742. SERNUM9: byte; //Serial Number Byte 9
  743. Reserved13: byte;
  744. Reserved14: byte;
  745. Reserved15: byte;
  746. Reserved16: byte;
  747. Reserved17: byte;
  748. Reserved18: byte;
  749. Reserved19: byte;
  750. Reserved20: byte;
  751. Reserved21: byte;
  752. Reserved22: byte;
  753. Reserved23: byte;
  754. Reserved24: byte;
  755. Reserved25: byte;
  756. Reserved26: byte;
  757. Reserved27: byte;
  758. Reserved28: byte;
  759. Reserved29: byte;
  760. Reserved30: byte;
  761. Reserved31: byte;
  762. TEMPSENSE0: byte; //Temperature Sensor Calibration Byte 0
  763. TEMPSENSE1: byte; //Temperature Sensor Calibration Byte 1
  764. OSC16ERR3V: byte; //OSC16 error at 3V
  765. OSC16ERR5V: byte; //OSC16 error at 5V
  766. OSC20ERR3V: byte; //OSC20 error at 3V
  767. OSC20ERR5V: byte; //OSC20 error at 5V
  768. end;
  769. TSLPCTRL = object //Sleep Controller
  770. CTRLA: byte; //Control
  771. const
  772. SENidx = $00; SENbm = $01; // Sleep enable
  773. SMODE0idx = $01; // Sleep mode
  774. SMODE1idx = $02; // Sleep mode
  775. end;
  776. TSPI = object //Serial Peripheral Interface
  777. CTRLA: byte; //Control A
  778. CTRLB: byte; //Control B
  779. INTCTRL: byte; //Interrupt Control
  780. INTFLAGS: byte; //Interrupt Flags
  781. DATA: byte; //Data
  782. const
  783. CLK2Xidx = $04; CLK2Xbm = $10; // Enable Double Speed
  784. DORDidx = $06; DORDbm = $40; // Data Order Setting
  785. ENABLEidx = $00; ENABLEbm = $01; // Enable Module
  786. MASTERidx = $05; MASTERbm = $20; // Master Operation Enable
  787. PRESC0idx = $01; // Prescaler
  788. PRESC1idx = $02; // Prescaler
  789. BUFENidx = $07; BUFENbm = $80; // Buffer Mode Enable
  790. BUFWRidx = $06; BUFWRbm = $40; // Buffer Write Mode
  791. MODE0idx = $00; // SPI Mode
  792. MODE1idx = $01; // SPI Mode
  793. SSDidx = $02; SSDbm = $04; // Slave Select Disable
  794. DREIEidx = $05; DREIEbm = $20; // Data Register Empty Interrupt Enable
  795. IEidx = $00; IEbm = $01; // Interrupt Enable
  796. RXCIEidx = $07; RXCIEbm = $80; // Receive Complete Interrupt Enable
  797. SSIEidx = $04; SSIEbm = $10; // Slave Select Trigger Interrupt Enable
  798. TXCIEidx = $06; TXCIEbm = $40; // Transfer Complete Interrupt Enable
  799. end;
  800. TSYSCFG = object //System Configuration Registers
  801. Reserved0: byte;
  802. REVID: byte; //Revision ID
  803. EXTBRK: byte; //External Break
  804. const
  805. ENEXTBRKidx = $00; ENEXTBRKbm = $01; // External break enable
  806. end;
  807. TTCA_SINGLE = object //16-bit Timer/Counter Type A - Single Mode
  808. CTRLA: byte; //Control A
  809. CTRLB: byte; //Control B
  810. CTRLC: byte; //Control C
  811. CTRLD: byte; //Control D
  812. CTRLECLR: byte; //Control E Clear
  813. CTRLESET: byte; //Control E Set
  814. CTRLFCLR: byte; //Control F Clear
  815. CTRLFSET: byte; //Control F Set
  816. Reserved8: byte;
  817. EVCTRL: byte; //Event Control
  818. INTCTRL: byte; //Interrupt Control
  819. INTFLAGS: byte; //Interrupt Flags
  820. Reserved12: byte;
  821. Reserved13: byte;
  822. DBGCTRL: byte; //Degbug Control
  823. TEMP: byte; //Temporary data for 16-bit Access
  824. Reserved16: byte;
  825. Reserved17: byte;
  826. Reserved18: byte;
  827. Reserved19: byte;
  828. Reserved20: byte;
  829. Reserved21: byte;
  830. Reserved22: byte;
  831. Reserved23: byte;
  832. Reserved24: byte;
  833. Reserved25: byte;
  834. Reserved26: byte;
  835. Reserved27: byte;
  836. Reserved28: byte;
  837. Reserved29: byte;
  838. Reserved30: byte;
  839. Reserved31: byte;
  840. CNT: word; //Count
  841. Reserved34: byte;
  842. Reserved35: byte;
  843. Reserved36: byte;
  844. Reserved37: byte;
  845. PER: word; //Period
  846. CMP0: word; //Compare 0
  847. CMP1: word; //Compare 1
  848. CMP2: word; //Compare 2
  849. Reserved46: byte;
  850. Reserved47: byte;
  851. Reserved48: byte;
  852. Reserved49: byte;
  853. Reserved50: byte;
  854. Reserved51: byte;
  855. Reserved52: byte;
  856. Reserved53: byte;
  857. PERBUF: word; //Period Buffer
  858. CMP0BUF: word; //Compare 0 Buffer
  859. CMP1BUF: word; //Compare 1 Buffer
  860. CMP2BUF: word; //Compare 2 Buffer
  861. const
  862. CLKSEL0idx = $01; // Clock Selection
  863. CLKSEL1idx = $02; // Clock Selection
  864. CLKSEL2idx = $03; // Clock Selection
  865. ENABLEidx = $00; ENABLEbm = $01; // Module Enable
  866. ALUPDidx = $03; ALUPDbm = $08; // Auto Lock Update
  867. CMP0ENidx = $04; CMP0ENbm = $10; // Compare 0 Enable
  868. CMP1ENidx = $05; CMP1ENbm = $20; // Compare 1 Enable
  869. CMP2ENidx = $06; CMP2ENbm = $40; // Compare 2 Enable
  870. WGMODE0idx = $00; // Waveform generation mode
  871. WGMODE1idx = $01; // Waveform generation mode
  872. WGMODE2idx = $02; // Waveform generation mode
  873. CMP0OVidx = $00; CMP0OVbm = $01; // Compare 0 Waveform Output Value
  874. CMP1OVidx = $01; CMP1OVbm = $02; // Compare 1 Waveform Output Value
  875. CMP2OVidx = $02; CMP2OVbm = $04; // Compare 2 Waveform Output Value
  876. SPLITMidx = $00; SPLITMbm = $01; // Split Mode Enable
  877. CMD0idx = $02; // Command
  878. CMD1idx = $03; // Command
  879. DIRidx = $00; DIRbm = $01; // Direction
  880. LUPDidx = $01; LUPDbm = $02; // Lock Update
  881. CMP0BVidx = $01; CMP0BVbm = $02; // Compare 0 Buffer Valid
  882. CMP1BVidx = $02; CMP1BVbm = $04; // Compare 1 Buffer Valid
  883. CMP2BVidx = $03; CMP2BVbm = $08; // Compare 2 Buffer Valid
  884. PERBVidx = $00; PERBVbm = $01; // Period Buffer Valid
  885. DBGRUNidx = $00; DBGRUNbm = $01; // Debug Run
  886. CNTEIidx = $00; CNTEIbm = $01; // Count on Event Input
  887. EVACT0idx = $01; // Event Action
  888. EVACT1idx = $02; // Event Action
  889. CMP0idx = $04; CMP0bm = $10; // Compare 0 Interrupt
  890. CMP1idx = $05; CMP1bm = $20; // Compare 1 Interrupt
  891. CMP2idx = $06; CMP2bm = $40; // Compare 2 Interrupt
  892. OVFidx = $00; OVFbm = $01; // Overflow Interrupt
  893. end;
  894. TTCA_SPLIT = object //16-bit Timer/Counter Type A - Split Mode
  895. CTRLA: byte; //Control A
  896. CTRLB: byte; //Control B
  897. CTRLC: byte; //Control C
  898. CTRLD: byte; //Control D
  899. CTRLECLR: byte; //Control E Clear
  900. CTRLESET: byte; //Control E Set
  901. Reserved6: byte;
  902. Reserved7: byte;
  903. Reserved8: byte;
  904. Reserved9: byte;
  905. INTCTRL: byte; //Interrupt Control
  906. INTFLAGS: byte; //Interrupt Flags
  907. Reserved12: byte;
  908. Reserved13: byte;
  909. DBGCTRL: byte; //Degbug Control
  910. Reserved15: byte;
  911. Reserved16: byte;
  912. Reserved17: byte;
  913. Reserved18: byte;
  914. Reserved19: byte;
  915. Reserved20: byte;
  916. Reserved21: byte;
  917. Reserved22: byte;
  918. Reserved23: byte;
  919. Reserved24: byte;
  920. Reserved25: byte;
  921. Reserved26: byte;
  922. Reserved27: byte;
  923. Reserved28: byte;
  924. Reserved29: byte;
  925. Reserved30: byte;
  926. Reserved31: byte;
  927. LCNT: byte; //Low Count
  928. HCNT: byte; //High Count
  929. Reserved34: byte;
  930. Reserved35: byte;
  931. Reserved36: byte;
  932. Reserved37: byte;
  933. LPER: byte; //Low Period
  934. HPER: byte; //High Period
  935. LCMP0: byte; //Low Compare
  936. HCMP0: byte; //High Compare
  937. LCMP1: byte; //Low Compare
  938. HCMP1: byte; //High Compare
  939. LCMP2: byte; //Low Compare
  940. HCMP2: byte; //High Compare
  941. const
  942. CLKSEL0idx = $01; // Clock Selection
  943. CLKSEL1idx = $02; // Clock Selection
  944. CLKSEL2idx = $03; // Clock Selection
  945. ENABLEidx = $00; ENABLEbm = $01; // Module Enable
  946. HCMP0ENidx = $04; HCMP0ENbm = $10; // High Compare 0 Enable
  947. HCMP1ENidx = $05; HCMP1ENbm = $20; // High Compare 1 Enable
  948. HCMP2ENidx = $06; HCMP2ENbm = $40; // High Compare 2 Enable
  949. LCMP0ENidx = $00; LCMP0ENbm = $01; // Low Compare 0 Enable
  950. LCMP1ENidx = $01; LCMP1ENbm = $02; // Low Compare 1 Enable
  951. LCMP2ENidx = $02; LCMP2ENbm = $04; // Low Compare 2 Enable
  952. HCMP0OVidx = $04; HCMP0OVbm = $10; // High Compare 0 Output Value
  953. HCMP1OVidx = $05; HCMP1OVbm = $20; // High Compare 1 Output Value
  954. HCMP2OVidx = $06; HCMP2OVbm = $40; // High Compare 2 Output Value
  955. LCMP0OVidx = $00; LCMP0OVbm = $01; // Low Compare 0 Output Value
  956. LCMP1OVidx = $01; LCMP1OVbm = $02; // Low Compare 1 Output Value
  957. LCMP2OVidx = $02; LCMP2OVbm = $04; // Low Compare 2 Output Value
  958. SPLITMidx = $00; SPLITMbm = $01; // Split Mode Enable
  959. CMD0idx = $02; // Command
  960. CMD1idx = $03; // Command
  961. DBGRUNidx = $00; DBGRUNbm = $01; // Debug Run
  962. HUNFidx = $01; HUNFbm = $02; // High Underflow Interrupt Enable
  963. LCMP0idx = $04; LCMP0bm = $10; // Low Compare 0 Interrupt Enable
  964. LCMP1idx = $05; LCMP1bm = $20; // Low Compare 1 Interrupt Enable
  965. LCMP2idx = $06; LCMP2bm = $40; // Low Compare 2 Interrupt Enable
  966. LUNFidx = $00; LUNFbm = $01; // Low Underflow Interrupt Enable
  967. end;
  968. TTCA = record //16-bit Timer/Counter Type A
  969. case byte of
  970. 0: (SINGLE: TTCA_SINGLE);
  971. 1: (SPLIT: TTCA_SPLIT);
  972. end;
  973. TTCB = object //16-bit Timer Type B
  974. CTRLA: byte; //Control A
  975. CTRLB: byte; //Control Register B
  976. Reserved2: byte;
  977. Reserved3: byte;
  978. EVCTRL: byte; //Event Control
  979. INTCTRL: byte; //Interrupt Control
  980. INTFLAGS: byte; //Interrupt Flags
  981. STATUS: byte; //Status
  982. DBGCTRL: byte; //Debug Control
  983. TEMP: byte; //Temporary Value
  984. CNT: word; //Count
  985. CCMP: word; //Compare or Capture
  986. const
  987. CLKSEL0idx = $01; // Clock Select
  988. CLKSEL1idx = $02; // Clock Select
  989. ENABLEidx = $00; ENABLEbm = $01; // Enable
  990. RUNSTDBYidx = $06; RUNSTDBYbm = $40; // Run Standby
  991. SYNCUPDidx = $04; SYNCUPDbm = $10; // Synchronize Update
  992. ASYNCidx = $06; ASYNCbm = $40; // Asynchronous Enable
  993. CCMPENidx = $04; CCMPENbm = $10; // Pin Output Enable
  994. CCMPINITidx = $05; CCMPINITbm = $20; // Pin Initial State
  995. CNTMODE0idx = $00; // Timer Mode
  996. CNTMODE1idx = $01; // Timer Mode
  997. CNTMODE2idx = $02; // Timer Mode
  998. DBGRUNidx = $00; DBGRUNbm = $01; // Debug Run
  999. CAPTEIidx = $00; CAPTEIbm = $01; // Event Input Enable
  1000. EDGEidx = $04; EDGEbm = $10; // Event Edge
  1001. FILTERidx = $06; FILTERbm = $40; // Input Capture Noise Cancellation Filter
  1002. CAPTidx = $00; CAPTbm = $01; // Capture or Timeout
  1003. RUNidx = $00; RUNbm = $01; // Run
  1004. end;
  1005. TTCD = object //Timer Counter D
  1006. CTRLA: byte; //Control A
  1007. CTRLB: byte; //Control B
  1008. CTRLC: byte; //Control C
  1009. CTRLD: byte; //Control D
  1010. CTRLE: byte; //Control E
  1011. Reserved5: byte;
  1012. Reserved6: byte;
  1013. Reserved7: byte;
  1014. EVCTRLA: byte; //EVCTRLA
  1015. EVCTRLB: byte; //EVCTRLB
  1016. Reserved10: byte;
  1017. Reserved11: byte;
  1018. INTCTRL: byte; //Interrupt Control
  1019. INTFLAGS: byte; //Interrupt Flags
  1020. STATUS: byte; //Status
  1021. Reserved15: byte;
  1022. INPUTCTRLA: byte; //Input Control A
  1023. INPUTCTRLB: byte; //Input Control B
  1024. FAULTCTRL: byte; //Fault Control
  1025. Reserved19: byte;
  1026. DLYCTRL: byte; //Delay Control
  1027. DLYVAL: byte; //Delay value
  1028. Reserved22: byte;
  1029. Reserved23: byte;
  1030. DITCTRL: byte; //Dither Control A
  1031. DITVAL: byte; //Dither value
  1032. Reserved26: byte;
  1033. Reserved27: byte;
  1034. Reserved28: byte;
  1035. Reserved29: byte;
  1036. DBGCTRL: byte; //Debug Control
  1037. Reserved31: byte;
  1038. Reserved32: byte;
  1039. Reserved33: byte;
  1040. CAPTUREA: word; //Capture A
  1041. CAPTUREB: word; //Capture B
  1042. Reserved38: byte;
  1043. Reserved39: byte;
  1044. CMPASET: word; //Compare A Set
  1045. CMPACLR: word; //Compare A Clear
  1046. CMPBSET: word; //Compare B Set
  1047. CMPBCLR: word; //Compare B Clear
  1048. const
  1049. CLKSEL0idx = $05; // clock select
  1050. CLKSEL1idx = $06; // clock select
  1051. CNTPRES0idx = $03; // counter prescaler
  1052. CNTPRES1idx = $04; // counter prescaler
  1053. ENABLEidx = $00; ENABLEbm = $01; // Enable
  1054. SYNCPRES0idx = $01; // Syncronization prescaler
  1055. SYNCPRES1idx = $02; // Syncronization prescaler
  1056. WGMODE0idx = $00; // Waveform generation mode
  1057. WGMODE1idx = $01; // Waveform generation mode
  1058. AUPDATEidx = $01; AUPDATEbm = $02; // Auto update
  1059. CMPCSELidx = $06; CMPCSELbm = $40; // Compare C output select
  1060. CMPDSELidx = $07; CMPDSELbm = $80; // Compare D output select
  1061. CMPOVRidx = $00; CMPOVRbm = $01; // Compare output value override
  1062. FIFTYidx = $03; FIFTYbm = $08; // Fifty percent waveform
  1063. CMPAVAL0idx = $00; // Compare A value
  1064. CMPAVAL1idx = $01; // Compare A value
  1065. CMPAVAL2idx = $02; // Compare A value
  1066. CMPAVAL3idx = $03; // Compare A value
  1067. CMPBVAL0idx = $04; // Compare B value
  1068. CMPBVAL1idx = $05; // Compare B value
  1069. CMPBVAL2idx = $06; // Compare B value
  1070. CMPBVAL3idx = $07; // Compare B value
  1071. DISEOCidx = $07; DISEOCbm = $80; // Disable at end of cycle
  1072. RESTARTidx = $02; RESTARTbm = $04; // Restart strobe
  1073. SCAPTUREAidx = $03; SCAPTUREAbm = $08; // Software Capture A Strobe
  1074. SCAPTUREBidx = $04; SCAPTUREBbm = $10; // Software Capture B Strobe
  1075. SYNCidx = $01; SYNCbm = $02; // synchronize strobe
  1076. SYNCEOCidx = $00; SYNCEOCbm = $01; // synchronize end of cycle strobe
  1077. DBGRUNidx = $00; DBGRUNbm = $01; // Debug run
  1078. FAULTDETidx = $02; FAULTDETbm = $04; // Fault detection
  1079. DITHERSEL0idx = $00; // dither select
  1080. DITHERSEL1idx = $01; // dither select
  1081. DITHER0idx = $00; // Dither value
  1082. DITHER1idx = $01; // Dither value
  1083. DITHER2idx = $02; // Dither value
  1084. DITHER3idx = $03; // Dither value
  1085. DLYPRESC0idx = $04; // Delay prescaler
  1086. DLYPRESC1idx = $05; // Delay prescaler
  1087. DLYSEL0idx = $00; // Delay select
  1088. DLYSEL1idx = $01; // Delay select
  1089. DLYTRIG0idx = $02; // Delay trigger
  1090. DLYTRIG1idx = $03; // Delay trigger
  1091. DLYVAL0idx = $00; // Delay value
  1092. DLYVAL1idx = $01; // Delay value
  1093. DLYVAL2idx = $02; // Delay value
  1094. DLYVAL3idx = $03; // Delay value
  1095. DLYVAL4idx = $04; // Delay value
  1096. DLYVAL5idx = $05; // Delay value
  1097. DLYVAL6idx = $06; // Delay value
  1098. DLYVAL7idx = $07; // Delay value
  1099. ACTIONidx = $02; ACTIONbm = $04; // event action
  1100. CFG0idx = $06; // event config
  1101. CFG1idx = $07; // event config
  1102. EDGEidx = $04; EDGEbm = $10; // edge select
  1103. TRIGEIidx = $00; TRIGEIbm = $01; // Trigger event enable
  1104. CMPAidx = $00; CMPAbm = $01; // Compare A value
  1105. CMPAENidx = $04; CMPAENbm = $10; // Compare A enable
  1106. CMPBidx = $01; CMPBbm = $02; // Compare B value
  1107. CMPBENidx = $05; CMPBENbm = $20; // Compare B enable
  1108. CMPCidx = $02; CMPCbm = $04; // Compare C value
  1109. CMPCENidx = $06; CMPCENbm = $40; // Compare C enable
  1110. CMPDidx = $03; CMPDbm = $08; // Compare D vaule
  1111. CMPDENidx = $07; CMPDENbm = $80; // Compare D enable
  1112. INPUTMODE0idx = $00; // Input mode
  1113. INPUTMODE1idx = $01; // Input mode
  1114. INPUTMODE2idx = $02; // Input mode
  1115. INPUTMODE3idx = $03; // Input mode
  1116. OVFidx = $00; OVFbm = $01; // Overflow interrupt enable
  1117. TRIGAidx = $02; TRIGAbm = $04; // Trigger A interrupt enable
  1118. TRIGBidx = $03; TRIGBbm = $08; // Trigger B interrupt enable
  1119. CMDRDYidx = $01; CMDRDYbm = $02; // Command ready
  1120. ENRDYidx = $00; ENRDYbm = $01; // Enable ready
  1121. PWMACTAidx = $06; PWMACTAbm = $40; // PWM activity on A
  1122. PWMACTBidx = $07; PWMACTBbm = $80; // PWM activity on B
  1123. end;
  1124. TTWI = object //Two-Wire Interface
  1125. CTRLA: byte; //Control A
  1126. Reserved1: byte;
  1127. DBGCTRL: byte; //Debug Control Register
  1128. MCTRLA: byte; //Master Control A
  1129. MCTRLB: byte; //Master Control B
  1130. MSTATUS: byte; //Master Status
  1131. MBAUD: byte; //Master Baurd Rate Control
  1132. MADDR: byte; //Master Address
  1133. MDATA: byte; //Master Data
  1134. SCTRLA: byte; //Slave Control A
  1135. SCTRLB: byte; //Slave Control B
  1136. SSTATUS: byte; //Slave Status
  1137. SADDR: byte; //Slave Address
  1138. SDATA: byte; //Slave Data
  1139. SADDRMASK: byte; //Slave Address Mask
  1140. const
  1141. ENABLEidx = $00; ENABLEbm = $01; // Enable TWI Master
  1142. QCENidx = $04; QCENbm = $10; // Quick Command Enable
  1143. RIENidx = $07; RIENbm = $80; // Read Interrupt Enable
  1144. SMENidx = $01; SMENbm = $02; // Smart Mode Enable
  1145. TIMEOUT0idx = $02; // Inactive Bus Timeout
  1146. TIMEOUT1idx = $03; // Inactive Bus Timeout
  1147. WIENidx = $06; WIENbm = $40; // Write Interrupt Enable
  1148. ACKACTidx = $02; ACKACTbm = $04; // Acknowledge Action
  1149. FLUSHidx = $03; FLUSHbm = $08; // Flush
  1150. MCMD0idx = $00; // Command
  1151. MCMD1idx = $01; // Command
  1152. ARBLOSTidx = $03; ARBLOSTbm = $08; // Arbitration Lost
  1153. BUSERRidx = $02; BUSERRbm = $04; // Bus Error
  1154. BUSSTATE0idx = $00; // Bus State
  1155. BUSSTATE1idx = $01; // Bus State
  1156. CLKHOLDidx = $05; CLKHOLDbm = $20; // Clock Hold
  1157. RIFidx = $07; RIFbm = $80; // Read Interrupt Flag
  1158. RXACKidx = $04; RXACKbm = $10; // Received Acknowledge
  1159. WIFidx = $06; WIFbm = $40; // Write Interrupt Flag
  1160. ADDRENidx = $00; ADDRENbm = $01; // Address Enable
  1161. ADDRMASK0idx = $01; // Address Mask
  1162. ADDRMASK1idx = $02; // Address Mask
  1163. ADDRMASK2idx = $03; // Address Mask
  1164. ADDRMASK3idx = $04; // Address Mask
  1165. ADDRMASK4idx = $05; // Address Mask
  1166. ADDRMASK5idx = $06; // Address Mask
  1167. ADDRMASK6idx = $07; // Address Mask
  1168. APIENidx = $06; APIENbm = $40; // Address/Stop Interrupt Enable
  1169. DIENidx = $07; DIENbm = $80; // Data Interrupt Enable
  1170. PIENidx = $05; PIENbm = $20; // Stop Interrupt Enable
  1171. PMENidx = $02; PMENbm = $04; // Promiscuous Mode Enable
  1172. SCMD0idx = $00; // Command
  1173. SCMD1idx = $01; // Command
  1174. APidx = $00; APbm = $01; // Slave Address or Stop
  1175. APIFidx = $06; APIFbm = $40; // Address/Stop Interrupt Flag
  1176. COLLidx = $03; COLLbm = $08; // Collision
  1177. DIFidx = $07; DIFbm = $80; // Data Interrupt Flag
  1178. DIRidx = $01; DIRbm = $02; // Read/Write Direction
  1179. end;
  1180. TUSART = object //Universal Synchronous and Asynchronous Receiver and Transmitter
  1181. RXDATAL: byte; //Receive Data Low Byte
  1182. RXDATAH: byte; //Receive Data High Byte
  1183. TXDATAL: byte; //Transmit Data Low Byte
  1184. TXDATAH: byte; //Transmit Data High Byte
  1185. STATUS: byte; //Status
  1186. CTRLA: byte; //Control A
  1187. CTRLB: byte; //Control B
  1188. CTRLC: byte; //Control C
  1189. BAUD: word; //Baud Rate
  1190. Reserved10: byte;
  1191. DBGCTRL: byte; //Debug Control
  1192. EVCTRL: byte; //Event Control
  1193. TXPLCTRL: byte; //IRCOM Transmitter Pulse Length Control
  1194. RXPLCTRL: byte; //IRCOM Receiver Pulse Length Control
  1195. const
  1196. ABEIEidx = $02; ABEIEbm = $04; // Auto-baud Error Interrupt Enable
  1197. DREIEidx = $05; DREIEbm = $20; // Data Register Empty Interrupt Enable
  1198. LBMEidx = $03; LBMEbm = $08; // Loop-back Mode Enable
  1199. RS4850idx = $00; // RS485 Mode internal transmitter
  1200. RS4851idx = $01; // RS485 Mode internal transmitter
  1201. RXCIEidx = $07; RXCIEbm = $80; // Receive Complete Interrupt Enable
  1202. RXSIEidx = $04; RXSIEbm = $10; // Receiver Start Frame Interrupt Enable
  1203. TXCIEidx = $06; TXCIEbm = $40; // Transmit Complete Interrupt Enable
  1204. MPCMidx = $00; MPCMbm = $01; // Multi-processor Communication Mode
  1205. ODMEidx = $03; ODMEbm = $08; // Open Drain Mode Enable
  1206. RXENidx = $07; RXENbm = $80; // Reciever enable
  1207. RXMODE0idx = $01; // Receiver Mode
  1208. RXMODE1idx = $02; // Receiver Mode
  1209. SFDENidx = $04; SFDENbm = $10; // Start Frame Detection Enable
  1210. TXENidx = $06; TXENbm = $40; // Transmitter Enable
  1211. ABMBPidx = $07; ABMBPbm = $80; // Autobaud majority voter bypass
  1212. DBGRUNidx = $00; DBGRUNbm = $01; // Debug Run
  1213. IREIidx = $00; IREIbm = $01; // IrDA Event Input Enable
  1214. BUFOVFidx = $06; BUFOVFbm = $40; // Buffer Overflow
  1215. DATA8idx = $00; DATA8bm = $01; // Receiver Data Register
  1216. FERRidx = $02; FERRbm = $04; // Frame Error
  1217. PERRidx = $01; PERRbm = $02; // Parity Error
  1218. RXCIFidx = $07; RXCIFbm = $80; // Receive Complete Interrupt Flag
  1219. DATA0idx = $00; // RX Data
  1220. DATA1idx = $01; // RX Data
  1221. DATA2idx = $02; // RX Data
  1222. DATA3idx = $03; // RX Data
  1223. DATA4idx = $04; // RX Data
  1224. DATA5idx = $05; // RX Data
  1225. DATA6idx = $06; // RX Data
  1226. DATA7idx = $07; // RX Data
  1227. RXPL0idx = $00; // Receiver Pulse Lenght
  1228. RXPL1idx = $01; // Receiver Pulse Lenght
  1229. RXPL2idx = $02; // Receiver Pulse Lenght
  1230. RXPL3idx = $03; // Receiver Pulse Lenght
  1231. RXPL4idx = $04; // Receiver Pulse Lenght
  1232. RXPL5idx = $05; // Receiver Pulse Lenght
  1233. RXPL6idx = $06; // Receiver Pulse Lenght
  1234. BDFidx = $01; BDFbm = $02; // Break Detected Flag
  1235. DREIFidx = $05; DREIFbm = $20; // Data Register Empty Flag
  1236. ISFIFidx = $03; ISFIFbm = $08; // Inconsistent Sync Field Interrupt Flag
  1237. RXSIFidx = $04; RXSIFbm = $10; // Receive Start Interrupt
  1238. TXCIFidx = $06; TXCIFbm = $40; // Transmit Interrupt Flag
  1239. WFBidx = $00; WFBbm = $01; // Wait For Break
  1240. TXPL0idx = $00; // Transmit pulse length
  1241. TXPL1idx = $01; // Transmit pulse length
  1242. TXPL2idx = $02; // Transmit pulse length
  1243. TXPL3idx = $03; // Transmit pulse length
  1244. TXPL4idx = $04; // Transmit pulse length
  1245. TXPL5idx = $05; // Transmit pulse length
  1246. TXPL6idx = $06; // Transmit pulse length
  1247. TXPL7idx = $07; // Transmit pulse length
  1248. end;
  1249. TUSERROW = object //User Row
  1250. USERROW0: byte; //User Row Byte 0
  1251. USERROW1: byte; //User Row Byte 1
  1252. USERROW2: byte; //User Row Byte 2
  1253. USERROW3: byte; //User Row Byte 3
  1254. USERROW4: byte; //User Row Byte 4
  1255. USERROW5: byte; //User Row Byte 5
  1256. USERROW6: byte; //User Row Byte 6
  1257. USERROW7: byte; //User Row Byte 7
  1258. USERROW8: byte; //User Row Byte 8
  1259. USERROW9: byte; //User Row Byte 9
  1260. USERROW10: byte; //User Row Byte 10
  1261. USERROW11: byte; //User Row Byte 11
  1262. USERROW12: byte; //User Row Byte 12
  1263. USERROW13: byte; //User Row Byte 13
  1264. USERROW14: byte; //User Row Byte 14
  1265. USERROW15: byte; //User Row Byte 15
  1266. USERROW16: byte; //User Row Byte 16
  1267. USERROW17: byte; //User Row Byte 17
  1268. USERROW18: byte; //User Row Byte 18
  1269. USERROW19: byte; //User Row Byte 19
  1270. USERROW20: byte; //User Row Byte 20
  1271. USERROW21: byte; //User Row Byte 21
  1272. USERROW22: byte; //User Row Byte 22
  1273. USERROW23: byte; //User Row Byte 23
  1274. USERROW24: byte; //User Row Byte 24
  1275. USERROW25: byte; //User Row Byte 25
  1276. USERROW26: byte; //User Row Byte 26
  1277. USERROW27: byte; //User Row Byte 27
  1278. USERROW28: byte; //User Row Byte 28
  1279. USERROW29: byte; //User Row Byte 29
  1280. USERROW30: byte; //User Row Byte 30
  1281. USERROW31: byte; //User Row Byte 31
  1282. USERROW32: byte; //User Row Byte 32
  1283. USERROW33: byte; //User Row Byte 33
  1284. USERROW34: byte; //User Row Byte 34
  1285. USERROW35: byte; //User Row Byte 35
  1286. USERROW36: byte; //User Row Byte 36
  1287. USERROW37: byte; //User Row Byte 37
  1288. USERROW38: byte; //User Row Byte 38
  1289. USERROW39: byte; //User Row Byte 39
  1290. USERROW40: byte; //User Row Byte 40
  1291. USERROW41: byte; //User Row Byte 41
  1292. USERROW42: byte; //User Row Byte 42
  1293. USERROW43: byte; //User Row Byte 43
  1294. USERROW44: byte; //User Row Byte 44
  1295. USERROW45: byte; //User Row Byte 45
  1296. USERROW46: byte; //User Row Byte 46
  1297. USERROW47: byte; //User Row Byte 47
  1298. USERROW48: byte; //User Row Byte 48
  1299. USERROW49: byte; //User Row Byte 49
  1300. USERROW50: byte; //User Row Byte 50
  1301. USERROW51: byte; //User Row Byte 51
  1302. USERROW52: byte; //User Row Byte 52
  1303. USERROW53: byte; //User Row Byte 53
  1304. USERROW54: byte; //User Row Byte 54
  1305. USERROW55: byte; //User Row Byte 55
  1306. USERROW56: byte; //User Row Byte 56
  1307. USERROW57: byte; //User Row Byte 57
  1308. USERROW58: byte; //User Row Byte 58
  1309. USERROW59: byte; //User Row Byte 59
  1310. USERROW60: byte; //User Row Byte 60
  1311. USERROW61: byte; //User Row Byte 61
  1312. USERROW62: byte; //User Row Byte 62
  1313. USERROW63: byte; //User Row Byte 63
  1314. end;
  1315. TVPORT = object //Virtual Ports
  1316. DIR: byte; //Data Direction
  1317. OUT_: byte; //Output Value
  1318. IN_: byte; //Input Value
  1319. INTFLAGS: byte; //Interrupt Flags
  1320. const
  1321. INT0idx = $00; // Pin Interrupt
  1322. INT1idx = $01; // Pin Interrupt
  1323. INT2idx = $02; // Pin Interrupt
  1324. INT3idx = $03; // Pin Interrupt
  1325. INT4idx = $04; // Pin Interrupt
  1326. INT5idx = $05; // Pin Interrupt
  1327. INT6idx = $06; // Pin Interrupt
  1328. INT7idx = $07; // Pin Interrupt
  1329. end;
  1330. TVREF = object //Voltage reference
  1331. CTRLA: byte; //Control A
  1332. CTRLB: byte; //Control B
  1333. CTRLC: byte; //Control C
  1334. CTRLD: byte; //Control D
  1335. const
  1336. ADC0REFSEL0idx = $04; // ADC0 reference select
  1337. ADC0REFSEL1idx = $05; // ADC0 reference select
  1338. ADC0REFSEL2idx = $06; // ADC0 reference select
  1339. DAC0REFSEL0idx = $00; // DAC0/AC0 reference select
  1340. DAC0REFSEL1idx = $01; // DAC0/AC0 reference select
  1341. DAC0REFSEL2idx = $02; // DAC0/AC0 reference select
  1342. ADC0REFENidx = $01; ADC0REFENbm = $02; // ADC0 reference enable
  1343. ADC1REFENidx = $04; ADC1REFENbm = $10; // ADC1 reference enable
  1344. DAC0REFENidx = $00; DAC0REFENbm = $01; // DAC0/AC0 reference enable
  1345. DAC1REFENidx = $03; DAC1REFENbm = $08; // DAC1/AC1 reference enable
  1346. DAC2REFENidx = $05; DAC2REFENbm = $20; // DAC2/AC2 reference enable
  1347. ADC1REFSEL0idx = $04; // ADC1 reference select
  1348. ADC1REFSEL1idx = $05; // ADC1 reference select
  1349. ADC1REFSEL2idx = $06; // ADC1 reference select
  1350. DAC1REFSEL0idx = $00; // DAC1/AC1 reference select
  1351. DAC1REFSEL1idx = $01; // DAC1/AC1 reference select
  1352. DAC1REFSEL2idx = $02; // DAC1/AC1 reference select
  1353. DAC2REFSEL0idx = $00; // DAC2/AC2 reference select
  1354. DAC2REFSEL1idx = $01; // DAC2/AC2 reference select
  1355. DAC2REFSEL2idx = $02; // DAC2/AC2 reference select
  1356. end;
  1357. TWDT = object //Watch-Dog Timer
  1358. CTRLA: byte; //Control A
  1359. STATUS: byte; //Status
  1360. const
  1361. PERIOD0idx = $00; // Period
  1362. PERIOD1idx = $01; // Period
  1363. PERIOD2idx = $02; // Period
  1364. PERIOD3idx = $03; // Period
  1365. WINDOW0idx = $04; // Window
  1366. WINDOW1idx = $05; // Window
  1367. WINDOW2idx = $06; // Window
  1368. WINDOW3idx = $07; // Window
  1369. LOCKidx = $07; LOCKbm = $80; // Lock enable
  1370. SYNCBUSYidx = $00; SYNCBUSYbm = $01; // Syncronization busy
  1371. end;
  1372. const
  1373. Pin0idx = 0; Pin0bm = 1;
  1374. Pin1idx = 1; Pin1bm = 2;
  1375. Pin2idx = 2; Pin2bm = 4;
  1376. Pin3idx = 3; Pin3bm = 8;
  1377. Pin4idx = 4; Pin4bm = 16;
  1378. Pin5idx = 5; Pin5bm = 32;
  1379. Pin6idx = 6; Pin6bm = 64;
  1380. Pin7idx = 7; Pin7bm = 128;
  1381. var
  1382. VPORTA: TVPORT absolute $0000;
  1383. VPORTB: TVPORT absolute $0004;
  1384. VPORTC: TVPORT absolute $0008;
  1385. GPIO: TGPIO absolute $001C;
  1386. CPU: TCPU absolute $0030;
  1387. RSTCTRL: TRSTCTRL absolute $0040;
  1388. SLPCTRL: TSLPCTRL absolute $0050;
  1389. CLKCTRL: TCLKCTRL absolute $0060;
  1390. BOD: TBOD absolute $0080;
  1391. VREF: TVREF absolute $00A0;
  1392. WDT: TWDT absolute $0100;
  1393. CPUINT: TCPUINT absolute $0110;
  1394. CRCSCAN: TCRCSCAN absolute $0120;
  1395. RTC: TRTC absolute $0140;
  1396. EVSYS: TEVSYS absolute $0180;
  1397. CCL: TCCL absolute $01C0;
  1398. PORTMUX: TPORTMUX absolute $0200;
  1399. PORTA: TPORT absolute $0400;
  1400. PORTB: TPORT absolute $0420;
  1401. PORTC: TPORT absolute $0440;
  1402. ADC0: TADC absolute $0600;
  1403. ADC1: TADC absolute $0640;
  1404. AC0: TAC absolute $0680;
  1405. AC1: TAC absolute $0688;
  1406. AC2: TAC absolute $0690;
  1407. DAC0: TDAC absolute $06A0;
  1408. DAC1: TDAC absolute $06A8;
  1409. DAC2: TDAC absolute $06B0;
  1410. USART0: TUSART absolute $0800;
  1411. TWI0: TTWI absolute $0810;
  1412. SPI0: TSPI absolute $0820;
  1413. TCA0: TTCA absolute $0A00;
  1414. TCB0: TTCB absolute $0A40;
  1415. TCB1: TTCB absolute $0A50;
  1416. TCD0: TTCD absolute $0A80;
  1417. SYSCFG: TSYSCFG absolute $0F00;
  1418. NVMCTRL: TNVMCTRL absolute $1000;
  1419. SIGROW: TSIGROW absolute $1100;
  1420. FUSE: TFUSE absolute $1280;
  1421. LOCKBIT: TLOCKBIT absolute $128A;
  1422. USERROW: TUSERROW absolute $1300;
  1423. implementation
  1424. {$i avrcommon.inc}
  1425. procedure CRCSCAN_NMI_ISR; external name 'CRCSCAN_NMI_ISR'; // Interrupt 1
  1426. procedure BOD_VLM_ISR; external name 'BOD_VLM_ISR'; // Interrupt 2
  1427. procedure PORTA_PORT_ISR; external name 'PORTA_PORT_ISR'; // Interrupt 3
  1428. procedure PORTB_PORT_ISR; external name 'PORTB_PORT_ISR'; // Interrupt 4
  1429. procedure PORTC_PORT_ISR; external name 'PORTC_PORT_ISR'; // Interrupt 5
  1430. procedure RTC_CNT_ISR; external name 'RTC_CNT_ISR'; // Interrupt 6
  1431. procedure RTC_PIT_ISR; external name 'RTC_PIT_ISR'; // Interrupt 7
  1432. procedure TCA0_OVF_ISR; external name 'TCA0_OVF_ISR'; // Interrupt 8
  1433. //procedure TCA0_LUNF_ISR; external name 'TCA0_LUNF_ISR'; // Interrupt 8
  1434. procedure TCA0_HUNF_ISR; external name 'TCA0_HUNF_ISR'; // Interrupt 9
  1435. procedure TCA0_CMP0_ISR; external name 'TCA0_CMP0_ISR'; // Interrupt 10
  1436. //procedure TCA0_LCMP0_ISR; external name 'TCA0_LCMP0_ISR'; // Interrupt 10
  1437. procedure TCA0_LCMP1_ISR; external name 'TCA0_LCMP1_ISR'; // Interrupt 11
  1438. //procedure TCA0_CMP1_ISR; external name 'TCA0_CMP1_ISR'; // Interrupt 11
  1439. procedure TCA0_CMP2_ISR; external name 'TCA0_CMP2_ISR'; // Interrupt 12
  1440. //procedure TCA0_LCMP2_ISR; external name 'TCA0_LCMP2_ISR'; // Interrupt 12
  1441. procedure TCB0_INT_ISR; external name 'TCB0_INT_ISR'; // Interrupt 13
  1442. procedure TCB1_INT_ISR; external name 'TCB1_INT_ISR'; // Interrupt 14
  1443. procedure TCD0_OVF_ISR; external name 'TCD0_OVF_ISR'; // Interrupt 15
  1444. procedure TCD0_TRIG_ISR; external name 'TCD0_TRIG_ISR'; // Interrupt 16
  1445. procedure AC0_AC_ISR; external name 'AC0_AC_ISR'; // Interrupt 17
  1446. procedure AC1_AC_ISR; external name 'AC1_AC_ISR'; // Interrupt 18
  1447. procedure AC2_AC_ISR; external name 'AC2_AC_ISR'; // Interrupt 19
  1448. procedure ADC0_RESRDY_ISR; external name 'ADC0_RESRDY_ISR'; // Interrupt 20
  1449. procedure ADC0_WCOMP_ISR; external name 'ADC0_WCOMP_ISR'; // Interrupt 21
  1450. procedure ADC1_RESRDY_ISR; external name 'ADC1_RESRDY_ISR'; // Interrupt 22
  1451. procedure ADC1_WCOMP_ISR; external name 'ADC1_WCOMP_ISR'; // Interrupt 23
  1452. procedure TWI0_TWIS_ISR; external name 'TWI0_TWIS_ISR'; // Interrupt 24
  1453. procedure TWI0_TWIM_ISR; external name 'TWI0_TWIM_ISR'; // Interrupt 25
  1454. procedure SPI0_INT_ISR; external name 'SPI0_INT_ISR'; // Interrupt 26
  1455. procedure USART0_RXC_ISR; external name 'USART0_RXC_ISR'; // Interrupt 27
  1456. procedure USART0_DRE_ISR; external name 'USART0_DRE_ISR'; // Interrupt 28
  1457. procedure USART0_TXC_ISR; external name 'USART0_TXC_ISR'; // Interrupt 29
  1458. procedure NVMCTRL_EE_ISR; external name 'NVMCTRL_EE_ISR'; // Interrupt 30
  1459. procedure _FPC_start; assembler; nostackframe;
  1460. label
  1461. _start;
  1462. asm
  1463. .init
  1464. .globl _start
  1465. jmp _start
  1466. jmp CRCSCAN_NMI_ISR
  1467. jmp BOD_VLM_ISR
  1468. jmp PORTA_PORT_ISR
  1469. jmp PORTB_PORT_ISR
  1470. jmp PORTC_PORT_ISR
  1471. jmp RTC_CNT_ISR
  1472. jmp RTC_PIT_ISR
  1473. jmp TCA0_OVF_ISR
  1474. // jmp TCA0_LUNF_ISR
  1475. jmp TCA0_HUNF_ISR
  1476. jmp TCA0_CMP0_ISR
  1477. // jmp TCA0_LCMP0_ISR
  1478. jmp TCA0_LCMP1_ISR
  1479. // jmp TCA0_CMP1_ISR
  1480. jmp TCA0_CMP2_ISR
  1481. // jmp TCA0_LCMP2_ISR
  1482. jmp TCB0_INT_ISR
  1483. jmp TCB1_INT_ISR
  1484. jmp TCD0_OVF_ISR
  1485. jmp TCD0_TRIG_ISR
  1486. jmp AC0_AC_ISR
  1487. jmp AC1_AC_ISR
  1488. jmp AC2_AC_ISR
  1489. jmp ADC0_RESRDY_ISR
  1490. jmp ADC0_WCOMP_ISR
  1491. jmp ADC1_RESRDY_ISR
  1492. jmp ADC1_WCOMP_ISR
  1493. jmp TWI0_TWIS_ISR
  1494. jmp TWI0_TWIM_ISR
  1495. jmp SPI0_INT_ISR
  1496. jmp USART0_RXC_ISR
  1497. jmp USART0_DRE_ISR
  1498. jmp USART0_TXC_ISR
  1499. jmp NVMCTRL_EE_ISR
  1500. {$i start.inc}
  1501. .weak CRCSCAN_NMI_ISR
  1502. .weak BOD_VLM_ISR
  1503. .weak PORTA_PORT_ISR
  1504. .weak PORTB_PORT_ISR
  1505. .weak PORTC_PORT_ISR
  1506. .weak RTC_CNT_ISR
  1507. .weak RTC_PIT_ISR
  1508. .weak TCA0_OVF_ISR
  1509. // .weak TCA0_LUNF_ISR
  1510. .weak TCA0_HUNF_ISR
  1511. .weak TCA0_CMP0_ISR
  1512. // .weak TCA0_LCMP0_ISR
  1513. .weak TCA0_LCMP1_ISR
  1514. // .weak TCA0_CMP1_ISR
  1515. .weak TCA0_CMP2_ISR
  1516. // .weak TCA0_LCMP2_ISR
  1517. .weak TCB0_INT_ISR
  1518. .weak TCB1_INT_ISR
  1519. .weak TCD0_OVF_ISR
  1520. .weak TCD0_TRIG_ISR
  1521. .weak AC0_AC_ISR
  1522. .weak AC1_AC_ISR
  1523. .weak AC2_AC_ISR
  1524. .weak ADC0_RESRDY_ISR
  1525. .weak ADC0_WCOMP_ISR
  1526. .weak ADC1_RESRDY_ISR
  1527. .weak ADC1_WCOMP_ISR
  1528. .weak TWI0_TWIS_ISR
  1529. .weak TWI0_TWIM_ISR
  1530. .weak SPI0_INT_ISR
  1531. .weak USART0_RXC_ISR
  1532. .weak USART0_DRE_ISR
  1533. .weak USART0_TXC_ISR
  1534. .weak NVMCTRL_EE_ISR
  1535. .set CRCSCAN_NMI_ISR, Default_IRQ_handler
  1536. .set BOD_VLM_ISR, Default_IRQ_handler
  1537. .set PORTA_PORT_ISR, Default_IRQ_handler
  1538. .set PORTB_PORT_ISR, Default_IRQ_handler
  1539. .set PORTC_PORT_ISR, Default_IRQ_handler
  1540. .set RTC_CNT_ISR, Default_IRQ_handler
  1541. .set RTC_PIT_ISR, Default_IRQ_handler
  1542. .set TCA0_OVF_ISR, Default_IRQ_handler
  1543. // .set TCA0_LUNF_ISR, Default_IRQ_handler
  1544. .set TCA0_HUNF_ISR, Default_IRQ_handler
  1545. .set TCA0_CMP0_ISR, Default_IRQ_handler
  1546. // .set TCA0_LCMP0_ISR, Default_IRQ_handler
  1547. .set TCA0_LCMP1_ISR, Default_IRQ_handler
  1548. // .set TCA0_CMP1_ISR, Default_IRQ_handler
  1549. .set TCA0_CMP2_ISR, Default_IRQ_handler
  1550. // .set TCA0_LCMP2_ISR, Default_IRQ_handler
  1551. .set TCB0_INT_ISR, Default_IRQ_handler
  1552. .set TCB1_INT_ISR, Default_IRQ_handler
  1553. .set TCD0_OVF_ISR, Default_IRQ_handler
  1554. .set TCD0_TRIG_ISR, Default_IRQ_handler
  1555. .set AC0_AC_ISR, Default_IRQ_handler
  1556. .set AC1_AC_ISR, Default_IRQ_handler
  1557. .set AC2_AC_ISR, Default_IRQ_handler
  1558. .set ADC0_RESRDY_ISR, Default_IRQ_handler
  1559. .set ADC0_WCOMP_ISR, Default_IRQ_handler
  1560. .set ADC1_RESRDY_ISR, Default_IRQ_handler
  1561. .set ADC1_WCOMP_ISR, Default_IRQ_handler
  1562. .set TWI0_TWIS_ISR, Default_IRQ_handler
  1563. .set TWI0_TWIM_ISR, Default_IRQ_handler
  1564. .set SPI0_INT_ISR, Default_IRQ_handler
  1565. .set USART0_RXC_ISR, Default_IRQ_handler
  1566. .set USART0_DRE_ISR, Default_IRQ_handler
  1567. .set USART0_TXC_ISR, Default_IRQ_handler
  1568. .set NVMCTRL_EE_ISR, Default_IRQ_handler
  1569. end;
  1570. end.