CyLib.h 56 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361
  1. /*******************************************************************************
  2. * File Name: CyLib.h
  3. * Version 4.20
  4. *
  5. * Description:
  6. * Provides the function definitions for the system, clocking, interrupts and
  7. * watchdog timer API.
  8. *
  9. * Note:
  10. * Documentation of the API's in this file is located in the System Reference
  11. * Guide provided with PSoC Creator.
  12. *
  13. ********************************************************************************
  14. * Copyright 2008-2014, Cypress Semiconductor Corporation. All rights reserved.
  15. * You may use this file only in accordance with the license, terms, conditions,
  16. * disclaimers, and limitations in the end user license agreement accompanying
  17. * the software package with which this file was provided.
  18. *******************************************************************************/
  19. #if !defined(CY_BOOT_CYLIB_H)
  20. #define CY_BOOT_CYLIB_H
  21. #include <string.h>
  22. #include <limits.h>
  23. #include <ctype.h>
  24. #include "cytypes.h"
  25. #include "cyfitter.h"
  26. #include "cydevice_trm.h"
  27. #include "cyPm.h"
  28. #if(CY_PSOC3)
  29. #include <PSoC3_8051.h>
  30. #endif /* (CY_PSOC3) */
  31. #if(CYDEV_VARIABLE_VDDA == 1)
  32. #include "CyScBoostClk.h"
  33. #endif /* (CYDEV_VARIABLE_VDDA == 1) */
  34. /* Global variable with preserved reset status */
  35. extern uint8 CYXDATA CyResetStatus;
  36. /* Variable Vdda */
  37. #if(CYDEV_VARIABLE_VDDA == 1)
  38. extern uint8 CyScPumpEnabled;
  39. #endif /* (CYDEV_VARIABLE_VDDA == 1) */
  40. /* Do not use these definitions directly in your application */
  41. extern uint32 cydelay_freq_hz;
  42. extern uint32 cydelay_freq_khz;
  43. extern uint8 cydelay_freq_mhz;
  44. extern uint32 cydelay_32k_ms;
  45. /***************************************
  46. * Function Prototypes
  47. ***************************************/
  48. cystatus CyPLL_OUT_Start(uint8 wait) ;
  49. void CyPLL_OUT_Stop(void) ;
  50. void CyPLL_OUT_SetPQ(uint8 pDiv, uint8 qDiv, uint8 current) ;
  51. void CyPLL_OUT_SetSource(uint8 source) ;
  52. void CyIMO_Start(uint8 wait) ;
  53. void CyIMO_Stop(void) ;
  54. void CyIMO_SetFreq(uint8 freq) ;
  55. void CyIMO_SetSource(uint8 source) ;
  56. void CyIMO_EnableDoubler(void) ;
  57. void CyIMO_DisableDoubler(void) ;
  58. void CyMasterClk_SetSource(uint8 source) ;
  59. void CyMasterClk_SetDivider(uint8 divider) ;
  60. void CyBusClk_SetDivider(uint16 divider) ;
  61. #if(CY_PSOC3)
  62. void CyCpuClk_SetDivider(uint8 divider) ;
  63. #endif /* (CY_PSOC3) */
  64. void CyUsbClk_SetSource(uint8 source) ;
  65. void CyILO_Start1K(void) ;
  66. void CyILO_Stop1K(void) ;
  67. void CyILO_Start100K(void) ;
  68. void CyILO_Stop100K(void) ;
  69. void CyILO_Enable33K(void) ;
  70. void CyILO_Disable33K(void) ;
  71. void CyILO_SetSource(uint8 source) ;
  72. uint8 CyILO_SetPowerMode(uint8 mode) ;
  73. uint8 CyXTAL_32KHZ_ReadStatus(void) ;
  74. uint8 CyXTAL_32KHZ_SetPowerMode(uint8 mode) ;
  75. void CyXTAL_32KHZ_Start(void) ;
  76. void CyXTAL_32KHZ_Stop(void) ;
  77. cystatus CyXTAL_Start(uint8 wait) ;
  78. void CyXTAL_Stop(void) ;
  79. void CyXTAL_SetStartup(uint8 setting) ;
  80. void CyXTAL_EnableErrStatus(void) ;
  81. void CyXTAL_DisableErrStatus(void) ;
  82. uint8 CyXTAL_ReadStatus(void) ;
  83. void CyXTAL_EnableFaultRecovery(void) ;
  84. void CyXTAL_DisableFaultRecovery(void) ;
  85. void CyXTAL_SetFbVoltage(uint8 setting) ;
  86. void CyXTAL_SetWdVoltage(uint8 setting) ;
  87. void CyWdtStart(uint8 ticks, uint8 lpMode) ;
  88. void CyWdtClear(void) ;
  89. /* System Function Prototypes */
  90. void CyDelay(uint32 milliseconds) CYREENTRANT;
  91. void CyDelayUs(uint16 microseconds);
  92. void CyDelayFreq(uint32 freq) CYREENTRANT;
  93. void CyDelayCycles(uint32 cycles);
  94. void CySoftwareReset(void) ;
  95. uint8 CyEnterCriticalSection(void);
  96. void CyExitCriticalSection(uint8 savedIntrStatus);
  97. void CyHalt(uint8 reason) CYREENTRANT;
  98. /* Interrupt Function Prototypes */
  99. #if(CY_PSOC5)
  100. cyisraddress CyIntSetSysVector(uint8 number, cyisraddress address) ;
  101. cyisraddress CyIntGetSysVector(uint8 number) ;
  102. #endif /* (CY_PSOC5) */
  103. cyisraddress CyIntSetVector(uint8 number, cyisraddress address) ;
  104. cyisraddress CyIntGetVector(uint8 number) ;
  105. void CyIntSetPriority(uint8 number, uint8 priority) ;
  106. uint8 CyIntGetPriority(uint8 number) ;
  107. uint8 CyIntGetState(uint8 number) ;
  108. uint32 CyDisableInts(void) ;
  109. void CyEnableInts(uint32 mask) ;
  110. #if(CY_PSOC5)
  111. void CyFlushCache(void);
  112. #endif /* (CY_PSOC5) */
  113. /* Voltage Detection Function Prototypes */
  114. void CyVdLvDigitEnable(uint8 reset, uint8 threshold) ;
  115. void CyVdLvAnalogEnable(uint8 reset, uint8 threshold) ;
  116. void CyVdLvDigitDisable(void) ;
  117. void CyVdLvAnalogDisable(void) ;
  118. void CyVdHvAnalogEnable(void) ;
  119. void CyVdHvAnalogDisable(void) ;
  120. uint8 CyVdStickyStatus(uint8 mask) ;
  121. uint8 CyVdRealTimeStatus(void) ;
  122. void CySetScPumps(uint8 enable) ;
  123. #if(CY_PSOC5)
  124. /* Default interrupt handler */
  125. CY_ISR_PROTO(IntDefaultHandler);
  126. #endif /* (CY_PSOC5) */
  127. #if(CY_PSOC5)
  128. /* System tick timer APIs */
  129. typedef void (*cySysTickCallback)(void);
  130. void CySysTickStart(void);
  131. void CySysTickInit(void);
  132. void CySysTickEnable(void);
  133. void CySysTickStop(void);
  134. void CySysTickEnableInterrupt(void);
  135. void CySysTickDisableInterrupt(void);
  136. void CySysTickSetReload(uint32 value);
  137. uint32 CySysTickGetReload(void);
  138. uint32 CySysTickGetValue(void);
  139. cySysTickCallback CySysTickSetCallback(uint32 number, cySysTickCallback function);
  140. cySysTickCallback CySysTickGetCallback(uint32 number);
  141. void CySysTickSetClockSource(uint32 clockSource);
  142. uint32 CySysTickGetCountFlag(void);
  143. void CySysTickClear(void);
  144. #endif /* (CY_PSOC5) */
  145. /***************************************
  146. * API Constants
  147. ***************************************/
  148. /*******************************************************************************
  149. * PLL API Constants
  150. *******************************************************************************/
  151. #define CY_CLK_PLL_ENABLE (0x01u)
  152. #define CY_CLK_PLL_LOCK_STATUS (0x01u)
  153. #define CY_CLK_PLL_FTW_INTERVAL (24u)
  154. #define CY_CLK_PLL_MAX_Q_VALUE (16u)
  155. #define CY_CLK_PLL_MIN_Q_VALUE (1u)
  156. #define CY_CLK_PLL_MIN_P_VALUE (8u)
  157. #define CY_CLK_PLL_MIN_CUR_VALUE (1u)
  158. #define CY_CLK_PLL_MAX_CUR_VALUE (7u)
  159. #define CY_CLK_PLL_CURRENT_POSITION (4u)
  160. #define CY_CLK_PLL_CURRENT_MASK (0x8Fu)
  161. /*******************************************************************************
  162. * External 32kHz Crystal Oscillator API Constants
  163. *******************************************************************************/
  164. #define CY_XTAL32K_ANA_STAT (0x20u)
  165. #define CY_CLK_XTAL32_CR_LPM (0x02u)
  166. #define CY_CLK_XTAL32_CR_EN (0x01u)
  167. #if(CY_PSOC3)
  168. #define CY_CLK_XTAL32_CR_PDBEN (0x04u)
  169. #endif /* (CY_PSOC3) */
  170. #define CY_CLK_XTAL32_TR_MASK (0x07u)
  171. #define CY_CLK_XTAL32_TR_STARTUP (0x03u)
  172. #define CY_CLK_XTAL32_TR_HIGH_POWER (0x06u)
  173. #define CY_CLK_XTAL32_TR_LOW_POWER (0x01u)
  174. #define CY_CLK_XTAL32_TR_POWERDOWN (0x00u)
  175. #define CY_CLK_XTAL32_TST_DEFAULT (0xF3u)
  176. #define CY_CLK_XTAL32_CFG_LP_DEFAULT (0x04u)
  177. #define CY_CLK_XTAL32_CFG_LP_LOWPOWER (0x08u)
  178. #define CY_CLK_XTAL32_CFG_LP_MASK (0x0Cu)
  179. #define CY_CLK_XTAL32_CFG_LP_ALLOW (0x80u)
  180. /*******************************************************************************
  181. * External MHz Crystal Oscillator API Constants
  182. *******************************************************************************/
  183. #define CY_CLK_XMHZ_FTW_INTERVAL (24u)
  184. #define CY_CLK_XMHZ_MIN_TIMEOUT (130u)
  185. #define CY_CLK_XMHZ_CSR_ENABLE (0x01u)
  186. #define CY_CLK_XMHZ_CSR_XERR (0x80u)
  187. #define CY_CLK_XMHZ_CSR_XFB (0x04u)
  188. #define CY_CLK_XMHZ_CSR_XPROT (0x40u)
  189. #define CY_CLK_XMHZ_CFG0_XCFG_MASK (0x1Fu)
  190. #define CY_CLK_XMHZ_CFG1_VREF_FB_MASK (0x0Fu)
  191. #define CY_CLK_XMHZ_CFG1_VREF_WD_MASK (0x70u)
  192. /*******************************************************************************
  193. * Watchdog Timer API Constants
  194. *******************************************************************************/
  195. #define CYWDT_2_TICKS (0x0u) /* 4 - 6 ms */
  196. #define CYWDT_16_TICKS (0x1u) /* 32 - 48 ms */
  197. #define CYWDT_128_TICKS (0x2u) /* 256 - 384 ms */
  198. #define CYWDT_1024_TICKS (0x3u) /* 2048 - 3072 ms */
  199. #define CYWDT_LPMODE_NOCHANGE (0x00u)
  200. #define CYWDT_LPMODE_MAXINTER (0x01u)
  201. #define CYWDT_LPMODE_DISABLED (0x03u)
  202. #define CY_WDT_CFG_INTERVAL_MASK (0x03u)
  203. #define CY_WDT_CFG_CTW_RESET (0x80u)
  204. #define CY_WDT_CFG_LPMODE_SHIFT (5u)
  205. #define CY_WDT_CFG_LPMODE_MASK (0x60u)
  206. #define CY_WDT_CFG_WDR_EN (0x10u)
  207. #define CY_WDT_CFG_CLEAR_ALL (0x00u)
  208. #define CY_WDT_CR_FEED (0x01u)
  209. /*******************************************************************************
  210. * Voltage Detection API Constants
  211. *******************************************************************************/
  212. #define CY_VD_LVID_EN (0x01u)
  213. #define CY_VD_LVIA_EN (0x02u)
  214. #define CY_VD_HVIA_EN (0x04u)
  215. #define CY_VD_PRESD_EN (0x40u)
  216. #define CY_VD_PRESA_EN (0x80u)
  217. #define CY_VD_LVID (0x01u)
  218. #define CY_VD_LVIA (0x02u)
  219. #define CY_VD_HVIA (0x04u)
  220. #define CY_VD_LVI_TRIP_LVID_MASK (0x0Fu)
  221. /*******************************************************************************
  222. * Variable VDDA API Constants
  223. *******************************************************************************/
  224. #if(CYDEV_VARIABLE_VDDA == 1)
  225. /* Active Power Mode Configuration Register 9 */
  226. #define CY_LIB_ACT_CFG9_SWCAP0_EN (0x01u)
  227. #define CY_LIB_ACT_CFG9_SWCAP1_EN (0x02u)
  228. #define CY_LIB_ACT_CFG9_SWCAP2_EN (0x04u)
  229. #define CY_LIB_ACT_CFG9_SWCAP3_EN (0x08u)
  230. #define CY_LIB_ACT_CFG9_SWCAPS_MASK (0x0Fu)
  231. /* Switched Cap Miscellaneous Control Register */
  232. #define CY_LIB_SC_MISC_PUMP_FORCE (0x20u)
  233. /* Switched Capacitor 0 Boost Clock Selection Register */
  234. #define CY_LIB_SC_BST_CLK_EN (0x08u)
  235. #define CY_LIB_SC_BST_CLK_INDEX_MASK (0xF8u)
  236. #endif /* (CYDEV_VARIABLE_VDDA == 1) */
  237. /*******************************************************************************
  238. * Clock Distribution API Constants
  239. *******************************************************************************/
  240. #define CY_LIB_CLKDIST_AMASK_MASK (0xF0u)
  241. #define CY_LIB_CLKDIST_DMASK_MASK (0x00u)
  242. #define CY_LIB_CLKDIST_LD_LOAD (0x01u)
  243. #define CY_LIB_CLKDIST_BCFG2_MASK (0x80u)
  244. #define CY_LIB_CLKDIST_MASTERCLK_DIV (7u)
  245. #define CY_LIB_CLKDIST_BCFG2_SSS (0x40u)
  246. #define CY_LIB_CLKDIST_MSTR1_SRC_MASK (0xFCu)
  247. #define CY_LIB_FASTCLK_IMO_DOUBLER (0x10u)
  248. #define CY_LIB_FASTCLK_IMO_IMO (0x20u)
  249. #define CY_LIB_CLKDIST_CR_IMO2X (0x40u)
  250. #define CY_LIB_FASTCLK_IMO_CR_RANGE_MASK (0xF8u)
  251. #define CY_LIB_CLKDIST_CR_PLL_SCR_MASK (0xFCu)
  252. /* CyILO_SetPowerMode() */
  253. #define CY_ILO_CONTROL_PD_MODE (0x10u)
  254. #define CY_ILO_CONTROL_PD_POSITION (4u)
  255. #define CY_ILO_SOURCE_100K (0u)
  256. #define CY_ILO_SOURCE_33K (1u)
  257. #define CY_ILO_SOURCE_1K (2u)
  258. #define CY_ILO_FAST_START (0u)
  259. #define CY_ILO_SLOW_START (1u)
  260. #define CY_ILO_SOURCE_BITS_CLEAR (0xF3u)
  261. #define CY_ILO_SOURCE_1K_SET (0x08u)
  262. #define CY_ILO_SOURCE_33K_SET (0x04u)
  263. #define CY_ILO_SOURCE_100K_SET (0x00u)
  264. #define CY_MASTER_SOURCE_IMO (0u)
  265. #define CY_MASTER_SOURCE_PLL (1u)
  266. #define CY_MASTER_SOURCE_XTAL (2u)
  267. #define CY_MASTER_SOURCE_DSI (3u)
  268. #define CY_IMO_SOURCE_IMO (0u)
  269. #define CY_IMO_SOURCE_XTAL (1u)
  270. #define CY_IMO_SOURCE_DSI (2u)
  271. /* CyIMO_Start() */
  272. #define CY_LIB_PM_ACT_CFG0_IMO_EN (0x10u)
  273. #define CY_LIB_PM_STBY_CFG0_IMO_EN (0x10u)
  274. #define CY_LIB_CLK_IMO_FTW_TIMEOUT (0x00u)
  275. #define CY_LIB_IMO_3MHZ_VALUE (0x03u)
  276. #define CY_LIB_IMO_6MHZ_VALUE (0x01u)
  277. #define CY_LIB_IMO_12MHZ_VALUE (0x00u)
  278. #define CY_LIB_IMO_24MHZ_VALUE (0x02u)
  279. #define CY_LIB_IMO_48MHZ_VALUE (0x04u)
  280. #define CY_LIB_IMO_62MHZ_VALUE (0x05u)
  281. #define CY_LIB_IMO_74MHZ_VALUE (0x06u)
  282. /* CyIMO_SetFreq() */
  283. #define CY_IMO_FREQ_3MHZ (0u)
  284. #define CY_IMO_FREQ_6MHZ (1u)
  285. #define CY_IMO_FREQ_12MHZ (2u)
  286. #define CY_IMO_FREQ_24MHZ (3u)
  287. #define CY_IMO_FREQ_48MHZ (4u)
  288. #define CY_IMO_FREQ_62MHZ (5u)
  289. #if(CY_PSOC5)
  290. #define CY_IMO_FREQ_74MHZ (6u)
  291. #endif /* (CY_PSOC5) */
  292. #define CY_IMO_FREQ_USB (8u)
  293. #define CY_LIB_IMO_USBCLK_ON_SET (0x40u)
  294. /* CyCpuClk_SetDivider() */
  295. #define CY_LIB_CLKDIST_DIV_POSITION (4u)
  296. #define CY_LIB_CLKDIST_MSTR1_DIV_MASK (0x0Fu)
  297. /* CyIMO_SetTrimValue() */
  298. #define CY_LIB_USB_CLK_EN (0x02u)
  299. /* CyPLL_OUT_SetSource() - parameters */
  300. #define CY_PLL_SOURCE_IMO (0u)
  301. #define CY_PLL_SOURCE_XTAL (1u)
  302. #define CY_PLL_SOURCE_DSI (2u)
  303. /* CyILO_[Start|Stop][1|100K](), CyILO_[Enable|Disable]33K() */
  304. #define CY_LIB_SLOWCLK_ILO_CR0_EN_1KHZ (0x02u)
  305. #define CY_LIB_SLOWCLK_ILO_CR0_EN_33KHZ (0x20u)
  306. #define CY_LIB_SLOWCLK_ILO_CR0_EN_100KHZ (0x04u)
  307. /* CyUsbClk_SetSource() */
  308. #define CY_LIB_CLKDIST_UCFG_SRC_SEL_MASK (0x03u)
  309. /* CyUsbClk_SetSource() - parameters */
  310. #define CY_LIB_USB_CLK_IMO2X (0x00u)
  311. #define CY_LIB_USB_CLK_IMO (0x01u)
  312. #define CY_LIB_USB_CLK_PLL (0x02u)
  313. #define CY_LIB_USB_CLK_DSI (0x03u)
  314. /* CyUSB_PowerOnCheck() */
  315. #define CY_ACT_USB_ENABLED (0x01u)
  316. #define CY_ALT_ACT_USB_ENABLED (0x01u)
  317. #if(CY_PSOC5)
  318. /***************************************************************************
  319. * Instruction Synchronization Barrier flushes the pipeline in the processor,
  320. * so that all instructions following the ISB are fetched from cache or
  321. * memory, after the instruction has been completed.
  322. ***************************************************************************/
  323. #if defined(__ARMCC_VERSION)
  324. #define CY_SYS_ISB __isb(0x0f)
  325. #else /* ASM for GCC & IAR */
  326. #define CY_SYS_ISB asm volatile ("isb \n")
  327. #endif /* (__ARMCC_VERSION) */
  328. #endif /* (CY_PSOC5) */
  329. /***************************************
  330. * Registers
  331. ***************************************/
  332. /*******************************************************************************
  333. * System Registers
  334. *******************************************************************************/
  335. /* Software Reset Control Register */
  336. #define CY_LIB_RESET_CR2_REG (* (reg8 *) CYREG_RESET_CR2)
  337. #define CY_LIB_RESET_CR2_PTR ( (reg8 *) CYREG_RESET_CR2)
  338. /* Timewheel Configuration Register 0 */
  339. #define CY_LIB_PM_TW_CFG0_REG (*(reg8 *) CYREG_PM_TW_CFG0)
  340. #define CY_LIB_PM_TW_CFG0_PTR ( (reg8 *) CYREG_PM_TW_CFG0)
  341. /* Timewheel Configuration Register 2 */
  342. #define CY_LIB_PM_TW_CFG2_REG (*(reg8 *) CYREG_PM_TW_CFG2)
  343. #define CY_LIB_PM_TW_CFG2_PTR ( (reg8 *) CYREG_PM_TW_CFG2)
  344. /* USB Configuration Register */
  345. #define CY_LIB_CLKDIST_UCFG_REG (*(reg8 *) CYREG_CLKDIST_UCFG)
  346. #define CY_LIB_CLKDIST_UCFG_PTR ( (reg8 *) CYREG_CLKDIST_UCFG)
  347. /* Internal Main Oscillator Trim Register 1 */
  348. #define CY_LIB_IMO_TR1_REG (*(reg8 *) CYREG_IMO_TR1)
  349. #define CY_LIB_IMO_TR1_PTR ( (reg8 *) CYREG_IMO_TR1)
  350. /* USB control 1 Register */
  351. #define CY_LIB_USB_CR1_REG (*(reg8 *) CYREG_USB_CR1 )
  352. #define CY_LIB_USB_CR1_PTR ( (reg8 *) CYREG_USB_CR1 )
  353. /* Active Power Mode Configuration Register 0 */
  354. #define CY_LIB_PM_ACT_CFG0_REG (*(reg8 *) CYREG_PM_ACT_CFG0)
  355. #define CY_LIB_PM_ACT_CFG0_PTR ( (reg8 *) CYREG_PM_ACT_CFG0)
  356. /* Standby Power Mode Configuration Register 0 */
  357. #define CY_LIB_PM_STBY_CFG0_REG (*(reg8 *) CYREG_PM_STBY_CFG0)
  358. #define CY_LIB_PM_STBY_CFG0_PTR ( (reg8 *) CYREG_PM_STBY_CFG0)
  359. /* Active Power Mode Configuration Register 5 */
  360. #define CY_LIB_PM_ACT_CFG5_REG (* (reg8 *) CYREG_PM_ACT_CFG5 )
  361. #define CY_LIB_PM_ACT_CFG5_PTR ( (reg8 *) CYREG_PM_ACT_CFG5 )
  362. /* Standby Power Mode Configuration Register 5 */
  363. #define CY_LIB_PM_STBY_CFG5_REG (* (reg8 *) CYREG_PM_STBY_CFG5 )
  364. #define CY_LIB_PM_STBY_CFG5_PTR ( (reg8 *) CYREG_PM_STBY_CFG5 )
  365. /* CyIMO_SetTrimValue() */
  366. #if(CY_PSOC3)
  367. #define CY_LIB_TRIM_IMO_3MHZ_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_3MHZ)
  368. #define CY_LIB_TRIM_IMO_6MHZ_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_6MHZ)
  369. #define CY_LIB_TRIM_IMO_12MHZ_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_12MHZ)
  370. #define CY_LIB_TRIM_IMO_24MHZ_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_24MHZ)
  371. #define CY_LIB_TRIM_IMO_67MHZ_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_67MHZ)
  372. #define CY_LIB_TRIM_IMO_80MHZ_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_80MHZ)
  373. #define CY_LIB_TRIM_IMO_USB_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_USB)
  374. #define CY_LIB_TRIM_IMO_TR1_PTR ((void far *) (CYREG_FLSHID_MFG_CFG_IMO_TR1 + 1u))
  375. #else
  376. #define CY_LIB_TRIM_IMO_3MHZ_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_3MHZ)
  377. #define CY_LIB_TRIM_IMO_6MHZ_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_6MHZ)
  378. #define CY_LIB_TRIM_IMO_12MHZ_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_12MHZ)
  379. #define CY_LIB_TRIM_IMO_24MHZ_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_24MHZ)
  380. #define CY_LIB_TRIM_IMO_67MHZ_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_67MHZ)
  381. #define CY_LIB_TRIM_IMO_80MHZ_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_80MHZ)
  382. #define CY_LIB_TRIM_IMO_USB_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_USB)
  383. #define CY_LIB_TRIM_IMO_TR1_PTR ((reg8 *) (CYREG_FLSHID_MFG_CFG_IMO_TR1 + 1u))
  384. #endif /* (CY_PSOC3) */
  385. /*******************************************************************************
  386. * PLL Registers
  387. *******************************************************************************/
  388. /* PLL Configuration Register 0 */
  389. #define CY_CLK_PLL_CFG0_REG (*(reg8 *) CYREG_FASTCLK_PLL_CFG0)
  390. #define CY_CLK_PLL_CFG0_PTR ( (reg8 *) CYREG_FASTCLK_PLL_CFG0)
  391. /* PLL Configuration Register 1 */
  392. #define CY_CLK_PLL_CFG1_REG (*(reg8 *) CYREG_FASTCLK_PLL_CFG1)
  393. #define CY_CLK_PLL_CFG1_PTR ( (reg8 *) CYREG_FASTCLK_PLL_CFG1)
  394. /* PLL Status Register */
  395. #define CY_CLK_PLL_SR_REG (*(reg8 *) CYREG_FASTCLK_PLL_SR)
  396. #define CY_CLK_PLL_SR_PTR ( (reg8 *) CYREG_FASTCLK_PLL_SR)
  397. /* PLL Q-Counter Configuration Register */
  398. #define CY_CLK_PLL_Q_REG (*(reg8 *) CYREG_FASTCLK_PLL_Q)
  399. #define CY_CLK_PLL_Q_PTR ( (reg8 *) CYREG_FASTCLK_PLL_Q)
  400. /* PLL P-Counter Configuration Register */
  401. #define CY_CLK_PLL_P_REG (*(reg8 *) CYREG_FASTCLK_PLL_P)
  402. #define CY_CLK_PLL_P_PTR ( (reg8 *) CYREG_FASTCLK_PLL_P)
  403. /*******************************************************************************
  404. * External MHz Crystal Oscillator Registers
  405. *******************************************************************************/
  406. /* External MHz Crystal Oscillator Status and Control Register */
  407. #define CY_CLK_XMHZ_CSR_REG (*(reg8 *) CYREG_FASTCLK_XMHZ_CSR)
  408. #define CY_CLK_XMHZ_CSR_PTR ( (reg8 *) CYREG_FASTCLK_XMHZ_CSR)
  409. /* External MHz Crystal Oscillator Configuration Register 0 */
  410. #define CY_CLK_XMHZ_CFG0_REG (*(reg8 *) CYREG_FASTCLK_XMHZ_CFG0)
  411. #define CY_CLK_XMHZ_CFG0_PTR ( (reg8 *) CYREG_FASTCLK_XMHZ_CFG0)
  412. /* External MHz Crystal Oscillator Configuration Register 1 */
  413. #define CY_CLK_XMHZ_CFG1_REG (*(reg8 *) CYREG_FASTCLK_XMHZ_CFG1)
  414. #define CY_CLK_XMHZ_CFG1_PTR ( (reg8 *) CYREG_FASTCLK_XMHZ_CFG1)
  415. /*******************************************************************************
  416. * External 32kHz Crystal Oscillator Registers
  417. *******************************************************************************/
  418. /* 32 kHz Watch Crystal Oscillator Trim Register */
  419. #define CY_CLK_XTAL32_TR_REG (*(reg8 *) CYREG_X32_TR)
  420. #define CY_CLK_XTAL32_TR_PTR ( (reg8 *) CYREG_X32_TR)
  421. /* External 32kHz Crystal Oscillator Test Register */
  422. #define CY_CLK_XTAL32_TST_REG (*(reg8 *) CYREG_SLOWCLK_X32_TST)
  423. #define CY_CLK_XTAL32_TST_PTR ( (reg8 *) CYREG_SLOWCLK_X32_TST)
  424. /* External 32kHz Crystal Oscillator Control Register */
  425. #define CY_CLK_XTAL32_CR_REG (*(reg8 *) CYREG_SLOWCLK_X32_CR)
  426. #define CY_CLK_XTAL32_CR_PTR ( (reg8 *) CYREG_SLOWCLK_X32_CR)
  427. /* External 32kHz Crystal Oscillator Configuration Register */
  428. #define CY_CLK_XTAL32_CFG_REG (*(reg8 *) CYREG_SLOWCLK_X32_CFG)
  429. #define CY_CLK_XTAL32_CFG_PTR ( (reg8 *) CYREG_SLOWCLK_X32_CFG)
  430. /*******************************************************************************
  431. * Watchdog Timer Registers
  432. *******************************************************************************/
  433. /* Watchdog Timer Configuration Register */
  434. #define CY_WDT_CFG_REG (*(reg8 *) CYREG_PM_WDT_CFG)
  435. #define CY_WDT_CFG_PTR ( (reg8 *) CYREG_PM_WDT_CFG)
  436. /* Watchdog Timer Control Register */
  437. #define CY_WDT_CR_REG (*(reg8 *) CYREG_PM_WDT_CR)
  438. #define CY_WDT_CR_PTR ( (reg8 *) CYREG_PM_WDT_CR)
  439. /*******************************************************************************
  440. * LVI/HVI Registers
  441. *******************************************************************************/
  442. #define CY_VD_LVI_TRIP_REG (* (reg8 *) CYREG_RESET_CR0)
  443. #define CY_VD_LVI_TRIP_PTR ( (reg8 *) CYREG_RESET_CR0)
  444. #define CY_VD_LVI_HVI_CONTROL_REG (* (reg8 *) CYREG_RESET_CR1)
  445. #define CY_VD_LVI_HVI_CONTROL_PTR ( (reg8 *) CYREG_RESET_CR1)
  446. #define CY_VD_PRES_CONTROL_REG (* (reg8 *) CYREG_RESET_CR3)
  447. #define CY_VD_PRES_CONTROL_PTR ( (reg8 *) CYREG_RESET_CR3)
  448. #define CY_VD_PERSISTENT_STATUS_REG (* (reg8 *) CYREG_RESET_SR0)
  449. #define CY_VD_PERSISTENT_STATUS_PTR ( (reg8 *) CYREG_RESET_SR0)
  450. #define CY_VD_RT_STATUS_REG (* (reg8 *) CYREG_RESET_SR2)
  451. #define CY_VD_RT_STATUS_PTR ( (reg8 *) CYREG_RESET_SR2)
  452. /*******************************************************************************
  453. * Variable VDDA
  454. *******************************************************************************/
  455. #if(CYDEV_VARIABLE_VDDA == 1)
  456. /* Active Power Mode Configuration Register 9 */
  457. #define CY_LIB_ACT_CFG9_REG (* (reg8 *) CYREG_PM_ACT_CFG9 )
  458. #define CY_LIB_ACT_CFG9_PTR ( (reg8 *) CYREG_PM_ACT_CFG9 )
  459. /* Switched Capacitor 0 Boost Clock Selection Register */
  460. #define CY_LIB_SC0_BST_REG (* (reg8 *) CYREG_SC0_BST )
  461. #define CY_LIB_SC0_BST_PTR ( (reg8 *) CYREG_SC0_BST )
  462. /* Switched Capacitor 1 Boost Clock Selection Register */
  463. #define CY_LIB_SC1_BST_REG (* (reg8 *) CYREG_SC1_BST )
  464. #define CY_LIB_SC1_BST_PTR ( (reg8 *) CYREG_SC1_BST )
  465. /* Switched Capacitor 2 Boost Clock Selection Register */
  466. #define CY_LIB_SC2_BST_REG (* (reg8 *) CYREG_SC2_BST )
  467. #define CY_LIB_SC2_BST_PTR ( (reg8 *) CYREG_SC2_BST )
  468. /* Switched Capacitor 3 Boost Clock Selection Register */
  469. #define CY_LIB_SC3_BST_REG (* (reg8 *) CYREG_SC3_BST )
  470. #define CY_LIB_SC3_BST_PTR ( (reg8 *) CYREG_SC3_BST )
  471. /* Switched Cap Miscellaneous Control Register */
  472. #define CY_LIB_SC_MISC_REG (* (reg8 *) CYREG_SC_MISC )
  473. #define CY_LIB_SC_MISC_PTR ( (reg8 *) CYREG_SC_MISC )
  474. #endif /* (CYDEV_VARIABLE_VDDA == 1) */
  475. /*******************************************************************************
  476. * Clock Distribution Registers
  477. *******************************************************************************/
  478. /* Analog Clock Mask Register */
  479. #define CY_LIB_CLKDIST_AMASK_REG (* (reg8 *) CYREG_CLKDIST_AMASK )
  480. #define CY_LIB_CLKDIST_AMASK_PTR ( (reg8 *) CYREG_CLKDIST_AMASK )
  481. /* Digital Clock Mask Register */
  482. #define CY_LIB_CLKDIST_DMASK_REG (*(reg8 *) CYREG_CLKDIST_DMASK)
  483. #define CY_LIB_CLKDIST_DMASK_PTR ( (reg8 *) CYREG_CLKDIST_DMASK)
  484. /* CLK_BUS Configuration Register */
  485. #define CY_LIB_CLKDIST_BCFG2_REG (*(reg8 *) CYREG_CLKDIST_BCFG2)
  486. #define CY_LIB_CLKDIST_BCFG2_PTR ( (reg8 *) CYREG_CLKDIST_BCFG2)
  487. /* LSB Shadow Divider Value Register */
  488. #define CY_LIB_CLKDIST_WRK_LSB_REG (*(reg8 *) CYREG_CLKDIST_WRK0)
  489. #define CY_LIB_CLKDIST_WRK_LSB_PTR ( (reg8 *) CYREG_CLKDIST_WRK0)
  490. /* MSB Shadow Divider Value Register */
  491. #define CY_LIB_CLKDIST_WRK_MSB_REG (*(reg8 *) CYREG_CLKDIST_WRK1)
  492. #define CY_LIB_CLKDIST_WRK_MSB_PTR ( (reg8 *) CYREG_CLKDIST_WRK1)
  493. /* LOAD Register */
  494. #define CY_LIB_CLKDIST_LD_REG (*(reg8 *) CYREG_CLKDIST_LD)
  495. #define CY_LIB_CLKDIST_LD_PTR ( (reg8 *) CYREG_CLKDIST_LD)
  496. /* CLK_BUS LSB Divider Value Register */
  497. #define CY_LIB_CLKDIST_BCFG_LSB_REG (*(reg8 *) CYREG_CLKDIST_BCFG0)
  498. #define CY_LIB_CLKDIST_BCFG_LSB_PTR ( (reg8 *) CYREG_CLKDIST_BCFG0)
  499. /* CLK_BUS MSB Divider Value Register */
  500. #define CY_LIB_CLKDIST_BCFG_MSB_REG (*(reg8 *) CYREG_CLKDIST_BCFG1)
  501. #define CY_LIB_CLKDIST_BCFG_MSB_PTR ( (reg8 *) CYREG_CLKDIST_BCFG1)
  502. /* Master clock (clk_sync_d) Divider Value Register */
  503. #define CY_LIB_CLKDIST_MSTR0_REG (*(reg8 *) CYREG_CLKDIST_MSTR0)
  504. #define CY_LIB_CLKDIST_MSTR0_PTR ( (reg8 *) CYREG_CLKDIST_MSTR0)
  505. /* Master (clk_sync_d) Configuration Register/CPU Divider Value */
  506. #define CY_LIB_CLKDIST_MSTR1_REG (*(reg8 *) CYREG_CLKDIST_MSTR1)
  507. #define CY_LIB_CLKDIST_MSTR1_PTR ( (reg8 *) CYREG_CLKDIST_MSTR1)
  508. /* Internal Main Oscillator Control Register */
  509. #define CY_LIB_FASTCLK_IMO_CR_REG (*(reg8 *) CYREG_FASTCLK_IMO_CR)
  510. #define CY_LIB_FASTCLK_IMO_CR_PTR ( (reg8 *) CYREG_FASTCLK_IMO_CR)
  511. /* Configuration Register CR */
  512. #define CY_LIB_CLKDIST_CR_REG (*(reg8 *) CYREG_CLKDIST_CR)
  513. #define CY_LIB_CLKDIST_CR_PTR ( (reg8 *) CYREG_CLKDIST_CR)
  514. /* Internal Low-speed Oscillator Control Register 0 */
  515. #define CY_LIB_SLOWCLK_ILO_CR0_REG (*(reg8 *) CYREG_SLOWCLK_ILO_CR0)
  516. #define CY_LIB_SLOWCLK_ILO_CR0_PTR ( (reg8 *) CYREG_SLOWCLK_ILO_CR0)
  517. /*******************************************************************************
  518. * Interrupt Registers
  519. *******************************************************************************/
  520. #if(CY_PSOC5)
  521. /* Interrupt Vector Table Offset */
  522. #define CY_INT_VECT_TABLE ((cyisraddress **) CYREG_NVIC_VECT_OFFSET)
  523. /* Interrupt Priority 0-31 */
  524. #define CY_INT_PRIORITY_REG (* (reg8 *) CYREG_NVIC_PRI_0)
  525. #define CY_INT_PRIORITY_PTR ( (reg8 *) CYREG_NVIC_PRI_0)
  526. /* Interrupt Enable Set 0-31 */
  527. #define CY_INT_ENABLE_REG (* (reg32 *) CYREG_NVIC_SETENA0)
  528. #define CY_INT_ENABLE_PTR ( (reg32 *) CYREG_NVIC_SETENA0)
  529. /* Interrupt Enable Clear 0-31 */
  530. #define CY_INT_CLEAR_REG (* (reg32 *) CYREG_NVIC_CLRENA0)
  531. #define CY_INT_CLEAR_PTR ( (reg32 *) CYREG_NVIC_CLRENA0)
  532. /* Interrupt Pending Set 0-31 */
  533. #define CY_INT_SET_PEND_REG (* (reg32 *) CYREG_NVIC_SETPEND0)
  534. #define CY_INT_SET_PEND_PTR ( (reg32 *) CYREG_NVIC_SETPEND0)
  535. /* Interrupt Pending Clear 0-31 */
  536. #define CY_INT_CLR_PEND_REG (* (reg32 *) CYREG_NVIC_CLRPEND0)
  537. #define CY_INT_CLR_PEND_PTR ( (reg32 *) CYREG_NVIC_CLRPEND0)
  538. /* Cache Control Register */
  539. #define CY_CACHE_CONTROL_REG (* (reg16 *) CYREG_CACHE_CC_CTL )
  540. #define CY_CACHE_CONTROL_PTR ( (reg16 *) CYREG_CACHE_CC_CTL )
  541. /* System tick registers */
  542. #define CY_SYS_SYST_CSR_REG (*(reg32 *) CYREG_NVIC_SYSTICK_CTL)
  543. #define CY_SYS_SYST_CSR_PTR ( (reg32 *) CYREG_NVIC_SYSTICK_CTL)
  544. #define CY_SYS_SYST_RVR_REG (*(reg32 *) CYREG_NVIC_SYSTICK_RELOAD)
  545. #define CY_SYS_SYST_RVR_PTR ( (reg32 *) CYREG_NVIC_SYSTICK_RELOAD)
  546. #define CY_SYS_SYST_CVR_REG (*(reg32 *) CYREG_NVIC_SYSTICK_CURRENT)
  547. #define CY_SYS_SYST_CVR_PTR ( (reg32 *) CYREG_NVIC_SYSTICK_CURRENT)
  548. #define CY_SYS_SYST_CALIB_REG (*(reg32 *) CYREG_NVIC_SYSTICK_CAL)
  549. #define CY_SYS_SYST_CALIB_PTR ( (reg32 *) CYREG_NVIC_SYSTICK_CAL)
  550. #elif (CY_PSOC3)
  551. /* Interrupt Address Vector registers */
  552. #define CY_INT_VECT_TABLE ((cyisraddress CYXDATA *) CYREG_INTC_VECT_MBASE)
  553. /* Interrupt Controller Priority Registers */
  554. #define CY_INT_PRIORITY_REG (* (reg8 *) CYREG_INTC_PRIOR0)
  555. #define CY_INT_PRIORITY_PTR ( (reg8 *) CYREG_INTC_PRIOR0)
  556. /* Interrupt Controller Set Enable Registers */
  557. #define CY_INT_ENABLE_REG (* (reg8 *) CYREG_INTC_SET_EN0)
  558. #define CY_INT_ENABLE_PTR ( (reg8 *) CYREG_INTC_SET_EN0)
  559. #define CY_INT_SET_EN0_REG (* (reg8 *) CYREG_INTC_SET_EN0)
  560. #define CY_INT_SET_EN0_PTR ( (reg8 *) CYREG_INTC_SET_EN0)
  561. #define CY_INT_SET_EN1_REG (* (reg8 *) CYREG_INTC_SET_EN1)
  562. #define CY_INT_SET_EN1_PTR ( (reg8 *) CYREG_INTC_SET_EN1)
  563. #define CY_INT_SET_EN2_REG (* (reg8 *) CYREG_INTC_SET_EN2)
  564. #define CY_INT_SET_EN2_PTR ( (reg8 *) CYREG_INTC_SET_EN2)
  565. #define CY_INT_SET_EN3_REG (* (reg8 *) CYREG_INTC_SET_EN3)
  566. #define CY_INT_SET_EN3_PTR ( (reg8 *) CYREG_INTC_SET_EN3)
  567. /* Interrupt Controller Clear Enable Registers */
  568. #define CY_INT_CLEAR_REG (* (reg8 *) CYREG_INTC_CLR_EN0)
  569. #define CY_INT_CLEAR_PTR ( (reg8 *) CYREG_INTC_CLR_EN0)
  570. #define CY_INT_CLR_EN0_REG (* (reg8 *) CYREG_INTC_CLR_EN0)
  571. #define CY_INT_CLR_EN0_PTR ( (reg8 *) CYREG_INTC_CLR_EN0)
  572. #define CY_INT_CLR_EN1_REG (* (reg8 *) CYREG_INTC_CLR_EN1)
  573. #define CY_INT_CLR_EN1_PTR ( (reg8 *) CYREG_INTC_CLR_EN1)
  574. #define CY_INT_CLR_EN2_REG (* (reg8 *) CYREG_INTC_CLR_EN2)
  575. #define CY_INT_CLR_EN2_PTR ( (reg8 *) CYREG_INTC_CLR_EN2)
  576. #define CY_INT_CLR_EN3_REG (* (reg8 *) CYREG_INTC_CLR_EN3)
  577. #define CY_INT_CLR_EN3_PTR ( (reg8 *) CYREG_INTC_CLR_EN3)
  578. /* Interrupt Controller Set Pend Registers */
  579. #define CY_INT_SET_PEND_REG (* (reg8 *) CYREG_INTC_SET_PD0)
  580. #define CY_INT_SET_PEND_PTR ( (reg8 *) CYREG_INTC_SET_PD0)
  581. /* Interrupt Controller Clear Pend Registers */
  582. #define CY_INT_CLR_PEND_REG (* (reg8 *) CYREG_INTC_CLR_PD0)
  583. #define CY_INT_CLR_PEND_PTR ( (reg8 *) CYREG_INTC_CLR_PD0)
  584. /* Access Interrupt Controller Registers based on interrupt number */
  585. #define CY_INT_SET_EN_INDX_PTR(number) ((reg8 *) (CYREG_INTC_SET_EN0 + (((number) & CY_INT_NUMBER_MASK) >> 3u)))
  586. #define CY_INT_CLR_EN_INDX_PTR(number) ((reg8 *) (CYREG_INTC_CLR_EN0 + (((number) & CY_INT_NUMBER_MASK) >> 3u)))
  587. #define CY_INT_CLR_PEND_INDX_PTR(number) ((reg8 *) (CYREG_INTC_CLR_PD0 + (((number) & CY_INT_NUMBER_MASK) >> 3u)))
  588. #define CY_INT_SET_PEND_INDX_PTR(number) ((reg8 *) (CYREG_INTC_SET_PD0 + (((number) & CY_INT_NUMBER_MASK) >> 3u)))
  589. #endif /* (CY_PSOC5) */
  590. /*******************************************************************************
  591. * Macro Name: CyAssert
  592. ********************************************************************************
  593. * Summary:
  594. * The macro that evaluates the expression and if it is false (evaluates to 0)
  595. * then the processor is halted.
  596. *
  597. * This macro is evaluated unless NDEBUG is defined.
  598. *
  599. * If NDEBUG is defined, then no code is generated for this macro. NDEBUG is
  600. * defined by default for a Release build setting and not defined for a Debug
  601. * build setting.
  602. *
  603. * Parameters:
  604. * expr: Logical expression. Asserts if false.
  605. *
  606. * Return:
  607. * None
  608. *
  609. *******************************************************************************/
  610. #if !defined(NDEBUG)
  611. #define CYASSERT(x) { \
  612. if(!(x)) \
  613. { \
  614. CyHalt((uint8) 0u); \
  615. } \
  616. }
  617. #else
  618. #define CYASSERT(x)
  619. #endif /* !defined(NDEBUG) */
  620. /* Reset register fields of RESET_SR0 (CyResetStatus) */
  621. #define CY_RESET_LVID (0x01u)
  622. #define CY_RESET_LVIA (0x02u)
  623. #define CY_RESET_HVIA (0x04u)
  624. #define CY_RESET_WD (0x08u)
  625. #define CY_RESET_SW (0x20u)
  626. #define CY_RESET_GPIO0 (0x40u)
  627. #define CY_RESET_GPIO1 (0x80u)
  628. /* Interrupt Controller Configuration and Status Register */
  629. #if(CY_PSOC3)
  630. #define INTERRUPT_CSR ((reg8 *) CYREG_INTC_CSR_EN)
  631. #define DISABLE_IRQ_SET ((uint8)(0x01u << 1u)) /* INTC_CSR_EN */
  632. #define INTERRUPT_DISABLE_IRQ {*INTERRUPT_CSR |= DISABLE_IRQ_SET;}
  633. #define INTERRUPT_ENABLE_IRQ {*INTERRUPT_CSR = (uint8)(~DISABLE_IRQ_SET);}
  634. #endif /* (CY_PSOC3) */
  635. #if defined(__ARMCC_VERSION)
  636. #define CyGlobalIntEnable {__enable_irq();}
  637. #define CyGlobalIntDisable {__disable_irq();}
  638. #elif defined(__GNUC__) || defined (__ICCARM__)
  639. #define CyGlobalIntEnable {__asm("CPSIE i");}
  640. #define CyGlobalIntDisable {__asm("CPSID i");}
  641. #elif defined(__C51__)
  642. #define CyGlobalIntEnable {\
  643. EA = 1u; \
  644. INTERRUPT_ENABLE_IRQ\
  645. }
  646. #define CyGlobalIntDisable {\
  647. INTERRUPT_DISABLE_IRQ; \
  648. CY_NOP; \
  649. EA = 0u;\
  650. }
  651. #else
  652. #error No compiler toolchain defined
  653. #define CyGlobalIntEnable
  654. #define CyGlobalIntDisable
  655. #endif /* (__ARMCC_VERSION) */
  656. #ifdef CYREG_MLOGIC_CPU_SCR_CPU_SCR
  657. #define CYDEV_HALT_CPU CY_SET_REG8(CYREG_MLOGIC_CPU_SCR_CPU_SCR, 0x01u)
  658. #else
  659. #define CYDEV_HALT_CPU CY_SET_REG8(CYREG_MLOGIC_CPU_SCR, 0x01u)
  660. #endif /* (CYREG_MLOGIC_CPU_SCR_CPU_SCR) */
  661. #ifdef CYREG_MLOGIC_REV_ID_REV_ID
  662. #define CYDEV_CHIP_REV_ACTUAL (CY_GET_REG8(CYREG_MLOGIC_REV_ID_REV_ID))
  663. #else
  664. #define CYDEV_CHIP_REV_ACTUAL (CY_GET_REG8(CYREG_MLOGIC_REV_ID))
  665. #endif /* (CYREG_MLOGIC_REV_ID_REV_ID) */
  666. /*******************************************************************************
  667. * System API constants
  668. *******************************************************************************/
  669. #define CY_CACHE_CONTROL_FLUSH (0x0004u)
  670. #define CY_LIB_RESET_CR2_RESET (0x01u)
  671. #if(CY_PSOC5)
  672. /* System tick API constants */
  673. #define CY_SYS_SYST_CSR_ENABLE ((uint32) (0x01u))
  674. #define CY_SYS_SYST_CSR_ENABLE_INT ((uint32) (0x02u))
  675. #define CY_SYS_SYST_CSR_CLK_SOURCE_SHIFT ((uint32) (0x02u))
  676. #define CY_SYS_SYST_CSR_COUNTFLAG_SHIFT ((uint32) (16u))
  677. #define CY_SYS_SYST_CSR_CLK_SRC_SYSCLK ((uint32) (1u))
  678. #define CY_SYS_SYST_CSR_CLK_SRC_LFCLK ((uint32) (0u))
  679. #define CY_SYS_SYST_RVR_CNT_MASK ((uint32) (0x00FFFFFFu))
  680. #define CY_SYS_SYST_NUM_OF_CALLBACKS ((uint32) (5u))
  681. #endif /* (CY_PSOC5) */
  682. /*******************************************************************************
  683. * Interrupt API constants
  684. *******************************************************************************/
  685. #if(CY_PSOC5)
  686. #define CY_INT_IRQ_BASE (16u)
  687. #elif (CY_PSOC3)
  688. #define CY_INT_IRQ_BASE (0u)
  689. #endif /* (CY_PSOC5) */
  690. /* Valid range of interrupt 0-31 */
  691. #define CY_INT_NUMBER_MAX (31u)
  692. /* Valid range of system interrupt 0-15 */
  693. #define CY_INT_SYS_NUMBER_MAX (15u)
  694. /* Valid range of system priority 0-7 */
  695. #define CY_INT_PRIORITY_MAX (7u)
  696. /* Mask to get valid range of interrupt 0-31 */
  697. #define CY_INT_NUMBER_MASK (0x1Fu)
  698. /* Mask to get valid range of system priority 0-7 */
  699. #define CY_INT_PRIORITY_MASK (0x7u)
  700. /* Mask to get valid range of system interrupt 0-15 */
  701. #define CY_INT_SYS_NUMBER_MASK (0xFu)
  702. #if(CY_PSOC5)
  703. /* CyIntSetSysVector()/CyIntGetSysVector() - parameter definitions */
  704. #define CY_INT_NMI_IRQN ( 2u) /* Non Maskable Interrupt */
  705. #define CY_INT_HARD_FAULT_IRQN ( 3u) /* Hard Fault Interrupt */
  706. #define CY_INT_MEM_MANAGE_IRQN ( 4u) /* Memory Management Interrupt */
  707. #define CY_INT_BUS_FAULT_IRQN ( 5u) /* Bus Fault Interrupt */
  708. #define CY_INT_USAGE_FAULT_IRQN ( 6u) /* Usage Fault Interrupt */
  709. #define CY_INT_SVCALL_IRQN (11u) /* SV Call Interrupt */
  710. #define CY_INT_DEBUG_MONITOR_IRQN (12u) /* Debug Monitor Interrupt */
  711. #define CY_INT_PEND_SV_IRQN (14u) /* Pend SV Interrupt */
  712. #define CY_INT_SYSTICK_IRQN (15u) /* System Tick Interrupt */
  713. #endif /* (CY_PSOC5) */
  714. /*******************************************************************************
  715. * Interrupt Macros
  716. *******************************************************************************/
  717. #if(CY_PSOC5)
  718. /*******************************************************************************
  719. * Macro Name: CyIntEnable
  720. ********************************************************************************
  721. *
  722. * Summary:
  723. * Enables the specified interrupt number.
  724. *
  725. * Parameters:
  726. * number: Valid range [0-31]. Interrupt number
  727. *
  728. * Return:
  729. * None
  730. *
  731. *******************************************************************************/
  732. #define CyIntEnable(number) CY_SET_REG32(CY_INT_ENABLE_PTR, ((uint32)((uint32)1u << (0x1Fu & (number)))))
  733. /*******************************************************************************
  734. * Macro Name: CyIntDisable
  735. ********************************************************************************
  736. *
  737. * Summary:
  738. * Disables the specified interrupt number.
  739. *
  740. * Parameters:
  741. * number: Valid range [0-31]. Interrupt number.
  742. *
  743. * Return:
  744. * None
  745. *
  746. *******************************************************************************/
  747. #define CyIntDisable(number) CY_SET_REG32(CY_INT_CLEAR_PTR, ((uint32)((uint32)1u << (0x1Fu & (number)))))
  748. /*******************************************************************************
  749. * Macro Name: CyIntSetPending
  750. ********************************************************************************
  751. *
  752. * Summary:
  753. * Forces the specified interrupt number to be pending.
  754. *
  755. * Parameters:
  756. * number: Valid range [0-31]. Interrupt number.
  757. *
  758. * Return:
  759. * None
  760. *
  761. *******************************************************************************/
  762. #define CyIntSetPending(number) CY_SET_REG32(CY_INT_SET_PEND_PTR, ((uint32)((uint32)1u << (0x1Fu & (number)))))
  763. /*******************************************************************************
  764. * Macro Name: CyIntClearPending
  765. ********************************************************************************
  766. *
  767. * Summary:
  768. * Clears any pending interrupt for the specified interrupt number.
  769. *
  770. * Parameters:
  771. * number: Valid range [0-31]. Interrupt number.
  772. *
  773. * Return:
  774. * None
  775. *
  776. *******************************************************************************/
  777. #define CyIntClearPending(number) CY_SET_REG32(CY_INT_CLR_PEND_PTR, ((uint32)((uint32)1u << (0x1Fu & (number)))))
  778. #else /* PSoC3 */
  779. /*******************************************************************************
  780. * Macro Name: CyIntEnable
  781. ********************************************************************************
  782. *
  783. * Summary:
  784. * Enables the specified interrupt number.
  785. *
  786. * Parameters:
  787. * number: Valid range [0-31]. Interrupt number
  788. *
  789. * Return:
  790. * None
  791. *
  792. *******************************************************************************/
  793. #define CyIntEnable(number) CY_SET_REG8(CY_INT_SET_EN_INDX_PTR((number)), \
  794. ((uint8)(1u << (0x07u & (number)))))
  795. /*******************************************************************************
  796. * Macro Name: CyIntDisable
  797. ********************************************************************************
  798. *
  799. * Summary:
  800. * Disables the specified interrupt number.
  801. *
  802. * Parameters:
  803. * number: Valid range [0-31]. Interrupt number.
  804. *
  805. * Return:
  806. * None
  807. *
  808. *******************************************************************************/
  809. #define CyIntDisable(number) CY_SET_REG8(CY_INT_CLR_EN_INDX_PTR((number)), \
  810. ((uint8)(1u << (0x07u & (number)))))
  811. /*******************************************************************************
  812. * Macro Name: CyIntSetPending
  813. ********************************************************************************
  814. *
  815. * Summary:
  816. * Forces the specified interrupt number to be pending.
  817. *
  818. * Parameters:
  819. * number: Valid range [0-31]. Interrupt number.
  820. *
  821. * Return:
  822. * None
  823. *
  824. *******************************************************************************/
  825. #define CyIntSetPending(number) CY_SET_REG8(CY_INT_SET_PEND_INDX_PTR((number)), \
  826. ((uint8)(1u << (0x07u & (number)))))
  827. /*******************************************************************************
  828. * Macro Name: CyIntClearPending
  829. ********************************************************************************
  830. * Summary:
  831. * Clears any pending interrupt for the specified interrupt number.
  832. *
  833. * Parameters:
  834. * number: Valid range [0-31]. Interrupt number.
  835. *
  836. * Return:
  837. * None
  838. *
  839. *******************************************************************************/
  840. #define CyIntClearPending(number) CY_SET_REG8(CY_INT_CLR_PEND_INDX_PTR((number)), \
  841. ((uint8)(1u << (0x07u & (number)))))
  842. #endif /* (CY_PSOC5) */
  843. /*******************************************************************************
  844. * The following code is OBSOLETE and must not be used.
  845. *
  846. * If the obsoleted macro definitions intended for use in the application use the
  847. * following scheme, redefine your own versions of these definitions:
  848. * #ifdef <OBSOLETED_DEFINE>
  849. * #undef <OBSOLETED_DEFINE>
  850. * #define <OBSOLETED_DEFINE> (<New Value>)
  851. * #endif
  852. *
  853. * Note: Redefine obsoleted macro definitions with caution. They might still be
  854. * used in the application and their modification might lead to unexpected
  855. * consequences.
  856. *******************************************************************************/
  857. #define CYGlobalIntEnable CyGlobalIntEnable
  858. #define CYGlobalIntDisable CyGlobalIntDisable
  859. #define cymemset(s,c,n) memset((s),(c),(n))
  860. #define cymemcpy(d,s,n) memcpy((d),(s),(n))
  861. #define MFGCFG_X32_TR_PTR (CY_CLK_XTAL32_TR_PTR)
  862. #define MFGCFG_X32_TR (CY_CLK_XTAL32_TR_REG)
  863. #define SLOWCLK_X32_TST_PTR (CY_CLK_XTAL32_TST_PTR)
  864. #define SLOWCLK_X32_TST (CY_CLK_XTAL32_TST_REG)
  865. #define SLOWCLK_X32_CR_PTR (CY_CLK_XTAL32_CR_PTR)
  866. #define SLOWCLK_X32_CR (CY_CLK_XTAL32_CR_REG)
  867. #define SLOWCLK_X32_CFG_PTR (CY_CLK_XTAL32_CFG_PTR)
  868. #define SLOWCLK_X32_CFG (CY_CLK_XTAL32_CFG_REG)
  869. #define X32_CONTROL_ANA_STAT (CY_CLK_XTAL32_CR_ANA_STAT)
  870. #define X32_CONTROL_DIG_STAT (0x10u)
  871. #define X32_CONTROL_LPM (CY_CLK_XTAL32_CR_LPM)
  872. #define X32_CONTROL_LPM_POSITION (1u)
  873. #define X32_CONTROL_X32EN (CY_CLK_XTAL32_CR_EN)
  874. #define X32_CONTROL_PDBEN (CY_CLK_XTAL32_CR_PDBEN)
  875. #define X32_TR_DPMODE (CY_CLK_XTAL32_TR_STARTUP)
  876. #define X32_TR_CLEAR (CY_CLK_XTAL32_TR_POWERDOWN)
  877. #define X32_TR_HPMODE (CY_CLK_XTAL32_TR_HIGH_POWER)
  878. #define X32_TR_LPMODE (CY_CLK_XTAL32_TR_LOW_POWER)
  879. #define X32_TST_SETALL (CY_CLK_XTAL32_TST_DEFAULT)
  880. #define X32_CFG_LP_BITS_MASK (CY_CLK_XTAL32_CFG_LP_MASK)
  881. #define X32_CFG_LP_DEFAULT (CY_CLK_XTAL32_CFG_LP_DEFAULT)
  882. #define X32_CFG_LOWPOWERMODE (0x80u)
  883. #define X32_CFG_LP_LOWPOWER (0x8u)
  884. #define CY_X32_HIGHPOWER_MODE (0u)
  885. #define CY_X32_LOWPOWER_MODE (1u)
  886. #define CY_XTAL32K_DIG_STAT (0x10u)
  887. #define CY_XTAL32K_STAT_FIELDS (0x30u)
  888. #define CY_XTAL32K_DIG_STAT_UNSTABLE (0u)
  889. #define CY_XTAL32K_ANA_STAT_UNSTABLE (0x0u)
  890. #define CY_XTAL32K_STATUS (0x20u)
  891. #define FASTCLK_XMHZ_CSR_PTR (CY_CLK_XMHZ_CSR_PTR)
  892. #define FASTCLK_XMHZ_CSR (CY_CLK_XMHZ_CSR_REG)
  893. #define FASTCLK_XMHZ_CFG0_PTR (CY_CLK_XMHZ_CFG0_PTR)
  894. #define FASTCLK_XMHZ_CFG0 (CY_CLK_XMHZ_CFG0_REG)
  895. #define FASTCLK_XMHZ_CFG1_PTR (CY_CLK_XMHZ_CFG1_PTR)
  896. #define FASTCLK_XMHZ_CFG1 (CY_CLK_XMHZ_CFG1_REG)
  897. #define FASTCLK_XMHZ_GAINMASK (CY_CLK_XMHZ_CFG0_XCFG_MASK)
  898. #define FASTCLK_XMHZ_VREFMASK (CY_CLK_XMHZ_CFG1_VREF_FB_MASK)
  899. #define FASTCLK_XMHZ_VREF_WD_MASK (CY_CLK_XMHZ_CFG1_VREF_WD_MASK)
  900. #define XMHZ_CONTROL_ENABLE (CY_CLK_XMHZ_CSR_ENABLE)
  901. #define X32_CONTROL_XERR_MASK (CY_CLK_XMHZ_CSR_XERR)
  902. #define X32_CONTROL_XERR_DIS (CY_CLK_XMHZ_CSR_XFB)
  903. #define X32_CONTROL_XERR_POSITION (7u)
  904. #define X32_CONTROL_FAULT_RECOVER (CY_CLK_XMHZ_CSR_XPROT)
  905. #define CYWDT_CFG (CY_WDT_CFG_PTR)
  906. #define CYWDT_CR (CY_WDT_CR_PTR)
  907. #define CYWDT_TICKS_MASK (CY_WDT_CFG_INTERVAL_MASK)
  908. #define CYWDT_RESET (CY_WDT_CFG_CTW_RESET)
  909. #define CYWDT_LPMODE_SHIFT (CY_WDT_CFG_LPMODE_SHIFT)
  910. #define CYWDT_LPMODE_MASK (CY_WDT_CFG_LPMODE_MASK)
  911. #define CYWDT_ENABLE_BIT (CY_WDT_CFG_WDR_EN)
  912. #define FASTCLK_PLL_CFG0_PTR (CY_CLK_PLL_CFG0_PTR)
  913. #define FASTCLK_PLL_CFG0 (CY_CLK_PLL_CFG0_REG)
  914. #define FASTCLK_PLL_SR_PTR (CY_CLK_PLL_SR_PTR)
  915. #define FASTCLK_PLL_SR (CY_CLK_PLL_SR_REG)
  916. #define MAX_FASTCLK_PLL_Q_VALUE (CY_CLK_PLL_MAX_Q_VALUE)
  917. #define MIN_FASTCLK_PLL_Q_VALUE (CY_CLK_PLL_MIN_Q_VALUE)
  918. #define MIN_FASTCLK_PLL_P_VALUE (CY_CLK_PLL_MIN_P_VALUE)
  919. #define MIN_FASTCLK_PLL_CUR_VALUE (CY_CLK_PLL_MIN_CUR_VALUE)
  920. #define MAX_FASTCLK_PLL_CUR_VALUE (CY_CLK_PLL_MAX_CUR_VALUE)
  921. #define PLL_CONTROL_ENABLE (CY_CLK_PLL_ENABLE)
  922. #define PLL_STATUS_LOCK (CY_CLK_PLL_LOCK_STATUS)
  923. #define PLL_STATUS_ENABLED (CY_CLK_PLL_ENABLE)
  924. #define PLL_CURRENT_POSITION (CY_CLK_PLL_CURRENT_POSITION)
  925. #define PLL_VCO_GAIN_2 (2u)
  926. #define FASTCLK_PLL_Q_PTR (CY_CLK_PLL_Q_PTR)
  927. #define FASTCLK_PLL_Q (CY_CLK_PLL_Q_REG)
  928. #define FASTCLK_PLL_P_PTR (CY_CLK_PLL_P_PTR)
  929. #define FASTCLK_PLL_P (CY_CLK_PLL_P_REG)
  930. #define FASTCLK_PLL_CFG1_PTR (CY_CLK_PLL_CFG1_REG)
  931. #define FASTCLK_PLL_CFG1 (CY_CLK_PLL_CFG1_REG)
  932. #define CY_VD_PRESISTENT_STATUS_REG (CY_VD_PERSISTENT_STATUS_REG)
  933. #define CY_VD_PRESISTENT_STATUS_PTR (CY_VD_PERSISTENT_STATUS_PTR)
  934. #if(CY_PSOC5)
  935. #define CYINT_IRQ_BASE (CY_INT_IRQ_BASE)
  936. #define CYINT_VECT_TABLE (CY_INT_VECT_TABLE)
  937. #define CYINT_PRIORITY (CY_INT_PRIORITY_PTR)
  938. #define CYINT_ENABLE (CY_INT_ENABLE_PTR)
  939. #define CYINT_CLEAR (CY_INT_CLEAR_PTR)
  940. #define CYINT_SET_PEND (CY_INT_SET_PEND_PTR)
  941. #define CYINT_CLR_PEND (CY_INT_CLR_PEND_PTR)
  942. #define CACHE_CC_CTL (CY_CACHE_CONTROL_PTR)
  943. #elif (CY_PSOC3)
  944. #define CYINT_IRQ_BASE (CY_INT_IRQ_BASE)
  945. #define CYINT_VECT_TABLE (CY_INT_VECT_TABLE)
  946. #define CYINT_PRIORITY (CY_INT_PRIORITY_PTR)
  947. #define CYINT_ENABLE (CY_INT_ENABLE_PTR)
  948. #define CYINT_CLEAR (CY_INT_CLEAR_PTR)
  949. #define CYINT_SET_PEND (CY_INT_SET_PEND_PTR)
  950. #define CYINT_CLR_PEND (CY_INT_CLR_PEND_PTR)
  951. #endif /* (CY_PSOC5) */
  952. #define BUS_AMASK_CLEAR (0xF0u)
  953. #define BUS_DMASK_CLEAR (0x00u)
  954. #define CLKDIST_LD_LOAD_SET (0x01u)
  955. #define CLKDIST_WRK0_MASK_SET (0x80u) /* Enable shadow loads */
  956. #define MASTERCLK_DIVIDER_VALUE (7u)
  957. #define CLKDIST_BCFG2_SSS_SET (0x40u) /* Sync source is same frequency */
  958. #define MASTER_CLK_SRC_CLEAR (0xFCu)
  959. #define IMO_DOUBLER_ENABLE (0x10u)
  960. #define CLOCK_IMO_IMO (0x20u)
  961. #define CLOCK_IMO2X_XTAL (0x40u)
  962. #define CLOCK_IMO_RANGE_CLEAR (0xF8u)
  963. #define CLOCK_CONTROL_DIST_MASK (0xFCu)
  964. #define CLKDIST_AMASK (*(reg8 *) CYREG_CLKDIST_AMASK)
  965. #define CLKDIST_AMASK_PTR ( (reg8 *) CYREG_CLKDIST_AMASK)
  966. #define CLKDIST_DMASK_PTR ( (reg8 *) CYREG_CLKDIST_DMASK)
  967. #define CLKDIST_DMASK (*(reg8 *) CYREG_CLKDIST_DMASK)
  968. #define CLKDIST_BCFG2_PTR ( (reg8 *) CYREG_CLKDIST_BCFG2)
  969. #define CLKDIST_BCFG2 (*(reg8 *) CYREG_CLKDIST_BCFG2)
  970. #define CLKDIST_WRK0_PTR ( (reg8 *) CYREG_CLKDIST_WRK0)
  971. #define CLKDIST_WRK0 (*(reg8 *) CYREG_CLKDIST_WRK0)
  972. #define CLKDIST_LD_PTR ( (reg8 *) CYREG_CLKDIST_LD)
  973. #define CLKDIST_LD (*(reg8 *) CYREG_CLKDIST_LD)
  974. #define CLKDIST_BCFG0_PTR ( (reg8 *) CYREG_CLKDIST_BCFG0)
  975. #define CLKDIST_BCFG0 (*(reg8 *) CYREG_CLKDIST_BCFG0)
  976. #define CLKDIST_MSTR0_PTR ( (reg8 *) CYREG_CLKDIST_MSTR0)
  977. #define CLKDIST_MSTR0 (*(reg8 *) CYREG_CLKDIST_MSTR0)
  978. #define FASTCLK_IMO_CR_PTR ( (reg8 *) CYREG_FASTCLK_IMO_CR)
  979. #define FASTCLK_IMO_CR (*(reg8 *) CYREG_FASTCLK_IMO_CR)
  980. #define CLKDIST_CR_PTR ( (reg8 *) CYREG_CLKDIST_CR)
  981. #define CLKDIST_CR (*(reg8 *) CYREG_CLKDIST_CR)
  982. #define IMO_PM_ENABLE (0x10u)
  983. #define PM_ACT_CFG0_PTR ( (reg8 *) CYREG_PM_ACT_CFG0)
  984. #define PM_ACT_CFG0 (*(reg8 *) CYREG_PM_ACT_CFG0)
  985. #define SLOWCLK_ILO_CR0_PTR ( (reg8 *) CYREG_SLOWCLK_ILO_CR0)
  986. #define SLOWCLK_ILO_CR0 (*(reg8 *) CYREG_SLOWCLK_ILO_CR0)
  987. #define ILO_CONTROL_PD_MODE (0x10u)
  988. #define ILO_CONTROL_PD_POSITION (4u)
  989. #define ILO_CONTROL_1KHZ_ON (0x02u)
  990. #define ILO_CONTROL_100KHZ_ON (0x04u)
  991. #define ILO_CONTROL_33KHZ_ON (0x20u)
  992. #define PM_TW_CFG0_PTR ( (reg8 *) CYREG_PM_TW_CFG0)
  993. #define PM_TW_CFG0 (*(reg8 *) CYREG_PM_TW_CFG0)
  994. #define PM_TW_CFG2_PTR ( (reg8 *) CYREG_PM_TW_CFG2)
  995. #define PM_TW_CFG2 (*(reg8 *) CYREG_PM_TW_CFG2)
  996. #define RESET_CR2 ((reg8 *) CYREG_RESET_CR2)
  997. #define FASTCLK_IMO_USBCLK_ON_SET (0x40u)
  998. #define CLOCK_IMO_3MHZ_VALUE (0x03u)
  999. #define CLOCK_IMO_6MHZ_VALUE (0x01u)
  1000. #define CLOCK_IMO_12MHZ_VALUE (0x00u)
  1001. #define CLOCK_IMO_24MHZ_VALUE (0x02u)
  1002. #define CLOCK_IMO_48MHZ_VALUE (0x04u)
  1003. #define CLOCK_IMO_62MHZ_VALUE (0x05u)
  1004. #define CLOCK_IMO_74MHZ_VALUE (0x06u)
  1005. #define CLKDIST_DIV_POSITION (4u)
  1006. #define CLKDIST_MSTR1_DIV_CLEAR (0x0Fu)
  1007. #define SFR_USER_CPUCLK_DIV_MASK (0x0Fu)
  1008. #define CLOCK_USB_ENABLE (0x02u)
  1009. #define CLOCK_IMO_OUT_X2 (0x10u)
  1010. #define CLOCK_IMO_OUT_X1 ((uint8)(~CLOCK_IMO_OUT_X2))
  1011. #define CLOCK_IMO2X_ECO ((uint8)(~CLOCK_IMO2X_DSI))
  1012. #define USB_CLKDIST_CONFIG_MASK (0x03u)
  1013. #define USB_CLK_IMO2X (0x00u)
  1014. #define USB_CLK_IMO (0x01u)
  1015. #define USB_CLK_PLL (0x02u)
  1016. #define USB_CLK_DSI (0x03u)
  1017. #define USB_CLK_DIV2_ON (0x04u)
  1018. #define USB_CLK_STOP_FLAG (0x00u)
  1019. #define USB_CLK_START_FLAG (0x01u)
  1020. #define FTW_CLEAR_ALL_BITS (0x00u)
  1021. #define FTW_CLEAR_FTW_BITS (0xFCu)
  1022. #define FTW_ENABLE (0x01u)
  1023. #define PM_STBY_CFG0_PTR ( (reg8 *) CYREG_PM_STBY_CFG0)
  1024. #define PM_STBY_CFG0 (*(reg8 *) CYREG_PM_STBY_CFG0)
  1025. #define PM_AVAIL_CR2_PTR ( (reg8 *) CYREG_PM_AVAIL_CR2)
  1026. #define PM_AVAIL_CR2 (*(reg8 *) CYREG_PM_AVAIL_CR2)
  1027. #define CLKDIST_UCFG_PTR ( (reg8 *) CYREG_CLKDIST_UCFG)
  1028. #define CLKDIST_UCFG (*(reg8 *) CYREG_CLKDIST_UCFG)
  1029. #define CLKDIST_MSTR1_PTR ( (reg8 *) CYREG_CLKDIST_MSTR1)
  1030. #define CLKDIST_MSTR1 (*(reg8 *) CYREG_CLKDIST_MSTR1)
  1031. #define SFR_USER_CPUCLK_DIV_PTR ((void far *) CYREG_SFR_USER_CPUCLK_DIV)
  1032. #define IMO_TR1_PTR ( (reg8 *) CYREG_IMO_TR1)
  1033. #define IMO_TR1 (*(reg8 *) CYREG_IMO_TR1)
  1034. #define CLOCK_CONTROL ( (reg8 *) CYREG_CLKDIST_CR)
  1035. #define CY_USB_CR1_PTR ( (reg8 *) CYREG_USB_CR1 )
  1036. #define CY_USB_CR1 (*(reg8 *) CYREG_USB_CR1 )
  1037. #define USB_CLKDIST_CONFIG_PTR ( (reg8 *) CYREG_CLKDIST_UCFG)
  1038. #define USB_CLKDIST_CONFIG (*(reg8 *) CYREG_CLKDIST_UCFG)
  1039. #define CY_PM_ACT_CFG5_REG (* (reg8 *) CYREG_PM_ACT_CFG5 )
  1040. #define CY_PM_ACT_CFG5_PTR ( (reg8 *) CYREG_PM_ACT_CFG5 )
  1041. #define CY_PM_STBY_CFG5_REG (* (reg8 *) CYREG_PM_STBY_CFG5 )
  1042. #define CY_PM_STBY_CFG5_PTR ( (reg8 *) CYREG_PM_STBY_CFG5 )
  1043. #if(CY_PSOC3)
  1044. #define FLSHID_CUST_TABLES_IMO_3MHZ_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_3MHZ)
  1045. #define FLSHID_CUST_TABLES_IMO_6MHZ_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_6MHZ)
  1046. #define FLSHID_CUST_TABLES_IMO_12MHZ_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_12MHZ)
  1047. #define FLSHID_CUST_TABLES_IMO_24MHZ_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_24MHZ)
  1048. #define FLSHID_CUST_TABLES_IMO_67MHZ_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_67MHZ)
  1049. #define FLSHID_CUST_TABLES_IMO_80MHZ_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_80MHZ)
  1050. #define FLSHID_CUST_TABLES_IMO_USB_PTR ((void far *) CYREG_FLSHID_CUST_TABLES_IMO_USB)
  1051. #define FLSHID_MFG_CFG_IMO_TR1_PTR ((void far *) (CYREG_FLSHID_MFG_CFG_IMO_TR1 + 1u))
  1052. #else
  1053. #define FLSHID_CUST_TABLES_IMO_3MHZ_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_3MHZ)
  1054. #define FLSHID_CUST_TABLES_IMO_6MHZ_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_6MHZ)
  1055. #define FLSHID_CUST_TABLES_IMO_12MHZ_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_12MHZ)
  1056. #define FLSHID_CUST_TABLES_IMO_24MHZ_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_24MHZ)
  1057. #define FLSHID_CUST_TABLES_IMO_67MHZ_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_67MHZ)
  1058. #define FLSHID_CUST_TABLES_IMO_80MHZ_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_80MHZ)
  1059. #define FLSHID_CUST_TABLES_IMO_USB_PTR ((reg8 *) CYREG_FLSHID_CUST_TABLES_IMO_USB)
  1060. #define FLSHID_MFG_CFG_IMO_TR1_PTR ((reg8 *) (CYREG_FLSHID_MFG_CFG_IMO_TR1 + 1u))
  1061. #endif /* (CY_PSOC3) */
  1062. #endif /* (CY_BOOT_CYLIB_H) */
  1063. /* [] END OF FILE */