33 #include "dev/watchdog.h"
35 #if defined(__MSP430__) && defined(__GNUC__)
36 #define asmv(arg) __asm__ __volatile__(arg)
40 #if defined(__MSP430__) && defined(__GNUC__) && MSP430_MEMCPY_WORKAROUND
42 w_memcpy(
void *out,
const void *in,
size_t n)
46 dest = (uint8_t *) out;
54 #if defined(__MSP430__) && defined(__GNUC__) && MSP430_MEMCPY_WORKAROUND
56 w_memset(
void *out,
int value,
size_t n)
59 dest = (uint8_t *) out;
61 *dest++ = value & 0xff;
70 if(CALBC1_8MHZ != 0xFF) {
72 BCSCTL1 = CALBC1_8MHZ;
154 #if defined(__MSP430__) && defined(__GNUC__)
156 static char *cur_break = (
char *)&_end;
160 msp430_cpu_init(
void)
170 #if defined(__MSP430__) && defined(__GNUC__)
171 if((uintptr_t)cur_break & 1) {
187 #ifdef __IAR_SYSTEMS_ICC__
188 sr = __get_SR_register();
189 __bic_SR_register(GIE);
191 asmv(
"mov r2, %0" :
"=r" (sr));
192 asmv(
"bic %0, r2" : :
"i" (GIE));
211 #ifdef __IAR_SYSTEMS_ICC__
212 int __low_level_init(
void)
215 WDTCTL = WDTPW + WDTHOLD;
227 msp430_sync_dco(
void) {
231 #define DELTA_2 ((MSP430_CPU_SPEED) / 32768)
234 TBCTL = TBSSEL1 | TBCLR;
235 TBCCTL6 = CCIS0 + CM0 + CAP;
242 while(!(TBCCTL6 & CCIFG));
247 while(!(TBCCTL6 & CCIFG));
248 diff = TBCCR6 - oldcapture;
251 if(DELTA_2 == diff) {
253 }
else if(DELTA_2 < diff) {
void watchdog_init(void)
Copyright (c) 2014, Analog Devices, Inc.