1 | /*******************************************************************************
|
---|
2 | * DISCLAIMER
|
---|
3 | * This software is supplied by Renesas Electronics Corporation and is only
|
---|
4 | * intended for use with Renesas products. No other uses are authorized. This
|
---|
5 | * software is owned by Renesas Electronics Corporation and is protected under
|
---|
6 | * all applicable laws, including copyright laws.
|
---|
7 | * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
---|
8 | * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
|
---|
9 | * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
|
---|
10 | * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
|
---|
11 | * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
|
---|
12 | * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
|
---|
13 | * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
|
---|
14 | * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
|
---|
15 | * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
---|
16 | * Renesas reserves the right, without notice, to make changes to this software
|
---|
17 | * and to discontinue the availability of this software. By using this software,
|
---|
18 | * you agree to the additional terms and conditions found by accessing the
|
---|
19 | * following link:
|
---|
20 | * http://www.renesas.com/disclaimer
|
---|
21 | * Copyright (C) 2012 - 2014 Renesas Electronics Corporation. All rights reserved.
|
---|
22 | *******************************************************************************/
|
---|
23 | /*******************************************************************************
|
---|
24 | * File Name : rza_io_regrw.c
|
---|
25 | * $Rev: 1121 $
|
---|
26 | * $Date:: 2014-08-06 17:09:53 +0900#$
|
---|
27 | * Description : Low level register read/write
|
---|
28 | *******************************************************************************/
|
---|
29 |
|
---|
30 | /******************************************************************************
|
---|
31 | Includes <System Includes> , "Project Includes"
|
---|
32 | ******************************************************************************/
|
---|
33 | #include "r_typedefs.h"
|
---|
34 |
|
---|
35 | #ifdef __CC_ARM
|
---|
36 | #pragma arm section code = "CODE_IO_REGRW"
|
---|
37 | #pragma arm section rodata = "CONST_IO_REGRW"
|
---|
38 | #pragma arm section rwdata = "DATA_IO_REGRW"
|
---|
39 | #pragma arm section zidata = "BSS_IO_REGRW"
|
---|
40 | #endif
|
---|
41 |
|
---|
42 | /******************************************************************************
|
---|
43 | Typedef definitions
|
---|
44 | ******************************************************************************/
|
---|
45 |
|
---|
46 |
|
---|
47 | /******************************************************************************
|
---|
48 | Macro definitions
|
---|
49 | ******************************************************************************/
|
---|
50 |
|
---|
51 |
|
---|
52 | /******************************************************************************
|
---|
53 | Imported global variables and functions (from other files)
|
---|
54 | ******************************************************************************/
|
---|
55 |
|
---|
56 |
|
---|
57 | /******************************************************************************
|
---|
58 | Exported global variables and functions (to be accessed by other files)
|
---|
59 | ******************************************************************************/
|
---|
60 |
|
---|
61 |
|
---|
62 | /******************************************************************************
|
---|
63 | Private global variables and functions
|
---|
64 | ******************************************************************************/
|
---|
65 |
|
---|
66 |
|
---|
67 | /******************************************************************************
|
---|
68 | * Function Name: RZA_IO_RegWrite_8
|
---|
69 | * Description : IO register 8-bit write
|
---|
70 | * Arguments : volatile uint8_t * ioreg : IO register for writing
|
---|
71 | * : : Use register definition name of the
|
---|
72 | * : : iodefine.h
|
---|
73 | * : uint8_t write_value : Write value for the IO register
|
---|
74 | * : uint8_t shift : The number of left shifts to the
|
---|
75 | * : : target bit
|
---|
76 | * : uint8_t mask : Mask value for the IO register
|
---|
77 | * : : (Target bit : "1")
|
---|
78 | * Return Value : None
|
---|
79 | ******************************************************************************/
|
---|
80 | void RZA_IO_RegWrite_8(volatile uint8_t * ioreg, uint8_t write_value, uint8_t shift, uint8_t mask)
|
---|
81 | {
|
---|
82 | uint8_t reg_value;
|
---|
83 |
|
---|
84 | reg_value = *ioreg; /* Read from register */
|
---|
85 | reg_value = (reg_value & (~mask)) | (write_value << shift); /* Modify value */
|
---|
86 | *ioreg = reg_value; /* Write to register */
|
---|
87 | }
|
---|
88 |
|
---|
89 | /******************************************************************************
|
---|
90 | * Function Name: RZA_IO_RegWrite_16
|
---|
91 | * Description : IO register 16-bit write
|
---|
92 | * Arguments : volatile uint16_t * ioreg : IO register for writing
|
---|
93 | * : : Use register definition name of the
|
---|
94 | * : : iodefine.h
|
---|
95 | * : uint16_t write_value : Write value for the IO register
|
---|
96 | * : uint16_t shift : The number of left shifts to the
|
---|
97 | * : : target bit
|
---|
98 | * : uint16_t mask : Mask value for the IO register
|
---|
99 | * : : (Target bit : "1")
|
---|
100 | * Return Value : None
|
---|
101 | ******************************************************************************/
|
---|
102 | void RZA_IO_RegWrite_16(volatile uint16_t * ioreg, uint16_t write_value, uint16_t shift, uint16_t mask)
|
---|
103 | {
|
---|
104 | uint16_t reg_value;
|
---|
105 |
|
---|
106 | reg_value = *ioreg; /* Read from register */
|
---|
107 | reg_value = (reg_value & (~mask)) | (write_value << shift); /* Modify value */
|
---|
108 | *ioreg = reg_value; /* Write to register */
|
---|
109 | }
|
---|
110 |
|
---|
111 | /******************************************************************************
|
---|
112 | * Function Name: RZA_IO_RegWrite_32
|
---|
113 | * Description : IO register 32-bit write
|
---|
114 | * Arguments : volatile uint32_t * ioreg : IO register for writing
|
---|
115 | * : : Use register definition name of the
|
---|
116 | * : : iodefine.h
|
---|
117 | * : uint32_t write_value : Write value for the IO register
|
---|
118 | * : uint32_t shift : The number of left shifts to the
|
---|
119 | * : : target bit
|
---|
120 | * : uint32_t mask : Mask value for the IO register
|
---|
121 | * : : (Target bit : "1")
|
---|
122 | * Return Value : None
|
---|
123 | ******************************************************************************/
|
---|
124 | void RZA_IO_RegWrite_32(volatile uint32_t * ioreg, uint32_t write_value, uint32_t shift, uint32_t mask)
|
---|
125 | {
|
---|
126 | uint32_t reg_value;
|
---|
127 |
|
---|
128 | reg_value = *ioreg; /* Read from register */
|
---|
129 | reg_value = (reg_value & (~mask)) | (write_value << shift); /* Modify value */
|
---|
130 | *ioreg = reg_value; /* Write to register */
|
---|
131 | }
|
---|
132 |
|
---|
133 | /******************************************************************************
|
---|
134 | * Function Name: RZA_IO_RegRead_8
|
---|
135 | * Description : IO register 8-bit read
|
---|
136 | * Arguments : volatile uint8_t * ioreg : IO register for reading
|
---|
137 | * : : Use register definition name of the
|
---|
138 | * : : iodefine.h
|
---|
139 | * : uint8_t shift : The number of right shifts to the
|
---|
140 | * : : target bit
|
---|
141 | * : uint8_t mask : Mask bit for the IO register
|
---|
142 | * : : (Target bit: "1")
|
---|
143 | * Return Value : uint8_t : Value of the obtained target bit
|
---|
144 | ******************************************************************************/
|
---|
145 | uint8_t RZA_IO_RegRead_8(volatile uint8_t * ioreg, uint8_t shift, uint8_t mask)
|
---|
146 | {
|
---|
147 | uint8_t reg_value;
|
---|
148 |
|
---|
149 | reg_value = *ioreg; /* Read from register */
|
---|
150 | reg_value = (reg_value & mask) >> shift; /* Clear other bit and Bit shift */
|
---|
151 |
|
---|
152 | return reg_value;
|
---|
153 | }
|
---|
154 |
|
---|
155 | /******************************************************************************
|
---|
156 | * Function Name: RZA_IO_RegRead_16
|
---|
157 | * Description : IO register 16-bit read
|
---|
158 | * Arguments : volatile uint16_t * ioreg : IO register for reading
|
---|
159 | * : : Use register definition name of the
|
---|
160 | * : : iodefine.h
|
---|
161 | * : uint16_t shift : The number of right shifts to the
|
---|
162 | * : : target bit
|
---|
163 | * : uint16_t mask : Mask bit for the IO register
|
---|
164 | * : : (Target bit: "1")
|
---|
165 | * Return Value : uint16_t : Value of the obtained target bit
|
---|
166 | ******************************************************************************/
|
---|
167 | uint16_t RZA_IO_RegRead_16(volatile uint16_t * ioreg, uint16_t shift, uint16_t mask)
|
---|
168 | {
|
---|
169 | uint16_t reg_value;
|
---|
170 |
|
---|
171 | reg_value = *ioreg; /* Read from register */
|
---|
172 | reg_value = (reg_value & mask) >> shift; /* Clear other bit and Bit shift */
|
---|
173 |
|
---|
174 | return reg_value;
|
---|
175 | }
|
---|
176 |
|
---|
177 | /******************************************************************************
|
---|
178 | * Function Name: RZA_IO_RegRead_32
|
---|
179 | * Description : IO register 32-bit read
|
---|
180 | * Arguments : volatile uint32_t * ioreg : IO register for reading
|
---|
181 | * : : Use register definition name of the
|
---|
182 | * : : iodefine.h
|
---|
183 | * : uint32_t shift : The number of right shifts to the
|
---|
184 | * : : target bit
|
---|
185 | * : uint32_t mask : Mask bit for the IO register
|
---|
186 | * : : (Target bit: "1")
|
---|
187 | * Return Value : uint32_t : Value of the obtained target bit
|
---|
188 | ******************************************************************************/
|
---|
189 | uint32_t RZA_IO_RegRead_32(volatile uint32_t * ioreg, uint32_t shift, uint32_t mask)
|
---|
190 | {
|
---|
191 | uint32_t reg_value;
|
---|
192 |
|
---|
193 | reg_value = *ioreg; /* Read from register */
|
---|
194 | reg_value = (reg_value & mask) >> shift; /* Clear other bit and Bit shift */
|
---|
195 |
|
---|
196 | return reg_value;
|
---|
197 | }
|
---|
198 |
|
---|
199 |
|
---|
200 | /* End of File */
|
---|