X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Flib%2Fcommand.c;h=7c57798f313d9ecaa22a8751e91907c4b2132c05;hp=8b83d475491e405be88ca74a54536be7d4d85a15;hb=69539bb167246135b1bde3c55dca7d19bc3c7aee;hpb=ac438c880b976512eb377806fa0f470bf390fdde diff --git a/firmware/lib/command.c b/firmware/lib/command.c index 8b83d47..7c57798 100644 --- a/firmware/lib/command.c +++ b/firmware/lib/command.c @@ -140,17 +140,22 @@ void msdelay(unsigned int ms){ delaying slightly longer than requested. */ void prep_timer() { + #ifdef MSP430 BCSCTL2 = 0x00; /* In particular, use DCOCLK as SMCLK source with divider 1. Hence, Timer B ticks with system clock at 16 MHz. */ TBCTL = 0x0204; /* Driven by SMCLK; disable Timer B interrupts; reset timer in case it was previously in use */ + #else + #warning "Function unimplemented for this platform." + #endif } - +#if (platform != tilaunchpad) //! Delay for specified number of milliseconds (given 16 MHz clock) void delay_ms( unsigned int ms ) { + #ifdef MSP430 // 16000 ticks = 1 ms TBCTL |= 0x20; // Start timer! while (ms--) { @@ -159,11 +164,15 @@ void delay_ms( unsigned int ms ) TBCTL = 0x0224; } TBCTL = 0x0204; // Reset Timer B, till next time + #else + debugstr("delay_ms unimplemented"); + #endif } //! Delay for specified number of microseconds (given 16 MHz clock) void delay_us( unsigned int us ) { + #ifdef MSP430 // 16 ticks = 1 us TBCTL |= 0x20; // Start timer! while (us--) { @@ -172,13 +181,21 @@ void delay_us( unsigned int us ) TBCTL = 0x0224; } TBCTL = 0x0204; // Reset Timer B, till next time + #else + debugstr("delay_us unimplemented"); + #endif } //! Delay for specified number of clock ticks (16 MHz clock implies 62.5 ns per tick). void delay_ticks( unsigned int num_ticks ) { + #ifdef MSP430 TBCTL |= 0x20; // Start timer while (TBR < num_ticks) asm( "nop" ); TBCTL = 0x0204; // Reset Timer B, till next time + #else + debugstr("delay_ticks unimplemented"); + #endif } +#endif