Part Number:DRV2667
Hi,
I'm using an Arduino to define and queue waveforms on the driver via i2c, which works very well most of the time. The issue I'm running into is that sometimes, when a long continuous waveform is interrupted by a short one, the short waveform does not play. The long waveform is always interrupted in the same place using the same i2c message, so I do not understand why it would randomly not function properly. The long waveform always stops, so I know the GO bit is resetting, but the subsequent calls to the waveform sequencer seem to be ignored. I am using waveform synthesis mode and loading all waveforms into RAM on startup to be recalled later. The i2c messages I'm using are here:
Wire.write((byte)0x02); //exit standby mode
Wire.write((byte)0x00);
Wire.write((byte)0x03); //set sequencer to play Waveform ID 1
Wire.write((byte)(0x01));
Wire.write((byte)0x04); //set sequencer to play Waveform ID 2 after ID 1
Wire.write((byte)(0x02));
Wire.write((byte)0x05); //End of sequence
Wire.write((byte)0x00);
Wire.write((byte)0xFF); //set page register to control space
Wire.write((byte)0x00);
Wire.write((byte)0x02); //set GO bit
Wire.write((byte)0x01);My understanding is that as long as the GO bit is cleared, waveform playback should stop, the queue should be cleared, and the sequencer can be set to start the desired waveforms once the GO bit is set again. Is there a call I'm missing to make this function reliably?
Thanks,
Mitch








