En un software de demostración de Olimex para PIC32-MAXI-WEB, las palabras de configuración para el osc se establecen de la siguiente manera:
/** CONFIGURATION **************************************************/
#pragma config FNOSC = PRIPLL // Oscillator Selection
#pragma config FPLLMUL = MUL_20 // PLL Multiplier
#pragma config FPLLIDIV = DIV_2 // PLL Input Divider
#pragma config FPLLODIV = DIV_1 // PLL Output Divider
#pragma config FPBDIV = DIV_1 // Peripheral Clock divisor
Existen las siguientes macros para obtener las velocidades de reloj;
#define SYS_CLOCK (80000000ul)
#define GetSystemClock() (SYS_CLOCK)
#define GetPeripheralClock() (SYS_CLOCK/2)
#define GetInstructionClock() (SYS_CLOCK)
El reloj principal debe ser 8MHz / 2 * 20/1 = 80
¿Es PeripheralClock = SYS_CLOCK / 2 un error / error tipográfico, ya que el FPBDIV está configurado en 1. Traté de buscarlo en la hoja de datos. ¿Existe realmente un error, o hay algún tipo de división interna por 2 que siempre está activa o activada por alguna otra condición / registro? (Al igual que el reloj de instrucciones fue FOsc / 4 en algunos dispositivos)