Added improvements suggested by Hardy Greich: define CPU speed in one place only (contiki-conf.h), added nop to XTAL settlement delay

This commit is contained in:
adamdunkels 2008-02-03 20:58:11 +00:00
parent f1bec7b955
commit e68d669265
2 changed files with 15 additions and 4 deletions

View file

@ -28,20 +28,22 @@
* *
* This file is part of the Contiki operating system. * This file is part of the Contiki operating system.
* *
* @(#)$Id: msp430.c,v 1.7 2007/11/17 10:28:18 adamdunkels Exp $ * @(#)$Id: msp430.c,v 1.8 2008/02/03 20:58:11 adamdunkels Exp $
*/ */
#include <io.h> #include <io.h>
#include <signal.h> #include <signal.h>
#include <sys/unistd.h> #include <sys/unistd.h>
#include "msp430.h"
#include "dev/watchdog.h" #include "dev/watchdog.h"
#include "net/uip.h" #include "net/uip.h"
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
void void
msp430_init_dco(void) msp430_init_dco(void)
{ {
/* This code taken from the FU Berlin sources and reformatted. */ /* This code taken from the FU Berlin sources and reformatted. */
#define DELTA 600 #define DELTA ((MSP430_CPU_SPEED) / (32768 / 8))
unsigned int compare, oldcapture = 0; unsigned int compare, oldcapture = 0;
unsigned int i; unsigned int i;
@ -54,7 +56,9 @@ msp430_init_dco(void)
crystal DCO frquenzy = 2,4576 MHz */ crystal DCO frquenzy = 2,4576 MHz */
BCSCTL1 |= DIVA1 + DIVA0; /* ACLK = LFXT1CLK/8 */ BCSCTL1 |= DIVA1 + DIVA0; /* ACLK = LFXT1CLK/8 */
for(i = 0xffff; i > 0; i--); /* Delay for XTAL to settle */ for(i = 0xffff; i > 0; i--) { /* Delay for XTAL to settle */
asm("nop");
}
CCTL2 = CCIS0 + CM0 + CAP; // Define CCR2, CAP, ACLK CCTL2 = CCIS0 + CM0 + CAP; // Define CCR2, CAP, ACLK
TACTL = TASSEL1 + TACLR + MC1; // SMCLK, continous mode TACTL = TASSEL1 + TACLR + MC1; // SMCLK, continous mode
@ -162,6 +166,7 @@ msp430_cpu_init(void)
if((uintptr_t)cur_break & 1) { /* Workaround for msp430-ld bug! */ if((uintptr_t)cur_break & 1) { /* Workaround for msp430-ld bug! */
cur_break++; cur_break++;
} }
watchdog_start();
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
#define asmv(arg) __asm__ __volatile__(arg) #define asmv(arg) __asm__ __volatile__(arg)

View file

@ -28,7 +28,7 @@
* *
* This file is part of the Contiki operating system. * This file is part of the Contiki operating system.
* *
* $Id: msp430.h,v 1.1 2007/03/15 21:38:22 adamdunkels Exp $ * $Id: msp430.h,v 1.2 2008/02/03 20:58:11 adamdunkels Exp $
*/ */
/** /**
@ -41,6 +41,12 @@
#ifndef __MSP430_H__ #ifndef __MSP430_H__
#define __MSP430_H__ #define __MSP430_H__
#include "contiki-conf.h"
#ifdef F_CPU
#define MSP430_CPU_SPEED F_CPU
#else
#define MSP430_CPU_SPEED 2457600UL #define MSP430_CPU_SPEED 2457600UL
#endif
#endif /* __MSP430_H__ */ #endif /* __MSP430_H__ */