This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Compiler/DLP4500: How can I switch between video and sequence mode without resending the LUT

Part Number: DLP4500
Other Parts Discussed in Thread: DLPC350

Tool/software: TI C/C++ Compiler

Hi,

I got my LUT encoded in my firmware and projector powers on with sequence mode.

So far, I can use my program to switch from sequence mode to video with DLPC350_SetMode(false) command without any issue.

However, I'm wondering why I cannot just simply use DLPC350_SetMode(true) command to switch back to sequence mode?

Even by using the GUI, the LUT will be cleared after switching.

Is there an easy way to perform this switching?

  • Hello Bruce,

    Please allow us a couple of days to look into this and see if it's possible. In the meantime could you confirm what firmware version you are using?

    Thanks,

    Kyle

  • The firmware version I'm using now is 4.0.3.

  • Is it possible the I can switch from sequence mode to video mode without showing the abnormal display first?

    My projector will display the pattern under sequence mode and I will switch to video mode when it's necessary.

    However, it will display an abnormal pattern while switching to video mode. (looks like a distortion image from the video stream or from flash)

    How can I avoid this?

  • Bruce,

    Have you tried using the DMD park command to temporarily park the DMD mirrors while switching modes?

    http://www.ti.com/lit/ug/dlpu010g/dlpu010g.pdf

    See Section 2.3.1.2 in the DLPC350 programmer's guide.

    Regards,

    Philippe Dollo

  • Hi Philippe,

    I added the following function to my program but somehow I keep getting -1 for it. Would you please take a look of that and let me know what I did wrong?

    int DLPC350_SetDMDPark(bool status)
    {
     hidMessageStruct msg;
     msg.text.data[2] = status;
     DLPC350_PrepWriteCmd(&msg, DMD_PARK);
     return DLPC350_SendMsg(&msg, true);
    }
    Thanks,
    Bruce
  • I got it to work by editing the CmdList and get the return value as 6.

    However, the DMD park status read back from STATUS_MAIN won't change no matter I set DMD_PARK to true or false.

  • Hi Bruce,

    On our side we can confirm that the below code works for parking/unparking the mirror (on GUI Source v4.0):

    int DLPC350_DMD_PARKUNPARK(bool mode)
    {
    hidMessageStruct msg;
    msg.text.data[2] = mode;
    DLPC350_PrepWriteCmd(&msg, DMD_PARKUNPARK);
    return DLPC350_SendMsg(&msg,true);
    }


    Under the following assumptions:
    1> DMD_PARKUNPARK evaluates to 81.
    2> in the array, CmdList, CmdList[81] = { 0x06, 0x09, 0x01 }
    While testing the following code, we can also observe that the DMD Parked bit in the main status register also set as expected.


    We request you to kindly check your code implementation and try again. If required I can send you the complete code changes that I used to test the park/unpark procedure.

    Thanks & Regards,

    Hirak.

  • Thanks for the assumptions. What I got wrong is the value in my CmdList is { 0x06, 0x09, 0x00 }.

    I'm wondering if 0x01 means CMD1 and where does it refer to? Where can I find the GUI source V4.0? I think what I have is V3.0.

    Also, I probably didn't mention it clearly in the beginning. What I want to do is making the projector starts with pattern mode and triggered by an external signal. Later, I will switch the operating mode to video to stream from HDMI then switch back to pattern mode.

    When I park the DMD and switch to video mode, the projector won't stream the source from HDMI and the display froze under pattern mode as well. This is not what I expect to see.

  • Is there anyway that I can clear the display buffer before switching the operating mode? I'd like to get rid off the abnormal scene while switching modes.

  • Hi Bruce,

    I will try to answer your questions below:

    So far, I can use my program to switch from sequence mode to video with DLPC350_SetMode(false) command without any issue.

    However, I'm wondering why I cannot just simply use DLPC350_SetMode(true) command to switch back to sequence mode?

    Even by using the GUI, the LUT will be cleared after switching.

    A> We can confirm that we can successfully switch/switch back to pattern sequence mode by using "DLPC350_SetMode(true)" call. We can also confirm that the LUTs will retain the pattern sequences settings even after switching to Video mode and back to pattern sequence mode. HOWEVER, we need to resend the validate command and validate the pattern sequence again before sending "Start" command. 

    Is it possible the I can switch from sequence mode to video mode without showing the abnormal display first?

    My projector will display the pattern under sequence mode and I will switch to video mode when it's necessary.

    However, it will display an abnormal pattern while switching to video mode. (looks like a distortion image from the video stream or from flash)

    How can I avoid this?

    A> You can try using "Display Buffer Freeze" command (I2C: 0x7C; USB: CMD2: 0x10, CMD3: 0x0A) for this purpose. As soon as you send this command, the DLPC350 internal buffer will be frozen and will not be swapped any more. Consequently the DMD will keep showing the last image that was loaded onto the buffer. Send this buffer freeze command just before switching to another mode, and after switching you can unfreeze the buffer, so that normal operation continues. With this method, you should not see bad patterns while switching. 

    Hope this helps, 

    Thanks & Regards,

    Hirak.

  • Hi Hirak,

    When you do the validation again, you will send out the LUTs to projector. That means you are repeating the procedure, filling up LUTs -> validate LUTs -> start streaming. Also, the frame within display buffer will be swapped when switch between pattern and video modes. (Am I wrong about this?) Which means, there's no way you can retain the pattern sequences. That's why Philippe provided the DMD park command earlier in this thread. However, I encountered another issue while applying DMD park to the projector. DMD park freezes everything and causes the projector won't stream anything at all. If you have confirm that you can successfully perform that, please kindly provide your sequence to me. I'll be very appreciated.

    I tried using "Display Buffer Freeze" before and after switching between those two modes and YES, it will freeze the internal buffer to display the last image. However, this is just the better solution to my application. What I want to do now is get rid of the last pattern as well. Thus, I'm asking for the solution to clear the internal buffer before switching between those two modes.

    Bruce

  • Hi Bruce, 

    "When you do the validation again, you will send out the LUTs to projector." - This statement is incorrect. When we switch back to pattern sequence mode, we only need to send the "VALIDATE" command (I2C: 0x7D, USB: CMD2: 0x1A, CMD3: 0x1A). We do not need to resend the pattern LUT values to the projector, just the validate command will be sufficient. After validation complete, you can send "Start" command and the pattern will start executing. 

    Regarding your second question, kindly give us some time to investigate how we can support this request. We'll get back to you soon. Thanks for your patience!

    Thanks & Regards,

    Hirak.

  • Thanks for clarifying this. The reason why I would say that is due to your sample code. In the sample code, the program will ask user to fill up the sequence again and perform the whole procedure again when switching back from video mode. 

    Sending out the validate then start commands helps me switching between those two mode. Thanks a lot.

    I will keep waiting for your response. In the meantime, I will keep trying different methods on my own to find some alternative ways to resolve this phenomenon. 

    Thanks,

    Bruce

  • Hi Bruce, 

    Thanks for your patience and glad to know we could help! 
    I have looked around more regarding the display corruption while switching mode, but unfortunately the best way available currently to achieve this is to use the bufferfreeze command. I could not find another way that can achieve your use case. 

    Thanks & Regards,

    Hirak.

  • Could you please advise a sequence to work with bufferfreeze while switching? Currently, I have two images in the flash to run with LUTs under pattern mode. Is that possible I can add a third image as a black image and switch to it before switching to video mode? 

    Bruce

  • Hi Bruce, 

    I can think of one way you can try ... you need to select CLEAR DMD option for every pattern in your pattern sequence. Then while switching to video mode, the procedure you need to follow is:

    1> Send pattern stop command

    2> Send bufferfreeze command

    3> Send command to switch to video mode

    4> Unfreeze buffer.

    Could you kindly try this? Kindly also put 1-2 second delay between step 3 and step 4, and put delay d = maximum pattern period in your sequence between step 1 and step 2. 

    Thanks & Regards.

    Hirak.

  • Currently, I have two images in the flash to work with the LUTs and using external trigger. While switching from pattern mode to video, I would send pattern stop command to the projector and it will display nothing. When I switch to video mode, it will display those two images in the flash first, then start projecting the source from HDMI.

    This behavior remains the same when I add the bufferfreeze and unfreeze commands to it.

    Thus, the main issue now is how I can stop the projector from displaying those two images in the flash before it starts projecting the input source from HDMI.

    Bruce

  • I forgot to mention that I do check the "Clear DMD after exposure" while making the solution(ini) file. Is this what you meant?

  • Hi Bruce, 

    I'm sorry to let you know even when you use bufferfreeze, the last image loaded into the buffer will be displayed while switching. We do not currently have the functionality to make the screen inactive while switching. 

    Thanks & Regards,

    Hirak.

  • I thought this is common to have a functionality to blank the display for one or more frames. Is this possible to be added through firmware update?

    Bruce

  • Hi Bruce, 

    It may be possible to include this in a firmware update. We will consider this for our next maintenance release. 

    Thanks & Regards,

    Hirak.

  • Hi Hirak,

    If so, that would be great.

    Thanks,

    Bruce

  • Hi Bruce, 

    Thanks for your interest in TI DLP Technology, if you don't have any more queries we'll be closing this thread. You can reopen anytime by replying to it.

    Thanks & Regards,

    Hirak.