2 ; MSP430fr2433 minimal declarations for Fast FORTH usage
6 DEVICE = "MSP430FR2433"
8 HMPY ; hardware multiplier
9 FLL ; Frequency Locked Loop CLOCK
10 ; ----------------------------------------------
11 ; MSP430FR2433 MEMORY MAP
12 ; ----------------------------------------------
13 ; 0000-0FFF = peripherals (4 KB)
14 ; 1000-17FF = ROM bootstrap loader BSL1 (2k)
15 ; 1800-19FF = info B (FRAM 512 B)
16 ; 1A00-1A7F = TLV device descriptor info (FRAM 128 B)
18 ; 2000-2FFF = RAM (4 KB)
20 ; C400-FF7F = code memory (FRAM 15232 B)
21 ; FF80-FFFF = interrupt vectors (FRAM 128 B)
22 ; FFC00-FFFFF = BSL2 (2k)
23 ; ----------------------------------------------
24 PAGESIZE .equ 512 ; MPU unit
25 ; ----------------------------------------------
27 ; ----------------------------------------------
30 ; ----------------------------------------------
32 ; ----------------------------------------------
35 TLV_ORG .equ 01A00h ; Device Descriptor Info (Tag-Lenght-Value)
37 ; ----------------------------------------------
39 ; ----------------------------------------------
42 ; ----------------------------------------------
44 ; ----------------------------------------------
45 MAIN_ORG .equ 0C400h ; Code space start
46 ; ----------------------------------------------
47 ; Interrupt Vectors and signatures
48 ; ----------------------------------------------
49 SIGNATURES .equ 0FF80h ; JTAG/BSL signatures
50 JTAG_SIG1 .equ 0FF80h ; if 0 (electronic fuse=0) enable JTAG/SBW ; reset by wipe and by S1+<reset>
51 JTAG_SIG2 .equ 0FF82h ; if JTAG_SIG <> |0xFFFFFFFF, 0x00000000|, SBW and JTAG are locked
52 BSL_SIG1 .equ 0FF84h ;
53 BSL_SIG2 .equ 0FF86h ;
54 JTAG_PASSWORD .equ 0FF88h ; 256 bits
55 BSL_PASSWORD .equ 0FFE0h ; 256 bits
56 I2CSLA0 .equ 0FFA2h ; UCBxI2COA0 default value address
57 I2CSLA1 .equ 0FFA4h ; UCBxI2COA1 default value address
58 I2CSLA2 .equ 0FFA6h ; UCBxI2COA2 default value address
59 I2CSLA3 .equ 0FFA8h ; UCBxI2COA3 default value address
60 VECT_ORG .equ 0FFDAh ; FFDA-FFFF
62 ; ----------------------------------------------
64 ; ----------------------------------------------
65 ; Interrupt Vectors and signatures - MSP430FR243x
66 ; ----------------------------------------------
68 ;;Start of JTAG and BSL signatures
69 ; .word 0FFFFh ; JTAG signature 1
70 ; .word 0FFFFh ; JTAG signature 2
71 ; .word 0FFFFh ; BSL signature 1, 5555h to disable BSL
72 ; .word 0FFFFh ; BSL signature 2
74 ; .org INTVECT ; FFDA-FFFF 18 vectors + reset
76 ; .word reset ; FFDAh - P2
77 ; .word reset ; FFDCh - P1
78 ; .word reset ; FFDEh - ADC10
79 ; .word reset ; FFE0h - eUSCI_B0
80 ; .word reset ; FFE2h - eUSCI_A1
81 ; .word reset ; FFE4h - eUSCI_A0
82 ; .word reset ; FFE6h - WDT
83 ; .word reset ; FFE8h - RTC
84 ; .word reset ; FFEAh - TA3_x
85 ; .word reset ; FFECh - TA3_0
86 ; .word reset ; FFEEh - TA2_x
87 ; .word reset ; FFF0h - TA2_0
88 ; .word reset ; FFF2h - TA1_x
89 ; .word reset ; FFF4h - TA1_0
90 ; .word reset ; FFF6h - TA0_x
91 ; .word reset ; FFF8h - TA0_0
92 ; .word reset ; FFFAh - UserNMI
93 ; .word reset ; FFFCh - SysNMI
94 ; .word reset ; FFFEh - Reset
95 ; ----------------------------------------------------------------------
96 ; MSP430FR2433 Peripheral File Map
97 ; ----------------------------------------------------------------------
98 SFR_SFR .equ 0100h ; Special function
99 PMM_SFR .equ 0120h ; PMM
100 SYS_SFR .equ 0140h ; SYS
101 CS_SFR .equ 0180h ; Clock System
102 FRAM_SFR .equ 01A0h ; FRAM control
104 WDT_A_SFR .equ 01CCh ; Watchdog
105 PA_SFR .equ 0200h ; PORT1/2
106 PB_SFR .equ 0220h ; PORT3
113 eUSCI_A0_SFR .equ 0500h ; eUSCI_A0
114 eUSCI_A1_SFR .equ 0520h ; eUSCI_A1
115 eUSCI_B0_SFR .equ 0540h ; eUSCI_B0
116 BACK_MEM_SFR .equ 0660h
117 ADC10_B_SFR .equ 0700h
119 ; ----------------------------------------------------------------------
120 ; POWER ON RESET AND INITIALIZATION : LOCK PMM_LOCKLPM5
121 ; ----------------------------------------------------------------------
123 SFRIFG1 .equ SFR_SFR + 2
124 SFRRPCR .equ SFR_SFR + 4
129 PM5CTL0 .equ PMM_SFR + 10h ; Power mode 5 control register 0
130 LOCKLPM5 .equ 1 ; bit position
132 ; ----------------------------------------------------------------------
133 ; POWER ON RESET SYS config
134 ; ----------------------------------------------------------------------
135 SYSCTL .equ SYS_SFR + 00h ; System control
136 SYSBSLC .equ SYS_SFR + 02h ; Bootstrap loader configuration area
137 SYSJMBC .equ SYS_SFR + 06h ; JTAG mailbox control
138 SYSJMBI0 .equ SYS_SFR + 08h ; JTAG mailbox input 0
139 SYSJMBI1 .equ SYS_SFR + 0Ah ; JTAG mailbox input 1
140 SYSJMBO0 .equ SYS_SFR + 0Ch ; JTAG mailbox output 0
141 SYSJMBO1 .equ SYS_SFR + 0Eh ; JTAG mailbox output 1
142 SYSBERRIV .equ SYS_SFR + 18h ; Bus Error vector generator
143 SYSUNIV .equ SYS_SFR + 1Ah ; User NMI vector generator
144 SYSSNIV .equ SYS_SFR + 1Ch ; System NMI vector generator
145 SYSRSTIV .equ SYS_SFR + 1Eh ; Reset vector generator
146 SYSCFG0 .equ SYS_SFR + 20h ; System configuration 0
147 SYSCFG1 .equ SYS_SFR + 22h ; System configuration 1
148 SYSCFG2 .equ SYS_SFR + 24h ; System configuration 2
153 ; ----------------------------------------------------------------------
154 ; POWER ON RESET AND INITIALIZATION : WATCHDOG TIMER A
155 ; ----------------------------------------------------------------------
156 WDTCTL .equ WDT_A_SFR + 00h ; Watchdog Timer Control */
158 ; WDTCTL Control Bits
160 WDTHOLD .equ 0080h ; WDT - Timer hold
161 WDTCNTCL .equ 0008h ; WDT timer counter clear
163 ; ----------------------------------------------------------------------
165 ; ----------------------------------------------------------------------
166 FRCTL0 .equ FRAM_SFR + 00h ; FRAM Controller Control 0
167 FRCTL0_H .equ FRAM_SFR + 01h ; FRAM Controller Control 0 high byte
169 ; ----------------------------------------------------------------------
170 ; POWER ON RESET AND INITIALIZATION : CLOCK SYSTEM
171 ; ----------------------------------------------------------------------
172 CSCTL0 .equ CS_SFR + 00h ; Clock System Control Register 0
173 CSCTL1 .equ CS_SFR + 02h ; Clock System Control Register 1
174 CSCTL2 .equ CS_SFR + 04h ; Clock System Control Register 2
175 CSCTL3 .equ CS_SFR + 06h ; Clock System Control Register 3
176 CSCTL4 .equ CS_SFR + 08h ; Clock System Control Register 4
177 CSCTL5 .equ CS_SFR + 0Ah ; Clock System Control Register 5
178 CSCTL6 .equ CS_SFR + 0Ch ; Clock System Control Register 6
179 CSCTL7 .equ CS_SFR + 0Eh ; Clock System Control Register 7
180 CSCTL8 .equ CS_SFR + 10h ; Clock System Control Register 8
182 ; ----------------------------------------------------------------------
183 ; POWER ON RESET AND INITIALIZATION : PORT1/2
184 ; ----------------------------------------------------------------------
185 PAIN .equ PA_SFR + 00h ; Port A Input
186 PAOUT .equ PA_SFR + 02h ; Port A Output
187 PADIR .equ PA_SFR + 04h ; Port A Direction
188 PAREN .equ PA_SFR + 06h ; Port A Resistor Enable
189 PASEL0 .equ PA_SFR + 0Ah ; Port A Selection 0
190 PASEL1 .equ PA_SFR + 0Ch ; Port A Selection 1
191 PASELC .equ PA_SFR + 16h ; Port A Complement Selection
192 PAIES .equ PA_SFR + 18h ; Port A Interrupt Edge Select
193 PAIE .equ PA_SFR + 1Ah ; Port A Interrupt Enable
194 PAIFG .equ PA_SFR + 1Ch ; Port A Interrupt Flag
196 P1IN .equ PA_SFR + 00h ; Port 1 Input
197 P1OUT .equ PA_SFR + 02h ; Port 1 Output
198 P1DIR .equ PA_SFR + 04h ; Port 1 Direction
199 P1REN .equ PA_SFR + 06h ; Port 1 Resistor Enable
200 P1SEL0 .equ PA_SFR + 0Ah ; Port 1 Selection 0
201 P1SEL1 .equ PA_SFR + 0Ch ; Port 1 Selection 1
202 P1IV .equ PA_SFR + 0Eh ; Port 1 Interrupt Vector word
203 P1IES .equ PA_SFR + 18h ; Port 1 Interrupt Edge Select
204 P1IE .equ PA_SFR + 1Ah ; Port 1 Interrupt Enable
205 P1IFG .equ PA_SFR + 1Ch ; Port 1 Interrupt Flag
207 P2IN .equ PA_SFR + 01h ; Port 2 Input
208 P2OUT .equ PA_SFR + 03h ; Port 2 Output
209 P2DIR .equ PA_SFR + 05h ; Port 2 Direction
210 P2REN .equ PA_SFR + 07h ; Port 2 Resistor Enable
211 P2SEL0 .equ PA_SFR + 0Bh ; Port 2 Selection 0
212 P2SEL1 .equ PA_SFR + 0Dh ; Port 2 Selection 1
213 P2IES .equ PA_SFR + 19h ; Port 2 Interrupt Edge Select
214 P2IE .equ PA_SFR + 1Bh ; Port 2 Interrupt Enable
215 P2IFG .equ PA_SFR + 1Dh ; Port 2 Interrupt Flag
216 P2IV .equ PA_SFR + 1Eh ; Port 2 Interrupt Vector word
218 ; ----------------------------------------------------------------------
219 ; POWER ON RESET AND INITIALIZATION : PORT3
220 ; ----------------------------------------------------------------------
221 P3IN .equ PB_SFR + 00h ; Port 3 Input */
222 P3OUT .equ PB_SFR + 02h ; Port 3 Output
223 P3DIR .equ PB_SFR + 04h ; Port 3 Direction
224 P3REN .equ PB_SFR + 06h ; Port 3 Resistor Enable
225 P3SEL0 .equ PB_SFR + 0Ah ; Port 3 Selection 0
226 P3SEL1 .equ PB_SFR + 0Ch ; Port 3 Selection 1
228 ; ----------------------------------------------------------------------
230 ; ----------------------------------------------------------------------
231 RTCCTL .equ RTC_SFR + 00h ; Real-Time Clock Control
232 RTCIV .equ RTC_SFR + 04h ; Real-Time Clock Interrupt Vector
233 RTCMOD .equ RTC_SFR + 08h ; Real-Timer Clock Modulo
234 RTCCNT .equ RTC_SFR + 0Ch ; Real-Time Clock Counter
236 ; ----------------------------------------------------------------------
238 ; ----------------------------------------------------------------------
239 MPY .equ MPY_SFR + 00h ; Multiply16 Unsigned/Operand 1 */
240 MPYS .equ MPY_SFR + 02h ; Multiply16 signed/Operand 1
241 MAC .equ MPY_SFR + 04h ; MultiplyAccumulate16 Unsigned/Operand 1 */
242 MACS .equ MPY_SFR + 06h ; MultiplyAccumulate16 signed/Operand 1
243 OP2 .equ MPY_SFR + 08h ; Operand2_16 */
244 RESLO .equ MPY_SFR + 0Ah ; 16x16-bit result low - least significant word */
245 RESHI .equ MPY_SFR + 0Ch ; 16x16-bit result high */
246 SUMEXT .equ MPY_SFR + 0Eh ; 16x16-bit sum extension register
247 MPY32L .equ MPY_SFR + 10h ; Multiply32 Unsigned/Operand 1
248 MPY32H .equ MPY_SFR + 12h ; Multiply32 Unsigned/Operand 1
249 MPYS32L .equ MPY_SFR + 14h ; Multiply32 signed/Operand 1
250 MPYS32H .equ MPY_SFR + 16h ; Multiply32 signed/Operand 1
251 MAC32L .equ MPY_SFR + 18h ; MultiplyAccumulate32 Unsigned/Operand 1
252 MAC32H .equ MPY_SFR + 1Ah ; MultiplyAccumulate32 Unsigned/Operand 1
253 MACS32L .equ MPY_SFR + 1Ch ; MultiplyAccumulate32 signed/Operand 1
254 MACS32H .equ MPY_SFR + 1Eh ; MultiplyAccumulate32 signed/Operand 1
255 OP2L .equ MPY_SFR + 20h ; Multiply32 Operand 2
256 OP2H .equ MPY_SFR + 22h ; Multiply32 Operand 2
257 RES0 .equ MPY_SFR + 24h ; 32x32-bit result 0 - least significant word */
258 RES1 .equ MPY_SFR + 26h ; 32x32-bit result 1 */
259 RES2 .equ MPY_SFR + 28h ; 32x32-bit result 2 */
260 RES3 .equ MPY_SFR + 2Ah ; 32x32-bit result 3 */
261 MPY32CTL0 .equ MPY_SFR + 2Ch ; MPY32 control register 0
264 ; ----------------------------------------------------------------------
265 ; eUSCI_A0 as UCA0_TERM
266 ; ----------------------------------------------------------------------
267 TERM_CTLW0 .equ eUSCI_A0_SFR + 00h ; eUSCI_A0 Control Word Register 0
268 TERM_BRW .equ eUSCI_A0_SFR + 06h ; eUSCI_A0 Baud Word Rate 0
269 TERM_MCTLW .equ eUSCI_A0_SFR + 08h ; eUSCI_A0 Modulation Control
270 TERM_STATW .equ eUSCI_A0_SFR + 0Ah ; eUSCI_A0 status Word Register
271 TERM_RXBUF .equ eUSCI_A0_SFR + 0Ch ; eUSCI_A0 Receive Buffer
272 TERM_TXBUF .equ eUSCI_A0_SFR + 0Eh ; eUSCI_A0 Transmit Buffer
273 TERM_IE .equ eUSCI_A0_SFR + 1Ah ; eUSCI_A0 Interrupt Enable Register
274 TERM_IFG .equ eUSCI_A0_SFR + 1Ch ; eUSCI_A0 Interrupt Flags Register
276 TERM_VEC .equ 0FFE4h ; interrupt vector for eUSCI_A0
277 WAKE_UP .equ 1 ; UART RX interrupt
283 ; ----------------------------------------------------------------------
284 ; eUSCI_B0 as UCB0_SD
285 ; ----------------------------------------------------------------------
286 SD_CTLW0 .equ eUSCI_A0_SFR + 00h ; USCI_A0 Control Word Register 0
287 SD_BRW .equ eUSCI_A0_SFR + 06h ; USCI_A0 Baud Word Rate 0
288 SD_RXBUF .equ eUSCI_A0_SFR + 0Ch ; USCI_A0 Receive Buffer 8
289 SD_TXBUF .equ eUSCI_A0_SFR + 0Eh ; USCI_A0 Transmit Buffer 8
290 SD_IFG .equ eUSCI_A0_SFR + 2Ch ; USCI_A0 Interrupt Flags Register
295 ; ----------------------------------------------------------------------
296 ; eUSCI_A1 as UCA1_SD
297 ; ----------------------------------------------------------------------
298 SD_CTLW0 .equ eUSCI_A1_SFR + 00h ; USCI_A1 Control Word Register 0
299 SD_BRW .equ eUSCI_A1_SFR + 06h ; USCI_A1 Baud Word Rate 0
300 SD_RXBUF .equ eUSCI_A1_SFR + 0Ch ; USCI_A1 Receive Buffer 8
301 SD_TXBUF .equ eUSCI_A1_SFR + 0Eh ; USCI_A1 Transmit Buffer 8
302 SD_IFG .equ eUSCI_A1_SFR + 1Ch ; USCI_A1 Interrupt Flags Register
307 ; ----------------------------------------------------------------------
308 ; eUSCI_B0 as UCB0_TERM
309 ; ----------------------------------------------------------------------
310 TERM_CTLW0 .equ eUSCI_B0_SFR + 00h ; USCI_B0 Control Word Register 0
311 TERM_CTLW1 .equ eUSCI_B0_SFR + 02h ; USCI_B0 Control Word Register 1
312 TERM_BRW .equ eUSCI_B0_SFR + 06h ; USCI_B0 Baud Word Rate 0
313 TERM_STATW .equ eUSCI_B0_SFR + 08h ; USCI_B0 Status Word
314 TERM_RXBUF .equ eUSCI_B0_SFR + 0Ch ; USCI_B0 Receive Buffer 8
315 TERM_TXBUF .equ eUSCI_B0_SFR + 0Eh ; USCI_B0 Transmit Buffer 8
316 TERM_I2COA0 .equ eUSCI_B0_SFR + 14h ; USCI_B0 I2C Own Address 0
317 TERM_ADDRX .equ eUSCI_B0_SFR + 1Ch ; USCI_B0 Received Address Register
318 TERM_I2CSA .equ eUSCI_B0_SFR + 20h ; USCI_B0 I2C Slave Address
319 TERM_IE .equ eUSCI_B0_SFR + 2Ah ; USCI_B0 Interrupt Enable
320 TERM_IFG .equ eUSCI_B0_SFR + 2Ch ; USCI_B0 Interrupt Flags Register
322 TERM_VEC .equ 0FFE0h ; interrupt vector for eUSCI_B0
323 WAKE_UP .equ 4 ; START interrupt