73 #include <msp430x54x.h>
80 #define SPYBIWIREJTAG_IF 1
81 #define SPYBIWIRE_IF 2
84 #if( INTERFACE == SPYBIWIRE_IF )
85 #define SPYBIWIRE_MODE
93 #define RSTHIGH_JTAG 3
95 #ifndef __DATAFORMATS__
96 #define __DATAFORMATS__
105 #define STATUS_ERROR 0 // false
106 #define STATUS_OK 1 // true
108 #define STATUS_FUSEBLOWN 2
112 #define STATUS_ACTIVE 2
113 #define STATUS_IDLE 3
129 #define TRSLDIR P2OUT
131 #define TRSL_CDIR P2DIR
139 #define TEST_DIR 0x04
147 #define TDOI_DIR 0x40
155 #define SW_PULLUP P1REN
156 #define LED_OUT P1OUT
158 #define LED_DIR P1DIR
162 #define SW_MODE0 0x01
163 #define SW_MODE1 0x02
165 #define SW_VPPEN 0x04
167 #define LED_YELLOW 0x08
169 #define LED_GREEN 0x10
179 #define TVCC_OUT P6OUT
180 #define TVCC_DIR P6DIR
182 #define TVCC_MASK 0xF0
187 #define TVCC_EN_DIR P5DIR
188 #define TVCC_EN_OUT P5OUT
189 #define TVCC_DIS_BIT 1
192 #define LED_yellow_on() ( LED_OUT |= LED_YELLOW )
193 #define LED_yellow_off() ( LED_OUT &= ~LED_YELLOW )
195 #define LED_red_on() ( LED_OUT |= LED_RED )
197 #define LED_red_off() ( LED_OUT &= ~LED_RED )
199 #define LED_green_on() ( LED_OUT |= LED_GREEN )
201 #define LED_green_off() ( LED_OUT &= ~LED_GREEN )
203 #define All_LEDs_off() ( LED_OUT &= ~(LED_GREEN | LED_RED | LED_YELLOW ))
208 #define JTAGOUT P5OUT
211 #define JTAGDIR P5DIR
213 #define JTAGSEL P5SEL
258 #define VPPONTEST 0x04
259 #define VPPONTDI 0x02
271 #define ClrTMS() ((JTAGOUT) &= (~TMS))
272 #define SetTMS() ((JTAGOUT) |= (TMS))
274 #define ClrTDI() ((JTAGOUT) &= (~TDI))
276 #define SetTDI() ((JTAGOUT) |= (TDI))
278 #define ClrTCK() ((JTAGOUT) &= (~TCK))
280 #define SetTCK() ((JTAGOUT) |= (TCK))
282 #define StoreTCLK() ((JTAGOUT & TCLK))
284 #define RestoreTCLK(x) (x == 0 ? (JTAGOUT &= ~TCLK) : (JTAGOUT |= TCLK))
286 #define ScanTDO() ((JTAGIN & TDO))
288 #define VPPon(x) (x == VPP_ON_TEST ? (SetVpp(VPPONTEST)) : (SetVpp(VPPONTDI)))
290 #define VPPoff() (SetVpp(0))
299 #define nNOPS { _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); }
307 #define TMSH JTAGOUT |= SBWDATO; usDelay(400); JTAGOUT &= ~SBWCLK; usDelay(1); JTAGOUT |= SBWCLK; usDelay(1);
308 #define TMSL JTAGOUT &= ~SBWDATO; usDelay(400); JTAGOUT &= ~SBWCLK; usDelay(1); JTAGOUT |= SBWCLK; usDelay(1);
310 #define TDIH JTAGOUT |= SBWDATO; usDelay(400); JTAGOUT &= ~SBWCLK; usDelay(1); JTAGOUT |= SBWCLK; usDelay(1);
312 #define TDIL JTAGOUT &= ~SBWDATO; usDelay(400); JTAGOUT &= ~SBWCLK; usDelay(1); JTAGOUT |= SBWCLK; usDelay(1);
314 #define TDOsbw TRSLDIR |= TDOI_DIR; nNOPS JTAGOUT &= ~SBWCLK; usDelay(1); JTAGOUT |= SBWCLK; usDelay(1); TRSLDIR &= ~TDOI_DIR;
316 #define TDO_RD TRSLDIR |= TDOI_DIR; nNOPS JTAGOUT &= ~SBWCLK; usDelay(1); tdo_bit = JTAGIN; usDelay(1); JTAGOUT |= SBWCLK; TRSLDIR &= ~TDOI_DIR;
332 #define nNOPS { _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); }
335 #define TMSH {JTAGOUT |= SBWDATO; nNOPS ;JTAGOUT &= ~SBWCLK; nNOPS JTAGOUT |= SBWCLK; }
336 #define TMSL {JTAGOUT &= ~SBWDATO; nNOPS JTAGOUT &= ~SBWCLK; nNOPS JTAGOUT |= SBWCLK;}
338 #define TMSLDH {JTAGOUT &= ~SBWDATO; nNOPS JTAGOUT &= ~SBWCLK; nNOPS JTAGOUT |= SBWDATO; JTAGOUT |= SBWCLK;}
343 #define TDIH {JTAGOUT |= SBWDATO; nNOPS JTAGOUT &= ~SBWCLK; nNOPS JTAGOUT |= SBWCLK;}
345 #define TDIL {JTAGOUT &= ~SBWDATO; nNOPS JTAGOUT &= ~SBWCLK; nNOPS JTAGOUT |= SBWCLK;}
347 #define TDOsbw {TRSLDIR |= TDOI_DIR; nNOPS JTAGOUT &= ~SBWCLK; nNOPS JTAGOUT |= SBWCLK; TRSLDIR &= ~TDOI_DIR;}
349 #define TDO_RD {TRSLDIR |= TDOI_DIR; nNOPS JTAGOUT &= ~SBWCLK; nNOPS tdo_bit = JTAGIN; JTAGOUT |= SBWCLK; TRSLDIR &= ~TDOI_DIR;}
353 #define SetSBWTCK() (JTAGOUT |= SBWCLK)
354 #define ClrSBWTCK() (JTAGOUT &= ~SBWCLK)
356 #define SetSBWTDIO() (JTAGOUT |= SBWDATO)
358 #define ClrSBWTDIO() (JTAGOUT &= ~SBWDATO)
363 #if ( INTERFACE == SPYBIWIRE_IF )
368 #define ClrTCLK() ClrTCLK_sbw()
369 #define SetTCLK() SetTCLK_sbw()
373 #define SetRST() (JTAGOUT |= SBWDATO)
374 #define ClrRST() (JTAGOUT &= ~SBWDATO)
376 #define ReleaseRST() ()
378 #define SetTST() (JTAGOUT |= SBWCLK)
380 #define ClrTST() (JTAGOUT &= ~SBWCLK)
386 #define ClrTCLK() ((JTAGOUT) &= ~(TCLK))
387 #define SetTCLK() ((JTAGOUT) |= (TCLK))
391 #define SetRST() ((JTAGOUT) |= (RST))
392 #define ClrRST() ((JTAGOUT) &= (~RST))
394 #define ReleaseRST() ( RST_dir( 0 ))
396 #define SetTST() ((JTAGOUT) |= (TEST))
398 #define ClrTST() ((JTAGOUT) &= (~TEST))
409 typedef unsigned short word;
410 typedef unsigned char byte;
417 void TMSL_TDIL(
void);
418 void TMSH_TDIL(
void);
419 void TMSL_TDIH(
void);
420 void TMSH_TDIH(
void);
421 void TMSL_TDIH_TDOrd(
void);
422 void TMSL_TDIL_TDOrd(
void);
423 void TMSH_TDIH_TDOrd(
void);
424 void TMSH_TDIL_TDOrd(
void);
425 void MsDelay(word milliseconds);
426 void usDelay(word microeconds);
430 unsigned long AllShifts(word Format,
unsigned long Data);
434 void TriggerPulse(word Mode);
440 void SetVpp( word source );
444 word
Get_Vx( word index );
word Get_Vx(word index)
Measure different voltages via ADC12.
void ShowStatus(word Status, word Index)
This function controls the status LEDs depending on the status argument. It stops program in error ca...
void TCK_dir(word dir)
Set the direction for the TCK pin.
void MsDelay(word milliseconds)
Delay function (resolution is 1 ms)
void DrvSignals(void)
Set up I/O pins for JTAG communication.
Configurations for the MSP430 Replicator Xv2.
void TEST_dir(word dir)
Set the direction for the TEST pin.
void usDelay(word microeconds)
Delay function (resolution is ~1 us)
void ClrTCLK_sbw(void)
Clear TCLK in Spy-Bi-Wire mode.
void configure_IO_JTAG(void)
Set JTAG pins to output direction - from REP430F to target.
void IO_3state(void)
Set all JTAG pins to input direction - from target to REP430F.
void Disable_Vpp(void)
Disable fuse blow voltage Vpp.
void InitController(void)
Initialization of the Controller Board.
void TDOI_dir(word dir)
Set the direction for the TDO pin.
void InitTarget(void)
Initialization of the Target Board (switch voltages on, preset JTAG pins)
void TMS_dir(word dir)
Set the direction for the TMS pin.
void TDOisInput(void)
This function switches TDO to Input (used for fuse blowing)
void TCLKstrobes(word Amount)
This function generates Amount strobes with the Flash Timing Generator.
void SetVCoreUp(word level)
Function to set a specific voltage level via the PMM.
void RST_dir(word dir)
Set the direction for the RST pin.
unsigned long AllShifts(word Format, unsigned long Data)
Shift a value into TDI (MSB first) and simultaneously shift out a value from TDO (MSB first)...
void SetVpp(word source)
function to set the fuse blow voltage Vpp
word Get_Ext_Vcc(void)
Determine external VCC.
void SetTargetVcc(word level)
Set target Vcc (supplied from REP430F)
void TDI_dir(word dir)
Set the direction for the TDI pin.
word Get_target_Vcc(void)
Determine target VCC.
void configure_IO_SBW(void)
Set SBW pins to output direction - from REP430F to target.
void ReleaseTarget(void)
Release Target Board (switch voltages off, JTAG pins are HI-Z)
void RlsSignals(void)
Release I/O pins.
void SetTCLK_sbw(void)
Set TCLK in Spy-Bi-Wire mode.
void Enable_Vpp(void)
Enable fuse blow voltage Vpp.