00001
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 #ifndef _POWER_CLOCKS_LIB_H_
00050 #define _POWER_CLOCKS_LIB_H_
00051
00052 #ifdef __cplusplus
00053 extern "C" {
00054 #endif
00055
00056 #include <avr32/io.h>
00057 #include "compiler.h"
00058
00059 #ifndef AVR32_PM_VERSION_RESETVALUE
00060
00061 #include "pm.h"
00062 #else
00064 #if (( defined (__GNUC__) && ( defined (__AVR32_UC3L016__) || defined (__AVR32_UC3L032__) || defined (__AVR32_UC3L064__))) \
00065 ||(defined (__ICCAVR32__) && (defined (__AT32UC3L016__) || defined (__AT32UC3L032__) || defined (__AT32UC3L064__) )))
00066 #include "pm_uc3l.h"
00067 #include "scif_uc3l.h"
00068 #include "flashcdw.h"
00069 #elif ( defined (__GNUC__) && ( defined (__AVR32_UC3C064C__) || defined (__AVR32_UC3C0128C__) || defined (__AVR32_UC3C0256C__) || defined (__AVR32_UC3C0512CREVC__) || defined (__AVR32_UC3C164C__) || defined (__AVR32_UC3C1128C__) || defined (__AVR32_UC3C1256C__) || defined (__AVR32_UC3C1512CREVC__) || defined (__AVR32_UC3C264C__) || defined (__AVR32_UC3C2128C__) || defined (__AVR32_UC3C2256C__) || defined (__AVR32_UC3C2512CREVC__))) \
00070 ||( defined (__ICCAVR32__) && ( defined (__AT32UC3C064C__) || defined (__AT32UC3C0128C__) || defined (__AT32UC3C0256C__) || defined (__AT32UC3C0512C__) || defined (__AT32UC3C164C__) || defined (__AT32UC3C1128C__) || defined (__AT32UC3C1256C__) || defined (__AT32UC3C1512C__) || defined (__AT32UC3C264C__) || defined (__AT32UC3C2128C__) || defined (__AT32UC3C2256C__) || defined (__AT32UC3C2512C__)))
00071 #include "pm_uc3c.h"
00072 #include "scif_uc3c.h"
00073 #include "flashc.h"
00074 #endif
00075 #endif
00076
00079
00080
00082 typedef enum
00083 {
00084 PCL_OSC0 = 0,
00085 PCL_OSC1 = 1
00086 } pcl_osc_t;
00087
00089 typedef enum
00090 {
00091 PCL_DFLL0 = 0,
00092 PCL_DFLL1 = 1
00093 } pcl_dfll_t;
00094
00096 typedef enum
00097 {
00098 PCL_MC_RCSYS,
00099 PCL_MC_OSC0,
00100 PCL_MC_OSC1,
00101 PCL_MC_OSC0_PLL0,
00102 PCL_MC_OSC1_PLL0,
00103 PCL_MC_OSC0_PLL1,
00104 PCL_MC_OSC1_PLL1,
00105 PCL_MC_DFLL0,
00106 PCL_MC_DFLL1,
00107 PCL_MC_RC120M,
00108 PCL_MC_RC8M,
00109 PCL_MC_CRIPOSC
00110 } pcl_mainclk_t;
00111
00113
00114 #ifndef AVR32_PM_VERSION_RESETVALUE
00115
00116 #define pcl_freq_param_t pm_freq_param_t // See pm.h
00117 #else
00118
00119 typedef struct
00120 {
00122 pcl_mainclk_t main_clk_src;
00123
00125 unsigned long cpu_f;
00126
00128 unsigned long pba_f;
00129
00131 unsigned long pbb_f;
00132
00134 unsigned long pbc_f;
00135
00137 unsigned long osc0_f;
00138
00140 unsigned long osc0_startup;
00141
00143 unsigned long dfll_f;
00144
00146
00147
00148 void *pextra_params;
00149 } pcl_freq_param_t;
00150 #endif
00151
00153 #define PCL_NOT_SUPPORTED (-10000)
00154
00177 extern long int pcl_configure_clocks(pcl_freq_param_t *param);
00178
00203 extern long int pcl_configure_clocks_rcsys(pcl_freq_param_t *param);
00204
00229 extern long int pcl_configure_clocks_rc120m(pcl_freq_param_t *param);
00230
00258 extern long int pcl_configure_clocks_osc0(pcl_freq_param_t *param);
00259
00291 extern long int pcl_configure_clocks_dfll0(pcl_freq_param_t *param);
00292
00303 extern long int pcl_switch_to_osc(pcl_osc_t osc, unsigned int fcrystal, unsigned int startup);
00304
00316 #ifndef AVR32_PM_VERSION_RESETVALUE
00317
00318 #define pcl_enable_module(module) pm_enable_module(&AVR32_PM, module)
00319 #else
00320
00321 #define pcl_enable_module(module) pm_enable_module(module)
00322 #endif
00323
00335 #ifndef AVR32_PM_VERSION_RESETVALUE
00336
00337 #define pcl_disable_module(module) pm_disable_module(&AVR32_PM, module)
00338 #else
00339
00340 #define pcl_disable_module(module) pm_disable_module(module)
00341 #endif
00342
00350 extern long int pcl_configure_usb_clock(void);
00351
00353
00356
00357
00363 extern unsigned long pcl_read_gplp(unsigned long gplp);
00364
00365
00371 extern void pcl_write_gplp(unsigned long gplp, unsigned long value);
00372
00374
00375 #ifdef __cplusplus
00376 }
00377 #endif
00378
00379 #endif // _POWER_CLOCKS_LIB_H_