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.

DLP4500: Play once setting have problem, can not stop

Part Number: DLP4500
Other Parts Discussed in Thread: DLPC350,

Hi there,

I meet the similar question: after play once, I want to play once again, I think push the play button will achieve this goal, but it wasn't;

I found the Seq.running is still light green after play once over, and the most serious problem is that I can not stop the Sequence by pushing Stop button.

Is there any way to solve this problem?

BTW: Firmware version is 3.1.0 & GUI version is 3.1.0 Win10 os.

I use the  function in  dlpc350_api.h,  after Play once, when I call 

DLPC350_PatternDisplay(0)

and check

DLPC350_GetPatternDisplay(&action)

"action" always be 2, which means it is still running,
looks like the function [int DLPC350_PatternDisplay(unsigned int)] do not work but it return the appropriate value(typically, 7, show how many bit have been send by USB).

the function like this

int DLPC350_PatternDisplay(unsigned int Action)
/**
 * (I2C: 0x65)
 * (USB: CMD2: 0x1A, CMD3: 0x24)
 * This API starts or stops the programmed patterns sequence.
 *
 * @param   Action - I - Pattern Display Start/Stop Pattern Sequence
 *                          0 = Stop Pattern Display Sequence. The next "Start" command will
 *                              restart the pattern sequence from the beginning.
 *                          1 = Pause Pattern Display Sequence. The next "Start" command will
 *                              start the pattern sequence by re-displaying the current pattern in the sequence.
 *                          2 = Start Pattern Display Sequence
 *
 * @return  >=0 = PASS    <BR>
 *          <0 = FAIL  <BR>
 *
 */
{
    hidMessageStruct msg;

    msg.text.data[2] = (Action&0x03);
    DLPC350_PrepWriteCmd(&msg, PAT_START_STOP);

    return DLPC350_SendMsg(&msg,true);
}

int  DLPC350_GetPatternDisplay(unsigned int *pAction)
/**
 * (I2C: 0x65)
 * (USB: CMD2: 0x1A, CMD3: 0x24)
 * This API starts or stops the programmed patterns sequence.
 *
 * @param   *pAction - O - Returns the state of the Pattern Display
 *                          0 = Stop Pattern Display Sequence. The next "Start" command will
 *                              restart the pattern sequence from the beginning.
 *                          1 = Pause Pattern Display Sequence. The next "Start" command will
 *                              start the pattern sequence by re-displaying the current pattern in the sequence.
 *                          2 = Start Pattern Display Sequence
 *
 * @return  >=0 = PASS    <BR>
 *          <0 = FAIL  <BR>
 *
 */
{
    hidMessageStruct msg;

     DLPC350_PrepReadCmd(PAT_START_STOP);

      if(DLPC350_Read() > 0)
      {
          memcpy(&msg, g_InputBuffer, 65);
          *pAction = (msg.text.data[0] & 0xFF);
          return 0;
      }
      return -1;
}

and I found if I check the Global data Invert checkbox after play once, it can make Seq stop forcibly after projected some 'strange' patterns. After Seq was stopped, I can use the play button to play once again.(but in cpp's comments, this operation is not recommended). Like using this function in dlpc350_api.h :

int DLPC350_SetInvertData(bool invert)
/**
 * (I2C: 0x74)
 * (USB: CMD2: 0x1A, CMD3: 0x30)
 * This API dictates how the DLPC350 interprets a value of 0 or 1 to control mirror position for displayed patterns.
 * Before executing this command, stop the current pattern sequence. After executing this command, call
 * DLPC350_ValidatePatLutData() API before starting the pattern sequence.
 *
 * @param   invert - I - Pattern Display Invert Data
 *                      0 = Normal operation. A data value of 1 will flip the mirror to output light,
 *                          while a data value of 0 will flip the mirror to block light
 *                      1 = Inverted operation. A data value of 0 will flip the mirror to output light,
 *                          while a data value of 1 will flip the mirror to block light
 *
 * @return  >=0 = PASS    <BR>
 *          <0 = FAIL  <BR>
 *
 */
{
    hidMessageStruct msg;

    msg.text.data[2] = invert;
    DLPC350_PrepWriteCmd(&msg, INVERT_DATA);

    return DLPC350_SendMsg(&msg,true);
}

Like the function for validating the pattern sequence, these functions all need the sequence in stop mode, If this operation is not do damage to the projector, can I use this operation to stop the Seq?

Best regard,

Yang.

  • Hello Yang,

    Does the same problem exist for you when downloading the GUI (i.e. you didn't compile it yourself)?

    Thanks,
    Kyle
  • Hello Kyle,

    Thanks for Reply!

    Yes,I just use the GUI offered on  the TI official website. I think this bug can be reproduced easily.

    1\ set to pattern mode (not  in variable exposure mode), color blue, chose some pattern (i.e. three 1 bit patterns) in internal trigger

    2\ check play once and set the period time and exposure time (in my case, I chose 10000 for both).

    3\ validation

    4\ push play button

    After play once, you may see the Seq.running is still light Green. And can not stop the Seq by pushing the Stop button.

    I am sure that  I didn't use any firmware change function in DLPC350_firmware.h, So I think my DLP4500's firmware is still the original.
    Have I done any things make the firmware changed?

    And could you try to reproduce this phenomenon? I am not sure whether I do something wrong =_=!!!

    I also want to know that when you flow the steps above, what the DLP4500 status is & whether the sequence can be Stopped by Stop button or automatically?
    I will also try some other versions GUI & download the newest GUI again to try to solve this problem.

    BTW: I have crate a thread to talk about just as the same problem like this in https://e2e.ti.com/support/dlp/f/94/t/803895, I'm sorry for my unnecessary action and Thanks for Your Reply. After the problem is solved, I will close that thread.

    Answer your questions here:

    I used Win10 OS, and I am using the GUI download from the official website. version is 3.1.0

    Because I used qmake to make a vs proj, so exist some other files and folders, but I did not change the original GUI .exe and any .dll
    I copy a new proj to develop.

    Thanks,
    Yang

  • Hello Kyle,

    I have test this on the v3.0.1 GUI download from TI, and  it is still have this problem.

    After play once, I can not use play button to play again. (pattern mode, Green, exp&prd times are both 100000,  play once, and DMD clear, GUI looks like below)

    Thanks,

    Yang

  • Hi Yang,

    Could you kindly try using the latest DLPC350 FW v4.0.3 and see if you are seeing the same issue?

    Thanks & Regards,
    Hirak.
  • Hi Yang,

    Were you able to check this behavior with the latest firmware (v4.0.3)? Do you still need resolution? If not, we'll close this thread due to inactivity.

    Regards

    Azad

  • Hi Yang,

    We're unable to reproduce this issue, and we have no response from your side, so we're hoping you've resolved the issue on your system.

    Regards

    Azad

  • Hi Azad,

    Sorry for my delayed reply...

    I have tried the new firmware and it is helpless to this problem, one can still get the similar situation follow my steps above, and I think it is a BUG in firmware that after the commend "play once" the projector can not stop (or in stop mode)

    Because many 3D scanning system using "repeat mode“,I have also tried this and distinguished  which pattern was captured by counting the frame number, that was worked for me, because the first picture I captured always be the first pattern. By the way,  only the newest firmware can get to this, it is seems that, using the old firmware, first pattern's output trigger signal is not send, so my camera begin capturing at the second pattern.

    Anyway, the new firmware helped me a lot. thanks for answering my question.

    Regards,

    Yang