Other Parts Discussed in Thread: LP5523,
Hi - I am not sure this is the right forum for my issue, but this is where TI sent me.
I am updating a linux driver I found that had a few bugs. It is functioning fine for the most part - it can individually control LEDs as well as run a single engine with a custom program.
The problem is when I try to have more than one engine running. I can see the correct data is sent to the chip on the i2c interface. These are the steps I followed.
- set engine1_mode to "load"
- load program to engine1_load (this program pulses a red LED)
- set engine1_mode to "run"
At this point the intended red LED pulses as programmed. I then program the second engine as follows.
- set engine2_mode to "load"
- load program to engine2_mode (this program pulses a green LED)
- set engine2_mode to "run"
At this point, the same red LED pulses. It seems to be running the program for engine1.
Besides the above trouble, there are a couple of points I need clarification on.
1. I am using the LP5523 LASM assembler to generate my program. When I have more than one program and have an LED map table at the top, do I include the table when programming each engine? I have tried programming with the table just for the first engine and also for each engine. But, I didn't see any difference in behavior.
2. In LP5523 datasheet, the information for ENGINE_CONTROL2 implies that all engines are put in HOLD state whenever any engine is in load mode. It is not clear if just setting an engine mode to load will automatically set all engines in HOLD. But, in LP5569, it states "If any engine is set to the load-program mode, then the other engines should be set either to the
disabled or load-program mode, because they are inhibited from executing instructions while loading the SRAM". From this I assume, one has to manually set any running engines to either disabled or load mode. Is this correct?
Best regards,
Daniel