/* | |
* RegisterWriteProtect.c | |
* | |
* Created on: 4 Mar 2014 | |
* Author: WarnerR | |
*/ | |
#include "../iodefine.h" | |
#include "stdint.h" | |
#define PRC0_BIT 0x0001 | |
#define PRC1_BIT 0x0002 | |
#define PRC3_BIT 0x0008 | |
void EnablePRCR( uint16_t protect ) | |
{ | |
/* | |
* PRCR Bit Register to be Protected | |
* ----------------------------------------------------------------------------------------------------------------------------------------- | |
* PRC0 Registers related to the clock generation circuit: | |
* SCKCR, SCKCR2, SCKCR3, PLLCR, PLLCR2, BCKCR, MOSCCR, SOSCCR, LOCOCR, ILOCOCR, HOCOCR, HOCOCR2, OSTDCR, OSTDSR | |
* | |
* PRC1 Registers related to the operating modes: | |
* SYSCR0, SYSCR1 | |
* | |
* Registers related to the low power consumption functions: | |
* SBYCR, MSTPCRA, MSTPCRB, MSTPCRC, MSTPCRD, OPCCR, RSTCKCR, DPSBYCR, DPSIER0 to DPSIER3, DPSIFR0 to DPSIFR3, DPSIEGR0 to DPSIEGR3 | |
* | |
* Registers related to clock generation circuit: | |
* MOSCWTCR, SOSCWTCR, MOFCR, HOCOPCR | |
* | |
* Software reset register: | |
* SWRR | |
* | |
* PRC3 Registers related to the LVD: | |
* LVCMPCR, LVDLVLR, LVD1CR0, LVD1CR1, LVD1SR, LVD2CR0, LVD2CR1, LVD2SR | |
*/ | |
SYSTEM.PRCR.WORD = (uint16_t)( 0xA500 | protect ); | |
} | |
void DisablePRCR( uint16_t protect ) | |
{ | |
/* | |
* PRCR Bit Register to be Protected | |
* ----------------------------------------------------------------------------------------------------------------------------------------- | |
* PRC0 Registers related to the clock generation circuit: | |
* SCKCR, SCKCR2, SCKCR3, PLLCR, PLLCR2, BCKCR, MOSCCR, SOSCCR, LOCOCR, ILOCOCR, HOCOCR, HOCOCR2, OSTDCR, OSTDSR | |
* | |
* PRC1 Registers related to the operating modes: | |
* SYSCR0, SYSCR1 | |
* | |
* Registers related to the low power consumption functions: | |
* SBYCR, MSTPCRA, MSTPCRB, MSTPCRC, MSTPCRD, OPCCR, RSTCKCR, DPSBYCR, DPSIER0 to DPSIER3, DPSIFR0 to DPSIFR3, DPSIEGR0 to DPSIEGR3 | |
* | |
* Registers related to clock generation circuit: | |
* MOSCWTCR, SOSCWTCR, MOFCR, HOCOPCR | |
* | |
* Software reset register: | |
* SWRR | |
* | |
* PRC3 Registers related to the LVD: | |
* LVCMPCR, LVDLVLR, LVD1CR0, LVD1CR1, LVD1SR, LVD2CR0, LVD2CR1, LVD2SR | |
*/ | |
uint16_t current_value; | |
current_value = (uint16_t)( SYSTEM.PRCR.WORD & 0x00ff ); | |
current_value = (uint16_t)( current_value & ~protect ); | |
SYSTEM.PRCR.WORD = (uint16_t)( 0xA500 | current_value ); | |
} | |