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: Mirror refreshing disabled in Pattern Sequence Mode

Part Number: DLP4500
Other Parts Discussed in Thread: DLPC350

Hello TI,

while testing the mirror refreshing rate of the DMD we found an unexpected behaviour:

When, after displaying a static image in video mode (high refreshing rate), we switched to pattern sequence mode, the refreshing seems to stop completely, while still displaying the initial image.

We detect the refreshing rate based on an intensity measurement with a photo diode.

Periodic changes in intensity (refreshing) in video mode:

Constant intensity (no refreshing) in pattern sequence mode:

(time scale in the oscilloscope is 500µs)

Is this the intended behaviour?

Because without the refreshing the DMD could suffer damage when staying in the ON/OFF-state for too long, right?

Are we perhaps misinterpreting our measurements?

Kind regards,

Robert

  • Hello Robert,

    To help me understand what you are seeing could you upload a screenshot of the GUI pattern? This way we will know what you are looking at in pattern mode.

    Thanks,
    Kyle
  • Hi Kyle,

    sorry, I didn't mention that: We did not send any pattern sequence to the DMD.
    We just switched to pattern sequence mode by clicking on the corresponding radio button in the top part of the GUI.

    Robert
  • Hello Robert,
    I cannot seem to reproduce your issue, when switching from Video Mode to Pattern Exposure mode LEDs are turned off and the DMD is inactive. So you should not see any image being displayed. Can you mention how did you arrive at this issue in a bit more details?

    Thanks & Regards,
    Hirak.
  • Hi Hirak,

    We also reproduced the behaviour using the API.
    The code below shows step by step what we previously did in the GUI interface.
    After switching from video mode to pattern sequence mode the DMD is still active.
    Just for reference: we are using DLPC350 with DLP4500 (there are no LEDs, just the DMD) and version 3.1.0 of the GUI interface/API.

    #include "pch.h"
    #include <chrono>
    #include <thread>
    #include <iostream>
    
    int main(int argc, char *argv[]) {
    
    	unsigned int imageIndex = 0; // test pattern
    
    	// connect to DLPC
    	DLPC350_USB_Init();
    	DLPC350_USB_Open();
    	if (!DLPC350_USB_IsConnected()) {
    		return -1;
    	}
    
    	DLPC350_SetPowerMode(false); // turn on normal mode
    
    	DLPC350_SetMode(false); // go to video mode
    	DLPC350_LoadImageIndex(imageIndex); // load image from flash memory
    
    	std::this_thread::sleep_for(std::chrono::seconds(3)); // here we see refreshing
    
    	DLPC350_SetMode(true); // switch to pattern sequence mode
    
    	std::this_thread::sleep_for(std::chrono::seconds(3)); // here we don't see refreshing, but the image is still displayed
    
    	DLPC350_SetPowerMode(true); // go to standby mode
    }

    Best regards,

    Robert

  • Hi Robert,

    I tested on my end and I was able to reproduce your issue. Since you are not running a pattern sequence and just switching to pattern display mode, the sequencer is idle. Therefore the refreshing of the mirrors are stopped. If you load up a pattern sequence, validate, and start running the sequence the mirrors will continue operating normally.

    Regards,
    Hirak.
  • Cool! This is actually what we are looking for!

    We want to disable the refreshing during a small time range (~ seconds), to be able to perform our experiment.

    However, we also want to use an external trigger to display the pattern, which is only possible in pattern sequence mode.

    So you are saying the state of the sequencer is controlling the mirror refreshing? (What exactly is the sequencer?)

    Can we perhaps (using the API) put the sequencer to idle mode or influence the refreshing in some other way, while using pattern display mode? (see also this question: https://e2e.ti.com/support/dlp/f/94/t/726387)

    Best regards,

    Robert

  • Hi Robert,

    With the reference firmware flashed, you can try loading up a 1-bit pattern sequence and controlling it with TRIG_IN1. With every TRIG_IN1 pulse the sequence should advance by one pattern. By controlling TRIG_IN1 according to your requirements you might be able to achieve your desired behavior.

    Regards,
    Hirak.
  • Hi Hirak,

    we tried this and successfully controlled a pattern sequence on the DMD via TRIG_IN1.

    However, on the one hand the refreshing still occured and on the other hand the trigger behaviour was different than described by the guide book: For every rising edge the next pattern was displayed until the next falling edge. According to the guide, the next pattern should be shown when detecting a rising edge and be displayed until the next rising edge.

    Both issues can be seen in the following image (top: intensity of the DMD, bottom: trigger signal):

    Kind regards,

    Robert

  • Hi Robert,

    Kindly uncheck the "Clear DMD after Exposure" option in the GUI before creating the pattern sequence. After this should be able to get the pattern to stay on the DMD. Once the sequence has been stopped using TRIG_IN1, refreshing should also stop.

    Regards,
    Hirak.
  • Hi Hirak,

    We tried it without "Clear DMD after Exposure", but it didn't resolve the issues.
    What exactly do you mean by stopping the sequence using TRIG_IN1?
    We thought TRIG_IN1 was supposed to continue to the next pattern in the sequence, doesn't it?

    Regards,
    Robert
  • Hi Robert,

    Are you able to get the pattern to stay on the DMD?
    I mistakenly phrased it wrong, I meant when "Clear DMD" option is unchecked for all the patterns, if you give a single pulse on TRIG_IN1, the first 1 bit pattern should be displayed, and it should stay even after the negative edge (until the next positive edge).

    Regards,
    Hirak.
  • Hi Hirak,

    Unfortunately, we couldn't get a pattern to stay on the DMD after the negative edge.

    Using the GUI we put only one pattern in the "sequence", Clear DMD unchecked, repeat, trigger mode "internal/external", pattern source "flash".

    We tried different trigger settings and also changed the pattern exposure and pattern period (always the same value for both).

    When noticed, that the pattern only displayed when adding it with the "internal trigger" setting.

    But the pattern still displays according to the external trigger (displayed between rising and falling edge) independent of what pattern exposure/period we choose.

    The settings "external positive/negative" result in the pattern not being displayed although the external trigger is connected.

    Also we found that the refreshing period depends on the pattern exposure time.

    However, the upper limit seems to be 500µs.

    pattern exposure [ms] refreshing time [µs]
    10000 500
    1000 500
    100 250
    10 250
    1 300

     

    Can you reproduce this behaviour?

     

    Regards,

    Robert

  • Hi Robert,

    Kindly double check that you are driving TRIG_IN_1 (Pin no G19 on DLPC350) and not TRIG _IN_2. Then follow the steps in given order:

    1. Open the GUI.
    2. Go to pattern sequence (variable) mode.
    3. Choose External Positive Trigger.
    4. Uncheck Clear DMD box.
    5. Add any number of 1 bit pattern with any exposure time (keep exposure time & period equal).
    6. Send, validate and Play.

    Immediately after step #6 You will NOT see any picture on DMD. Now apply a single pulse on TRIG_IN_1. You should see the first pattern. Another pulse should get you the next pattern and so on.


    Since you say patterns are displayed only between rising and falling edge even in internal trigger mode, there's a probability that you might be driving TRIG_IN_2 (that could also be the reason patterns are only displayed in internal trigger mode).

    As for the different refresh time you see, that is expected behavior while playing the pattern sequence. In external trigger mode, mirrors are expected to refresh after certain periods UNTIL the exposure time is over. After exposure time, the refreshing is supposed to stop, and the pattern is supposed to stay until the next pulse is received on TRIG_IN_1 line.

    Regards,
    Hirak.

  • Hi Hirak,

    thanks a lot.

    We reproduced what you describe by switching to the other TRIG_IN.

    As you can see below, we have 4 pins of the J7 connector connected (blue cables = signal, black cables = ground).

    However, we don't know which of the blue ones is G19=TRIG_IN1 and which is F22=TRIG_IN2.

    It seems, that we now connected TRIG_IN1 correctly.

    But there is one thing we couldn't reproduce: When adding more than 2 patterns to the sequence, the third pulse will not change to the third pattern, but again to the first one thus alternating between just two patterns.

    When adding the "Clear DMD" option to at least one pattern, more than 2 patterns can be displayed, however, with refreshing and not in a linear way, but alternating in a strange way between one of the patterns and the rest.

    Regards,

    Robert

  • Hi Robert,

    Kindly see the schematic to find the pinmap for that port. Note that you have a different version of the lightcrafter, in which J11 is replaced by J7. Look for J11 on the PDF for correct pinmap of the trigger inputs.

    As for pattern switching problem, it is a known bug in version 3.1.0 of firmware. When you set less than 800us of pattern exposure period for 1bit pattern display, patterns from more than 2 images will not be displayed properly. A new version of the firmware is in pipeline which will address this issue.

    Also, if you are displaying patterns from different splash images, you must be aware of the image load timings. kindly check the splash image load timings in the GUI under Pattern Sequence>image load timings. In case you are displaying patterns from more than 2 images, the patterns from one image must be displayed for atleast the image load time to ensure that the next image is loaded completely.


    Thanks & Regards,
    Hirak.

  • Thanks Hirak.

    We tried flashing an older firmware to see if that would resolve the bug.

    However, during the upload the program froze and left behind a corrupted flash image.

    To recover we would have to use the JTAG tool, right?

    In that case, what is the connector for the JTAG cable on our model of the LightCrafter?

    Your schematic says it is J25 for the other model.

    Regarding the image loading times it would probably be more efficient to show multiple patterns from just one flash image.

    Can this be done using different bitplanes of one image for each pattern?

    Regards,

    Robert

  • Hi Robert,

    You're welcome.

    You can hold the board in the bootloader mode using J18. Kindly See sec 1.5 on the User Guide. In this way you can flash a new correct firmware IF the bootloader is not corrupted.

    The JTAG Port is also visually shown in the above section.

    You can store upto 24 one bit patterns in a single image. It is more efficient to display multiple bitplanes from one image, rather than to have one image per bitplane.

    Thanks & Regards,
    Hirak.