33 #include "dev/watchdog.h"
37 static unsigned long dco_speed;
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;
73 msp430_dco_speed(
void)
79 msp430_set_dco_speed(
unsigned long mhz)
93 multiplier = mhz / 32768UL - 1;
95 __bis_SR_register(SCG0);
102 UCSCTL2 = FLLD_1 + multiplier;
104 __bic_SR_register(SCG0);
108 UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
114 }
while(SFRIFG1 & OFIFG);
124 msp430_quick_synch_dco(
void)
126 msp430_set_dco_speed(
F_CPU);
199 #ifndef __IAR_SYSTEMS_ICC__
201 static char *cur_break = (
char *)&_end;
205 msp430_cpu_init(
void)
211 msp430_quick_synch_dco();
213 #ifndef __IAR_SYSTEMS_ICC__
214 if((uintptr_t)cur_break & 1) {
220 #define asmv(arg) __asm__ __volatile__(arg)
222 #define STACK_EXTRA 32
236 #ifdef __IAR_SYSTEMS_ICC__
237 stack_pointer = (
char *) __get_SP_register();
241 asmv(
"mov r1, %0" :
"=r" (stack_pointer));
242 stack_pointer -= STACK_EXTRA;
243 if(incr > (stack_pointer - cur_break))
246 void *old_break = cur_break;
265 #ifdef __IAR_SYSTEMS_ICC__
266 sr = __get_SR_register();
267 __bic_SR_register(GIE);
269 asmv(
"mov r2, %0" :
"=r" (sr));
270 asmv(
"bic %0, r2" : :
"i" (GIE));
282 #ifdef __IAR_SYSTEMS_ICC__
283 __bis_SR_register(sr);
285 asmv(
"bis %0, r2" : :
"r" (sr));
289 #ifdef __IAR_SYSTEMS_ICC__
290 int __low_level_init(
void)
293 WDTCTL = WDTPW + WDTHOLD;
306 msp430_sync_dco(
void)
#define F_CPU
CPU core frequency resulting from the chosen divisors and multipliers.
Header file for the uIP TCP/IP stack.
#define __delay_cycles(x)
__delay_cycles() is an intrinsic IAR call; however, we have explicity disallowed it since it is too s...
void watchdog_init(void)
Copyright (c) 2014, Analog Devices, Inc.