Hi,
I encountered the following problem:
From the python script in a fully automated mode, I send to the DLP9000 a sequence of commands to display a series of approx 300 patterns, each pattern is displayed twice for 2 minutes each with the interim pauses of approx 15 - 60 min in between, in a pattern-on-the-fly mode. One of the desired patterns should look like that:
But in fact, the DLP displays exactly (!) a half of the pattern with a pixel precision across the whole width of the image (account for the fact that the DLP by default 'flips' the image around the horizontal axis):
For some other patterns, I observed a cut-off at 410 pixels down from the horizontal center line:
And in some cases at 410 pixels above from the center line (not shown here).
This occurs for arbitrary patterns with a rate of ~ 1 : 50 if each pattern is shown twice, and was not observed is each pattern is shown only once. The error was observed when the identical pattern / LUT definition was sent to the DLP, thereafter 'propagating' to a range of next patterns. Several of the next-coming patterns were even not displayed at all. Then all of a sudden, the patterns start being displayed properly again.
This error is not systematic and can not be repeated for the same sequence of commands. It can then occur then on another pattern from the same series, or not occur at all.
Here are some more details on the sequence of commands sent:
For reference, the arguments of each command:
- mode (here always write ‘w’),
- sequence byte (here, always 0x00)
- command byte (com1, com2)
- payload / data
The following sequence of commands is executed by the projector within a single routine.
Initialization routine:
- Set normal power mode ('w', 0x00, 0x02, 0x00, [0])
- Set pattern on the fly mode ('w', 0x00, 0x1a, 0x1b, [3])
- Stop pattern sequence ('w', 0x00, 0x1a, 0x24, [0])
- Disable LED outputs ('w', 0x00, 0x1a, 0x07, [int('00000000', 2)])
- Set LED polarity ('w', 0x00, 0x1a, 0x05, [0])
- Set LED current ('w', 0x00, 0x0b, 0x01, [values[0], values[1], values[2]])
- Enable LED outputs ('w', 0x00, 0x1a, 0x07, [int('00001111', 2)])
- Enable DMD idle mode ('w', 0x00, 0x02, 0x01, [1])
Synthesis routine:
For pattern in range(1, 300):
For repetition in range(1, 2):
- Disable DMD idle mode ('w', 0x00, 0x02, 0x01, [0])
- Stop pattern sequence ('w', 0x00, 0x1a, 0x24, [0])
- Define LUT pattern ('w', 0x00, 0x1a, 0x34, payload)
- Initialize pattern BMP load for master ('w', 0x00, 0x1a, 0x2a, payload)
- Load BMP pattern for master ('w', 0x00, 0x1a, 0x2b, payload)
- Initialize pattern BMP load for slave ('w', 0x00, 0x1a, 0x2c, payload)
- Load BMP pattern for slave ('w', 0x00, 0x1a, 0x2d, payload)
- Configure LUT ('w', 0x00, 0x1a, 0x31, payload)
- Start pattern sequence ('w', 0x00, 0x1a, 0x24, [2]) (infinitely)
From another thread:
{sleep for 120 seconds, the pattern is ON during this time}
- Stop pattern sequence ('w', 0x00, 0x1a, 0x24, [0])
- Enable DMD idle mode ('w', 0x00, 0x02, 0x01, [1])
{40 seconds are spent for other processes prior to the next repetition of the same pattern}
{Between showing each patter, there are ca 10 – 60 minutes of waiting time in DMD idle mode}
Shutdown routine:
- Stop pattern sequence ('w', 0x00, 0x1a, 0x24, [0])
- Set standby power mode ('w', 0x00, 0x02, 0x00, [1])
=====================
Additional notes:
- After sending each data packet, sleep for 10 ms (except for loading BMP pattern, then no sleep).
- After sending each command or 64 packets of data, we read from USB and check for command error flag (no error flags are observed)
Please let me know if further details are needed.
Best regards,
Roman