00001
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef PLL_DRV_H
00042 #define PLL_DRV_H
00043
00044
00045
00049
00050
00054 #define PLLx24 ( (0<<PLLP2) | (0<<PLLP1) | (0<<PLLP0) )
00055 #define PLLx12 ( (0<<PLLP2) | (0<<PLLP1) | (1<<PLLP0) )
00056 #define PLLx08 ( (0<<PLLP2) | (1<<PLLP1) | (0<<PLLP0) )
00057 #define PLLx06 ( (0<<PLLP2) | (1<<PLLP1) | (1<<PLLP0) )
00058 #define PLLx04 ( (1<<PLLP2) | (0<<PLLP1) | (0<<PLLP0) )
00059
00060 #ifdef __ICCAVR__
00061 #if (defined(__AT90USB1287__) || defined(__AT90USB1286__))
00062 #define PLLx03 ( (1<<PLLP2) | (0<<PLLP1) | (1<<PLLP0) )
00063 #elif (defined(__AT90USB647__) || defined(__AT90USB646__))
00064 #define PLLx03 ( (1<<PLLP2) | (1<<PLLP1) | (0<<PLLP0) )
00065 #else
00066 #error TARGET should be defined
00067 #endif
00068 #elif defined __GNUC__
00069 #if (defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__))
00070 #define PLLx03 ( (1<<PLLP2) | (0<<PLLP1) | (1<<PLLP0) )
00071 #elif (defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB646__))
00072 #define PLLx03 ( (1<<PLLP2) | (1<<PLLP1) | (0<<PLLP0) )
00073 #endif
00074 #else // Other compiler
00075 #error Compiler unknow
00076 #endif
00077
00078 #define PLLx04_8 ( (1<<PLLP2) | (1<<PLLP1) | (0<<PLLP0) )
00079 #define PLLx02 ( (1<<PLLP2) | (1<<PLLP1) | (1<<PLLP0) )
00080
00081
00086 #define Start_pll(clockfactor) \
00087 (PLLCSR = ( clockfactor | (1<<PLLE) ))
00088
00090 #define Is_pll_ready() (PLLCSR & (1<<PLOCK) )
00091
00093 #define Wait_pll_ready() while (!(PLLCSR & (1<<PLOCK)))
00094
00096 #define Stop_pll() (PLLCSR &= (~(1<<PLLE)),PLLCSR=0 )
00097
00098
00099 #ifdef CUSTOM_PLL_START_AUTO
00100 #define Pll_start_auto() CUSTOM_PLL_START_AUTO
00101 #else
00102
00103
00104 #if (FOSC==2000)
00107 #define Pll_start_auto() Start_pll(PLLx24)
00108 #elif (FOSC==4000)
00109 #define Pll_start_auto() Start_pll(PLLx12)
00110 #elif (FOSC==6000)
00111 #define Pll_start_auto() Start_pll(PLLx08)
00112 #elif (FOSC==8000)
00115 #define Pll_start_auto() Start_pll(PLLx06)
00116 #elif (FOSC==12000)
00117 #define Pll_start_auto() Start_pll(PLLx04)
00118 #elif (FOSC==16000)
00119 #define Pll_start_auto() Start_pll(PLLx03)
00120 #elif (FOSC==20000)
00121 #define Pll_start_auto() Start_pll(PLLx04_8)
00122 #elif (FOSC==24000)
00123 #define Pll_start_auto() Start_pll(PLLx02)
00124 #else
00125 #error "FOSC should be defined in config.h"
00126 #endif
00127 #endif
00128
00130
00132 #endif // PLL_DRV_H
00133
00134