Perry,
Yes, I welcome the help!
Haven't worked on this for a couple of days - the status is still the same: Arduino reliably communicates with the ZG2100, for instance always resets the ZG2100 ok, and always reads the ChipInfo block correctly. Leaf sometimes can do both, but often can't read ChipInfo on the first try, and sometimes can't even reset the ZG2100.
I have looked at the SPI tx and rx data, and can't see the problem - I have compared the Arduino and Leaf SPI tx and rx, the correct data is being sent, but correct responses often don't come back on the first try. Sometimes they come on the first try, the second try, or the third... or sometimes not at all.
I am thinking I need a logic analyzer to look at the SPI signals going by on the bus to see what is wrong. I will probably get one of those Open Logic Sniffers. I am going to make the JTAG cable this weekend.
Or? Do you have other ideas?
I haven't moved on to the interrupts, as I think it's likely that the ZG2100's interrupt registers are not being set up right. I am focusing on getting the initial ZG2100 setup correct, and correct reading of the ChipInfo block.
(I added a little routine, with an idea borrowed from the Microchip driver, to read the firmware version number from the ZG2100 ChipInfo block, since that should be an innocuous, reliably repeatable thing to do... and it is on the Arduino.)