Daisy chaining MAX7219 devices. Seems easy, but that is not what I am experiencing. I have been attempting to daisy chain two MAX7219 devices, as shown in Figure 3, page 13 of the MAX7219/7221 datasheet, with no success. I have tried using the MAX7219.h, ledControl.h, and a couple other libraries with similar failures. Currently, I am using the max7219.h library by Jonathan Evans.
When the Arduino transmits the SPI data, both displays show the same information perfectly. One might suspect that I have tied both DIN pins together, but this is not the case. By using the Serial Monitor, I can see that the data for each display is correct though.
Since the devices are connected in a daisy-chain style; i.e., DOUT of DEVICE1 is connected to DIN of DEVICE2 and the clocks and LOAD/CS are connected in parallel why do both displays show the same data when I only send one set of 8 digits? If I send two different sets of eight digits; i.e., "12 23 33" and "20240322" both displays show the last set of 8 digits (20240322). This occurs even if I terminate execution after the second data set is sent with exit(0);
It seems to me that if 16 digits are sent, the first (closest to the Arduino) would display digits 15 - 8 (12 23 33) and the furthest display (second in the chain) would display digits 7 - 0 (20240322). But, as stated, whatever the last thing sent shows on both displays. I have attempted to alter the .h and .cpp files here and there too. That ended in failure and thus I am here.
This has been very frustrating. So much so that I am considering using a slew of serial in/parallel out shift registers to get where I am trying to go, but of course that adds quite a bit of complexity to what I believed would be solved with the MAX7219 devices.