64 #define CLOCK_SOURCE 8000000ul
66 #define DEVCFG2 0xBFC02FF4
68 #define PLLIDIV_MASK 0x7
70 static const uint16_t FPPLIDIV[8] = { 1, 2, 3, 4, 5, 6, 10, 12 };
71 static const uint16_t PLLODIV[8] = { 1, 2, 4, 8, 16, 32, 64, 256 };
72 static const uint16_t PLLMULT[8] = { 15, 16, 17, 18, 19, 20, 21, 24 };
73 static const uint16_t PBDIV[4] = { 1, 2, 4, 8 };
85 PLLMULT[(uint32_t) OSCCONbits.PLLMULT] /
86 (FPPLIDIV[(*((uint32_t *) DEVCFG2)) & PLLIDIV_MASK] *
87 PLLODIV[(uint32_t) OSCCONbits.PLLODIV]);
102 pic32_clock_calculate_brg(uint32_t mul, uint32_t desired)
107 uint32_t obtained[3];
112 brg[0] = fp / (mul * desired);
113 brg[1] = fp / (mul * desired) - 1;
114 brg[2] = fp / (mul * desired) - 2;
116 obtained[0] = fp / (mul * (brg[0] + 1));
117 obtained[1] = fp / (mul * (brg[1] + 1));
118 obtained[2] = fp / (mul * (brg[2] + 1));
120 err[0] = obtained[0] - desired;
121 err[1] = obtained[1] - desired;
122 err[2] = obtained[2] - desired;
124 err[0] = err[0] < 0 ? -err[0] : err[0];
125 err[1] = err[1] < 0 ? -err[1] : err[1];
126 err[2] = err[2] < 0 ? -err[2] : err[2];
129 min = err[1] < err[min] ? 1 : min;
130 min = err[2] < err[min] ? 2 : min;
uint32_t pic32_clock_get_peripheral_clock(void)
Calculate the peripheral clock.
uint32_t pic32_clock_get_system_clock(void)
Calculate the system clock.
CLOCK interface for PIC32MX (pic32mx795f512l)