/* * File: hwconfig.cpp * Author: naopross */ #include "hwconfig.hpp" extern "C" { #include } void hw::reglock() { SYSKEY = 0x00000000; } void hw::regunlock() { SYSKEY = 0x12345678; SYSKEY = 0xAA996655; SYSKEY = 0x556699AA; } void osc::initialize() { hw::regunlock(); // CF no clock failure; // COSC FRCDIV; // PLLODIV DIV_256; // UFRCEN disabled; // PBDIVRDY disabled; // SLOCK out of lock; // FRCDIV FRC/1; // SLPEN Idle on WAIT instruction; // NOSC FRCDIV; PLLMULT MUL_24; // SOSCEN disabled; // PBDIV DIV_8; // CLKLOCK unlocked; // OSWEN Switch is Complete; // SOSCRDY disabled; OSCCON = 0x381F7700; hw::reglock(); // TUN Center Frequency; OSCTUN = 0x0; // DIVSWEN disabled; // RSLP disabled; // ACTIVE Active; // ROSEL SYSCLK; // OE Not Driven out on REFCLKO pin; // SIDL disabled; // RODIV 0; // ON disabled; REFOCON = 0x100; // ROTRIM 0; REFOTRIM = 0x0; } void interrupts::initialize() { // Enable the multi vector INTCONbits.MVEC = 1; // Enable Global Interrupts __builtin_mtc0(12,0,(__builtin_mfc0(12,0) | 0x0001)); }