Sign in

username or email:

password:



Not a member?
Forgot your password?

Search c3x



Search tips

Subscribe to c3x





Discussion Groups

See Also

Embedded SystemsFPGA

Discussion Groups | TMS320C3x | Serial send, hangs on DX load.

I am writing a simple program to test the serial port. (testing this for three days now, headache!) On the TMS320VC33.The code sets the I/O to output mode and turns them on. Then it shuts off all interrupts...

  

Post a new Thread



Is this thread worth a thumbs up?

0

Serial send, hangs on DX load. - john...@yahoo.com - Mar 15 11:51:34 2010

I am writing a simple program to test the serial port. (testing this for
three days now, headache!) On the TMS320VC33.

The code sets the I/O to output mode and turns them on.  Then it shuts off all
interrupts.  After this it sets up the serial port for a transmit.  I want the
DSP to generate the FSX, and CLKX.   I have tried many iterations of this code
and settings of these registers but every time I send the write command to load
the DR register. The program hangs and the I/Os stay high.  If I comment out the
Load DX line it passes fine and goes to an infinite loop toggling the I/Os which
I can see is the end of my program.

Now I have my scope on the CLKX pin and I cannot see any clocking on that pin.
Does anyone have any ideas for what maybe wrong because I am out of ideas.  My
interrupt routines are just empty functions.  I have XTINT and XINT enabled but
they shouldn't do anything (ive tried off too)?  Is there some bit I have to
toggle to start a send my data word out of DX/XSR?

Thanks in advance.

Daniel Johnson

(CODE BELOW)
___________________________________________________________

  asm("	ldi 22h, IOF ");
  asm("	ldi 66h, IOF ");
  
  ST = 0x0000; 	/* GIE_bit = 0 */
  IE = 0x00; 	/* EXINT0_bit,ERINT0_bit = 0 */
    
    sp0->s_rxt_control = 0x000;    //Clears timer control
    sp0->gcontrol = 0x03FC0046;    //Halts serial port
    sp0->s_x_control = 0x333;      //sets up transmit control
    sp0->s_r_control = 0x111;      //sets up recieve control
    sp0->s_rxt_period = 0x000A;    //sets up a slower clock
    sp0->s_rxt_control = 0x1CF;    //sets up timer control
    sp0->x_data = 0x00000000;      //clears the DR register
    sp0->gcontrol = 0x0FFC0046;    //Starts the serial port

   sp0->x_data = 0x84ffffff;       //supposed to send my data

  asm("loop: ldi 26h, IOF ");
  asm("	ldi 26h, IOF ");
  asm("	ldi 26h, IOF ");
  asm("	ldi 26h, IOF ");
  asm("	ldi 26h, IOF ");
  asm("	ldi 26h, IOF ");
  asm("	ldi 26h, IOF ");
  asm("	ldi 26h, IOF ");
  asm("	ldi 26h, IOF ");
  asm("	ldi 26h, IOF ");
  asm("	ldi 26h, IOF ");
  asm("	ldi 26h, IOF ");
  asm("	ldi 62h, IOF ");
  asm("	ldi 62h, IOF ");
  asm("	ldi 62h, IOF ");
  asm("	ldi 62h, IOF ");
  asm("	ldi 62h, IOF ");
  asm("	ldi 62h, IOF ");
  asm("	ldi 62h, IOF ");
  asm("	ldi 62h, IOF ");
  asm("	ldi 62h, IOF ");
  asm("	ldi 62h, IOF ");
  asm("	ldi 62h, IOF ");
  asm("	ldi 62h, IOF ");
  asm("	br loop ");	
____________________________________________

_____________________________________

______________________________
New Code Sharing Section now Live on DSPRelated.com. Learn about the Reward Program for Contributors here.



(You need to be a member of c3x -- send a blank email to c3x-subscribe@yahoogroups.com )

Re: Serial send, hangs on DX load. - john...@yahoo.com - Mar 25 16:34:47 2010

Same Problem,  My problem is even if the XSR is empty and the DXR is ready
for data, once I load the data to DXR there is no transfer to XSR.  So no data
comes out.  I get the Clock out now.  Any ideas?  or Source code any of you
might have would be helpful.  Maybe I am doing something fundamentally wrong?

Thanks in advance,
Daniel

>I am writing a simple program to test the serial port. (testing this for
>three days now, headache!) On the TMS320VC33.
>
>The code sets the I/O to output mode and turns them on.  Then it shuts off
all interrupts.  After this it sets up the serial port for a transmit.  I want
the DSP to generate the FSX, and CLKX.   I have tried many iterations of this
code and settings of these registers but every time I send the write command to
load the DR register. The program hangs and the I/Os stay high.  If I comment
out the Load DX line it passes fine and goes to an infinite loop toggling the
I/Os which I can see is the end of my program.
>
>Now I have my scope on the CLKX pin and I cannot see any clocking on that
pin. Does anyone have any ideas for what maybe wrong because I am out of ideas. 
My interrupt routines are just empty functions.  I have XTINT and XINT enabled
but they shouldn't do anything (ive tried off too)?  Is there some bit I have to
toggle to start a send my data word out of DX/XSR?
>
>Thanks in advance.
>
>Daniel Johnson
>
>(CODE BELOW)
>___________________________________________________________
>
>  asm("	ldi 22h, IOF ");
>  asm("	ldi 66h, IOF ");
>  
>  ST = 0x0000; 	/* GIE_bit = 0 */
>  IE = 0x00; 	/* EXINT0_bit,ERINT0_bit = 0 */
>    
>    sp0-> s_rxt_control = 0x000;    //Clears timer control
>    sp0-> gcontrol = 0x03FC0046;    //Halts serial port
>    sp0-> s_x_control = 0x333;      //sets up transmit control
>    sp0-> s_r_control = 0x111;      //sets up recieve control
>    sp0-> s_rxt_period = 0x000A;    //sets up a slower clock
>    sp0-> s_rxt_control = 0x1CF;    //sets up timer control
>    sp0-> x_data = 0x00000000;      //clears the DR register
>    sp0-> gcontrol = 0x0FFC0046;    //Starts the serial port
>
>   sp0-> x_data = 0x84ffffff;       //supposed to send my data
>
>  asm("loop: ldi 26h, IOF ");
>  asm("	ldi 26h, IOF ");
>  asm("	ldi 26h, IOF ");
>  asm("	ldi 26h, IOF ");
>  asm("	ldi 26h, IOF ");
>  asm("	ldi 26h, IOF ");
>  asm("	ldi 26h, IOF ");
>  asm("	ldi 26h, IOF ");
>  asm("	ldi 26h, IOF ");
>  asm("	ldi 26h, IOF ");
>  asm("	ldi 26h, IOF ");
>  asm("	ldi 26h, IOF ");
>  asm("	ldi 62h, IOF ");
>  asm("	ldi 62h, IOF ");
>  asm("	ldi 62h, IOF ");
>  asm("	ldi 62h, IOF ");
>  asm("	ldi 62h, IOF ");
>  asm("	ldi 62h, IOF ");
>  asm("	ldi 62h, IOF ");
>  asm("	ldi 62h, IOF ");
>  asm("	ldi 62h, IOF ");
>  asm("	ldi 62h, IOF ");
>  asm("	ldi 62h, IOF ");
>  asm("	ldi 62h, IOF ");
>  asm("	br loop ");	
>____________________________________________
>
>_____________________________________

_____________________________________

______________________________
New Code Sharing Section now Live on DSPRelated.com. Learn about the Reward Program for Contributors here.



(You need to be a member of c3x -- send a blank email to c3x-subscribe@yahoogroups.com )