; 08-21-03 ****************************************************************** ; Files: 1407SIAB.ASM -> 1407 Sine wave collection with Serial Port interface ; both channels collected in sequence in the same 2k record ; bvectors.asm buffered mode. ; s2k14ini.asm 2k buffer size. ; unipolar mode ; negative edge BCLKR ; negative BFSR pulse ; -0 data shifted ; *************************************************************************** .width 160 .length 110 .title "sineb0 BSP in auto buffer mode" .mmregs .setsect ".text", 0x500,0 ;Set address of executable .setsect "vectors", 0x180,0 ;Set address of incoming 1407 data .setsect "buffer", 0x800,0 ;Set address of BSP buffer for clearing .setsect "result", 0x1800,0 ;Set address of result for clearing .text ;.text marks start of code start: ;this label seems necessary ;Make sure /PWRDWN is low at J1-9 ;to turn off AC01 adc tim=#0fh prd=#0fh tcr = #10h ; stop timer tspc = #0h ; stop TDM serial port to AC01 pmst = #01a0h ; set up iptr. Processor Mode STatus register sp = #0700h ; init stack pointer. dp = #0 ; data page ar2 = #1800h ; pointer to computed receive buffer. ar3 = #0800h ; pointer to Buffered Serial Port receive buffer ar4 = #0h ; reset record counter call sineinit ; Double clutch the initialization to insure a proper sinepeek: call sineinit ; reset. The external frame sync must occur 2.5 clocks ; or more after the port comes out of reset. wait goto wait ; ----------------Buffered Receive Interrupt Routine ------------------ breceive: ifr = #10h ; clear interrupt flags TC = bitf(@BSPCE,#4000h) ; check which half (bspce(bit14)) of buffer if (NTC) goto bufull ; if this still the first half get next half bspce = #(2023h + 08000h); turn on halt for second half (bspce(bit15)) return_enable ; --------------mask and shift input data ---------------------------- bufull: b = *ar3+ << -0 ; load acc b with BSP buffer and shift right -0 b = #07FFFh & b ; mask out the TRISTATE bits with #03FFFh ; *ar2+ = data(#0bh) ; store B to out buffer and advance AR2 pointer TC = (@ar2 == #02000h) ; output buffer is 2k starting at 1800h if (TC) goto start ; restart if out buffer is at 1fffh goto bufull ; -------------------dummy bsend return------------------------ bsend return_enable ;this is also a dummy return to define bsend ;in vector table file BVECTORS.ASM ; ----------------------- end ISR ---------------------------- .copy "c:\dskplus\1407\s2k14ini.asm" ;initialize buffered serial port .space 16*32 ;clear a chunk at the end to mark the end ;====================================================================== ; ; VECTORS ; ;====================================================================== .sect "vectors" ;The vectors start here .copy "c:\dskplus\1407\bvectors.asm" ;get BSP vectors .sect "buffer" ;Set address of BSP buffer for clearing .space 16*0x800 .sect "result" ;Set address of result for clearing .space 16*0x800 .end ; *************************************************************************** ; File: BVECTORS.ASM -> Vector Table for the 'C54x DSKplus 10.Jul.96 ; BSP vectors and Debugger vectors ; TDM vectors just return ; *************************************************************************** ; The vectors in this table can be configured for processing external and ; internal software interrupts. The DSKplus debugger uses four interrupt ; vectors. These are RESET, TRAP2, INT2, and HPIINT. ; * DO NOT MODIFY THESE FOUR VECTORS IF YOU PLAN TO USE THE DEBUGGER * ; ; All other vector locations are free to use. When programming always be sure ; the HPIINT bit is unmasked (IMR=200h) to allow the communications kernel and ; host PC interact. INT2 should normally be masked (IMR(bit 2) = 0) so that the ; DSP will not interrupt itself during a HINT. HINT is tied to INT2 externally. ; ; ; .title "Vector Table" .mmregs reset goto #80h ;00; RESET * DO NOT MODIFY IF USING DEBUGGER * nop nop nmi return_enable ;04; non-maskable external interrupt nop nop nop trap2 goto #88h ;08; trap2 * DO NOT MODIFY IF USING DEBUGGER * nop nop .space 52*16 ;0C-3F: vectors for software interrupts 18-30 int0 return_enable ;40; external interrupt int0 nop nop nop int1 return_enable ;44; external interrupt int1 nop nop nop int2 return_enable ;48; external interrupt int2 nop nop nop tint return_enable ;4C; internal timer interrupt nop nop nop brint goto breceive ;50; BSP receive interrupt nop nop nop bxint goto bsend ;54; BSP transmit interrupt nop nop nop trint return_enable ;58; TDM receive interrupt nop nop nop txint return_enable ;5C; TDM transmit interrupt nop nop int3 return_enable ;60; external interrupt int3 nop nop nop hpiint dgoto #0e4h ;64; HPIint * DO NOT MODIFY IF USING DEBUGGER * nop nop .space 24*16 ;68-7F; reserved area ********************************************************************** * (C) COPYRIGHT TEXAS INSTRUMENTS, INC. 1996 * ********************************************************************** * * * File: BSPI1407.ASM BSP initialization code for the 'C54x DSKplus * * for use with 1407 in standard mode * * BSPC and SPC seem interchangeable in the 'C542 * * BSPCE and SPCE seem interchangeable in the 'C542 * ********************************************************************** .title "Buffered Serial Port Initialization Routine" ON .set 1 OFF .set !ON YES .set 1 NO .set !YES BIT_8 .set 2 BIT_10 .set 1 BIT_12 .set 3 BIT_16 .set 0 GO .set 0x80 ********************************************************************** * This is an example of how to initialize the Buffered Serial Port (BSP). * The BSP is initialized to require an external CLK and FSX for * operation. The data format is 16-bits, burst mode, with autobuffering * enabled. Set the variables listed below to configure the BSP for * your application. * ***************************************************************************************************** *LTC1407 timing with 40MHz crystal. * *10MHz, divided from 40MHz, forced to CLKIN by 1407 board. * *Horizontal scale is 6.25ns/chr or 25ns period at BCLKR * *BFSR Pin J1-20 ~~\____/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\____/~~~~~~~~~~~* *BCLKR Pin J1-14 _/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~\_/~* *BDR Pin J1-26 _---_---_------_---> 1)|((Format & 2)<<1)|(BurstMode <<3)|(IntCLK <<4)|(IntSync <<5)) ,SPCval .eval ((CLKDIV)|(FS_polarity <<5)|(CLK_polarity<<6)|((Format & 1)<<7)|(Frame_ignore<<8)|(PCM_Mode<<9)), SPCEval .eval (SPCEval|(XMTautobuf<<10)|(XMThalt<<12)|(RCVautobuf<<13)|(RCVhalt<<15)), SPCEval bspi1407: bspc = #SPCval ; places buffered serial port in reset bspce = #SPCEval ; programs BSPCE and ABU axr = #XMTbufAddr ; initializes transmit buffer start address bkx = #XMTbufSize ; initializes transmit buffer size arr = #RCVbufAddr ; initializes receive buffer start address bkr = #RCVbufSize ; initializes receive buffer size bspc = #(SPCval | GO) ; bring buffered serial port out of reset return ;for transmit and receive because GO=0xC0